Liste de joueur dans un menu RageUI

Bonjour, bonsoir

● Machine locale ● FX

Bonjour je viens vers vous pour chercher de l’aide car je souhaite faire quelque chose.

J’utilise les fonction de RageUI pour creer un menu dans lequel je souhaite afficher la liste des joueurs. Quand cette liste des joueurs est affichée, j’aimerais pouvoir cliquer sur un joueur et avoir un sous-menu qui s’ouvre avec la possibilité dans un premier temps de pouvoir me téléporté au joueur choisis.

Pour cela coté serveur je vais utiliser ceci :

RegisterNetEvent('adminmenu:getplayer')
AddEventHandler('adminmenu:getplayer', function()
    local info = {}
    local player = GetPlayers()
    for k,v in pairs(player) do
        table.insert(info, {name= GetPlayerName(v), id= v})
    end
    TriggerClientEvent('adminmenu:recupinfo', source, info)
end)

Qui me permet de récupérer le nom du joueur ainsi que son ID. Qui sera retransmis coté client via ceci :

Joueur = {}

RegisterNetEvent('adminmenu:recupinfo')
AddEventHandler('adminmenu:recupinfo', function(player)
    Joueur = player
end)

Du coup j’ai créer mon menu qui va gérer tout le coté serveur puis j’ai ajouter un bouton qui quand je vais appuyer dessus va m’afficher tout les joueurs présent sur le serveur en allant dans un sous-menu :

RageUI.IsVisible(subMenuServeur, function() 

RageUI.Button("Liste des joueurs", "Afficher une liste des joueurs sur le serveur", {}, true, {onSelected = function() end}, subMenuListesJoueurs);

end, function() end)

Dans le menu liste des joueurs j’ai ajouté le code pour l’affichage de tout les joueurs présent sous forme de boutons :

Citizen.CreateThread(function()
            TriggerServerEvent('adminmenu:getplayer')
            while true do
                RageUI.IsVisible(subMenuListesJoueurs, function()
                    for k,v in ipairs(Joueur) do
                        RageUI.Button(v.name, description, {RightLabel = "ID : "..v.id}, true, {onSelected = function()
                        end}, subMenuListeCommandes);
                    end
                end, function() end)

                RageUI.IsVisible(subMenuListeCommandes, function()
                    RageUI.Button("Se teleporter au joueur", description, {}, true, {onSelected = function()
                    --Mettre son code ici
                    end});
                end, function() end)
                Citizen.Wait(120000)
            end
        end)

Arriver la j’ai bien l’affiche des joueurs présent sur le serveur avec le bon ID a coté via le screen suivant :

Screenshot_12

Du coup ce que je voudrais faire c’est que si j’appuie sur moi ou un autre joueur j’ai d’autres boutons qui s’affiche avec : Se teleporter au joueur

Ce que j’ai fais et qui marche. Le problème est que pour me tp au joueur il me faut son ID sauf que la variable v.id, donne tout les IDS des joueurs connecté.

Du coup comment faire pour que si j’appuie sur le joueur avec l’ID 5 je puisse me permettre de me TP a ce joueur ?

Si quelqu’un a une idée/solution/début de piste je suis preneur car je bloque sur ca.

J’espère m’être fait comprendre cordialement.

Bonjour, j’espère que tu as trouvé entre temps mais sinon :

for k,v in pairs(GetActivePlayers()) do
                        RageUI.Button(GetPlayerServerId(v).." - "..GetPlayerName(v), nil, {RightLabel = "→"}, true, {
                            onSelected = function() 
                                idjoueur = GetPlayerServerId(v) 
                                nomjoueur = GetPlayerName(v)
                            end
                        }, subMenu)
                    end

Il te manquera plus qu’à faire ton subMenu en utilisant idjoueur pour l’id et nomjoueur pour le nom du joueur, tu peux aussi bien sur utiliser des servercallback si tu as besoin d’autres informations sur le joueur.