Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Bienvenue Guest!

Rejoignez la communauté pour avoir accès à l'entièreté du site! Une fois que vous serez enregistré, vous pourrez créer, aider, partager et discuter avec les membres de la communauté et également participer à l'amélioration du site. Alors, qu'attendez vous ? Enregistrez-vous !

  • 0
Sign in to follow this  
NikoDEK

résolu Créations d'un menu perso (NativeUI)

Question

NikoDEK

Bonjour a tous,


Sur quel framework travaillez vous? (ESX/VRP/ES/Autre) : ESX

Quel est le script que vous utilisez (+version)? : NativeUILua_Reloaded, es_extended
Qu'avez vous-essayé auparavant ? (Vider votre cache, installation du script au propre etc...): J'ai esseyer plusieurs modifications mais rien n'y fait
Êtes vous sûr d'avoir la dernière version de votre framework ? : Oui

Explication de votre problème : 

Je rencontre un problème sur la créations de mon menu perso j'ai cette erreur (screen)

Mais quand j'essaye de générer le même menu mais avec le menu default de esx tous fonctionne bien.

 

Je pense que le "ESX.TriggerServerCallback('Menu:GetAllByPlayerID', function(data)   end)" n'est pas detecter dans la  "function PorteFeuille(menu)",

si vous auriez une idée de mon erreur je poste mon code si dessous ;)

 

Merci d'avance pour votre aide.

 

Lien vers vos logs de l'erreur sur pastebin/hastebin client+serveur : (screen)

local Keys = {
	["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57
}

ESX = nil
local PlayerData = {}

Citizen.CreateThread(function()
	while ESX == nil do
		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
		Citizen.Wait(0)
	end
	while ESX.GetPlayerData().job == nil do
    Citizen.Wait(10)
  end
  PlayerData = ESX.GetPlayerData()
end)

RegisterNetEvent('esx:playerLoaded')
AddEventHandler('esx:playerLoaded', function(xPlayer)
	PlayerData = xPlayer
end)

RegisterNetEvent('esx:setJob')
AddEventHandler('esx:setJob', function(job)
  PlayerData.job = job
end)

_menuPool = NativeUI.CreatePool()
mainMenu = NativeUI.CreateMenu("Menu Personnel", "Menu Personnel")
_menuPool:Add(mainMenu)

function Accessoires(menu)
    local Description = "Vos accessoires!"
    local Accessoires = NativeUI.CreateItem("Accessoires", Description)
    menu:AddItem(Accessoires)
    menu.OnItemSelect = function(menu, item)
        if item == Accessoires then
            -- Ouvrir le menu accessoires
        end
    end
end

function Factures(menu)
    local Description = "Vos factures!"
    local Factures = NativeUI.CreateItem("Factures", Description)
    menu:AddItem(Factures)
    menu.OnItemSelect = function(menu, item)
        if item == Factures then
            -- Ouvrir le menu factures
        end
    end
end

function PorteFeuille(menu)

    ESX.TriggerServerCallback('Menu:GetAllByPlayerID', function(data)
        
        local Description = "Ouvrir votre porte-feuille!"
        local submenu = _menuPool:AddSubMenu(menu, "Porte-Feuille", Description)
        if data ~= nil then
        
            local Cash = NativeUI.CreateItem("~g~Argent liquide : "..data.money.." $", "Argent liquide!") 
	        Cash.Activated = function(ParentMenu, SelectedItem)
            	-- Give Cash
                
            end
        
            local Dirty = NativeUI.CreateItem("~r~Argent sale : "..data.dirtymoney.." $.", "Argent Sale!")
	        Dirty.Activated = function(ParentMenu, SelectedItem)
            	-- Give Dirty
                
            end
        
            if PlayerData.job.name == 'unemployed' then
                local JobChomeur = NativeUI.CreateItem("~y~Job : "..PlayerData.job.grade_label..".", "Vous n'avez pas de travail!")
            end
        else
            local Nil = NativeUI.CreateItem("pas d\'infos...")
        end
        submenu.SubMenu:AddItem(Cash)
        submenu.SubMenu:AddItem(Dirty)
        submenu.SubMenu:AddItem(JobChomeur)
        submenu.SubMenu:AddItem(Nil)
    end)
end

Accessoires(mainMenu)
Factures(mainMenu)
PorteFeuille(mainMenu)
_menuPool:RefreshIndex()

Citizen.CreateThread(function()
    while true do
        Citizen.Wait(0)
        _menuPool:ProcessMenus()
        if IsControlJustPressed(1,Keys['F1']) then
            mainMenu:Visible(not mainMenu:Visible())
        end
    end
end)

 

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Kanda Sorata

Salut ! La prochaine fois essai de mettre le format d'aide ;)

Sinon, as tu essayé de print ton data pour vérifier si ça venait bien du trigger ? A quoi correspond la ligne 65 pour toi ?

Share this post


Link to post
Share on other sites
  • 0
NikoDEK
Posted (edited)

Desolet j'avait pas vu :/ 

Je les mis a jour ;) 

 

