🎯 O Que São Jazz Scripts?
Jazz Scripts definem state machines que controlam animações sincronizadas entre múltiplos atores (Sims, objetos, props). Eles são essenciais para interações sociais complexas.
Estrutura de um Jazz Script
State Machine "SeuMod_Social"
{
Priority High
Property BlendMotionAccumulation
// Atores envolvidos
Actor "x" // Sim iniciante
Actor "y" // Sim alvo
// Parâmetros
Parameter "IsMirrored" = "no"
Parameter "x:Age" = "adult"
// Animações
Assign Actor "a_SeuMod_start.ma"."x" as "x"
Assign Actor "a_SeuMod_start.ma"."y" as "y"
Assign Actor "a_SeuMod_loop.ma"."x" as "x"
Assign Actor "a_SeuMod_loop.ma"."y" as "y"
Assign Actor "a_SeuMod_stop.ma"."x" as "x"
Assign Actor "a_SeuMod_stop.ma"."y" as "y"
// Estados
State "Enter"
{
Property Entry
Transitions to "Loop"
Play "a_SeuMod_start_x" for "x"
{
Flags AtEnd
Blend In 0.2
}
Play "a_SeuMod_start_y" for "y"
{
Flags AtEnd
Blend In 0.2
}
}
State "Loop"
{
Property Loop
Transitions to "Exit"
Play "a_SeuMod_loop_x" for "x"
{
Flags AtEnd, LoopAsNeeded
Blend In 0.2
}
Play "a_SeuMod_loop_y" for "y"
{
Flags AtEnd, LoopAsNeeded
Blend In 0.2
}
}
State "Exit"
{
Property Exit
Play "a_SeuMod_stop_x" for "x"
Play "a_SeuMod_stop_y" for "y"
}
}
State Properties
| Property | Descrição |
|---|---|
Entry | Estado de entrada (pode ser definido explicitamente) |
Exit | Estado de saída (finaliza a state machine) |
Loop | Estado em loop (permanece até receber Next State) |
OneShot | Executa uma vez e para |
Synchronized | Sincroniza atores |
Join | Estado de entrada para conversas em grupo |
Flags de Animação
Play "animacao_x" for "x"
{
Flags AtEnd, LoopAsNeeded
Blend In 0.2
}
| Flag | Descrição |
|---|---|
AtEnd | Padrão - anima até o fim |
LoopAsNeeded | Repete animação se necessário |
Interruptible | Pode ser interrompida |
ForceBlend | Força blend suave |
HoldPose | Mantém pose final |
Usando no Código C#
public override bool Run()
{
// 1. Entrar na postura social
Actor.EnterSocializingPosture(Target);
// 2. Iniciar interação social
if (BeginSocialInteraction(
new SocialInteractionB.Definition(null, "sua_interacao", false),
pairedSocial: true,
doCallOver: false))
{
// 3. Configurar State Machine
EnterStateMachine("SeuMod_Social", "Enter", "x", "y");
SetActor("x", Actor);
SetActor("y", Target);
// 4. Animar
AnimateJoinSims("Friendly");
// 5. Loop até sair
DoLoop((ExitReason)(-5652481));
// 6. Finalizar
EndCommodityUpdates(true);
WaitForSyncComplete();
}
return true;
}
Convenções de Nomes
Prefixos de Animação
a_- Adultoc_- Criançat_- Teene_- Eldero_- Objetoa2o_- Adulto para Objetoa2a_- Adulto para Adultoa2c_- Adulto para Criança
Suffixos de Ator
_x- Ator 1 (iniciante)_y- Ator 2 (alvo)_z- Ator 3_prop- Prop/objeto