Introduction à RageUI
Performance
Optimisé pour FiveM avec un système de rendu efficace et une gestion mémoire intelligente.
Personnalisable
Interface entièrement customisable avec support des thèmes et des styles personnalisés.
Facile d'usage
API simple et intuitive pour créer rapidement des menus complexes et interactifs.
Fonctionnalités principales
- Système de menus et sous-menus hiérarchiques
- Support des items interactifs (boutons, checkboxes, listes)
- Gestion automatique des sons et feedbacks audio
- Interface NUI moderne avec HTML/CSS/JS
- Sauvegarde automatique des états de menu
Installation
Télécharger RageUI
Intégrez le fichier rageui.lua dans votre ressource FiveM.
-- Dans votre fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
client_scripts {
'rageui.lua',
'client.lua'
}
Configuration de base
Initialisez RageUI dans votre script client.
-- Exemple de base dans client.lua
local mainMenu = RageUI.CreateMenu("Menu Principal", "Description du menu")
-- Ouvrir le menu avec une commande
RegisterCommand("menu", function()
RageUI.Visible(mainMenu, not RageUI.Visible(mainMenu))
end, false)
Premier menu fonctionnel
Créez votre premier menu avec des items interactifs.
-- Boucle de rendu du menu
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if RageUI.IsVisible(mainMenu) then
RageUI.Button("Option 1", "Description", {}, true, function(Hovered, Active, Selected)
if Selected then
print("Option 1 sélectionnée !")
end
end)
RageUI.Button("Fermer", "Fermer le menu", {}, true, function(Hovered, Active, Selected)
if Selected then
RageUI.CloseAll()
end
end)
end
end
end)
Référence API
Création de menus
RageUI.CreateMenu()
Crée un nouveau menu principal.
local menu = RageUI.CreateMenu(
"Titre", -- Titre du menu
"Sous-titre", -- Sous-titre (optionnel)
X, -- Position X (optionnel)
Y -- Position Y (optionnel)
)
RageUI.CreateSubMenu()
Crée un sous-menu lié à un menu parent.
local submenu = RageUI.CreateSubMenu(
parentMenu, -- Menu parent
"Titre du sous-menu",
"Sous-titre"
)
Gestion de l'affichage
RageUI.Visible()
Contrôle la visibilité d'un menu.
-- Afficher/masquer un menu
RageUI.Visible(menu, true) -- Afficher
RageUI.Visible(menu, false) -- Masquer
-- Vérifier si un menu est visible
if RageUI.Visible(menu) then
-- Le menu est visible
end
RageUI.IsVisible()
Utilisé dans la boucle de rendu pour vérifier la visibilité.
if RageUI.IsVisible(menu) then
-- Rendu des items du menu
end
Contrôles
RageUI.CloseAll()
Ferme tous les menus ouverts.
RageUI.CloseAll()
RageUI.GoBack()
Retourne au menu parent ou ferme si c'est le menu principal.
RageUI.GoBack()
Items interactifs
RageUI.Button()
Crée un bouton cliquable dans le menu.
RageUI.Button(
"Label", -- Texte du bouton
"Description", -- Description (optionnel)
{RightLabel = "→"}, -- Options (optionnel)
true, -- Enabled (true/false)
function(Hovered, Active, Selected)
if Selected then
-- Action à effectuer
end
end
)
RageUI.Checkbox()
Crée une case à cocher.
local checked = false
RageUI.Checkbox(
"Option", -- Label
"Description", -- Description
checked, -- État actuel
{}, -- Options
function(Hovered, Active, Selected, Checked)
if Selected then
checked = Checked
print("État:", checked)
end
end
)
RageUI.List()
Crée une liste déroulante avec navigation gauche/droite.
-- Variables pour la liste
local listIndex = 1
local listItems = {"Option 1", "Option 2", "Option 3"}
RageUI.List(
"Sélection", -- Label de la liste
listItems, -- Tableau des options
listIndex, -- Index actuel (commence à 1)
"Description", -- Description (optionnel)
{}, -- Options (optionnel)
true, -- Enabled (true/false)
function(Hovered, Active, Selected, Index)
if Selected then
listIndex = Index
print("Sélectionné:", listItems[Index])
end
-- Mise à jour en temps réel lors du hover
if Active then
listIndex = Index
end
end
)
-- Exemple avancé avec RightLabel dynamique
RageUI.List(
"Choix multiple",
listItems,
listIndex,
"Utilisez ← → pour naviguer",
{RightLabel = listItems[listIndex]}, -- Afficher la valeur actuelle
true,
function(Hovered, Active, Selected, Index)
listIndex = Index
if Selected then
ESX.ShowNotification("Option : " .. listItems[Index])
end
end
)
RageUI.Slider()
Crée un slider pour les valeurs numériques.
local sliderValue = 50
RageUI.Slider(
"Volume", -- Label
sliderValue, -- Valeur actuelle
0, -- Valeur minimum
100, -- Valeur maximum
"Description", -- Description
{}, -- Options
true, -- Enabled
function(Hovered, Active, Selected, Value)
if Selected then
sliderValue = Value
print("Nouvelle valeur:", Value)
end
end
)
RageUI.Separator()
Ajoute un séparateur visuel avec texte optionnel.
-- Séparateur simple
RageUI.Separator()
-- Séparateur avec texte
RageUI.Separator("~b~Section Options")
-- Séparateur coloré
RageUI.Separator("~r~Danger Zone")
Système audio
RageUI.PlaySound()
Joue un son prédéfini.
-- Sons disponibles
RageUI.PlaySound(RageUI.Settings.Audio.Select) -- Sélection
RageUI.PlaySound(RageUI.Settings.Audio.Back) -- Retour
RageUI.PlaySound(RageUI.Settings.Audio.UpDown) -- Navigation
RageUI.PlaySound(RageUI.Settings.Audio.LeftRight) -- Navigation horizontale
RageUI.PlaySound(RageUI.Settings.Audio.Error) -- Erreur
Exemples pratiques
Menu basique avec boutons
-- Création du menu
local mainMenu = RageUI.CreateMenu("Menu Principal", "Sélectionnez une option")
-- Commande pour ouvrir le menu
RegisterCommand("menu", function()
RageUI.Visible(mainMenu, not RageUI.Visible(mainMenu))
end, false)
-- Boucle de rendu
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if RageUI.IsVisible(mainMenu) then
RageUI.Button("Option 1", "Description de l'option 1", {}, true, function(Hovered, Active, Selected)
if Selected then
ESX.ShowNotification("Option 1 sélectionnée !")
end
end)
RageUI.Button("Option 2", "Description de l'option 2", {}, true, function(Hovered, Active, Selected)
if Selected then
ESX.ShowNotification("Option 2 sélectionnée !")
end
end)
RageUI.Separator("~r~Actions")
RageUI.Button("Fermer", "Fermer le menu", {}, true, function(Hovered, Active, Selected)
if Selected then
RageUI.CloseAll()
end
end)
end
end
end)
Items interactifs (Checkbox, List)
-- Variables pour les états
local checkboxState = false
local listIndex = 1
local listItems = {"Option A", "Option B", "Option C"}
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if RageUI.IsVisible(mainMenu) then
-- Checkbox
RageUI.Checkbox("Activer fonction", "Active ou désactive la fonction", checkboxState, {}, function(Hovered, Active, Selected, Checked)
if Selected then
checkboxState = Checked
print("Checkbox état:", checkboxState)
end
end)
-- Liste déroulante
RageUI.List("Sélectionner option", listItems, listIndex, "Choisissez dans la liste", {}, true, function(Hovered, Active, Selected, Index)
if Selected then
listIndex = Index
print("Option sélectionnée:", listItems[Index])
end
end)
end
end
end)
Fonctionnalités Avancées
Sauvegarde d'État
RageUI sauvegarde automatiquement la position et l'état de vos menus entre les sessions.
-- La position du menu est automatiquement sauvegardée
-- dans menuStates[menuId] pour chaque menu
Interface NUI
Interface utilisateur moderne avec HTML/CSS/JS pour une expérience fluide.
-- Messages NUI automatiques pour :
-- - 'menuClosed' : fermeture du menu
-- - 'itemSelected' : sélection d'item
-- - 'checkboxChanged' : changement de checkbox
-- - 'listChanged' : changement de liste
Optimisation Mémoire
Gestion intelligente de la mémoire avec nettoyage automatique des callbacks inutilisés.
-- Nettoyage automatique dans RageUI.Visible()
if itemCallbacks then
for key, _ in pairs(itemCallbacks) do
if string.find(key, Menu.Id, 1, true) == nil then
itemCallbacks[key] = nil
end
end
end
Personnalisation Visuelle
Système de thèmes et de couleurs personnalisables pour s'adapter à votre serveur.
-- Paramètres personnalisables
local menu = RageUI.CreateMenu(
"Titre", "Sous-titre",
X, Y, -- Position
TextureDictionary, TextureName, -- Texture custom
R, G, B, A -- Couleurs RGBA
)
Bonnes Pratiques
Performance
- Utilisez
Citizen.Wait(0)dans vos boucles de rendu - Évitez les calculs lourds dans les callbacks
- Fermez les menus quand ils ne sont plus nécessaires
UX/UI
- Utilisez des descriptions claires pour vos items
- Organisez vos menus de manière logique
- Implémentez des confirmations pour les actions importantes
Développement
- Testez tous vos callbacks et interactions
- Gérez les cas d'erreur et les états invalides
- Documentez vos menus pour l'équipe