example
example

已解决√ 求助 怎么给管理菜单的名字改成游戏里的名字

Cr1sP

新用户
认证用户
黄金
63.59 黄金
现在我管理菜单显示的名字是他们的FiveM或者Steam名字
我怎么给他改成是他们游戏的角色名字
代码是这样的 local name = 'ID' 'GetPlayerServerId(i)..' | ' GetPlayerName(i)
 
对esx不是特别熟,你可以试试
Lua:
local name = 'ID'..GetPlayerServerId(i)..' | '..ESX.GetPlayerFromId(GetPlayerServerId(i)).getName()
 
现在我管理菜单显示的名字是他们的FiveM或者Steam名字
我怎么给他改成是他们游戏的角色名字
代码是这样的 local name = 'ID' 'GetPlayerServerId(i)..' | ' GetPlayerName(i)
客户端代码的话, 得从服务端获取一下玩家名字. 这一段代码不够, 还需要更多上下文代码
 
Lua:
players = {}

local function cleanUpGamerTags()
    for _, v in pairs(Tag) do
        if IsMpGamerTagActive(v) then
            RemoveMpGamerTag(v)
        end
    end
    Tag = {}
end

function DrawText3D(x, y, z, text)
    SetTextScale(0.6, 0.6)
    SetTextFont(1)
    SetTextProportional(1)
    SetTextColour(255, 0, 0, 255)
    SetTextEntry("STRING")
    SetTextCentre(true)
    AddTextComponentString(text)
    SetDrawOrigin(x,y,z, 0)
    DrawText(0.0, 0.0)
    local factor = (string.len(text)) / 370
    -- DrawRect(0.0, 0.0+0.0125, 0.017+ factor, 0.03, 0, 0, 0, 75)
    ClearDrawOrigin()
end


function ToggleNames()
    if Config.NewNamesLogic then
        if not toggleNameThread then
            TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
            toggleNameThread = true
            StartNamesThread()
            StartDistanceThread()
            StartGroupThread()
            while toggleNameThread do
                local p = promise.new()
                TriggerCallback("snipe-menu:server:getBlipsInfo", function(result)
                    p:resolve(result)
                end)
                players = Citizen.Await(p)
                Wait(5000)
            end
        else
            toggleNameThread = false
            players = {}
            CleanupOnClose()
        end
    else
        if not toggleNameThread then
            TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
            toggleNameThread = true
            while toggleNameThread do
                local curCoords = GetEntityCoords(PlayerPedId())
                local allActivePlayers = GetActivePlayers()
                for _, i in ipairs(allActivePlayers) do
                    local playeridx = GetPlayerFromServerId(i)
                    local ped = GetPlayerPed(i)
                    local name = 'ID: '..GetPlayerServerId(i)..' | '..GetPlayerName(i)

                    if not IsMpGamerTagActive(Tag[i]) then
                        Tag[i] = CreateFakeMpGamerTag(ped, name, false, false, "", false)
                    end
                    if #(curCoords - GetEntityCoords(ped)) <= 150.0 then
                        SetMpGamerTagAlpha(Tag[i], 0, 255) -- Sets "MP_TAG_GAMER_NAME" bar alpha to 100% (not needed just as a fail safe)
                        SetMpGamerTagAlpha(Tag[i], 2, 255) -- Sets "MP_TAG_HEALTH_ARMOUR" bar alpha to 100%
                        SetMpGamerTagAlpha(Tag[i], 4, 255) -- Sets "MP_TAG_AUDIO_ICON" bar alpha to 100%
                        SetMpGamerTagAlpha(Tag[i], 6, 255) -- Sets "MP_TAG_PASSIVE_MODE" bar alpha to 100%
                        SetMpGamerTagHealthBarColour(Tag[i], 25)  --https://wiki.rage.mp/index.php?title=Fonts_and_Colors

                        SetMpGamerTagVisibility(Tag[i], 0, true) -- Activates the player ID Char name and FiveM name
                        SetMpGamerTagVisibility(Tag[i], 2, true) -- Activates the health (and armor if they have it on) bar below the player names
                        if GetPlayerInvincible(playeridx) then
                            SetMpGamerTagVisibility(Tag[i], 6, true) -- If player is in godmode a circle with a line through it will show up
                        else
                            SetMpGamerTagVisibility(Tag[i], 6, false)
                        end
                    else
                        SetMpGamerTagVisibility(Tag[i], 0, 0)
                        SetMpGamerTagVisibility(Tag[i], 2, 0)
                    end
                end
                Wait(150)
            end
        else
            cleanUpGamerTags()
            toggleNameThread = false
            
            
        end
    end
end

