搜索
查看: 29|回复: 1
收起左侧

翻译

[复制链接]
waaaa 发表于 2024-4-9 18:14:59 | 显示全部楼层 |阅读模式
-- colours that determine the success level
colours =
{
    ERROR = { 238, 167, 74 },
    SUCCESS = { 114, 210, 80 }
}

distances = {
    close = {
        shortname = "C",
        name = "CLOSE",
        distance = 15
    },

    med = {
        shortname = "M",
        name = "MEDIUM",
        distance = 200
    },

    far = {
        shortname = "F",
        name = "FAR",
        distance = 10000
    }
}

RegisterCommand('hlrange', function(source, args)
    if not IsPlayerAceAllowed(source, "hlabels.hlrange") then
        return TriggerClientEvent("chat:addMessage", source, {
            args = { "Head Labels", "You do not have permission to execute this command (hlrange)." },
            color = colours.ERROR
        })
    end

    if #args < 1 then
        return TriggerClientEvent('chat:addMessage', source, {
            args = { "Head Labels", "Invalid amount of arguments provided." },
            color = colours.ERROR
        })
    end

    local foundRange
    for k, v in pairs(distances) do
        if v["shortname"]:lower() == args[1]:lower() then
            foundRange = v
            break
        end
    end

    if not foundRange then
        return TriggerClientEvent("chat:addMessage", source, {
            args = { "Head Labels", "Unknown distance provided." },
            color = colours.ERROR
        })
    end

    TriggerClientEvent("setHeadLabelDistance", source, foundRange.distance)
    TriggerClientEvent("chat:addMessage", source, {
        args = { "Head Labels", "You have set your head label display range to: [ " .. foundRange.name:upper() .. " ]." },
        color = colours.SUCCESS
    })
end, false)

RegisterNetEvent("onClientHeadLabelRangeChange")
AddEventHandler("onClientHeadLabelRangeChange", function(change)
    local source = source
    -- ok, this is bad!
    if not IsPlayerAceAllowed(source, "hlabels.hlrange") then
        local thisResourceName = {
            DROP = GetCurrentResourceName() .. " (hlabels)",
            CONSOLE = "^7[^4" .. GetCurrentResourceName() .. "^7]"
        }
        local message = "Detected an unauthorized altercation of"
        print("^1(ALERT) " .. thisResourceName.CONSOLE .. ": ^3" .. message .. " player [ " .. GetPlayerName(source) .. " | " .. source .. " ] head label range. ^1Dropping the " ..
            "player from the server now.^7")
        DropPlayer(source, "Dropped as a protection of the " .. thisResourceName.DROP .. " resource. " .. message .. " your head label range.")
    end
end)








ESX = exports["es_extended"]:getSharedObject()
local Users = {}

ESX.RegisterServerCallback('hlabels:get', function(source, cb)
    local xPlayers = ESX.GetPlayers()
    Users = {}
    for i=1, #xPlayers, 1 do
        local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
        if xPlayer then
            table.insert(Users, {
                source = xPlayer.source,
                name = xPlayer.name,
                job_name = xPlayer.getJob().label..'-'..xPlayer.getJob().grade_label,
            })
        end
    end
    TriggerClientEvent('hlabels:name', -1, Users)
    cb(Users)
end)

function load()
    Wait(1000)
    local xPlayers = ESX.GetPlayers()
    Users = {}
    for i=1, #xPlayers, 1 do
        local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
        if xPlayer then
            table.insert(Users, {
                source = xPlayer.source,
                name = xPlayer.name,
                job_name = xPlayer.getJob().label..'-'..xPlayer.getJob().grade_label,
                job_code = xPlayer.job.name
            })
        end
    end
    TriggerClientEvent('hlabels:name', -1, Users)
end

Citizen.CreateThread(function()
    while true do
        Citizen.Wait(Config.updateTime)
        load()
    end
end)

回复 论坛版权

使用道具 举报

ChatGPT 发表于 2024-4-9 18:33:12 | 显示全部楼层
-- 确定成功级别的颜色
colours =
{
    ERROR = { 238, 167, 74 }, -- 错误颜色
    SUCCESS = { 114, 210, 80 } -- 成功颜色
}

-- 距离参数
distances = {
    close = {
        shortname = "C", -- 缩写
        name = "CLOSE", -- 名称
        distance = 15 -- 距离
    },

    med = {
        shortname = "M", -- 缩写
        name = "MEDIUM", -- 名称
        distance = 200 -- 距离
    },

    far = {
        shortname = "F", -- 缩写
        name = "FAR", -- 名称
        distance = 10000 -- 距离
    }
}

