- Introduction
- Installation
- Configuration
- Creation dun menu
- Elements de menu disponibles
- Personnalisation des themes
- Fonctions utilitaires
- Exemples pratiques
zUI est un systeme de menu moderne et personnalisable pour FiveM, developpe avec TypeScript/React pour l'interface et Lua pour la logique cote client. Il offre une experience utilisateur fluide avec des animations et des effets visuels avances.
- Interface moderne et responsive
- Nombreux types d'elements (boutons, sliders, listes, etc.)
- Themes personnalisables
- Animations fluides
- Support multi-niveaux (sous-menus)
- Gestion du focus et des interactions
- Telechargez le script et placez-le dans votre dossier
resources
- Ajoutez
ensure zUI-v2
dans votreserver.cfg
- Redemarrez votre serveur
zUI-v2/
├── fxmanifest.lua # Manifest du script
├── common.lua # Variables et fonctions communes
├── themes/ # Themes de l'interface
├── menu/ # Logique des menus
├── functions/ # Fonctions utilitaires
└── web/ # Interface React/TypeScript
Les themes sont definis dans le dossier themes/
. Le theme par defaut (default.json
) peut etre modifie selon vos besoins.
{
"menu": {
"displayBanner": true,
"displayInformations": true,
"displayControlsIndicator": true,
"cornersRadius": 0.5,
"perspective": true,
"margin": false,
"shadow": true,
"hoverStyle": "liquid",
"animations": {
"entry": "zoomIn",
"exit": "slideOutVertical",
"onSwitch": true,
"onScroll": true
},
"colors": {
"primary": "#FF3837",
"background": "rgba(18, 18, 18, 0.5)",
"description": "#121212",
"informations": "#121212",
"controlsIndicator": "#121212",
"itemSelected": "#FF3837",
"banner": "#FF3837"
},
"font": "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap",
"maxVisibleItems": 10
},
"info": {
"cornerRadius": 0.5,
"perspective": true,
"shadow": true,
"animations": {
"entry": "zoomIn",
"exit": "slideOutVertical"
},
"colors": {
"primary": "#FF3837",
"background": "rgba(18, 18, 18, 0.5)"
},
"font": "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"
}
}
-- Créer un menu principal
local monMenu = zUI.CreateMenu(
"Titre du Menu", -- title (string|nil)
"Sous-titre", -- subtitle (string|nil)
"Description du menu", -- description (string|nil)
"default", -- theme (string)
"https://example.com/banner.png", -- banner (string|nil)
"F5", -- key (string|nil)
"La description du mapping" -- mapping (string|nil)
)
-- Créer un sous-menu
local monSousMenu = zUI.CreateSubMenu(
monMenu, -- parent (string)
"Titre du Sous-Menu", -- title (string|nil)
"Sous-titre", -- subtitle (string|nil)
"Description du sous-menu" -- description (string|nil)
)
-- Définir les éléments du menu
zUI.SetItems(monMenu, function()
-- Ajouter vos éléments ici
zUI.Button("Mon Bouton", "Description", {}, function(onSelected)
if onSelected then
print("Bouton cliqué !")
end
end)
end)
-- Afficher le menu
zUI.SetVisible(monMenu, true)
-- Masquer le menu
zUI.SetVisible(monMenu, false)
zUI.Button(label, description, styles, action, submenu)
Paramètres :
label
(string) : Texte du boutondescription
(string|nil) : Description affichéestyles
(table) : Options de styleaction
(function) : Fonction appelée lors du clicsubmenu
(string|nil) : ID du sous-menu à ouvrir
Exemple :
zUI.Button("Téléportation", "Se téléporter au garage", {
IsDisabled = false,
RightLabel = "→",
RightBadge = "https://example.com/icon.png",
LeftBadge = ""
}, function(onSelected)
if onSelected then
-- Logique de téléportation
SetEntityCoords(PlayerPedId(), 100.0, 200.0, 30.0)
end
end)
zUI.Checkbox(label, description, state, styles, action)
Paramètres :
label
(string) : Texte de la checkboxdescription
(string|nil) : Descriptionstate
(boolean) : État initial (coché/non coché)styles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local godModeEnabled = false
zUI.Checkbox("God Mode", "Activer l'invincibilité", godModeEnabled, {
IsDisabled = false
}, function(onSelected)
if onSelected then
godModeEnabled = not godModeEnabled
SetPlayerInvincible(PlayerId(), godModeEnabled)
end
end)
zUI.List(label, description, items, index, styles, action)
Paramètres :
label
(string) : Titre de la listedescription
(string) : Descriptionitems
(table) : Liste des élémentsindex
(number) : Index de l'élément sélectionnéstyles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local vehicules = {"Adder", "Zentorno", "T20", "Osiris"}
local vehiculeIndex = 1
zUI.List("Véhicule", "Choisir un véhicule", vehicules, vehiculeIndex, {
IsDisabled = false
}, function(onSelected, onChange, index)
if onChange then
vehiculeIndex = index
end
if onSelected then
-- Spawner le véhicule sélectionné
local vehicleHash = GetHashKey(vehicules[vehiculeIndex])
RequestModel(vehicleHash)
-- ... logique de spawn
end
end)
zUI.Slider(label, description, percentage, step, styles, action)
Paramètres :
label
(string) : Titre du sliderdescription
(string) : Descriptionpercentage
(number) : Valeur initiale (0-100)step
(number) : Pas d'incrémentationstyles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local volume = 50
zUI.Slider("Volume", "Régler le volume", volume, 5, {
IsDisabled = false,
ShowPercentage = true
}, function(onSelected, onChange, percentage)
if onChange then
volume = percentage
-- Appliquer le volume
end
end)
zUI.ColorPicker(label, description, value, styles, action)
Paramètres :
label
(string) : Titre du color pickerdescription
(string) : Descriptionvalue
(string) : Couleur initiale (format hex)styles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local couleurVehicule = "#FF0000"
zUI.ColorPicker("Couleur", "Choisir la couleur du véhicule", couleurVehicule, {
IsDisabled = false
}, function(onChange, value)
if onChange then
couleurVehicule = value
-- Appliquer la couleur au véhicule
end
end)
zUI.ColorsList(label, description, colors, index, styles, action)
Paramètres :
label
(string) : Titre de la listedescription
(string) : Descriptioncolors
(table) : Liste des couleurs (format hex)index
(number) : Index de la couleur sélectionnéestyles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local couleurs = {"#FF0000", "#00FF00", "#0000FF", "#FFFF00"}
local couleurIndex = 1
zUI.ColorsList("Couleurs", "Sélectionner une couleur", couleurs, couleurIndex, {
IsDisabled = false
}, function(onSelected, onChange, index)
if onChange then
couleurIndex = index
end
if onSelected then
-- Appliquer la couleur sélectionnée
end
end)
zUI.TextArea(label, description, value, placeholder, styles, action)
Paramètres :
label
(string) : Titre de la zone de textedescription
(string) : Descriptionvalue
(string) : Valeur initialeplaceholder
(string) : Texte d'indicationstyles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
Exemple :
local nomJoueur = ""
zUI.TextArea("Nom", "Entrer votre nom", nomJoueur, "Tapez ici...", {
IsDisabled = false
}, function(onChange, value)
if onChange then
nomJoueur = value
-- Traiter le nom saisi
end
end)
zUI.SearchBar(label, description, value, placeholder, styles, action)
Paramètres :
label
(string) : Titre de la barre de recherchedescription
(string) : Descriptionvalue
(string) : Valeur initialeplaceholder
(string) : Texte d'indicationstyles
(table) : Options de styleaction
(function) : Fonction appelée lors du changement
zUI.LinkButton(label, description, link, styles)
Paramètres :
label
(string) : Texte du boutondescription
(string) : Descriptionlink
(string) : URL à ouvrirstyles
(table) : Options de styleaction
(function) : Fonction appelée lors du clic
zUI.Line(colors)
Paramètres :
colors
(table|nil) : Liste des couleurs pour le dégradé
Exemple :
zUI.Line({"#FF0000", "#00FF00", "#0000FF"})
zUI.Separator(label, position)
Paramètres :
label
(string) : Texte du séparateurposition
(string) : Position ("left", "center", "right")
Exemple :
zUI.Separator("VÉHICULES", "center")
complete
: Arrière-plan completrod
: Barre latéraleneon
: Effet néonborder
: Borduremodern
: Style moderne avec dégradéglowInset
: Lueur internetwist
: Effet de torsionliquid
: Effet liquide
fadeIn
/fadeOut
slideInHorizontal
/slideOutHorizontal
slideInVertical
/slideOutVertical
zoomIn
/zoomOut
bounceIn
/bounceOut
-- Vérifier si un menu est visible
local isVisible = zUI.IsVisible(menuId)
-- Fermer tous les menus
zUI.CloseAll()
-- Revenir au menu précédent
zUI.Goback()
-- Naviguer vers un menu spécifique
zUI.Goto(menuId)
-- Changer le titre
zUI.SetTitle(menuId, "Nouveau titre")
-- Changer le sous-titre
zUI.SetSubtitle(menuId, "Nouveau sous-titre")
-- Changer la description
zUI.SetDescription(menuId, "Nouvelle description")
-- Définir si le menu est fermable
zUI.SetIsClosable(menuId, true)
-- Fonction appelée à l'ouverture
zUI.SetOpenHandler(menuId, function()
print("Menu ouvert !")
end)
-- Fonction appelée à la fermeture
zUI.SetCloseHandler(menuId, function()
print("Menu fermé !")
end)
local hoveredItemId = zUI.GetHoveredItem()
local zUI = exports["zUI-v2"]:getObject()
local menu = zUI.CreateMenu("Véhicule", "Gestion du véhicule", "Intéractions disponibles :", "myTheme", nil, "F5", "Ouvrir le menu")
local vehicules = {"Adder", "Zentorno", "T20", "Osiris"}
local vehiculeIndex = 1
local volumeRadio = 50
local couleurVehicule = "#FF0000"
local couleurs = {"#FF0000", "#00FF00", "#0000FF", "#FFFF00"}
local couleurIndex = 1
local godModeEnabled = false
local plaque = ""
local recherche = ""
local godModItem
zUI.SetItems(menu, function()
-- Spawn du véhicule sélectionné
zUI.Button("Faire apparaître", "Spawn le véhicule sélectionné", {}, function(onSelected)
if onSelected then
local vehicleHash = GetHashKey(vehicules[vehiculeIndex])
RequestModel(vehicleHash)
-- Ici, ajoute la logique de spawn du véhicule
print("Véhicule spawn :", vehicules[vehiculeIndex])
end
end)
-- God Mode sur le véhicule
godModItem = zUI.Checkbox("God Mode Véhicule", "Rendre le véhicule invincible", godModeEnabled, {
IsDisabled = false
}, function(onSelected)
if onSelected then
godModeEnabled = not godModeEnabled
-- Ici, applique l'invincibilité au véhicule du joueur
print("God Mode Véhicule :", godModeEnabled)
end
end)
-- Choix du modèle de véhicule
zUI.List("Modèle", "Choisir le modèle de véhicule", vehicules, vehiculeIndex, {
IsDisabled = false
}, function(onSelected, onChange, index)
if onChange then
vehiculeIndex = index
end
if onSelected then
print("Modèle sélectionné :", vehicules[vehiculeIndex])
end
end)
-- Volume de la radio du véhicule
zUI.Slider("Volume Radio", "Régler le volume de la radio", volumeRadio, 5, {
IsDisabled = false,
ShowPercentage = true
}, function(onSelected, onChange, percentage)
if onChange then
volumeRadio = percentage
-- Ici, applique le volume à la radio du véhicule
print("Volume radio :", volumeRadio)
end
end)
-- Couleur personnalisée
zUI.ColorPicker("Couleur personnalisée", "Choisir une couleur personnalisée", couleurVehicule, {
IsDisabled = false
}, function(onChange, value)
if onChange then
couleurVehicule = value
-- Ici, applique la couleur personnalisée au véhicule
print("Couleur personnalisée :", couleurVehicule)
end
end)
-- Liste de couleurs prédéfinies
zUI.ColorsList("Couleur rapide", "Sélectionner une couleur rapide", couleurs, couleurIndex, {
IsDisabled = false
}, function(onSelected, onChange, index)
if onChange then
couleurIndex = index
end
if onSelected then
-- Ici, applique la couleur sélectionnée au véhicule
print("Couleur rapide sélectionnée :", couleurs[couleurIndex])
end
end)
-- Changer la plaque d'immatriculation
zUI.TextArea("Plaque", "Définir la plaque d'immatriculation", plaque, "Ex: ZSQUAD", {
IsDisabled = false
}, function(onChange, value)
if onChange then
plaque = value
-- Ici, applique la plaque au véhicule
print("Plaque définie :", plaque)
end
end)
-- Recherche d'un modèle de véhicule
zUI.SearchBar("Recherche modèle", "Rechercher un modèle de véhicule", recherche, "Tapez ici...", {
IsDisabled = false
}, function(onChange, value)
if onChange then
recherche = value
-- Ici, filtre la liste des véhicules selon la recherche
print("Recherche :", recherche)
end
end)
-- Lien vers un site d'infos véhicules
zUI.LinkButton("Infos véhicules", "Ouvrir GTA Wiki", "https://gta.fandom.com/wiki/Vehicles_in_GTA_V", {
IsDisabled = false
})
zUI.Line({"#FF0000", "#00FF00", "#0000FF"})
zUI.Separator("GESTION DU VÉHICULE", "center")
end)
Citizen.CreateThread(function()
while true do
local delay = 2000
if godModItem == zUI.GetHoveredItem() then
delay = 200
zUI.ShowInfoBox(
"God Mode Véhicule",
"Rend votre véhicule invincible aux dégâts.",
"myTheme",
{
{ type = "text", title = "Description", value = "Active ou désactive l’invincibilité du véhicule actuellement utilisé." },
{ type = "percent", title = "État", value = godModeEnabled and 100 or 0 },
{ type = "image", title = "Aperçu", value = "https://gta.fandom.com/wiki/File:Vapid_Dominator_GTA_V_FrontQtr.jpg" }
}
)
end
Citizen.Wait(delay)
end
end)
- ↑ / ↓ : Naviguer dans les éléments
- ← / → : Modifier les valeurs (sliders, listes)
- Entrée : Sélectionner/Activer un élément
- Retour arrière : Revenir au menu précédent / Fermer le menu (si autoriser)
- CTRL + E: Activer le mode édition (si menu ouvert)
Pour obtenir de l'aide ou signaler un bug :
- Vérifiez cette documentation
- Consultez les exemples fournis
- Contactez le support
Développé par Soren (zSquad) - Version 2.0
Cette documentation couvre toutes les fonctionnalités principales de zUI. N'hésitez pas à expérimenter et à personnaliser selon vos besoins !