AddEventHandler("onResourceStop", function(resourceName)
    if resourceName == "snipe-menu" then
        cleanUpGamerTags()
    end
end)
 
看下Config.NewNamesLogic
这个参数, 然后再查一下snipe-menu:server:getBlipsInfo 这个回调有没有加密, 发的是什么数据. 感觉会是全部玩家的数据
 
ESX = exports["es_extended"]:getSharedObject()
players = {}
local function cleanUpGamerTags()
for _, v in pairs(Tag) do
if IsMpGamerTagActive(v) then
RemoveMpGamerTag(v)
end
end
Tag = {}
end
function DrawText3D(x, y, z, text)
SetTextScale(0.6, 0.6)
SetTextFont(1)
SetTextProportional(1)
SetTextColour(255, 0, 0, 255)
SetTextEntry("STRING")
SetTextCentre(true)
AddTextComponentString(text)
SetDrawOrigin(x,y,z, 0)
DrawText(0.0, 0.0)
local factor = (string.len(text)) / 370
-- DrawRect(0.0, 0.0+0.0125, 0.017+ factor, 0.03, 0, 0, 0, 75)
ClearDrawOrigin()
end
function ToggleNames()
if Config.NewNamesLogic then
if not toggleNameThread then
TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
toggleNameThread = true
StartNamesThread()
StartDistanceThread()
StartGroupThread()
while toggleNameThread do
local p = promise.new()
TriggerCallback("snipe-menu:server:getBlipsInfo", function(result)
p:resolve(result)
end)
players = Citizen.Await(p)
Wait(5000)
end
else
toggleNameThread = false
players = {}
CleanupOnClose()
end
else
if not toggleNameThread then
TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
toggleNameThread = true
while toggleNameThread do
local curCoords = GetEntityCoords(PlayerPedId())
local allActivePlayers = GetActivePlayers()
for _, i in ipairs(allActivePlayers) do
local playeridx = GetPlayerFromServerId(i)
local ped = GetPlayerPed(i)
local xPlayer = ESX.GetPlayerFromId(i)
local fullName = xPlayer.getName()
local name = 'ID: '..GetPlayerServerId(i)..' | '..fullName
if not IsMpGamerTagActive(Tag) then
Tag = CreateFakeMpGamerTag(ped, name, false, false, "", false)
end
if #(curCoords - GetEntityCoords(ped)) <= 150.0 then
SetMpGamerTagAlpha(Tag, 0, 255) -- Sets "MP_TAG_GAMER_NAME" bar alpha to 100% (not needed just as a fail safe)
SetMpGamerTagAlpha(Tag, 2, 255) -- Sets "MP_TAG_HEALTH_ARMOUR" bar alpha to 100%
SetMpGamerTagAlpha(Tag, 4, 255) -- Sets "MP_TAG_AUDIO_ICON" bar alpha to 100%
SetMpGamerTagAlpha(Tag, 6, 255) -- Sets "MP_TAG_PASSIVE_MODE" bar alpha to 100%
SetMpGamerTagHealthBarColour(Tag, 25) --https://wiki.rage.mp/index.php?title=Fonts_and_Colors
SetMpGamerTagVisibility(Tag, 0, true) -- Activates the player ID Char name and FiveM name
SetMpGamerTagVisibility(Tag, 2, true) -- Activates the health (and armor if they have it on) bar below the player names
if GetPlayerInvincible(playeridx) then
SetMpGamerTagVisibility(Tag, 6, true) -- If player is in godmode a circle with a line through it will show up
else
SetMpGamerTagVisibility(Tag, 6, false)
end
else
SetMpGamerTagVisibility(Tag, 0, 0)
SetMpGamerTagVisibility(Tag, 2, 0)
end
end
Wait(150)
end
else
cleanUpGamerTags()
toggleNameThread = false
end
end
end
AddEventHandler("onResourceStop", function(resourceName)
if resourceName == "snipe-menu" then
cleanUpGamerTags()
end
end)
客户端代码能用ESX.GetPlayerFromId吗, 大哥
 
加密了server blips
那麻烦看下Config.NewNamesLogic这个是干嘛, 要不就启用一下看看, 然后把players这个表数据打印出来看看是什么数据, 如果是玩家数据的话, 我们就可以直接用已有的事件改改就行了
 
那麻烦看下Config.NewNamesLogic这个是干嘛, 要不就启用一下看看, 然后把players这个表数据打印出来看看是什么数据, 如果是玩家数据的话, 我们就可以直接用已有的事件改改就行了
Config.NewNamesLogic = true -- 如果为true,将使用新的名称逻辑。如果为false,将使用旧的名称逻辑
 
Lua:
players = {}

