Skip to content
On this page

SNSUtils.animatePlayer

Dieses Modul vereinfacht das Abspielen von Animationen für Spieler oder NPCs. Es kümmert sich automatisch um das Anfordern und Laden der benötigten Animation-Dictionaries, sodass kein manueller RequestAnimDict-Loop im Hauptcode nötig ist.

Einbindung ins fxmanifest:

Da Animationen clientseitig gesteuert werden, erfolgt die Einbindung als client_script.

lua
client_script {
    '@sns_utils/scripts_client/playerAnims.lua',
}

Aufruf (Clientseitig)

lua
SNSUtils.animatePlayer{
    dict = "anim_dict_name",
    name = "anim_name",
    -- optionale Parameter
    duration = 2500,
    flag = 31,
    offset = 0.0,
    ped = PlayerPedId()
}

Parameter

Die Funktion erwartet eine Table als Argument:

ParameterTypPflichtBeschreibung
dictstringJaDas Animation-Dictionary (z.B. "mp_player_int_upper_nod").
namestringJaDer Name der spezifischen Animation innerhalb des Dictionaries.
durationintegerNeinDauer der Animation in ms. Standard: -1 (spielt bis zum Ende/endlos).
flagintegerNeinAnimations-Flags (z.B. 49 für Oberkörper, 1 für Loop). Standard: 0.
offsetfloatNeinStart-Offset der Animation. Standard: 0.0.
pedintegerNeinDas Ped-Handle, das animiert werden soll. Standard: PlayerPedId().

Nutzungsbeispiele

1. Einfache Animation (Standard-Spieler)

Spielt eine Animation einmalig auf dem eigenen Charakter ab.

lua
SNSUtils.animatePlayer{
    dict = 'script_ca@carust@02@ig@ig1_rustlerslockpickingconv02', 
    name = 'convo_lockpick_02_smhthug_01'
}

2. Zeitlich begrenzte Animation mit Flags

Ideal für Interaktionen, bei denen sich der Spieler noch bewegen können soll (Flag 49/31).

lua
SNSUtils.animatePlayer{
    dict = 'script_ca@carust@02@ig@ig1_rustlerslockpickingconv02', 
    name = 'convo_lockpick_02_smhthug_01',
    duration = 2500,
    flag = 31 -- Macht die Animation abbrechbar/kombinierbar
}

3. Animation auf ein anderes Ped anwenden

Nützlich für Zwischensequenzen oder NPC-Interaktionen.

lua
local npc = GetClosestPed(coords.x, coords.y, coords.z, 3.0, 0, 0)

if DoesEntityExist(npc) then
    SNSUtils.animatePlayer{
        ped = npc,
        dict = "amb@world_human_smoking@male@male_a@enter",
        name = "enter",
        duration = -1
    }
end


Funktionsweise & Logik

Die Funktion führt im Hintergrund folgende Schritte aus:

  1. Validierung: Prüft, ob dict und name angegeben wurden. Falls nicht, erfolgt eine Warnung in der Konsole.
  2. Auto-Load: Das Script prüft, ob das Dictionary bereits geladen ist. Wenn nicht, wird es angefordert (RequestAnimDict) und das Script wartet kurzzeitig, bis die Daten bereitstehen.
  3. Berechnung: Die Funktion gibt intern die Dauer der Animation zurück, falls du diesen Wert für spätere Timer weiterverwenden möchtest.
  4. Ausführung: Die Animation wird mit den Standard-Werten für easeIn und easeOut gestartet.

Animation Discovery Doku

Released under the GNU General Public License v2.0.