Script MasterLadder

MasterLadder : échelle pivotante EPAN / EPA pour FiveM (MasterMods).

Présentation

Ce chapitre présente MasterLadder, l'échelle pivotante pompiers (EPAN / EPA) de MasterMods pour FiveM.

MasterLadder transforme un véhicule à échelle en véritable engin d'intervention : calage au sol, manœuvre de l'échelle depuis le poste de la tourelle ou depuis la nacelle, montée à pied par l'échelle et deux pupitres de commande au choix. Toute l'échelle est synchronisée pour l'ensemble des joueurs, sans saccades.

Ce que fait le script

Compatibilité

Licence

MasterLadder est gratuit. Il nécessite une MasterKey, gratuite elle aussi : voir Installation.

Support : discord.mastermods.dev

Dépendances

Ce document liste ce dont MasterLadder a besoin pour fonctionner.

Obligatoire

Optionnel

⚠️ Démarrez le framework, le target et la ressource du véhicule avant MasterLadder dans server.cfg.

Installation

Ce chapitre décrit la mise en place de MasterLadder sur votre serveur.

1. Fichiers

  1. Téléchargez MasterLadder-vX.Y.Z.zip.
  2. Décompressez le dossier MasterLadder dans votre dossier resources/ (par exemple resources/[mastermods]/MasterLadder).

⚠️ Ne renommez pas les fichiers à l'intérieur du dossier.

2. server.cfg

ensure ox_target          # si vous utilisez un target
ensure votre-vehicule-epan # la ressource qui stream le véhicule et les props
ensure MasterLadder

3. MasterKey

Créez votre clé gratuite sur ressources.mastermods.dev/CreerMasterKey.php, puis renseignez-la à un seul de ces deux endroits :

Au démarrage, la console serveur affiche Licence MasterMods validée pour : <nom du serveur>. La clé est revérifiée toutes les 30 minutes.

⚠️ Une même MasterKey peut servir sur 3 serveurs différents maximum par 24 h. Au-delà, elle est bloquée 1 jour.

En cas de problème, voir En cas d'erreur.

4. Configuration

5. Administration (optionnel)

Pour autoriser vos administrateurs à utiliser /mladmin :

add_ace group.admin command.mladmin allow

Mise à jour

Remplacez tout le dossier sauf config/config.lua et config/ladders.lua, puis comparez-les avec ceux de la nouvelle version : les nouvelles options sont listées dans les Journaux des changements. Une option absente de votre config prend sa valeur par défaut.

Guide d'utilisation

Ce chapitre explique comment utiliser l'échelle en jeu, du calage au repli. Les touches indiquées sont celles par défaut : chaque joueur peut les changer dans Paramètres > Raccourcis > FiveM, et le serveur peut modifier les valeurs par défaut (voir Configuration générale).

Avec un système de visée (ox_target / qb-target), les actions « à pied » se font à l'œil (ALT) sur le véhicule ou sur l'échelle. Sans target, une aide en haut de l'écran indique la touche à utiliser.

