-- ============================================================================ -- tc-mechanic : configuration / configuration file -- Ce fichier est chargé en premier (client + serveur). Il reste lisible (non chiffré). -- This file is loaded first (client + server). It is never encrypted. -- -- Les barèmes (prix, durées, usure, permissions par grade…) se règlent EN JEU via -- /mecagestion ; les valeurs de shared/sh_config.lua ne sont que les valeurs par défaut. -- Prices, durations, wear and grade permissions are edited IN GAME with /mecagestion; -- shared/sh_config.lua only holds the defaults. -- ============================================================================ Config = {} -- ─── Général / General ─────────────────────────────────────────────────────── Config.Debug = false -- Nom affiché dans les interfaces et les logs / Name shown in the UI and logs Config.Brand = 'TC Mécanique' -- ─── Métiers mécaniciens / Mechanic jobs ───────────────────────────────────── -- Un joueur est « mécanicien » si son job porte l'un de ces noms OU si le type de son job -- (champ `type` : Vision, ESX modifié, QBCore récent) vaut Config.JobType. -- A player is a "mechanic" if his job name is listed here OR his job `type` equals Config.JobType. Config.JobType = 'mecano' Config.MechanicJobs = { 'mechanic' } -- ex. { 'mechanic', 'bennys', 'lscustoms' } -- ─── Droits staff / Staff access ───────────────────────────────────────────── -- Vision : permission staff du panneau /gestion (permissions globales du joueur). -- Autres frameworks : les droits viennent de Config.Bridge (ACE `command`, groupe admin, Admins = { 'license:…' }). Config.GestionPermission = 'gestion_mecano' -- ─── Commandes / Commands ──────────────────────────────────────────────────── Config.Commands = { Tablet = 'atelier', -- tablette atelier (mécaniciens) Gestion = 'mecagestion', -- panneau de gestion (staff) Diag = 'mecadiag', -- rapport de diagnostic technique (staff / console) Funds = 'mecafonds', -- caisse interne (staff / console) : /mecafonds [retrait] } -- ─── Distances (mètres) ────────────────────────────────────────────────────── Config.Distances = { Point = 4.0, Vehicle = 8.0, Customer = 8.0, Diagnostic = 6.0, } Config.WearVehicleTypes = { automobile = true, bike = true, quadbike = true, amphibious_automobile = true } -- ─── Facturation / Billing ─────────────────────────────────────────────────── -- 'auto' : 'builtin' si une caisse société est utilisable, sinon 'invoice' si un système de factures est présent -- 'builtin' : le client règle dans la fenêtre du script (banque ou espèces), l'argent va dans la caisse du job -- (Bridge société : Config.Bridge.Society ; à défaut caisse interne tc_mech_funds) -- 'invoice' : facture du framework (Vision : core CreateInvoice ; autres : Config.Bridge.Standalone.createInvoice) -- 'none' : pas de facturation (tests) Config.BillingMode = 'auto' -- Montant maximum d'une facture payable en espèces ($). Au-delà : banque uniquement. 0 = pas de limite. -- Maximum invoice amount payable in cash. 0 = no limit. Config.CashLimit = 2500 -- ─── Véhicules / Vehicles ──────────────────────────────────────────────────── -- Table SQL des véhicules possédés, selon le framework (lecture du propriétaire + des props, écriture des props). -- Owned-vehicle table per framework (owner lookup + vehicle properties read/write). Config.Vehicles = { vision = { table = 'vehicles', plate = 'plate', owner = 'owner', coOwner = 'co_owner', props = 'prop', fakePlate = 'fake_plate' }, esx = { table = 'owned_vehicles', plate = 'plate', owner = 'owner', coOwner = nil, props = 'vehicle' }, qbcore = { table = 'player_vehicles', plate = 'plate', owner = 'citizenid', coOwner = nil, props = 'mods' }, qbox = { table = 'player_vehicles', plate = 'plate', owner = 'citizenid', coOwner = nil, props = 'mods' }, } -- ─── Interface staff Vision / Vision staff panel icon ──────────────────────── Config.GestionIcon = { path = 'assets/icons', name = 'tool.svg' } -- Icône de l'invite d'interaction par type de point (Vision) / Interaction prompt icon per point type (Vision) Config.PointIcons = { custom = 'Catalogue', paint = 'Catalogue', wheels = 'Catalogue', diagnostic = 'Catalogue', parts = 'Catalogue', } -- Blip des points marqués « blip » / Blip of points flagged "blip" Config.Blip = { sprite = 544, color = 3, scale = 0.5 } -- ─── Intégrations optionnelles / Optional integrations ─────────────────────── -- Chaque intégration n'est utilisée que si la ressource est démarrée ET le réglage vaut true. -- Each integration is used only if the resource is started AND the flag is true. Config.Integrations = { compta = true, -- tc-compta : contrats partenaires (réductions) à la facturation logs = true, -- tc-logs : copie du journal vers Discord } -- Canal (webhook) de tc-logs utilisé pour le journal / tc-logs channel used for the journal Config.LogsWebhook = 'mecanique.default' -- ─── Couche de compatibilité / Compatibility layer ─────────────────────────── -- Framework : 'auto' détecte vision → qbox → qbcore → esx → standalone. -- Framework: 'auto' detects vision → qbox → qbcore → esx → standalone. -- Forcer / Force : 'vision' | 'esx' | 'qbcore' | 'qbox' | 'standalone' Config.Bridge = { Framework = 'auto', Inventory = 'auto', -- 'auto' | 'ox_inventory' | 'qs-inventory' | 'qb-inventory' | 'framework' | 'none' (non utilisé par ce script) Target = 'auto', -- 'auto' | 'ox_target' | 'qb-target' | 'none' (repli : marqueur + touche E) Society = 'auto', -- 'auto' | 'vision' | 'renewed' | 'qb-banking' | 'okok' | 'esx_society' | 'qbx' | 'internal' Callbacks = 'auto', -- 'auto' | 'native' (callbacks du framework ; sans ox_lib importé, le script utilise de toute façon les siens) Debug = false, -- logs de la couche de compatibilité / bridge debug logs Admins = {}, -- identifiants admin supplémentaires, ex. { 'license:xxxxxxxx' } / extra admin identifiers AdminAce = 'command', -- ACE testée pour les droits staff (add_ace group.admin command allow) InteractKey = 38, -- touche du repli sans target (38 = E) -- Frameworks sans équivalent (standalone) : fournis tes propres fonctions. -- Standalone / unsupported framework: provide your own functions. -- getJob(src) -> { name, label, grade, gradeName, gradeLabel, isBoss, onDuty } -- getMoney(src, account) -> nombre removeMoney / addMoney(src, account, amount, reason) -> bool -- vehicleRow(plate) -> { plate, owner, co_owner, prop } ou nil (prop = JSON des propriétés) -- saveVehicleProps(plate, props) -> bool -- createInvoice(data) -> id ou nil (voir bridge/mechanic_server.lua) Standalone = {}, }