好的,我可以帮助你编写这个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[1]
local duration = tonumber(args[2])
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`。 |