1. Mettre l'échelle en station

  1. Garez le véhicule, à l'arrêt, sur un sol le plus plat possible (pente et dévers : 8° maximum par défaut).
  2. Au volant, engagez la prise de force : touche K (/mlpto), moteur tournant. Le véhicule ne peut plus rouler tant qu'elle est engagée. En calage manuel, l'engin étudie aussitôt sa position : une notification dit si un équilibre est possible ici (de niveau ou en dévers compensé, avec combien de cales sous quels patins), ou ce qui manque (« il manque 40 cm sous l'arrière gauche même avec 3 cales », obstacle). Il n'y a pas de limite en degrés : seule cette étude décide, et le calage est refusé au démarrage si elle échoue.
  3. À l'arrière du véhicule, allumez l'écran de commande : visée « Allumer / éteindre l'écran » ou touche E.
  4. Sol meuble (herbe, terre, sable, gravier, neige) : en calage manuel, les cales se posent sous chaque patin depuis le pupitre (E / A, voir plus bas). En calage automatique : visée « Poser / ramasser les cales » ou /mlcales.
  5. Lancez la mise en station : visée « Calage manuel des stabilisateurs » ou touche U devant l'écran (à pied).

Calage manuel (par défaut)

Debout à l'écran arrière, face au camion, vous calez vous-même, stabilisateur par stabilisateur. Le porteur suit comme un vrai camion : tant qu'un patin ne pousse pas, il reste sur ses roues ; un vérin qui pousse soulève son coin et le camion s'incline (il peut cambrer) en pivotant sur ses autres appuis. La tourelle et l'échelle suivent l'inclinaison du châssis.

Touche Action
Ctrl + ← / → choisir le stabilisateur (AVG, AVD, ARD, ARG)
Ctrl + ↑ / ↓ tous ensemble / un seul
← / → rentrer / sortir le stabilisateur
↓ / ↑ descendre / remonter le vérin
E / A glisser / retirer une cale sous le patin (patin levé)
U valider le calage (ou ranger, une fois tout rentré)
X (maintenu 1 s, réglable dans les raccourcis FiveM) abandonner : tout se range seul, cales ramassées
F quitter le poste (le calage reste en l'état)

Toutes les touches sont listées sur le pupitre, une par ligne, avec les touches réellement liées.

Le niveau à bulle fonctionne comme un vrai : la bulle part du côté haut ; descendez les vérins du côté opposé.

Conseils : le pupitre indique en bleu la prochaine manœuvre utile (sortir tel stabilisateur, descendre tel vérin, coin le plus bas et de combien de centimètres, quand caler) et entoure le patin concerné. Les verrouillages s'affichent en orange.

Abandonner : X maintenu, l'option de visée « Abandonner le calage » ou /mlset abandon. Les vérins remontent, les cales sont ramassées, les stabilisateurs rentrent, puis l'EPAN est rangée.

Verrouillages comme sur une vraie EPA : le vérin ne descend que stabilisateur sorti (au moins la largeur réduite), le stabilisateur ne bouge que vérin remonté, la descente s'arrête si quelqu'un est sous le patin, la sortie s'arrête devant un obstacle (limite rouge sur le pupitre), et le vérin s'arrête en fin de course : sur le plat, le châssis ne monte pas de plus de maxLift (0,18 m). Quelques centimètres suffisent à décoller les roues.

En forte pente, comme les pompiers :

Le pupitre de calage montre la vue de dessus (patin vert = en appui), la course de chaque vérin, un niveau à bulle et l'état : patins en appui, roues décollées, niveau. Le calage est validé avec 4 patins en appui, roues décollées et niveau ≤ 1° (levelTolerance) ; un stabilisateur sorti partiellement donne un calage réduit de ce côté. La nacelle se déplie ensuite.

Un poste laissé libre peut être repris par un autre joueur (visée « Prendre les commandes des stabilisateurs »).

Calage automatique (mode = "auto")

La séquence se déroule comme sur une vraie EPA, avec bips de manœuvre et bruit hydraulique autour du camion :

Étape Ce qui se passe
Sortie des stabilisateurs un par un : avant gauche, avant droit, arrière droit, arrière gauche
Descente des vérins un par un, jusqu'au contact du sol (plus long si le sol est bas)
Mise à niveau du porteur les vérins soulèvent le camion : roues décollées, pente et dévers corrigés
Dépliage de la nacelle l'échelle est prête

La progression et l'étape en cours s'affichent sur le pupitre. Le véhicule est immobilisé et ses portes verrouillées.

Interrompre : visée « Interrompre le calage » ou U pendant la séquence : les stabilisateurs rentrent depuis leur position du moment.

Calage réduit (rue étroite) : visée « Déployer (calage réduit) », Maj + U ou /mlset reduit pour les deux côtés ; /mlset gauche ou /mlset droite pour un seul côté. Si un obstacle (mur, véhicule, poteau) empêche un stabilisateur de sortir complètement, ce côté passe tout seul en calage réduit. Le déport autorisé par l'abaque baisse alors du côté réduit : il reste plein au-dessus de l'avant et de l'arrière du camion.

⚠️ La mise en station est refusée, avec un message qui précise la cause, si :

Sur sol meuble sans cales, la mise en station se fait mais l'abaque est réduit (voyant de calage orange et alarme « Sol meuble »).

2. Prendre place

Place Comment
Poste de commande (tourelle) Visée sur la tourelle « Monter au poste de commande », ou F près de la tourelle
Nacelle (jusqu'à 3) Visée sur la nacelle « Monter dans la nacelle », ou F près de la nacelle
Échelle (jusqu'à 2) Voir « 4. Monter par l'échelle » ci-dessous

3. Manœuvrer

Depuis le poste ou la nacelle, appuyez sur R pour prendre les commandes (une seule personne à la fois). Le pupitre s'affiche.

Touche Action
Q / D Rotation gauche / droite
Z / S Monter / baisser l'échelle (inclinaison)
Maj / Ctrl Sortir / rentrer l'échelle (longueur)
E / A Lever / baisser le bras de nacelle
Flèches Orienter le projecteur
Y Allumer / éteindre le projecteur
U Verrouiller / déverrouiller la nacelle
H Caméra opérateur (molette : distance)
R Lâcher les commandes

Pupitre à joysticks (souris)

Pendant la manœuvre, un pupitre à joysticks s'affiche au-dessus du pupitre (au-dessous si le pupitre est placé en haut de l'écran), comme sur une vraie EPA. Les touches restent actives.

Au calage (poste de l'écran arrière), les commandes de calage s'affichent de la même façon au-dessus du pupitre de calage : clic droit pour prendre la souris, puis :

Les mouvements démarrent et s'arrêtent progressivement, et ralentissent à l'approche des butées. Le pupitre affiche :

Moteur hors service : la pompe de secours prend le relais, la manœuvre est lente mais toujours possible (pour ramener la nacelle et replier).

Sécurités automatiques :

Abaque (calculateur de charge)

Comme sur une vraie EPA, la nacelle ne peut pas aller aussi loin avec 3 personnes qu'à vide. Le déport (distance horizontale entre la tourelle et la nacelle) est limité selon :

Sur le pupitre, la vue de côté affiche les courbes de l'abaque (une par charge : 0, 1, 2, 3 personnes ; celle de la charge actuelle en trait plein) et la zone de travail autorisée. Le relevé Déport indique actuel / maximum.

À l'approche de la limite, la manœuvre ralentit puis s'arrête (voyant Abaque et alarme). Seuls les mouvements qui rapprochent la nacelle restent possibles : rentrer l'échelle, la relever, relever le bras. Si quelqu'un monte dans la nacelle alors qu'elle est déjà loin, l'alarme Surcharge s'affiche : ramenez la nacelle.

4. Monter par l'échelle

  1. Échelle déployée, placez-vous au pied de l'échelle, sur le porteur.
  2. Visée « Gravir l'échelle » ou touche G.
  3. Z pour monter, S pour descendre.
  4. Arrivé en haut, Z fait entrer dans la nacelle, même si elle est verrouillée.

Pour redescendre depuis la nacelle : visée « Redescendre par l'échelle » (au bord de la nacelle, côté échelle) ou touche G. En bas, S fait descendre de l'échelle.

💡 En cas de blocage, /mlexit détache le joueur (échelle, poste ou nacelle).

5. Lance canon (nacelle)

Une personne dans la nacelle (pas l'opérateur aux commandes) peut prendre la lance :

Touche Action
J (/mlmonitor) Prendre / lâcher la lance
Caméra (souris) Viser : la lance suit la caméra, dans ses butées
Clic gauche maintenu Arroser

6. Coffres, portes et écran

7. Replier l'échelle

  1. Ramenez l'échelle en position de route : rotation à 0°, inclinaison à 0°, longueur rentrée, bras de nacelle relevé.
  2. Tout le monde descend (poste, nacelle, échelle).
  3. À l'arrière : visée « Replier l'échelle » ou U devant l'écran (ou U depuis la cabine).

En calage manuel, la nacelle se replie, puis vous reprenez le poste : remontez les vérins et rentrez les stabilisateurs, puis U pour ranger.

En calage automatique, le repli rejoue la mise en station à l'envers (nacelle repliée, porteur reposé sur ses roues, vérins remontés, stabilisateurs rentrés). Les cales sont ramassées avec le repli. Il est refusé tant qu'une condition n'est pas remplie, avec un message qui précise quoi corriger (par exemple « L'échelle n'est pas rangée (rot, ext) »).

  1. Au volant, désengagez la prise de force (K) avant de rouler.

8. Choisir son interface

/mlui ouvre les réglages du pupitre :

Les réglages sont gardés d'une session à l'autre. Le serveur peut imposer une interface pour certaines échelles.

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

2. Langue

3. Framework & permissions

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 = function(source, action, ladder)
    return IsPlayerAceAllowed(source, 'masterladder.use')
end

4. Interface

Une échelle peut aussi imposer son interface : voir interface dans Configuration des échelles.

5. Commandes & touches

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)

⚠️ 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.

6. Gameplay & mouvement

Vitesses maximales

Inertie et butées

Nacelle

Montée par l'échelle

Caméra opérateur

Mise en station — Config.Stabilization

Abaque — Config.Abaque

Lance canon — Config.WaterMonitor

💡 Un autre script de feu peut se brancher sur l'impact du jet : voir Exports et événements.

7. Audio

7 bis. Sécurité de la manœuvre

8. Rendu & réseau

9. Distances

Côté joueur

Côté serveur (anti-triche) : distances maximales tolérées, un peu plus larges que côté joueur.

10. Debug

⚠️ Laissez Config.Debug = false en production : le journal est très bavard.

Configuration des échelles

Ce chapitre explique config/ladders.lua : la liste des véhicules à échelle reconnus par le script, avec leurs props, leurs butées, leurs extras et leurs places. C'est le chapitre le plus technique, mais c'est lui qui permet d'utiliser MasterLadder avec n'importe quel véhicule à échelle.

Principe

Config.Ladders = {
    ['epabspp'] = {
        label = "EPA BSPP",
        props = {
            turntable = "prop_tl2_base",
            D         = "prop_tl2_ladder1",
            C         = "prop_tl2_ladder2",
            B         = "prop_tl2_ladder3",
            A         = "prop_tl2_ladder4",
            S         = "prop_tl2_ladder5",
            basket    = "prop_tl2_cage",
            stab      = "prop_tl2_outriggers",
        },
        interface = { theme = nil, forced = false, model = "ML 32", serial = "N° de série 2004-1187" },
        seat = { angle = 143.24, distance = 1.3, height = 0.24 },
        -- le reste reprend Config.LadderDefaults
    },
}

Identité et props

Déploiement

Butées

Extras du véhicule

💡 Les extras sont appliqués sans réparer le véhicule : les dégâts et les portes ouvertes sont conservés.

Places

Logements des stabilisateurs

💡 Réglage en direct : Config.Debug = true, approchez-vous du véhicule replié et tapez par exemple /mlstab front 1.9 (valeur absolue), /mlstab out +0.02 (sortir un peu plus) ou /mlstab rear -0.05 rel (relatif). Les stabilisateurs se replacent immédiatement et la console F8 affiche la ligne stabilizers = { … } à copier dans config/ladders.lua.

Abaque

Les valeurs doivent aller du plus grand (nacelle vide) au plus petit (3 personnes). Elles sont dessinées sur le pupitre sous forme de courbes.

Lance canon

Collisions des props

Interface

Ajouter un véhicule

  1. Vérifiez que la ressource du véhicule stream bien le véhicule et les 8 props de l'échelle.
  2. Copiez une entrée existante et renommez la clé avec le nom de spawn du véhicule.
  3. Renseignez label et props.
  4. Ajustez les numéros d'extras du modèle (extras) et l'état de spawn (spawnExtras).
  5. Redémarrez la ressource, déployez, puis ajustez en jeu seat, basketSpots et les butées.

💡 Avec Config.Debug = true, la console signale les props introuvables par leur nom, et /mldebug affiche au-dessus de l'échelle son état complet.

Permissions & administration

Ce chapitre explique qui peut faire quoi avec l'échelle, et les outils des administrateurs.

Actions contrôlées

Action Ce qu'elle autorise
deploy Déployer et replier l'échelle
enter Monter au poste, dans la nacelle ou sur l'échelle
control Manœuvrer l'échelle
lock Verrouiller les portes du véhicule
locker Ouvrir les coffres, allumer l'écran arrière

Trois façons de gérer les permissions

  1. Tout le monde : Config.JobRestriction = false (par défaut), ou framework standalone.
  2. Par métier et par grade : Config.JobRestriction = true et Config.AuthorizedJobs (voir Configuration générale). Avec QBCore / QBox, Config.RequireOnDuty = true exige d'être en service.
  3. Votre propre règle : Config.CustomPermission, une fonction qui reçoit le joueur, l'action et l'échelle, et retourne false pour refuser. Elle remplace la restriction par métier.

💡 Toutes les vérifications sont faites côté serveur : un joueur ne peut pas les contourner en modifiant son client.

Commande d'administration

Autorisation (dans server.cfg) :

add_ace group.admin command.mladmin allow
Commande Effet
/mladmin list Liste les échelles déployées et leurs occupants
/mladmin evict <netId|cl> [all|op|seat|b1|b2|b3|c1|c2] Fait descendre les occupants (tous par défaut) ; op retire l'opérateur
/mladmin del <netId|cl> Replie instantanément l'échelle et libère le véhicule

cl désigne l'échelle la plus proche de l'administrateur. La commande fonctionne aussi depuis la console serveur (avec un netId).

Dépannage joueur

/mlexit détache le joueur (échelle, poste ou nacelle) s'il reste bloqué.

En cas d'erreur

Ce chapitre regroupe les problèmes les plus courants et l'outil de diagnostic intégré.

Le mode debug

Passez Config.Debug = true dans config/config.lua et redémarrez la ressource. MasterLadder écrit alors tout ce qu'il fait :

Exemples de lignes :

[ML:deny] mladder:enter ← Jean #12 : pied de l'échelle à 6.2 m (max 5.0 m)
[ML:deny] mladder:set ← Jean #12 : déploiement : pente 9.4° (véhicule 9.1°) > 8.0° max
[ML:deny] mladder:control ← Jean #12 : « control » : pompier grade 0 < 1 requis
[ML:state] EPAN 42 tl (rév 18) : occ.b1: 0 → 12

Commandes de diagnostic

Pour ne garder qu'une partie du journal : Config.DebugCategories = { "license", "deny", "perm" }.

⚠️ Remettez Config.Debug = false une fois le problème trouvé.

Problèmes fréquents

« Licence MasterMods refusée : script inactif »

« API MasterMods injoignable (code 0) »

Les props de l'échelle n'apparaissent pas

Rien ne se passe en visant le véhicule

« Pente trop forte » / déploiement refusé

Impossible de replier

Le joueur est mal placé sur l'échelle (dans les barreaux, flotte, penché en arrière)

Un joueur est bloqué (attaché, figé)

Support

Si le problème persiste, passez sur discord.mastermods.dev avec :

⚠️ Ne partagez jamais votre MasterKey en entier : les journaux l'affichent toujours masquée.

Journaux des changements

Ce document liste les évolutions de MasterLadder, de la plus récente à la plus ancienne.

1.3.0 — 19/10/2026

Pupitre à joysticks, comme sur une vraie EPA

Corrigé

1.2.0 — 18/10/2026

1.0.0 — 18/10/2026

Mise en station comme sur une vraie EPA

Manœuvre et sécurité

Ambiance et intégration

0.1.0 — 18/10/2026

Première version publique.

Exports et événements

MasterLadder expose des exports et des événements pour que vos autres scripts (dispatch, HUD, scripts de feu, métiers…) sachent ce qui se passe sur les échelles. Le nom de la ressource doit rester MasterLadder.

Unités : angles en degrés, distances en mètres. Une échelle est identifiée par le netId de son véhicule.

Places

Code Place
seat Poste de commande (tourelle)
b1, b2, b3 Places de la nacelle
c1, c2 Sur l'échelle (montée à pied)

État d'une échelle (GetLadderState)

Les deux côtés renvoient la même table (ou nil si l'échelle n'est pas déployée) :

Champ Contenu
netId, model, label Véhicule, clé dans Config.Ladders, nom affiché
phase calage automatique : "deploy" (calage), "ready" (manœuvrable), "pack" (repli) · calage manuel : "setup" (stabilisateurs au pupitre), "unfold" (dépliage), "ready", "fold" (repli de la nacelle), "abort" (abandon, rangement automatique)
calage "full", "reduced", "left" (gauche réduit) ou "right" (droit réduit)
rotation, elevation, length, arm Position de l'échelle (°, °, m de longueur totale, °)
basket Position de la nacelle (vector3)
reach, maxReach Déport actuel et déport maximal de l'abaque (m)
load Personnes comptées dans la charge
occupants { seat = id, b1 = id, … } (0 = libre)
operator ID serveur de l'opérateur aux commandes (0 = personne)
basketLocked, spotlight Verrou de nacelle, projecteur
monitor { holder, flowing, yaw, pitch } (+ impact côté client)

Côté client s'ajoutent vehicle (entité) et height (hauteur de la nacelle au-dessus du sol).

Exports client

local ml = exports['MasterLadder']
Export Retour
ml:GetPlace() netId, place du joueur, ou nil
ml:IsInLadder() Le joueur occupe une place
ml:IsInBasket() / ml:IsClimbing() / ml:IsAtSeat() Nacelle / sur l'échelle / au poste
ml:IsOperator() Le joueur a les commandes
ml:IsHoldingMonitor() Le joueur tient la lance
ml:IsLadderVehicle(veh) Ce véhicule est une échelle configurée
ml:IsDeployed(veh) Cette échelle est déployée
ml:GetLadderState(netId) Table d'état (échelles affichées chez ce joueur)
ml:GetBasketCoords(netId) Position de la nacelle
ml:IsWaterFlowing(netId) La lance débite
ml:GetWaterImpact(netId) Point d'impact du jet (vector3)
ml:GetNearestLadder(range) netId, distance de l'échelle déployée la plus proche (défaut 50 m)
ml:GetVisibleLadders() Liste des netId des échelles affichées

Exemple : couper un HUD de vitesse dans la nacelle.

CreateThread(function()
    while true do
        Wait(500)
        local inBasket = exports['MasterLadder']:IsInBasket()
        -- masquer / afficher votre HUD ici
    end
end)

Exports serveur

Export Retour
IsDeployed(netId) L'échelle est déployée
GetLadderState(netId) Table d'état
GetDeployedLadders() Liste des netId déployés
GetBasketCoords(netId) Position de la nacelle
GetPlayerPlace(src) netId, place du joueur, ou nil
GetOccupants(netId) { place = src } des places occupées
IsWaterFlowing(netId) La lance débite
EjectPlayer(src) Fait descendre le joueur de sa place (true si fait)
EvictLadder(netId) Vide toutes les places et rend les commandes
StopWater(netId) Ferme le jet (le porteur peut le rouvrir)

Événements serveur

À écouter avec AddEventHandler dans une ressource serveur :

Événement Paramètres Quand
masterladder:deployed netId, src, calage Déploiement lancé ("full" / "reduced" ; "manual" au début d'un calage manuel)
masterladder:ready netId Calage terminé
masterladder:packing netId, src Repli lancé
masterladder:packed netId Échelle rangée
masterladder:ptoChanged netId, src, engagée Prise de force engagée / désengagée
masterladder:placeChanged netId, src, place Place prise, ou quittée (place = nil)
masterladder:controlChanged netId, src Opérateur aux commandes (0 = personne)
masterladder:monitorChanged netId, src Porteur de la lance (0 = personne)
masterladder:waterChanged netId, src, ouvert Jet ouvert / fermé
masterladder:waterImpact netId, src, coords Impact du jet, 2 fois par seconde

Brancher un script de feu

-- server.lua de votre script de feu
AddEventHandler('masterladder:waterImpact', function(netId, src, coords)
    -- éteindre / affaiblir vos feux autour de coords (rayon ~3 m)
    MonScriptDeFeu.DamageAt(coords, 3.0, 25.0, src)
end)

Événements client

Événement Paramètres Quand
masterladder:client:placeChanged netId, place Ma place change (nil, nil quand je descends)
masterladder:client:waterImpact coords, rayon Impact du jet près de moi (feux éteints localement)