TC ScriptDocumentation

Configuration

Toutes les options de config.lua de tc-divisions : bridge, staff, limites, codes, garages, panic, images.

#Bridge

Lua
Config.Bridge = {
    Framework = 'auto',     -- 'auto' | 'vision' | 'qbox' | 'qbcore' | 'esx' | 'standalone'
    Inventory = 'auto',     -- 'auto' | 'ox_inventory' | 'qs-inventory' | 'qb-inventory' | 'framework' | 'none'
    Target    = 'auto',     -- non utilisé par ce script
    Society   = 'auto',     -- non utilisé par ce script
    Callbacks = 'auto',     -- 'auto' | 'native'
    VehicleKeys = 'auto',   -- 'auto' | 'qb-vehiclekeys' | 'qs-vehiclekeys' | 'Renewed-Vehiclekeys' | 'wasabi_carlock' | 'none'
    Debug     = false,      -- affiche dans la console le framework / l'inventaire détectés
    Admins    = {},         -- identifiants toujours admin, ex. 'license:xxxxxxxx'
    AdminAce  = 'command',  -- ACE qui donne l'accès staff (hors Vision)
    Standalone = {},        -- hooks, uniquement en mode standalone
}

#Mode standalone

L'identifiant du personnage est la licence Rockstar. Fournis :

FonctionRetour
getJob(src){ name, label, grade, gradeName, gradeLabel, onDuty }
listJobs(){ police = { label = 'Police', grades = { { grade = 0, name = 'cadet', label = 'Cadet' } } } }
getMoney, removeMoney, addMoney, itemCount, addItempour les shops payants

#Intégrations

Lua
Config.Integrations = { logs = true }   -- tc-logs : copie du journal vers Discord

#Staff et commandes

Lua
Config.Permissions = { 'gestion', 'gestion_features', 'dev' }   -- Vision : une seule suffit
Config.AdminDiscords = { '123456789012345678' }                  -- IDs Discord ayant accès à la gestion

Config.Commands = {
    Gestion = 'divgestion', -- staff : menu complet
    Manage  = 'division',   -- joueurs : voir sa division ; patrons : affecter leurs employés
    Panic   = 'panic',      -- bouton panic
}
  • Vision : il suffit d'avoir une des permissions ci-dessus, ou d'être dans AdminDiscords.
  • Autres frameworks : ACE Config.Bridge.AdminAce, groupes admin du framework, Config.Bridge.Admins, ou AdminDiscords.

#Divisions et gestion par les patrons

OptionDéfautRôle
Config.DefaultManageGrade'top'Grade minimum pour gérer les divisions de son entreprise quand rien n'est réglé en jeu : 'top' = grade le plus élevé, ou un nombre
Config.MaxDivisionsPerJob20Nombre maximum de divisions par job
Config.BossChests{ max = 3, slots = 50, weight = 200 }Coffres des patrons : nombre, emplacements, poids (kg). Réglable par entreprise dans /divgestion
Config.BossChestReach10.0Distance max (m) entre le patron et le coffre qu'il pose

#Codes et sécurité

Lua
Config.Code = { min = 4, max = 8 }      -- codes : chiffres uniquement
Config.MaxAttempts = 3                  -- codes faux avant blocage
Config.LockSeconds = 120                -- durée du blocage (par personnage, survit à une reconnexion)
Config.ShopUnlockSeconds = 600          -- un shop déverrouillé par code le reste ce temps
Config.InteractKey = 38                 -- touche d'interaction (38 = E)

#Valeurs par défaut et bornes

Lua
Config.ChestDefaults  = { slots = 50, weight = 200, radius = 1.5 }
Config.ShopDefaults   = { radius = 1.5 }
Config.GarageDefaults = { radius = 1.5, storeRadius = 5.0 }

Config.Limits = {              -- bornes acceptées par le serveur
    slots    = { 1, 500 },
    weight   = { 1, 10000 },   -- kg
    radius   = { 0.8, 5.0 },
    price    = { 0, 1000000 },
    quantity = { 1, 100 },     -- quantité donnée par achat
    perBuy   = { 1, 50 },      -- nombre d'achats d'un coup
}

Config.Payment = { cash = true, bank = true }   -- moyens de paiement des shops payants

#Garages

