Animazioni ed Emote

INFO

Le animazioni (task) fanno muovere i peds in modi specifici. Gli emote sono animazioni triggerabili dai giocatori (sedersi, ballare, salutare). Esistono risorse pronte e custom.

ObiettivoDettagli
Cosa imparerai• Task nativi per animare i peds
• Pacchetti emote pronti
• Animazioni custom (ycd) cenni
Prerequisiti• Lua base

1. Animare un Ped con Task

-- client.lua
local ped = PlayerPedId()
 
-- Fermo, in piedi
TaskStandStill(ped, -1)
 
-- Siede
TaskStartScenarioInPlace(ped, 'PROP_HUMAN_SEAT_CHAIR_MP_PLAYER', 0, true)
 
-- Guarda verso una direzione
TaskLookAtCoord(ped, x, y, z, -1, 2048, 3)
 
-- Cammina verso un punto
TaskGoToCoordAnyMeans(ped, x, y, z, 1.0, 0, false, 0, 0)

NOTE

I nomi degli scenario (es. PROP_HUMAN_SEAT_CHAIR_MP_PLAYER) devono essere validi. Se uno scenario non esiste, il ped non fa nulla senza errore visibile. Testa sempre.


2. Emote con Risorsa Pronta

Le risorse emote più usate:

  • dpemotes (https://github.com/andristum/dpemotes)
  • custom emotes (vari fork)
git clone https://github.com/andristum/dpemotes.git
ensure dpemotes

Con dpemotes il giocatore apre il menu emote con un tasto e seleziona l’animazione.

WARNING

Alcune risorse emote usano animazioni custom (.ycd) o dict non presenti nel gioco base: su un server che non li include, l’emote non funziona. Usa pacchetti che fanno riferimento a dict nativi o includi gli asset.


3. Animazioni Custom (ycd) — Cenni

Le animazioni custom richiedono file .ycd (vedi moduli asset) e sono un argomento avanzato. I passaggi base:

  1. Creare/esportare un .ycd con un tool dedicato
  2. Metterlo in stream/
  3. Referenziarlo con TaskPlayAnim usando il dict del tuo ycd
-- client.lua
TaskPlayAnim(ped, 'dict_custom', 'anim_custom', 8.0, -8.0, -1, 0, 0, false, false, false)

NOTE

Creare animazioni custom richiede tool non-banali (CodeWalker/YCD editor) e skill di animazione. Per la maggior parte dei server i pacchetti emote pronti bastano.


4. Pattern Sicuro: Emote con Cancellazione

-- client.lua
local function playEmote(dict, clip, duration)
    local ped = PlayerPedId()
    ClearPedTasks(ped)
    TaskPlayAnim(ped, dict, clip, 8.0, -8.0, duration, 0, 0, false, false, false)
 
    -- Al termine o al movimento, ferma
    Wait(duration)
    ClearPedTasks(ped)
end

Verifica

  • Scenari/animazioni validi (niente dict inventati)
  • Emote cancellati con ClearPedTasks quando serve
  • Pacchetti emote compatibili col tuo server
  • Eventuali ycd custom inclusi in stream/

TIP

Prossimo passo: 05 - NUI Avanzata


Torna alla: Indice Generale