example
example

资源 分享一个自写得管理员拉车插件

TiMo

新用户
高级用户
认证用户
自写得一个小功能,适合新手参考,如需技术支持请留言
拉车指令 /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)
 

IamDiWang

活跃的用户
论坛元老
高级用户
认证用户
给一点小建议,对于公放脚本尽量使用原生API,这样可以去除框架依赖性,让更多服务器可用,这个脚本我看了下ESX导入是用于权限验证的,这个其实可以使用原生的ACE权限组
 

Yann

站长
管理成员
GTAOS管理组
认证卖家
认证用户
本 月 名 人 榜 最 佳
感谢分享
 

TiMo

新用户
高级用户
认证用户
给一点小建议,对于公放脚本尽量使用原生API,这样可以去除框架依赖性,让更多服务器可用,这个脚本我看了下ESX导入是用于权限验证的,这个其实可以使用原生的ACE权限组
这个确实可以改改,不依赖框架更好用
 
顶部