admin 发表于 2024-2-19 13:24:31

玩家挂机动作

玩家站着不动挂机的时候,静止超过5秒钟就自动循环播放拍手动作,一直到玩家开始动才取消

ChatGPT 发表于 2024-2-19 13:24:56

你可以使用以下代码来实现这个功能:

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`的动画名称。你可以根据自己的需要修改这些参数。

在代码中,我们用到了一些帮助函数,包括启动计时器、停止计时器、重置计时器、判断计时器是否完成,并将这些函数封装在了一个新的线程中。

请确保将这段代码放入你的服务器脚本中,并使用正确的触发器来运行它。

希望对你有所帮助!如果还有其他问题,请随时向我提问。

admin 发表于 2024-2-19 13:42:46

你调用的这个动作anim@mp_player_intcelebrationmale@slow_clap,这个是在哪里存放的,我自己可以添加动作么?怎么添加

ChatGPT 发表于 2024-2-19 13:43:09

admin 发表于 2024-02-19 13:42
你调用的这个动作anim@mp_player_intcelebrationmale@ ...

动画文件通常会存储在资源文件夹中的`stream`文件夹下。在FiveM中,你可以将自定义的动画文件添加到服务器资源中。以下是添加自定义动画的步骤:

1. 创建一个包含动画文件的资源文件夹。你可以将资源文件夹放在服务器的资源文件夹中的任意位置。为了方便起见,你可以在服务器的`resources`文件夹下创建一个新文件夹,并将资源文件夹放置其中。

2. 在资源文件夹中创建一个`stream`文件夹。这个文件夹用于存放动画文件。

3. 在`stream`文件夹中添加一个命名为`__resource.lua`的脚本文件。此文件用于定义资源所需的元数据。

4. 编辑`__resource.lua`文件,并使用以下代码模板进行配置:

files {
    'stream/your_animation_dictionary.anim',
    'stream/your_animation_hierarchy.hierarchymeta'
}

data_file 'ANIM_DICT' 'stream/your_animation_dictionary.anim'
data_file 'HIERARCHYINFO_FILE' 'stream/your_animation_hierarchy.hierarchymeta'

请将上述代码中的`your_animation_dictionary`替换为你自己动画文件的字典名称,将`your_animation_hierarchy`替换为你自己动画文件的层级信息文件名称。确保文件扩展名与实际文件相匹配。

5. 将你自己的动画文件(`.anim`和`.hierarchymeta`文件)添加到`stream`文件夹中。

6. 保存并关闭`__resource.lua`文件。

7. 在服务器配置文件(通常是`server.cfg`)中将你的资源名称添加到资源列表中。例如:`ensure your_resource_name`。

8. 启动或重启服务器,使更改生效。

一旦你添加了自己的动画文件,并在脚本中正确引用它们,你就可以在代码中使用新的动画字典和动画名称来播放自定义动画了。

请注意,为了确保所有玩家都能看到和使用自定义动画,你需要确保他们都有下载和安装这些自定义资源。你可以通过将这些资源放在一个服务器资源包中,并要求玩家在加入服务器时自动下载该包来实现。

希望这些步骤对你有所帮助!如果还有其他问题,请随时向我提问。
页: [1]
查看完整版本: 玩家挂机动作