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 !

Jijamik

novice Menus ESX

Recommended Posts

Jijamik

 

Comment créer un menu ESX ?
 

ESX offre 3 types de menus par défaut, c'est ce que nous allons aborder dans ce tutoriel.
 

Les prérequis :

 

- es_extended
- esx_menu_default

- esx_menu_dialog

- esx_menu_list

 

Les fonctions :


Ouvrir un menu avec les paramètres spécifiés :

ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, close)

Fermer tous les menus ouverts :

ESX.UI.Menu.CloseAll()

Astuce : pour compter le nombre de menus ouverts vous pouvez utiliser :

#ESX.UI.Menu.Opened 


menu_default :

 

ESX.UI.Menu.Open( 
    'default', GetCurrentResourceName(), 'nomdumenu', -- Remplacez le nom du menu
    {
        title    = ('Ici, le titre du menu'),
        align = 'top-left', -- Position du menu
        elements = { -- Contient les différents éléments du menu
            {label = ('Ici, le champs 1 du menu'),     value = 'test'},
            {label = ('Champs 2'),     value = 'champs2'},
            {label = ('Champs 3'),      value = 'champs3'}
        }
    },
    function(data, menu) -- Cette partie contient le code qui s'exécute lorsque l'on presse entrer
        
        if data.current.value == 'test' then
           -- Ici l'action lorsque l'on sélectionne le champ 1
        end
        
    end,
    function(data, menu) -- Cette partie contient le code qui s'exécute lorsque l'on presse retour
        menu.close() -- Ferme le menu
    end
)

Menu1.png

elements :

local elements = {
    -- Création d'une table
    { label = ('Champs classique'), value = 'champs1' }
}

if PlayerData.job.grade_name == 'boss' then -- Si le joueur a le grade boss alors on insère une ligne dans le menu
    table.insert(elements, {
        label = ' - <span style="color:red;">Rouge</span>', -- Exemple d'utilisation de css
        -- Propriétés du menu
        type = 'slider', -- Le type slider permet de choisir une valeur
        value = 128, -- Valeur par défaut
        min = 1, -- Valeur minimale
        max = 255 -- Valeur maximale
    })
end  

Menu2.png

menus imbriqués :
Voici un exemple de menu imbriqués.

ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'menu1',
    {
        title = ('Menu 1'),
        elements = {
            { label = ('Champs 1'), value = 'champs1' }
        }
    },
    function(data, menu)
        ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'menu2',
            {
                title = ('Menu 2'),
                elements = {
                    { label = ('Champs 2'), value = 'champs2' }
                }
            },
            function(data2, menu2)
            end,
            function(data2, menu2)
                menu2.close()
            end)
    end,
    function(data, menu)
        menu.close()
    end)

 

menu_dialog :

ESX.UI.Menu.Open(
    'dialog', GetCurrentResourceName(), 'menu1',
    {
        title = ('Entrez un montant')
    },
    function(data, menu)
        local amount = tonumber(data.value) 
        if amount == nil then
            ESX.ShowNotification('Montant invalide')
        else
            menu.close()
           TriggerEvent('tuto',amount)
        end
    end,
    function(data, menu)
        menu.close()
    end
)

Menudialog.png

menu_list :

local elements = {
    head = { ('Colonne 1'), ('Colonne 2'), ('Colonne 3') },
    rows = {}
}

table.insert(elements.rows, {
    data = "Tuto",
    cols = {
        "Valeur colone 1",
        "Valeur colone 2",
        '{{' .. ('Bouton 1') .. '|bouton1}} {{' .. ('Bouton 2') .. '|bouton1}}'
    }
})

ESX.UI.Menu.Open('list', GetCurrentResourceName(), 'exemplemenu', elements, function(data, menu)
    if data.value == 'bouton1' then
        -- Code si clique sur Bouton 1
    elseif data.value == 'bouton2' then
        -- Code si clique sur Bouton 2
    end

end, function(data, menu)
    menu.close()
end)

Menulist.png

J'espère vous avoir aidé dans la création de vos menus :)
A bientôt.

Share this post


Link to post
Share on other sites
samas

Merci pour le partage.

Quelle version à tu ? Car j'ai l’impression que c'est plutôt moche par rapport aux menu que j'ai déjà vue :)

Share this post


Link to post
Share on other sites
Kanda Sorata

Cela doit être ses propres menus qu'il a modifié

Share this post


Link to post
Share on other sites
samas

Faudrait utiliser les menus dispo sur github, historie que tout le monde est le même "memu"

Share this post


Link to post
Share on other sites
Kanda Sorata

C'est les même, juste le design modifié, rien ne change dans le tuto

Share this post


Link to post
Share on other sites
nounourslolxd

Super tuto juste est-ce que tu pourrais mettre les screen a jour?
 

Share this post


Link to post
Share on other sites
Kanda Sorata

Les images seront corrigées prochainement :)

Share this post


Link to post
Share on other sites
Julien

Hé Salut,

 

Gg pour le tuto, je connaissais pas le #ESX.UI.Menu.Opened.

 

Dites moi, par rapport au esx menu list, lorsque j’ai plus de 75 lignes, le menu s’affiche mais les boutons ne sont plus fonctionnels, vous avez le meme soucis? 

 

Je sais pas si c’est un bug propre a esx menu list, en solution temporaire je creer un bouton page2 lorsque j’ai plus de 75 lignes si ça peut en aider certains :)

 

Bonne journée!

Share this post


Link to post
Share on other sites
JagerBom
il y a 14 minutes, Julien a dit :

Hé Salut,

 

Gg pour le tuto, je connaissais pas le #ESX.UI.Menu.Opened.

 

Dites moi, par rapport au esx menu list, lorsque j’ai plus de 75 lignes, le menu s’affiche mais les boutons ne sont plus fonctionnels, vous avez le meme soucis? 

 

Je sais pas si c’est un bug propre a esx menu list, en solution temporaire je creer un bouton page2 lorsque j’ai plus de 75 lignes si ça peut en aider certains :)

 

Bonne journée!

 

les menu esx n'ont rien avoir avec le nombre de lignes, t'as surement du oublier un end ou quelque chose comme ca pour que le menu fonctionne pas

Share this post


Link to post
Share on other sites
didine

Bonjour 

 

du coup petite interrogation par rapport à ce script dans le esx_menu_default le réglage de la pression de la touche entrée est sur 150ms, ce qui veut dire que si on crée un menu de craft d'objet par rapport à ce script un objet va être créer toute les 150ms en laissant la pression de la touche enfoncé ça craft en 30s des centaine d'item.

si on voudrait que l'objet se fabrique toutes les 2s il faudrait régler cette touche sur 2000 mais si on le fait dans le menu défault tout les script qui l'utilise sont impacté est t'il possible de gérer la pression de la touche entrée directement dans le script qu'on voudrait 

 

merci

Share this post


Link to post
Share on other sites
Kanda Sorata

Bonjour, pour palier à ça tu peux fermer le menu après la pression de la touche entrée.

Share this post


Link to post
Share on other sites
didine

en faite au début je suis parti sur ton idée de fermer le menu mais le souci c'est que comme c'est un menu de création de nourriture pour un restaurant ça veut dire que la personne doit constamment sortir du cercle rentrer fabriquer les objets en questions et ainsi de suite 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

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