OptionRôle
Config.GarageMaxOutVéhicules sortis en même temps par joueur, tous garages confondus (0 = sans limite)
Config.GarageLargeGros véhicules : au-delà de length / height (m), le modèle ne sort que sur les places marquées « gros véhicule »
Config.CallsignNuméro de toit : dispositions des mods, nombre d'emplacements, chiffres du secteur et du matricule
Config.VehicleImageFallbackModèle d'URL d'image des véhicules (%s = nom de spawn en minuscules). Vide = icône de voiture
Lua
Config.Callsign = {
    layouts = {
        { 5, 42, 43, 44, 45 }, -- onx : positions A → E
        { 8, 10, 9 },          -- nk : gauche, centre, droite
    },
    maxSlots = 5,
    sectorDigits = 2,     -- chiffres max du secteur
    matriculeDigits = 4,  -- chiffres max du matricule
}

#Images des objets et tenues

Lua
Config.ItemImageBase = ''     -- ex. 'nui://ox_inventory/web/images/%s.png' ; vide = détecté selon ton inventaire
Config.Outfits = { Enabled = 'auto', Item = 'outfit' }   -- tenues vendues dans les shops (voir Installation)

#Bouton panic

Alerte les collègues du même service. Vision : même alerte que le PANIC BUTTON du core (tous les jobs du même type). Autres frameworks : notification + point GPS temporaire chez les joueurs des jobs listés.

Lua
Config.Panic = {
    Enabled = true,
    Jobs = { 'police', 'sheriff', 'ambulance' },   -- jobs concernés (hors Vision)
    RequireDuty = true,                            -- il faut être en service
    CooldownSeconds = 15,
    BlipSeconds = 60,                              -- durée du point GPS chez les collègues
}

#Apparence

Lua
Config.InteractIcons = { chest = 'Stockage', shop = 'Catalogue', garage = 'Garage' }   -- icônes du prompt Vision
Config.Blips = {
    chest  = { sprite = 587, color = 5, scale = 0.7 },
    shop   = { sprite = 52,  color = 3, scale = 0.7 },
    garage = { sprite = 357, color = 3, scale = 0.7 },
}

Config.Props et Config.Peds listent les objets et PNJ proposés dans le builder (un modèle libre peut aussi être saisi).

#Fichier complet

Afficher config.lua (189 lignes)
config.luaTélécharger
-- tc-divisions : configuration / settings
Config = Config or {}

Config.Debug = false

