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:
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
dict | string | Ja | Das Animation-Dictionary (z.B. "mp_player_int_upper_nod"). |
name | string | Ja | Der Name der spezifischen Animation innerhalb des Dictionaries. |
duration | integer | Nein | Dauer der Animation in ms. Standard: -1 (spielt bis zum Ende/endlos). |
flag | integer | Nein | Animations-Flags (z.B. 49 für Oberkörper, 1 für Loop). Standard: 0. |
offset | float | Nein | Start-Offset der Animation. Standard: 0.0. |
ped | integer | Nein | Das 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:
- Validierung: Prüft, ob
dictundnameangegeben wurden. Falls nicht, erfolgt eine Warnung in der Konsole. - 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. - Berechnung: Die Funktion gibt intern die Dauer der Animation zurück, falls du diesen Wert für spätere Timer weiterverwenden möchtest.
- Ausführung: Die Animation wird mit den Standard-Werten für
easeInundeaseOutgestartet.
Docs