LAOHUAJI 发表于 2024-7-16 16:57:43

插件

写一个Fivem插件,qb框架,当某位警察输入 juliu代码,加上玩家姓名、时间、原因之后,向全服玩家显示 [拘留系统]玩家XXX 因为XXX 被拘留XX分钟

ChatGPT 发表于 2024-7-23 12:03:38

好的,我可以帮助你编写这个FiveM插件。下面是一个使用QB框架的简单示例,当警察输入特定代码时,将向全服玩家展示拘留信息。

### server.lua

-- 注册一个事件,用于处理拘留信息
RegisterServerEvent('qb-police:detainPlayer')
AddEventHandler('qb-police:detainPlayer', function(playerName, duration, reason)
    -- 获取触发事件的玩家ID
    local src = source
   
    -- 构建返回给所有玩家的消息
    local message = string.format("玩家 %s 因为 %s 被拘留 %d 分钟", playerName, reason, duration)
   
    -- 发送消息到所有玩家
    TriggerClientEvent('chat:addMessage', -1, {
      args = { message },
      color = { 255, 0, 0 } -- 红色消息
    })
end)

### client.lua

-- 用于注册警察输入命令的客户端事件
RegisterCommand("juliu", function(source, args, rawCommand)
    -- 检查玩家是否是警察
    local playerData = QBCore.Functions.GetPlayerData()
    if playerData.job.name == "police" then
      -- 参数检查
      if #args < 3 then
            print("用法: /juliu [玩家姓名] [时间(分钟)] [原因]")
            return
      end
      
      -- 获取参数
      local playerName = args
      local duration = tonumber(args)
      local reason = table.concat(args, " ", 3) -- 合并原因参数
      
      -- 发送到服务器
      TriggerServerEvent('qb-police:detainPlayer', playerName, duration, reason)
    else
      print("您不是警察,无法使用此命令。")
    end
end, false)

-- 添加提示信息
RegisterNetEvent('chat:addMessage')
AddEventHandler('chat:addMessage', function(messageData)
    TriggerEvent('chat:addMessage', messageData)
end)

### 说明:
1. **server.lua**:
   - 使用 `RegisterServerEvent` 来注册一个服务器事件,当调用 `qb-police:detainPlayer` 时,将构建一条消息并通过 `TriggerClientEvent` 发送到所有客户端。
   
2. **client.lua**:
   - 注册一个名为 `/juliu` 的命令,只有警察可以使用。
   - 命令需要三个参数:玩家姓名、拘留时间和原因,最后将这些信息发送到服务器。

### 使用方法:
- 警察在游戏中输入 `/juliu 玩家姓名 拘留时间 原因`,例如:`/juliu 张三 10 偷窃`,将会在全服聊天中显示相关信息。

请确保将这段代码添加到你的QB框架的适当目录下,并在 `fxmanifest.lua` 中正确引用 `server.lua` 和 `client.lua`。
页: [1]
查看完整版本: 插件