你可以使用以下代码来实现这个功能:
local isIdle = false -- 玩家是否处于静止状态
local timer = nil -- 定时器
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = PlayerPedId()
local pedCoords = GetEntityCoords(playerPed)
if IsPedStill(playerPed) and not isIdle then
isIdle = true
StartTimer()
elseif not IsPedStill(playerPed) and isIdle then
isIdle = false
StopTimer()
end
if isIdle and IsTimerFinished() then
PlayAnimation(playerPed, "anim@mp_player_intcelebrationmale@slow_clap", "slow_clap")
ResetTimer()
end
end
end)
function StartTimer()
timer = GetGameTimer()
end
function StopTimer()
timer = nil
end
function ResetTimer()
timer = GetGameTimer()
end
function IsTimerFinished()
if GetGameTimer() - timer >= 5000 then
return true
else
return false
end
end
function PlayAnimation(ped, dictionary, animation)
RequestAnimDict(dictionary)
while not HasAnimDictLoaded(dictionary) do
Citizen.Wait(100)
end
TaskPlayAnim(ped, dictionary, animation, 8.0, -8.0, -1, 16, 0, false, false, false)
RemoveAnimDict(dictionary)
end
在这段代码中,我们首先创建了一个线程来检测玩家的状态。如果玩家处于静止状态并且之前不是静止状态,则启动一个计时器。当玩家开始移动时,停止计时器。
如果玩家处于静止状态并且计时器已经超过了5秒钟,则执行拍手动作。这个动作使用了`anim@mp_player_intcelebrationmale@slow_clap`的动画字典和`slow_clap`的动画名称。你可以根据自己的需要修改这些参数。
在代码中,我们用到了一些帮助函数,包括启动计时器、停止计时器、重置计时器、判断计时器是否完成,并将这些函数封装在了一个新的线程中。
请确保将这段代码放入你的服务器脚本中,并使用正确的触发器来运行它。
希望对你有所帮助!如果还有其他问题,请随时向我提问。 |