tw.menu
Cote : Client
Systeme de menu interactif NUI. Remplacement cross-framework de vorp_menu.
Fonctions
tw.menu.open(data, on_click, on_close)
Ouvre un menu avec la configuration donnee.
| Parametre | Type | Description |
|---|---|---|
data | table | Configuration du menu (voir ci-dessous) |
on_click | function(data, menu) | Appelee quand le joueur clique sur un element |
on_close | function(nil, menu) | Appelee quand le joueur ferme le menu |
Structure de data :
| Champ | Type | Description |
|---|---|---|
title | string | Titre du menu |
subtitle | string? | Sous-titre affiche sous le titre |
items | table | Tableau d'elements du menu |
Structure d'un element :
| Champ | Type | Description |
|---|---|---|
label | string | Texte affiche |
value | any | Valeur passee au callback de clic |
desc | string? | Texte de description |
rightLabel | string? | Label aligne a droite (ex: prix) |
disabled | boolean? | Si true, l'element est grise et non cliquable |
child | table? | Sous-menu imbrique (meme structure que data) |
Callback on_click :
Le parametre data contient :
| Champ | Type | Description |
|---|---|---|
data.current | table | { value, label, desc } de l'element clique |
Le parametre menu est un handle avec une methode :close().
Callback on_close :
Appelee quand le menu est ferme par le joueur (Echap). Le premier parametre est nil, le second est le handle du menu.
tw.menu.close()
Ferme le menu actuellement ouvert.
tw.menu.isOpen()
Verifie si un menu est actuellement ouvert.
Retour : boolean
Exemples
Menu basique avec gestion du clic
lua
tw.menu.open({
title = "General Store",
subtitle = "Valentine",
items = {
{ label = "Bread", value = "bread", desc = "Fresh baked bread", rightLabel = "$1.50" },
{ label = "Coffee", value = "coffee", desc = "Hot black coffee", rightLabel = "$0.75" },
{ label = "Ammo", value = "ammo", rightLabel = "$5.00", disabled = true },
}
}, function(data, menu)
local item = data.current
print("Selected: " .. item.label .. " (value: " .. tostring(item.value) .. ")")
menu:close()
end, function(_, menu)
print("Menu closed by player")
end)Menus imbriques (child)
lua
tw.menu.open({
title = "Crafting",
items = {
{ label = "Weapons", value = "weapons", child = {
title = "Weapons",
items = {
{ label = "Knife", value = "knife", rightLabel = "2x Iron" },
{ label = "Bow", value = "bow", rightLabel = "3x Wood" },
}
}},
{ label = "Food", value = "food", child = {
title = "Food",
items = {
{ label = "Cooked Meat", value = "meat", rightLabel = "1x Raw Meat" },
}
}},
}
}, function(data, menu)
print("Craft: " .. data.current.value)
menu:close()
end, function(_, menu)
print("Closed")
end)Notes
- Un seul menu peut etre ouvert a la fois. Ouvrir un nouveau menu remplace le menu actuel.
- Le menu est un overlay NUI rendu dans la couche navigateur.
- Utilisez
menu:close()dans les callbacks pour fermer le menu apres une action.

