Aller au contenu

Calculateur de flags d'animation

Choisis les comportements d'animation et récupère l'entier de flags combiné pour TaskPlayAnim / TaskPlayAnimAdvanced, avec un snippet Lua prêt à coller.

Cet outil et ses notes sont en anglais pour l'instant.

CalculateursNatives, FlagsLire la doc

31 flags, 3 activés

Préréglages

Animation flag

Décimal
Hex
Binaire
Flags activés
Expression

AF_LOOPING | AF_UPPERBODY | AF_SECONDARY

TaskPlayAnim

Example animations
play_anim.lua
local function LoadAnimDict(animDict)
    if not DoesAnimDictExist(animDict) then
        return false
    end
    RequestAnimDict(animDict)
    local timeout = GetGameTimer() + 5000
    while not HasAnimDictLoaded(animDict) do
        if GetGameTimer() > timeout then
            return false
        end
        Wait(0)
    end
    return true
end

local ANIM = {
    dict = "missminuteman_1ig_2",
    name = "handsup_base",
    blendIn = 8.0, -- 1.0 slow, 8.0 instant
    blendOut = 8.0,
    duration = -1, -- ms, -1 = until stopped / clip length
    flag = 49, -- AF_LOOPING | AF_UPPERBODY | AF_SECONDARY
    playbackRate = 0.0, -- start phase 0.0 to 1.0
}

local function PlayAnim(ped)
    if not (LoadAnimDict(ANIM.dict)) then
        print("Could not load anim dict", ANIM.dict)
        return
    end
    TaskPlayAnim(ped, ANIM.dict, ANIM.name, ANIM.blendIn, ANIM.blendOut, ANIM.duration, ANIM.flag, ANIM.playbackRate, false, false, false)
    RemoveAnimDict(ANIM.dict) -- the running task keeps its own reference
end

RegisterCommand("anim", function(source, args, rawCommand)
    local ped = PlayerPedId()
    if IsEntityPlayingAnim(ped, ANIM.dict, ANIM.name, 3) then
        StopAnimTask(ped, ANIM.dict, ANIM.name, ANIM.blendOut)
    else
        PlayAnim(ped)
    end
end, false)

TaskPlayAnim parameters

TaskPlayAnim(ped, animDict, animName, blendInSpeed, blendOutSpeed, duration, flag, playbackRate, lockX, lockY, lockZ)
  • blendInSpeed / blendOutSpeed: 1.0 is a slow blend, 8.0 is basically instant.
  • duration: milliseconds. -1 plays the full clip, or forever when looping.
  • flag: the value from this calculator.
  • playbackRate: really the start phase of the clip, 0.0 to 1.0. Use 0.0 to start at the beginning.
  • lockX / lockY / lockZ: lock the ped's position on that axis, usually false.

Common combinations

ValueFlagsUse
0noneFull body, plays once.
1AF_LOOPINGFull body loop, player is stuck until stopped.
2AF_HOLD_LAST_FRAMEPlays once and freezes on the last frame.
48AF_UPPERBODY | AF_SECONDARYUpper body once, player can walk.
49AF_LOOPING | AF_UPPERBODY | AF_SECONDARYThe usual emote flag: loops, player can walk.
50AF_HOLD_LAST_FRAME | AF_UPPERBODY | AF_SECONDARYUpper body pose that stays (hands up).

Tips

  • Upper body alone (16) still blocks movement. Add AF_SECONDARY (32) to let the player walk.
  • Stop an animation with StopAnimTask(ped, dict, name, blendOut) or ClearPedTasks(ped).
  • Check that a dictionary exists with DoesAnimDictExist before requesting it, and call RemoveAnimDict once the task has started.
  • Browse dictionaries and clip names in the animations list.

Flag names come from the eScriptedAnimFlags enum in the FiveM native docs. Based on the idea of Vespura's animation flags calculator, which covered the first six bits.