自写得一个小功能,适合新手参考,如需技术支持请留言
拉车指令 /lache 车牌
定位指令/dingwei 车牌 定位可以所有人使用
--client.kua
--server.lua
拉车指令 /lache 车牌
定位指令/dingwei 车牌 定位可以所有人使用
--client.kua
lua:
RegisterNetEvent('lache:setWaypoint')
AddEventHandler('lache:setWaypoint', function(coords)
-- 设置新的导航点
SetNewWaypoint(coords.x, coords.y)
-- 向玩家发送成功消息
TriggerEvent('chat:addMessage', {
args = { '^2成功:', '车辆位置已在地图上设置导航点。' }
})
end)
--server.lua
代码:
ESX = exports['es_extended']:getSharedObject()
-- 判断是否为管理员
local function IsPlayerAdmin(xPlayer)
local group = xPlayer.getGroup()
return group == 'admin' or group == 'superadmin'
end
RegisterCommand('lache', function(source, args, raw)
-- 空格会造成参数被分割 以上示例会得到 args[1] = 'ABC' args[2] = '123'
-- 所以对完整命令进行分割 获取车牌
local plate = raw:match("^%S+%s+(.*)"):match("^%s*(.-)%s*$") -- 去除第一个空格及其左边的内容,并去除车牌中的空格
print(plate)
print(args)
print(raw)
local found = false
for _, v in pairs(GetAllVehicles()) do
local xPlayer = ESX.GetPlayerFromId(source)
-- 检查玩家是否为管理员
if not IsPlayerAdmin(xPlayer) then
TriggerClientEvent('chat:addMessage', source, { args = { '^1错误:', '您没有权限使用此命令。' } })
return
end
-- 确保命令参数正确
if #args < 1 then
TriggerClientEvent('chat:addMessage', source, { args = { '^1错误:', '用法: /lache [车牌]' } })
return
end
local coords = xPlayer.getCoords(true)
-- ":match("^%s*(.-)%s*$")" 作用 去除特定格式车牌两侧的空格
-- 举例 " ABC 123" ~= "ABC 123"
if GetVehicleNumberPlateText(v):match("^%s*(.-)%s*$") == plate then
local coords1 = GetEntityCoords(v)
print(coords)
print(coords1)
-- FindFirstVehicle()
SetEntityCoords(GetPlayerPed(source), coords1.x, coords1.y, coords1.z, true, false, false, false)
Wait(3000)
SetEntityCoords(v, coords.x, coords.y, coords.z, true, false, false, false)
SetEntityCoords(GetPlayerPed(source), coords.x, coords.y, coords.z, true, false, false, false)
found = true
break
end
end
if not found then
TriggerClientEvent('chat:addMessage', source, { args = { '^1错误:', '未找到车牌为 ' .. plate .. ' 的车辆。' } })
end
end, true)
RegisterCommand('dingwei', function(source, args, raw)
-- 空格会造成参数被分割 以上示例会得到 args[1] = 'ABC' args[2] = '123'
-- 所以对完整命令进行分割 获取车牌
local plate = raw:match("^%S+%s+(.*)"):match("^%s*(.-)%s*$") -- 去除第一个空格及其左边的内容,并去除车牌中的空格
local found = false
for _, v in pairs(GetAllVehicles()) do
local xPlayer = ESX.GetPlayerFromId(source)
-- 确保命令参数正确
if #args < 1 then
TriggerClientEvent('chat:addMessage', source, { args = { '^1错误:', '用法: /dingwei [车牌]' } })
return
end
local coords = xPlayer.getCoords(true)
-- ":match("^%s*(.-)%s*$")" 作用 去除特定格式车牌两侧的空格
-- 举例 " ABC 123" ~= "ABC 123"
if GetVehicleNumberPlateText(v):match("^%s*(.-)%s*$") == plate then
local coords1 = GetEntityCoords(v)
-- FindFirstVehicle()
-- SetEntityCoords(GetPlayerPed(source), coords1.x, coords1.y, coords1.z, true, false, false, false)
-- 向客户端发送标记点
TriggerClientEvent('lache:setWaypoint', source, coords1)
found = true
break
end
end
if not found then
TriggerClientEvent('chat:addMessage', source, { args = { '^1错误:', '未找到车牌为 ' .. plate .. ' 的车辆。' } })
end
end, true)