-- 注册命令,设置头顶标签显示范围
RegisterCommand('hlrange', function(source, args)
    if not IsPlayerAceAllowed(source, "hlabels.hlrange") then
        return TriggerClientEvent("chat:addMessage", source, {
            args = { "头顶标签", "您没有权限执行此命令 (hlrange)." }, -- 提示消息
            color = colours.ERROR -- 错误颜色
        })
    end

    if #args < 1 then
        return TriggerClientEvent('chat:addMessage', source, {
            args = { "头顶标签", "提供的参数数量无效." }, -- 提示消息
            color = colours.ERROR -- 错误颜色
        })
    end

    local foundRange
    for k, v in pairs(distances) do
        if v.name:lower() == args[1]:lower() then
            foundRange = v
            break
        end
    end

    if not foundRange then
        return TriggerClientEvent("chat:addMessage", source, {
            args = { "头顶标签", "提供的距离参数无效." }, -- 提示消息
            color = colours.ERROR -- 错误颜色
        })
    end

    TriggerClientEvent("setHeadLabelDistance", source, foundRange.distance)
    TriggerClientEvent("chat:addMessage", source, {
        args = { "头顶标签", "您已将头顶标签显示范围设置为: " .. foundRange.name .. "." }, -- 提示消息
        color = colours.SUCCESS -- 成功颜色
    })
end, false) -- 此代码放在服务器脚本文件中

-- 当客户端头顶标签范围改变时触发的事件
RegisterNetEvent("onClientHeadLabelRangeChange")
AddEventHandler("onClientHeadLabelRangeChange", function(change)
    local source = source
    -- 检查是否有权限执行该操作
    if not IsPlayerAceAllowed(source, "hlabels.hlrange") then
        local thisResourceName = {
            DROP = GetCurrentResourceName() .. " (hlabels)", -- 获取当前资源名称
            CONSOLE = "^7" -- 控制台消息颜色
        }
        local message = "检测到未经授权的操作"
        print("^1(警告) " .. thisResourceName.CONSOLE .. ": ^3" .. message .. " 更改了玩家头顶标签范围. ^1将玩家从服务器中移除.^7")
        DropPlayer(source, "作为对 " .. thisResourceName.DROP .. " 资源的保护,您已被移除服务器. " .. message .. " 您的头顶标签范围已被更改.")
    end
end)

-- 导入 ESX 共享对象
ESX = exports:getSharedObject()
local Users = {}

-- 注册服务器回调函数,获取玩家信息
ESX.RegisterServerCallback('hlabels:get', function(source, cb)
    local xPlayers = ESX.GetPlayers()
    Users = {}
    for i=1, #xPlayers, 1 do
        local xPlayer = ESX.GetPlayerFromId(xPlayers)
        if xPlayer then
            table.insert(Users, {
                source = xPlayer.source,
                name = xPlayer.name,
                job_name = xPlayer.getJob().label..'-'..xPlayer.getJob().grade_label,
            })
        end
    end
    TriggerClientEvent('hlabels:name', -1, Users)
    cb(Users)
end)

-- 加载函数
function load()
    Wait(1000)
    local xPlayers = ESX.GetPlayers()
    Users = {}
    for i=1, #xPlayers, 1 do
        local xPlayer = ESX.GetPlayerFromId(xPlayers)
        if xPlayer then
            table.insert(Users, {
                source = xPlayer.source,
                name = xPlayer.name,
                job_name = xPlayer.getJob().label..'-'..xPlayer.getJob().grade_label,
                job_code = xPlayer.job.name
            })
        end
    end
    TriggerClientEvent('hlabels:name', -1, Users)
end

-- 创建一个循环线程,定期更新玩家信息
Citizen.CreateThread(function()
    while true do
        Citizen.Wait(Config.updateTime)
        load()
    end
end) -- 此代码放在服务器脚本文件中
回复

使用道具 举报

ahome_bigavatar:guest
ahome_bigavatar:welcomelogin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|首页 ( 冀ICP备2021005225号-1 )|网站地图 |网站地图

GMT+8, 2024-5-13 02:19 , Processed in 0.117823 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 ELITE论坛【技术无价-分享快乐】

快速回复 返回顶部 返回列表