Config = {} -- ═══════════════════════════════════════════════════════════════════════════ -- TC Context Menu - configuration / settings -- ═══════════════════════════════════════════════════════════════════════════ Config.Locale = 'fr' -- messages Lua : 'fr' | 'en' (l'interface NUI est en français) -- Commande de gestion en jeu (admins) / in-game management command (admins) Config.Command = 'gestioncontexte' -- Ouverture : 'toggle' (appui = ouvre/ferme) ou 'hold' (maintenir la touche) -- Opening: 'toggle' (press to open/close) or 'hold' (keep key pressed) Config.OpenMode = 'toggle' Config.DefaultKey = 'LMENU' -- Alt gauche ; chaque joueur peut la changer dans Paramètres > Touches > FiveM -- Ciblage / targeting Config.RayDistance = 60.0 -- portée max du rayon depuis la caméra (m) Config.DefaultDistance = 6.0 -- distance joueur -> point visé si l'option n'en précise pas (0 = illimité) Config.RayFlags = 31 -- 1 map + 2 véhicules + 4/8 peds + 16 objets Config.HoverInterval = 100 -- ms entre deux rayons de survol Config.EdgeScroll = true -- tourner la caméra en poussant le curseur sur le bord de l'écran -- Surbrillance de l'entité survolée / hovered entity outline Config.Highlight = { enabled = true, r = 115, g = 132, b = 232, a = 255 } -- Sécurité / security Config.ServerDistanceTolerance = 6.0 -- marge (m) sur la vérif de distance côté serveur (actions `server_export`) Config.ManageAce = nil -- ACE requis pour /gestioncontexte (nil = Config.Bridge.AdminAce / groupes admin) Config.AllowedActionTypes = { -- types d'action autorisables à la création client_event = true, -- TriggerEvent(nom, ctx, args) (client) server_event = true, -- TriggerServerEvent(nom, ctx, args) (client -> serveur) command = true, -- ExecuteCommand(nom .. args) (client) export = true, -- exports[res]:fn(ctx, args) (client) server_export = true, -- exports[res]:fn(src, ctx, args) (serveur, revalidé) } Config.MaxOptions = 400 -- ─── Options déclarées ici (facultatif) ───────────────────────────────────── -- Autre façon de les ajouter : /gestioncontexte (en base, permanent) ou depuis un script (voir README / init.lua). -- Mêmes champs que dans le panneau ; lecture seule, rechargées à chaque démarrage. Exemple : Config.Options = { -- { key = 'rumeur', label = 'Parler', icon = 'user', types = { 'ped' }, distance = 3.0, -- serverEvent = 'monscript:parler', args = { sujet = 'rumeur' } }, -- { key = 'coffre', label = 'Ouvrir le coffre', icon = 'box', types = { 'vehicle' }, groups = { police = 0 }, -- export = 'monscript.ouvrirCoffre' }, } -- ─── Pack d'options intégrées (équivalent du menu contextuel Vision) ─────── -- Chaque groupe peut être coupé. Les options « staff » exigent un droit admin : -- Vision : permissions du panneau staff (contextmenu / dev / devcontextmenu...), lues côté client -- autres : admin vérifié par le serveur (ACE / groupe, voir Config.Bridge.AdminAce) Config.Pack = { Enabled = true, Player = true, -- fouiller, porter, détacher un objet, se nettoyer, combat on/off Vehicle = true, -- portes, remorque, coffre Object = true, -- décor (dupliquer / déplacer / supprimer) Staff = true, -- sous-menus « Staff » : joueur, PNJ, véhicule, objet, monde Dev = true, -- sous-menus « Dev » : armure, mode drift, copier coords, téléport, frappe orbitale Vision = true, -- appelle les fonctions/commandes/événements du core Vision quand il est présent OrbitalCountdown = 3, -- secondes avant la frappe orbitale (0 = immédiat) ; Retour arrière annule OrbitalDamage = 5000, DevAce = nil, -- ACE supplémentaire exigé pour les options Dev hors Vision (nil = admin suffit) } -- ─── Couche de compatibilité framework / framework compatibility ────────── Config.Bridge = { Framework = 'auto', -- auto | vision | qbox | qbcore | esx | standalone Inventory = 'auto', Target = 'auto', Society = 'auto', Callbacks = 'auto', Debug = false, Admins = {}, -- identifiants autorisés (ex: 'license:xxxx') / allowed identifiers AdminAce = 'command', -- ACE considéré comme admin / ACE treated as admin Standalone = {}, -- hooks standalone (getJob, ...) }