Configuration générale
Ce chapitre détaille toutes les options de config/config.lua. C'est ici que vous adaptez MasterLadder à votre serveur : framework, permissions, interface, touches, vitesses, sons et distances. Les échelles elles-mêmes se règlent dans config/ladders.lua (voir Configuration des échelles).
💡 Toute option absente ou invalide reprend sa valeur par défaut, avec un avertissement dans la console : une faute de frappe ne fait jamais planter le script.
1. Licence
Config.MasterModsKey: votre MasterKey ("MM-XXXXXXXX"). Une clé mise dansserver.cfgavecset mastermods_key "…"est prioritaire. Voir Installation.
2. Langue
Config.Locale(défaut"fr") : langue des messages et de l'interface."fr": français"en": anglais"es": espagnol"de": allemand
3. Framework & permissions
Config.FrameworkMetier(défaut"standalone") : framework utilisé pour lire le métier des joueurs."esx","qb","qbx","ox","standalone"
Config.NotifySystem(défaut"gta") : système de notifications."ox","esx","qb","okok","gta"
Config.TargetSystem(défaut"ox") : système de visée (œil ALT)."ox": ox_target"qb": qb-target"none": touches et aide à l'écran- Si la ressource choisie n'est pas démarrée, le script passe automatiquement aux touches.
Config.TargetDistance(défaut2.0) : portée des options de visée, en mètres.Config.JobRestriction(défautfalse) : active la restriction par métier (ignorée en standalone).Config.RequireOnDuty(défauttrue) : le joueur doit être en service (QBCore / QBox uniquement).Config.AuthorizedJobs: grade minimum par métier et par action. Un métier absent de la liste n'a accès à rien.
Config.AuthorizedJobs = {
['pompier'] = {
deploy = 1, -- déployer / replier
enter = 0, -- monter au poste ou dans la nacelle
control = 1, -- manœuvrer l'échelle
lock = 0, -- verrouiller les portes
locker = 0, -- coffres et écran arrière
},
}
Le chiffre correspond au grade minimum requis.
Config.CustomPermission(défautnil) : votre propre fonction de permission, qui remplace la restriction par métier. Elle reçoitsource, l'action (deploy,enter,control,lock,locker) et le nom de l'échelle. Retournerfalserefuse l'action.
Config.CustomPermission = function(source, action, ladder)
return IsPlayerAceAllowed(source, 'masterladder.use')
end
4. Interface
Config.DefaultInterface(défaut"modern") : pupitre par défaut."modern": écran tactile"retro": pupitre années 2000
Config.AvailableInterfaces(défaut{ modern = true, retro = true }) : interfaces que les joueurs peuvent choisir.Config.AllowPlayerUiSettings(défauttrue) :falsedésactive/mlui, tout le monde garde les réglages ci-dessous.Config.DefaultUiCorner(défaut"br") : position du pupitre ("br"bas droite,"bl"bas gauche,"tr"haut droite,"tl"haut gauche).Config.DefaultUiScale(défaut1.0) : taille, de0.6à1.6.Config.DefaultUiCompact(défautfalse) : mode compact (relevés et voyants seulement).Config.DefaultUiVolume(défaut0.6) : volume des sons du pupitre, de0à1.Config.ShowKeyHints(défauttrue) : aide aux touches en bas d'écran pendant la manœuvre.Config.UiRefreshRate(défaut100) : millisecondes entre deux mises à jour du pupitre.
Une échelle peut aussi imposer son interface : voir interface dans Configuration des échelles.
5. Commandes & touches
Config.Commands: noms des commandes du chat (sans le/).
| Clé | Défaut | Action |
|---|---|---|
set |
mlset |
Déployer / replier (verrou nacelle pendant la manœuvre) |
enter |
mlenter |
Monter / descendre / changer de place |
control |
mlcontrol |
Prendre / lâcher les commandes |
light |
mllight |
Projecteur |
lock |
mllock |
Verrouiller les portes |
camera |
mlcam |
Caméra opérateur |
ui |
mlui |
Réglages de l'interface |
climb |
mlclimb |
Gravir / redescendre l'échelle |
exit |
mlexit |
Dépannage : se détacher de l'échelle |
admin |
mladmin |
Administration |
monitor |
mlmonitor |
Prendre / lâcher la lance canon (dans la nacelle) |
pto |
mlpto |
Engager / désengager la prise de force (au volant) |
pads |
mlcales |
Poser / ramasser les cales sous les patins (sol meuble) |
Config.DefaultKeys: touches par défaut des commandes (set = 'U',enter = 'F',control = 'R',light = 'Y',camera = 'H',climb = 'G',monitor = 'J',pto = 'K'). Chaque joueur peut les changer dans Paramètres > Raccourcis > FiveM.
⚠️ FiveM lie les touches au nom de la commande : si vous renommez une commande, les touches personnalisées des joueurs reviennent à la valeur par défaut.
Config.ManeuverControls: contrôles GTA utilisés pendant la manœuvre (liste des contrôles).rotateRight/rotateLeft(défaut35/34, D / Q)raise/lower(défaut32/33, Z / S)extend/retract(défaut131/132, Maj / Ctrl)armUp/armDown(défaut38/44, E / A)lightRight,lightLeft,lightUp,lightDown(défaut flèches)exitLeft/exitRight(défaut174/175) : maintenir pour sortir de la nacelle sur le côtéclimbUp/climbDown(défaut32/33, Z / S) : monter / descendre l'échelleinteract(défaut51, E) : coffres et écran arrière sans target
6. Gameplay & mouvement
Vitesses maximales
Config.RotationSpeed(défaut2.25) : m/s en bout d'échelle (la vitesse de rotation s'adapte à la longueur sortie).Config.ElevationSpeed(défaut1.5) : m/s en bout d'échelle.Config.ExtendSpeed(défaut1.5) : m/s.Config.ArmSpeed(défaut19.36) : °/s, bras de nacelle.Config.LightSpeed(défaut5.73) : °/s, projecteur.
Inertie et butées
Config.EnableInertia(défauttrue) : démarrage et arrêt progressifs.Config.AccelerationTime(défaut0.35) /Config.BrakingTime(défaut0.25) : secondes pour atteindre la vitesse maximale / pour s'arrêter.Config.SlowDownNearLimits(défauttrue) : ralentit à l'approche des butées.Config.SlowDownZone: distance avant la butée où le ralentissement commence (° ou m) pourrotation,elevation,length,arm,light.Config.SlowDownMinSpeed(défaut0.15) : vitesse minimale dans cette zone (fraction de la vitesse max).
Nacelle
Config.BasketLockedOnDeploy(défauttrue) : nacelle verrouillée à la fin du calage ; l'opérateur la déverrouille pendant la manœuvre (U).false= accessible dès la fin du calage.Config.GroundClearanceLower(défaut0.2) /Config.GroundClearanceExtend(défaut0.1) : garde au sol minimale de la nacelle (m) pour descendre / sortir l'échelle.
Montée par l'échelle
Config.EnableLadderClimb(défauttrue) : active la montée à pied.Config.MaxClimbers(défaut2) : personnes sur l'échelle en même temps (1 ou 2).Config.ClimbSpeed(défaut0.6) : m/s le long de l'échelle.Config.BlockLadderWhileClimbing(défauttrue) : l'échelle ne peut pas être manœuvrée quand quelqu'un y grimpe (le projecteur reste libre).Config.ClimbAnimation(défaut{ dict = "laddersbase", clip = "climb_up", cycle = 0.6 }) : animation d'escalade ;cycle= mètres parcourus par cycle d'animation. Augmentez-le si les mains « patinent » sur les barreaux.Config.ClimbOffset(défaut{ normal = 0.70, height = 0.95 }) : position du joueur sur l'échelle.normal: distance aux barreaux. Joueur dans ou sous l'échelle → augmenter (pas de0.05).height: décalage le long de l'échelle (position des mains sur les barreaux).
Config.ClimbTilt(défaut{ axis = "x", invert = false }) : inclinaison du joueur comme l'échelle.invert = trues'il se penche en arrière ;axis = "y"s'il part sur le côté.Config.ClimbHelperModel(défaut"prop_golf_ball") : petit prop invisible servant d'ancrage au joueur.Config.ClimbDownTarget(défaut{ distance = 0.6, height = 1.1, reach = 3.0, model = "prop_cs_cardbox_01" }) : point de visée « Redescendre par l'échelle » dans la nacelle (écart au centre, hauteur, portée, prop invisible qui sert de surface à viser).
Caméra opérateur
Config.CameraDistance(défaut7.0),Config.CameraMinDistance(3.0),Config.CameraMaxDistance(18.0) : distance de la caméra (m), réglable à la molette.Config.CameraSensitivity(défaut4.0).
Mise en station — Config.Stabilization
mode(défaut"manual") :"manual"= l'opérateur cale lui-même chaque stabilisateur à l'écran arrière, le porteur suit (soulèvement, cambrage) ;"auto"= séquence automatique.levelTolerance(défaut1.0) : calage manuel, écart de niveau maximal (°) pour valider.maxLift(défaut0.18) : calage manuel, levée maximale sur le plat (m). Course d'un vérin = descente jusqu'au sol sous son logement +maxLift: le stabilisateur ne quitte jamais son logement ; au-delà, des cales.slopeCompensation(défaut6.0) : compensation de dévers de l'échelle (°,0= aucune). Le calage reste valide jusqu'à cet angle ; l'échelle se remet d'aplomb.slopeAbaqueLoss(défaut0.03) : abaque réduit de cette fraction par degré d'inclinaison au-delà delevelTolerance(50 % minimum).blocks: cales sous les patins au pupitre (enabled,height= 0,15 m,max= 3 par patin,model= prop utilisé).requirePTO(défauttrue) : prise de force obligatoire avant le calage (touche « pto », au volant, véhicule arrêté, moteur tournant). Engagée, le véhicule ne peut plus rouler ; elle ne se désengage qu'échelle rangée.autoLevel(défauttrue) : mise à niveau du porteur (châssis remis à l'horizontale).false: le porteur garde sa pente.maxStroke(défaut2.2) : course maximale d'un vérin (m). Au-delà (trou, fort dévers), le calage est refusé.wheelLift(défaut0.12) : roues décollées du sol après la mise à niveau (m).maxSpeed(défaut0.5) : vitesse maximale du véhicule (m/s) pour engager la prise de force et caler.timing(défaut{ out = 1800, down = 1600, stagger = 400, level = 1800, unfold = 1200, min = 300 }) : durées en ms (sortie d'un stabilisateur, descente d'un vérin pour 1 m de course, décalage entre deux stabilisateurs, mise à niveau, dépliage de la nacelle, durée minimale d'une descente). Si l'échelle a undeployTimesupérieur à 0, toute la séquence est ramenée à cette durée.obstacleCheck(défauttrue) : obstacle sur la trajectoire d'un stabilisateur → calage réduit de ce côté s'il passe, sinon refus.pedCheck(défauttrue),pedRadius(défaut1.2) : refus si quelqu'un se tient sous un patin ou sur sa trajectoire.softGround(défaut{ enabled = true, factor = 0.8, requirePads = false }) : sol meuble sans cales → abaque multiplié parfactor;requirePads = truerefuse le calage sans cales.padTime(défaut4000) : ms pour poser / ramasser les cales.emergencySpeed(défaut0.25) : moteur hors service, vitesse de la pompe de secours (fraction de la vitesse normale).beeps(défauttrue),beepRange(défaut30.0) : bips de manœuvre et hydraulique audibles autour du véhicule (m).
Abaque — Config.Abaque
enabled(défauttrue) : active le calculateur de charge (courbes par échelle dansconfig/ladders.lua, voir Configuration des échelles).mode(défaut"block") :"block"= au bord de la courbe, seuls les mouvements qui rapprochent la nacelle restent possibles (serveur et client) ;"warn"= alarme seulement.countClimbers(défauttrue) : les personnes sur l'échelle comptent dans la charge.slowZone(défaut1.5) : mètres avant la limite où la manœuvre ralentit.reducedKey(défaut21, Maj) : contrôle à maintenir avec la touche « déployer » pour un calage réduit.
Lance canon — Config.WaterMonitor
enabled(défauttrue) : active la lance de la nacelle.range(défaut40.0) : portée du jet (m, à 45° sur terrain plat).radius(défaut3.0) : rayon d'extinction autour de l'impact (m).drawDistance(défaut200.0) : distance d'affichage du jet pour les autres joueurs (m).sendRate(défaut100) : ms entre deux envois de l'orientation de la lance.fireControl(défaut24, clic gauche) : contrôle GTA maintenu pour arroser.native(défauttrue) : éteint les feux du jeu chez tous les joueurs proches (ce qui couvre les scripts de feu basés sur les feux natifs, comme ceux de GIMI ou d'Albo1125).smartFires(défaut{ enabled = true, resource = "SmartFires", damage = 25.0, radius = 3.0, v1Hits = 6 }) : intégration London Studios SmartFires. En v2, chaque impact (2 par seconde) retiredamagepoints de vie aux feux dansradiusm, et le joueur est crédité. En v1, un feu touchév1Hitsfois est éteint.fx(défaut{ jet = "water_cannon_jet", spray = "water_cannon_spray", scale = 1.0, rotation = { x = 0.0, y = 0.0, z = 0.0 } }) : particules du jet (attachée à un support invisible orienté comme la lance) et de l'impact.rotationcorrige l'orientation de la particule si le jet ne part pas dans l'axe de la lance (réglage en jeu :Config.Debug = truepuis/mlwfx x y z).
💡 Un autre script de feu peut se brancher sur l'impact du jet : voir Exports et événements.
7. Audio
Config.EnablePanelSounds(défauttrue) : sons du pupitre (moteur hydraulique, bip de butée, déclic du verrou).Config.LockerSoundDistance(défaut10.0) : portée du son des coffres (m).Config.LockerSoundVolume(défaut0.45).Config.InVehicleSoundFactor(défaut0.4) : atténuation quand le joueur est dans un véhicule.Config.ManeuverSounds{ enabled, range = 10.0, volume = 1.0 }: sons de manœuvre entendus autour de l'EPAN (pompe hydraulique, moteur électrique, bips quand les stabilisateurs bougent), du gauche à droite selon la caméra. L'opérateur entend toujours sa machine. Pour des sons réels, déposezhtml/sounds/hydraulic.ogg(boucle de pompe) ethtml/sounds/motor.ogg(boucle de moteur) : ils remplacent la synthèse automatiquement.
7 bis. Sécurité de la manœuvre
Config.Wind{ enabled, warn = 10.0, stop = 12.5, slow = 0.5 }: anémomètre (m/s, vent du jeu, plus fort en hauteur). Au-delà dewarn: alarme et manœuvre ralentie (×slow). Au-delà destop(12,5 m/s ≈ 45 km/h) : on ne peut plus que rentrer, descendre et tourner.Config.AntiCollision{ enabled, slow = 2.0, stop = 0.: capteurs tout autour de la nacelle et au-dessus (façades, poteaux, câbles, véhicules). En approche, la manœuvre ralentit dès66, shunt = true, shuntSpeed = 0.3 }slow(m) et s'arrête àstop. On peut toujours s'éloigner de l'obstacle.shunt: bouton « Shunt anticollision » du pupitre à joysticks pour couper la protection et dégager une nacelle coincée, àshuntSpeedde la vitesse.Config.Joysticks{ enabled = true, showByDefault = true, cursorControl = 25 }: pupitre à joysticks cliquable pendant la manœuvre (joystick gauche rotation / inclinaison, droit longueur / bras nacelle, proportionnels ; arrêt d'urgence, vitesse lente, verrou, projecteur, caméra, lâcher).showByDefault: affiché pour un joueur qui ne l'a pas masqué dans/mlui.cursorControl: contrôle GTA qui prend la souris (25 = clic droit). Les touches restent actives.
8. Rendu & réseau
Config.LadderDrawDistance(défaut250.0) : distance d'affichage des échelles déployées (m).Config.PropLodDistance(défaut300) : distance de détail des props (m).Config.StowedStabilizers(défauttrue) : les 4 stabilisateurs sont posés en position rentrée sur le véhicule dès son apparition, puis remplacés par ceux de l'échelle au déploiement.false= stabilisateurs visibles seulement une fois l'échelle déployée.- Projecteur :
Config.SpotlightDistance(150.0),Config.SpotlightColor({ 255, 255, 255 }),Config.SpotlightBrightness(80.0),Config.SpotlightRadius(25.0). Config.NetworkRate(défaut100) : ms entre deux envois de position par l'opérateur.Config.InterpolationDelay(défaut160) : ms de retard d'affichage chez les autres joueurs, pour un mouvement parfaitement lisse.Config.PropHierarchy(défauttrue) : sections attachées à la tourelle.false= placement individuel (solution de repli).Config.LocalAttachOthers(défauttrue) : les autres occupants sont attachés localement (supprime leurs tremblements).
9. Distances
Côté joueur
Config.PanelDistance(défaut2.0) : distance à l'écran arrière pour déployer.Config.EnterHelpDistance(3.0) /Config.EnterDistance(4.0) : affichage de l'aide / portée de la commande « monter ».Config.LockerDistance(1.0) /Config.LockerHelpDistance(1.75) : ouverture / aide des coffres.Config.NearVehicleDistance(7.0) : véhicule considéré à proximité.
Côté serveur (anti-triche) : distances maximales tolérées, un peu plus larges que côté joueur.
Config.MaxPanelDistance(3.0),Config.MaxEnterDistance(5.0),Config.MaxInteractionDistance(7.0).
10. Debug
Config.Debug(défautfalse) : journal complet dans la console serveur et dans F8. Voir En cas d'erreur.Config.DebugCategories(défautnil= tout) : limite le journal à certaines catégories, par exemple{ "license", "deny" }.
⚠️ Laissez Config.Debug = false en production : le journal est très bavard.