Je ne peut pas le print car le menu ne s'ouvre pas du tous .. j'ai une erreur direct aux chargement 

Pour moi la ligne 65 

ESX.TriggerServerCallback('Menu:GetAllByPlayerID', function(data)

Ses justement sa que je comprend pas, j'ai essayer de faire le même menu dans le fichier en utilisant le esx_menu_default est sa fonctionne bien mais avec NativeUI non :/ 

 

Edited by NikoDEK

Share this post


Link to post
Share on other sites
  • 0
Daysnos

Il faudrait que tu rajoute des if comme ceci sinon tu risque d'ouvrir des menu qui n'existe pas donc erreur : 

if Cash ~= nil then
    submenu.SubMenu:AddItem(Cash)
end
if Dirty ~= nil then
    submenu.SubMenu:AddItem(Dirty)
end
if JobChomeur ~= nil
submenu.SubMenu:AddItem(JobChomeur)
end 
if Nil ~= nil then
    submenu.SubMenu:AddItem(Nil)
end

Share this post


Link to post
Share on other sites
  • 0
Kanda Sorata

Bonsoir, j 'ai cru voir sur discord que tu as semblé avoir réglé le soucis, tu confirmes ? @NikoDEK

Si oui quel était le problème ou comment l'as tu contourné ?

Share this post


Link to post
Share on other sites
  • 0
NikoDEK
Posted (edited)
Le 13/06/2019 à 13:16, Daysnos a dit :

Il faudrait que tu rajoute des if comme ceci sinon tu risque d'ouvrir des menu qui n'existe pas donc erreur : 

if Cash ~= nil then
    submenu.SubMenu:AddItem(Cash)
end
if Dirty ~= nil then
    submenu.SubMenu:AddItem(Dirty)
end
if JobChomeur ~= nil
submenu.SubMenu:AddItem(JobChomeur)
end 
if Nil ~= nil then
    submenu.SubMenu:AddItem(Nil)
end

Merci a toi pour l'info je regarderai sa , oui Kanda j'ai fait comme tu ma dit en générant le menu qu'après avoir appuyer sur la touche d'ouverture se qui ma permis de charger esx avant le menu et du coup sa marche 

https://streamable.com/s/iqytu/gebhjm

 

Edited by NikoDEK

Share this post


Link to post
Share on other sites
  • 0
Kanda Sorata

Yo, niquel du coup, pour l'information la solution était la suivante :

 

Dans son code il créait ses menus hors de toute fonction ou autre comme ceci :

Accessoires(mainMenu)
Factures(mainMenu)
PorteFeuille(mainMenu)
_menuPool:RefreshIndex()

Citizen.CreateThread(function()
    while true do
        Citizen.Wait(0)
        _menuPool:ProcessMenus()
        if IsControlJustPressed(1,Keys['F1']) then
            mainMenu:Visible(not mainMenu:Visible())
        end
    end
end)

Hors ses menus étaient donc appelés sans utilisateur et avant que ESX soit correctement loaded pour le script, ce qui provoquait son erreur puisque les fonctions ESX étaient toutes nil

 

Il a donc (à priori) fait comme ceci :


Citizen.CreateThread(function()
    while true do
        Citizen.Wait(0)
        _menuPool:ProcessMenus()
        if IsControlJustPressed(1,Keys['F1']) then
            Accessoires(mainMenu)
            Factures(mainMenu)
            PorteFeuille(mainMenu)
			_menuPool:RefreshIndex()
            mainMenu:Visible(not mainMenu:Visible())
        end
    end
end)

Je verrouille donc le sujet :)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

En utilisant ce site, vous acceptez les présents règlements Terms of Use, Privacy Policy,Guidelines.