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 :
| Fonction | Retour |
|---|---|
getJob(src) | { name, label, grade, gradeName, gradeLabel, onDuty } |
listJobs() | { police = { label = 'Police', grades = { { grade = 0, name = 'cadet', label = 'Cadet' } } } } |
getMoney, removeMoney, addMoney, itemCount, addItem | pour 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, ouAdminDiscords.
#Divisions et gestion par les patrons
| Option | Défaut | Rô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.MaxDivisionsPerJob | 20 | Nombre 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.BossChestReach | 10.0 | Distance 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
| Option | Rôle |
|---|---|
Config.GarageMaxOut | Véhicules sortis en même temps par joueur, tous garages confondus (0 = sans limite) |
Config.GarageLarge | Gros véhicules : au-delà de length / height (m), le modèle ne sort que sur les places marquées « gros véhicule » |
Config.Callsign | Numéro de toit : dispositions des mods, nombre d'emplacements, chiffres du secteur et du matricule |
Config.VehicleImageFallback | Modè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é' },
}