본문으로 건너뛰기

애니메이션 플래그 계산기

애니메이션 동작을 골라 TaskPlayAnim, TaskPlayAnimAdvanced에 쓰는 플래그 정수를 얻으세요. 바로 붙여넣을 수 있는 Lua 스니펫도 함께 나옵니다.

이 도구와 설명은 아직 영어로만 제공됩니다.

계산기네이티브, 플래그문서 읽기

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.