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)