Utilisation
Ouvrir le menu, gérer les options en jeu avec /gestioncontexte, champs d'une option, types d'action et pack intégré.
#Ouvrir le menu
| Étape | Action |
|---|---|
| 1 | Alt gauche (ou la touche choisie dans Paramètres → Touches → FiveM) : le curseur apparaît |
| 2 | Clic droit sur un joueur, un PNJ, un véhicule, un objet ou le décor |
| 3 | Choisis une option. Retour arrière ferme le menu |
Config.OpenMode = 'hold' impose de maintenir la touche.
#Gestion en jeu : /gestioncontexte
Réservée aux admins. Chaque enregistrement est écrit en base et appliqué immédiatement à tous les joueurs connectés.

| Onglet | Rôle |
|---|---|
| Options | Créer, modifier, dupliquer, supprimer, activer ou non, tester l'action, capturer une cible (clic sur une entité : type et modèle sont remplis) |
| Scripts | Masquer, renommer ou réordonner les options ajoutées par d'autres scripts |
| Intégration | Tous les exemples de code à copier ; chaque option a aussi un bouton Code Lua qui génère le code prêt à coller |
| Import / Export | JSON complet (sauvegarde, transfert entre serveurs) |
#Champs d'une option
| Champ | Rôle |
|---|---|
type | button, submenu ou separator |
parent | Clé d'un sous-menu |
target.types | world, ped, player, vehicle, object, self (vide = tous) |
target.models | Noms ou hash ; l'option ne s'affiche que sur ces modèles |
distance | Distance max joueur → point visé (0 = illimitée) |
require | jobs { nom = gradeMin }, items { nom = qté }, admin, ace, inVehicle, onDuty |
action.type | Voir ci-dessous |
#Types d'action
| Type | Effet | Le handler reçoit |
|---|---|---|
client_event | TriggerEvent(nom, ctx, args) | (ctx, args) |
server_event | TriggerServerEvent(nom, ctx, args) | (ctx, args) + source |
command | ExecuteCommand(nom args) | — |
export | exports[res]:fn(ctx, args) côté client | (ctx, args) |
server_export | exports[res]:fn(src, ctx, args) côté serveur | (src, ctx, args) |
#Le contexte ctx
| Champ | Contenu |
|---|---|
entityType | Type de cible |
entity | Entité (côté client seulement) |
netId | Identifiant réseau |
model | Modèle |
coords | Coordonnées visées |
serverId | Joueur ciblé (identifiant serveur) |
plate | Plaque (véhicule) |
distance | Distance joueur → cible |
server_export est revalidé par le serveur (existence de l'option, métier, objets, ACE, distance, modèle) à partir de la définition en base, jamais de ce qu'envoie le client. Les autres types s'exécutent côté client : le script qui reçoit un server_event doit lui-même vérifier ce qu'il autorise, comme pour tout événement réseau.
#Pack d'options intégrées
Équivalent du menu contextuel Vision, activé par défaut (Config.Pack). Sur Vision, les actions appellent les mêmes fonctions, commandes et événements que le core et lisent ses permissions staff (contextmenu, dev, devcontextmenu, revive, heal, freeze, warn, kick, ban). Sur les autres frameworks, seules les options génériques sont proposées et l'admin est vérifié par le serveur.
| Cible | Options |
|---|---|
| Joueur | Fouiller (mains levées), Porter · Staff : menu admin, réanimer, soigner, message, inventaire, figer, avertir, expulser, bannir · Dev : armure |
| Soi-même | Détacher l'objet attaché, se nettoyer, combat on/off |
| Véhicule | Portes (depuis l'intérieur), remorquage, coffre · Staff : siège, verrouiller, réparer, améliorer, personnaliser, supprimer, joueur au volant · Dev : mode drift |
| Objet | Décor (dupliquer / déplacer / supprimer) · Staff : copier nom / hash / entité / position, dupliquer, supprimer |
| PNJ | Staff : copier nom / hash / entité / position, dupliquer, supprimer |
| Monde | Staff : soigner la zone, réparer la zone, poser un prop · Dev : copier les coordonnées, se téléporter, frappe orbitale |
Frappe orbitale (monde → Dev) : compte à rebours de 3 s avec marqueur rouge sur le point visé (Retour arrière annule), puis 5 roquettes tombent de 200 m. Réglages : Config.Pack.OrbitalCountdown et Config.Pack.OrbitalDamage. Chaque frappe, suppression, téléportation et pose de prop est tracée dans la console serveur.
Non repris (liés à des systèmes internes du core) : s'asseoir sur les bancs, boombox / TV, emotes partagées, ajuster l'emote, menus métier (à recréer dans /gestioncontexte avec une condition de métier), laboratoires de drogue.
#Performances
Objectif : 0,00 ms au repos, ≤ 0,01 ms menu ouvert.
- Aucun thread, aucune boucle, aucun timer tant que le menu est fermé.
- Menu ouvert : ~7 natives par image ; le rayon de survol tourne toutes les 100 ms et est sauté quand le curseur ne bouge pas ; les messages NUI ne partent que si la cible change.
- Les options sont évaluées à l'ouverture uniquement, jamais à chaque image.
- Vision : le gros objet partagé est chargé une seule fois en arrière-plan, et les permissions staff passent par un callback léger rafraîchi au plus toutes les 60 s sans bloquer le menu.
Mesure : resmon 1 en jeu (F8), colonne tc-contextmenu.