İçeriğe geç

Animasyon Flag Hesaplayıcı

Animasyon davranışlarını seç, TaskPlayAnim / TaskPlayAnimAdvanced için birleşik flag integer'ını yapıştırmaya hazır bir Lua snippet'iyle al.

Bu araç ve notları şimdilik İngilizce.

HesaplayıcılarNative, FlagDokümanları oku

31 flags · 3 set

Presets

Animation flag

Decimal
Hex
Binary
Set flags
Expression

AF_LOOPING | AF_UPPERBODY | AF_SECONDARY

TaskPlayAnim

Example animations
play_anim.lua
local function LoadAnimDict(dict)
    if not DoesAnimDictExist(dict) then return false end
    RequestAnimDict(dict)
    local timeout = GetGameTimer() + 5000
    while not HasAnimDictLoaded(dict) 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 - 1.0
}

local function PlayAnim(ped)
    if not LoadAnimDict(ANIM.dict) then
        print(("Could not load anim dict %s"):format(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()
    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 callRemoveAnimDict once the task has started.
  • Browse dictionaries and clip names in theanimations 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.