-- ============================================================================
-- CADRE / FRAMEWORK  (Bridge)
-- Le script détecte tout seul votre framework (Vision, Qbox, QBCore, ESX ou standalone),
-- votre inventaire et votre système de cibles. Ne touchez à ceci que pour forcer un choix.
-- The script auto-detects your framework, inventory and target system. Only edit this to force a choice.
-- ============================================================================
Config.Bridge = {
    Framework = 'auto',     -- 'auto' | 'vision' | 'qbox' | 'qbcore' | 'esx' | 'standalone'
    Inventory = 'auto',     -- 'auto' | 'ox_inventory' | 'qs-inventory' | 'qb-inventory' | 'framework' | 'none'
    Target    = 'auto',     -- 'auto' | 'ox_target' | 'qb-target' | 'none' (non utilisé par ce script / unused here)
    Society   = 'auto',     -- compte société (non utilisé par ce script / unused here)
    Callbacks = 'auto',     -- 'auto' | 'native' (callbacks du framework, sinon système intégré au script)
    VehicleKeys = 'auto',   -- clés de véhicule : 'auto' | 'qb-vehiclekeys' | 'qs-vehiclekeys' | 'Renewed-Vehiclekeys' | 'wasabi_carlock' | 'none'
    Debug     = false,      -- affiche dans la console le framework / l'inventaire détectés
    Admins    = {},         -- identifiants toujours admin, ex. 'license:xxxxxxxx' (en plus de l'ACE et des groupes du framework)
    AdminAce  = 'command',  -- permission ACE qui donne l'accès staff (add_ace group.admin command allow) ; hors Vision
    -- Hooks à fournir UNIQUEMENT en mode standalone (sans framework). Only for standalone mode.
    -- Pour ce script : getJob(src) -> { name, label, grade, gradeName, gradeLabel, onDuty },
    -- listJobs() -> { police = { label = 'Police', grades = { { grade = 0, name = 'cadet', label = 'Cadet' } } } },
    -- ainsi que getMoney / removeMoney / addMoney / itemCount / addItem pour les shops payants.
    -- L'identifiant du personnage est la licence Rockstar.
    -- Example: Standalone = { getJob = function(src) return {...} end, listJobs = function() return {...} end }
    Standalone = {},
}

-- ============================================================================
-- INTÉGRATIONS OPTIONNELLES  /  OPTIONAL INTEGRATIONS
-- Chaque intégration n'est utilisée que si la ressource correspondante est démarrée.
-- ============================================================================
Config.Integrations = {
    logs = true,            -- tc-logs : copie du journal vers Discord (webhooks configurés dans tc-logs)
}

-- ============================================================================
-- STAFF  /  ACCÈS ADMIN
-- Vision : il suffit d'avoir UNE des permissions de compte ci-dessous, ou d'être dans AdminDiscords.
-- Autres frameworks : ACE `Config.Bridge.AdminAce`, groupes admin du framework ou Config.Bridge.Admins,
-- ou être dans AdminDiscords.
-- ============================================================================
Config.Permissions = { 'gestion', 'gestion_features', 'dev' }

-- IDs Discord qui ont accès à la gestion (chaînes entre guillemets). Laisser vide si inutile.
-- Discord IDs granted staff access (strings). Leave empty if unused.
Config.AdminDiscords = {
    -- '123456789012345678',
}

Config.Commands = {
    Gestion = 'divgestion', -- staff : menu complet (sur Vision aussi dans /gestion → « Divisions & accès »)
    Manage  = 'division',   -- joueurs : voir sa division ; patrons : affecter leurs employés
    Panic   = 'panic',      -- bouton panic (voir Config.Panic)
}

-- Grade minimum pour gérer les divisions de SON entreprise, quand rien n'est réglé
-- en jeu pour ce job : 'top' = le grade le plus élevé du job, sinon un nombre.
Config.DefaultManageGrade = 'top'

-- Limites des divisions.
Config.MaxDivisionsPerJob = 20

-- Coffres gérés par les patrons (/division → Coffres) : nombre de coffres de l'entreprise,
-- emplacements et poids (kg) max de chaque coffre. Valeurs par défaut, réglables par
-- entreprise dans /divgestion (fiche du job). Un coffre créé par le staff peut être confié
-- à une entreprise (« Géré par ») : il compte alors dans sa limite.
Config.BossChests = { max = 3, slots = 50, weight = 200 }
-- Distance max (m) entre le patron et l'emplacement d'un coffre qu'il pose ou déplace.
Config.BossChestReach = 10.0

-- Codes des coffres / shops (chiffres uniquement).
Config.Code = { min = 4, max = 8 }

-- Anti-bruteforce : après MaxAttempts codes faux, le joueur est bloqué LockSeconds
-- secondes sur ce point (compté par personnage, survit à une reconnexion).
Config.MaxAttempts = 3
Config.LockSeconds = 120

-- Un shop protégé par un code reste déverrouillé ce temps-là pour le joueur.
Config.ShopUnlockSeconds = 600

-- Touche d'interaction (38 = E).
Config.InteractKey = 38

-- Valeurs par défaut et bornes acceptées par le serveur.
Config.ChestDefaults = { slots = 50, weight = 200, radius = 1.5 }
Config.ShopDefaults  = { radius = 1.5 }
Config.GarageDefaults = { radius = 1.5, storeRadius = 5.0 }

-- Garages : véhicules sortis en même temps par joueur (tous garages confondus).
Config.GarageMaxOut = 0 -- 0 = pas de limite
-- Gros véhicules (camions, bus, échelles…) : en taille « auto », un modèle plus long ou plus
-- haut que ces valeurs (mètres) ne sort que sur les places marquées « gros véhicule » du
-- garage (s'il en a), avec un dégagement plus large pour vérifier que la place est libre.
Config.GarageLarge = { length = 8.0, height = 3.4, clearNormal = 3.0, clearLarge = 7.0 }
-- Numéro de toit (secteur + matricule) demandé à la sortie des véhicules qui en ont un.
-- Un chiffre par position ; chaque disposition liste les types de mods des positions,
-- de gauche à droite. Le chiffre affiché par chaque variante est lu dans son libellé
-- (« ONX_C4 », « NKSC_CSIGN_L4 »…), certains packs ayant des doublons ou des lettres.
Config.Callsign = {
    layouts = {
        { 5, 42, 43, 44, 45 }, -- onx : positions A → E
        { 8, 10, 9 },          -- nk : gauche, centre, droite
    },
    maxSlots = 5,
    sectorDigits = 2,    -- chiffres max du secteur
    matriculeDigits = 4, -- chiffres max du matricule
}

-- Images des véhicules : modèle d'URL (%s = nom de spawn en minuscules), par exemple
-- 'https://mon-cdn.exemple/vehicles/%s.webp' ou 'nui://ma_ressource/images/%s.png'.
-- Vide = aucune image par défaut : l'interface affiche une icône de voiture.
-- Une photo prise depuis le menu staff (bouton appareil photo, Vision) reste prioritaire.
Config.VehicleImageFallback = ''

Config.Limits = {
    slots    = { 1, 500 },
    weight   = { 1, 10000 }, -- kg
    radius   = { 0.8, 5.0 },
    price    = { 0, 1000000 },
    quantity = { 1, 100 },   -- quantité donnée par achat
    perBuy   = { 1, 50 },    -- nombre d'achats d'un coup
}

-- Moyens de paiement proposés dans les shops payants.
Config.Payment = {
    cash = true,
    bank = true,
}

-- Images des objets : modèle d'URL (%s = nom de l'objet), par exemple
-- 'nui://ox_inventory/web/images/%s.png'. Vide = détecté selon votre inventaire
-- (ox_inventory, qb-inventory, qs-inventory) ; sans image, l'interface affiche une icône de boîte.
Config.ItemImageBase = ''

-- Tenues vendues dans les shops : l'achat donne l'objet `Item` avec la tenue en métadonnées
-- (sexe, vêtements, nom). Enabled = 'auto' : actif sur Vision (objet « outfit » du core) ;
-- ailleurs, mettre true seulement si votre inventaire / habillage sait utiliser cet objet.
-- Outfits sold in shops: gives item `Item` with the outfit stored in its metadata.
Config.Outfits = { Enabled = 'auto', Item = 'outfit' }

-- Bouton panic (/panic) : alerte les collègues du même service.
-- Vision : même alerte que le PANIC BUTTON du core (tous les jobs du même type).
-- Autres frameworks : notification + point GPS temporaire chez les joueurs des jobs listés ici.
-- Other frameworks: notification + temporary GPS blip for players with one of these jobs.
Config.Panic = {
    Enabled = true,
    Jobs = { 'police', 'sheriff', 'ambulance' }, -- jobs concernés (hors Vision)
    RequireDuty = true,                          -- il faut être en service pour déclencher
    CooldownSeconds = 15,
    BlipSeconds = 60,                            -- durée du point GPS chez les collègues
}

-- Icônes du prompt d'interaction du core Vision (ignoré ailleurs : le script affiche une invite tc-ui).
Config.InteractIcons = { chest = 'Stockage', shop = 'Catalogue', garage = 'Garage' }

Config.Blips = {
    chest = { sprite = 587, color = 5, scale = 0.7 },
    shop  = { sprite = 52,  color = 3, scale = 0.7 },
    garage = { sprite = 357, color = 3, scale = 0.7 },
}

-- Objets proposés dans le builder (un modèle libre peut aussi être saisi).
Config.Props = {
    { model = '',                    label = 'Aucun (point invisible)' },
    { model = 'prop_ld_int_safe_01', label = 'Coffre-fort' },
    { model = 'p_v_43_safe_s',       label = 'Petit coffre-fort' },
    { model = 'prop_mil_crate_01',   label = 'Caisse militaire' },
    { model = 'prop_box_wood05a',    label = 'Caisse en bois' },
    { model = 'prop_toolchest_05',   label = 'Servante à outils' },
    { model = 'v_ind_cf_shelf2',     label = 'Étagère' },
    { model = 'prop_cs_cardbox_01',  label = 'Carton' },
}

-- PNJ proposés pour les shops (un modèle libre peut aussi être saisi).
Config.Peds = {
    { model = '',                  label = 'Aucun' },
    { model = 's_m_y_cop_01',      label = 'Policier' },
    { model = 's_f_y_cop_01',      label = 'Policière' },
    { model = 's_m_m_paramedic_01', label = 'Ambulancier' },
    { model = 's_m_y_armymech_01', label = 'Logisticien' },
    { model = 's_m_m_autoshop_01', label = 'Magasinier' },
    { model = 'a_f_y_business_01', label = 'Employée' },
    { model = 'a_m_y_business_02', label = 'Employé' },
}
Dernière mise à jour : 7 novembre 2026© 2026 TC Script