local function cleanUpGamerTags()
    for _, v in pairs(Tag) do
        if IsMpGamerTagActive(v) then
            RemoveMpGamerTag(v)
        end
    end
    Tag = {}
end

function DrawText3D(x, y, z, text)
    SetTextScale(0.6, 0.6)
    SetTextFont(1)
    SetTextProportional(1)
    SetTextColour(255, 0, 0, 255)
    SetTextEntry("STRING")
    SetTextCentre(true)
    AddTextComponentString(text)
    SetDrawOrigin(x,y,z, 0)
    DrawText(0.0, 0.0)
    local factor = (string.len(text)) / 370
    -- DrawRect(0.0, 0.0+0.0125, 0.017+ factor, 0.03, 0, 0, 0, 75)
    ClearDrawOrigin()
end


function ToggleNames()
    if Config.NewNamesLogic then
        if not toggleNameThread then
            TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
            toggleNameThread = true
            StartNamesThread()
            StartDistanceThread()
            StartGroupThread()
            while toggleNameThread do
                local p = promise.new()
                TriggerCallback("snipe-menu:server:getBlipsInfo", function(result)
                    p:resolve(result)
                end)
                players = Citizen.Await(p)
                Wait(5000)
            end
        else
            toggleNameThread = false
            players = {}
            CleanupOnClose()
        end
    else
        if not toggleNameThread then
            TriggerServerEvent("snipe-menu:server:sendLogs", "triggered", Config.Locales["toggle_name_used"])
            toggleNameThread = true
            while toggleNameThread do
                local curCoords = GetEntityCoords(PlayerPedId())
                local allActivePlayers = GetActivePlayers()
                for _, i in ipairs(allActivePlayers) do
                    local playeridx = GetPlayerFromServerId(i)
                    local ped = GetPlayerPed(i)
                    local name = 'ID: '..GetPlayerServerId(i)..' | '..GetPlayerName(i)

                    if not IsMpGamerTagActive(Tag[i]) then
                        Tag[i] = CreateFakeMpGamerTag(ped, name, false, false, "", false)
                    end
                    if #(curCoords - GetEntityCoords(ped)) <= 150.0 then
                        SetMpGamerTagAlpha(Tag[i], 0, 255) -- Sets "MP_TAG_GAMER_NAME" bar alpha to 100% (not needed just as a fail safe)
                        SetMpGamerTagAlpha(Tag[i], 2, 255) -- Sets "MP_TAG_HEALTH_ARMOUR" bar alpha to 100%
                        SetMpGamerTagAlpha(Tag[i], 4, 255) -- Sets "MP_TAG_AUDIO_ICON" bar alpha to 100%
                        SetMpGamerTagAlpha(Tag[i], 6, 255) -- Sets "MP_TAG_PASSIVE_MODE" bar alpha to 100%
                        SetMpGamerTagHealthBarColour(Tag[i], 25)  --https://wiki.rage.mp/index.php?title=Fonts_and_Colors

                        SetMpGamerTagVisibility(Tag[i], 0, true) -- Activates the player ID Char name and FiveM name
                        SetMpGamerTagVisibility(Tag[i], 2, true) -- Activates the health (and armor if they have it on) bar below the player names
                        if GetPlayerInvincible(playeridx) then
                            SetMpGamerTagVisibility(Tag[i], 6, true) -- If player is in godmode a circle with a line through it will show up
                        else
                            SetMpGamerTagVisibility(Tag[i], 6, false)
                        end
                    else
                        SetMpGamerTagVisibility(Tag[i], 0, 0)
                        SetMpGamerTagVisibility(Tag[i], 2, 0)
                    end
                end
                Wait(150)
            end
        else
            cleanUpGamerTags()
            toggleNameThread = false
           
           
        end
    end
end

AddEventHandler("onResourceStop", function(resourceName)
    if resourceName == "snipe-menu" then
        cleanUpGamerTags()
    end
end)
Lua:
客户端
ESX.TriggerServerCallback('getCharacterName', function(characterName)
    if characterName then
        name = 'ID: '..GetPlayerServerId(i)..' | '..characterName
    end
end, GetPlayerServerId(i))
服务端
ESX.RegisterServerCallback('getCharacterName', function(source, cb, targetId)
    local xPlayer = ESX.GetPlayerFromId(targetId)
    
    if xPlayer then
        local firstname = xPlayer.get('firstName') or ''
        local lastname = xPlayer.get('lastName') or ''
        
        if firstname ~= '' or lastname ~= '' then
            cb(firstname .. ' ' .. lastname)
        else
            cb(xPlayer.getName())
        end
    else
        cb(nil)
    end
end)
 
后退
顶部