Généralités & important MasterStretcher est une solution médicale avancée pour FiveM qui remplace les brancards statiques par des entités physiques réalistes. Le script gère la gravité dans les pentes, offre une synchronisation réseau parfaite (OneSync), permet l'ancrage automatique dans les ambulances configurées et inclut un module unique pour les nacelles de grandes échelles. Présentation du projet MasterStretcher est une solution de brancardage physique pour FiveM, pensée pour les serveurs qui veulent une intervention médicale crédible plutôt qu'un simple prop qu'on fait apparaître et disparaître. Le brancard n'est pas une animation scriptée : c'est une entité physique à part entière, qui répond aux pentes, se synchronise en temps réel entre tous les joueurs présents, et s'intègre directement dans les véhicules de secours configurés — sans étape manuelle à chaque intervention. Ce qui distingue MasterStretcher Physique réelle, pas une illusion. Le brancard suit le relief du terrain, réagit aux pentes, et se comporte comme un objet physique cohérent — pas un décor plaqué sur le joueur. Auto-armement des ambulances. Chaque véhicule de secours configuré peut recevoir automatiquement son brancard dès qu'un secouriste y monte, sans action manuelle. C'est le mécanisme central du script, pensé pour que l'équipement soit toujours prêt sans interrompre le rythme d'une intervention. Prise en main contextuelle. Le personnage se déplace naturellement vers le brancard et adopte une posture cohérente avec sa position — accroupi pour un ramassage au sol, prise directe pour un brancard déjà debout — plutôt qu'un simple "attrapage" instantané. Gestion complète du patient. Un joueur peut s'installer lui-même sur le brancard, ou être placé par un secouriste. Un PNJ blessé peut également être manipulé. La posture (couché, assis, PLS...) reste modifiable en temps réel pendant tout le transport, sans casser l'animation. Système de relais entre secouristes. Le contrôle du brancard peut être transmis d'un collègue à l'autre sans jamais poser l'équipement au sol, pour fluidifier le travail en équipe. Compatibilité nacelles et grandes échelles. Au-delà des ambulances classiques, le brancard s'attache proprement aux nacelles des camions à échelle — une prise en charge rare sur ce type de script. Accessoires modulables. Tablette médicale, brancard cuillère, bouteille d'oxygène, plan dur, couverture de survie, coquille M.I.D. : chaque brancard peut être équipé selon le contexte de l'intervention, avec un rendu par défaut personnalisable directement en configuration. Pensé pour s'intégrer, pas pour imposer MasterStretcher s'adapte à l'écosystème déjà en place sur le serveur plutôt que d'en imposer un nouveau : Frameworks : ESX, QBCore, QBox, ou usage autonome sans dépendance métier. Systèmes de ciblage : ox_target, qb-target, ou déclenchement au clavier sans cible du tout. Inventaires : système natif du framework ou ox_inventory. Langues : français, anglais, espagnol, allemand. Chaque combinaison est détectée et gérée automatiquement à partir d'une poignée de réglages, sans code à toucher. Une base technique pensée pour durer Le script a été construit autour d'un principe simple : le serveur garde toujours l'autorité finale. Chaque action sensible — qui a le droit de pousser, de ranger, de modifier un accessoire, de manipuler un patient — est vérifiée côté serveur, jamais laissée à la seule confiance du client. Cette rigueur se traduit par un comportement fiable même en conditions réseau imparfaites, et par une résistance native aux tentatives de triche. La configuration des véhicules, souvent le point le plus technique pour un administrateur, est assistée par un outil de calibrage intégré : il suffit de placer le brancard à l'œil dans le véhicule pour obtenir directement les valeurs à copier dans la configuration. Une ambition claire MasterStretcher vise un objectif précis : donner aux serveurs orientés roleplay médical un outil qui se comporte comme du matériel réel, pas comme un gadget. Chaque choix de conception — de la physique du brancard à la vérification serveur, en passant par la prise en main contextuelle — sert cette cohérence. Installation Bienvenue dans la documentation de MasterStretcher. Ce script apporte une dimension réaliste aux interventions médicales sur votre serveur FiveM grâce à une physique avancée, une synchronisation précise et une intégration complète avec les véhicules d'urgence. 1.1 Pré-requis Avant de commencer, assurez-vous que votre serveur dispose de : Compte Cfx.re : Nécessaire pour télécharger la ressource via le système d'assets officiel (Escrow). FiveM Artifacts : Version 4752 ou supérieure recommandée. 1.2 Procédure d'Installation L'installation se fait en 3 étapes via le système officiel Tebex et Keymaster. Étape 1 : Récupérer la ressource Rendez-vous sur la boutique officielle : https://raph.tebex.io/ Sélectionnez le package MasterStretcher (Gratuit). Procédez au "paiement" (0.00€) pour lier la ressource à votre compte Cfx.re. Étape 2 : Télécharger les fichiers Connectez-vous sur votre Keymaster : https://portal.cfx.re/ Dans la liste "Granted Assets", cherchez MasterStretcher. Cliquez sur Download pour obtenir l'archive .zip. Étape 3 : Installation sur le serveur Ouvrez l'archive téléchargée. Le dossier extrait porte un nom qui change à chaque version (par exemple MasterStretcher_MasterMods_v17) — renommez-le en MasterStretcher avant de le glisser dans le répertoire resources de votre serveur. Ça vous évite de devoir modifier votre server.cfg à chaque mise à jour du script. Ajoutez la ligne suivante à votre fichier server.cfg : ensure MasterStretcher ⚠️ Si vous préférez garder le nom du dossier tel quel (avec son suffixe de version), remplacez MasterStretcher par le nom exact du dossier dans la ligne ensure — mais pensez alors à la mettre à jour vous-même à chaque nouvelle version téléchargée. 1.3 Configuration de la Licence (Obligatoire) Pour que le script fonctionne correctement, vous devez générer une clé unique (gratuite également). Rendez-vous sur le générateur officiel : https://ressources.mastermods.dev/CreerMasterKey.php Générez votre MasterKey. Ouvrez le fichier config.lua situé dans le dossier du script. Collez votre clé dans la variable correspondante : Config.MasterModsKey = "VOTRE_CLE_ICI" Guide d'utilisation Ce chapitre détaille comment interagir avec le brancard, gérer les patients et utiliser les véhicules d'urgence. Toutes les interactions se font via le système de visée ("Alt-Eye" ou "Third-Eye"). 2.1 Manipulation du Brancard Prendre le contrôle Pour commencer à déplacer un brancard : Approchez-vous du brancard. Ciblez-le avec votre touche d'interaction (ALT). Sélectionnez l'option "Pousser le brancard". Votre personnage se dirige automatiquement devant le brancard, s'oriente face à lui, puis effectue un geste de prise en main adapté à sa position — accroupi s'il est posé au sol, prise directe s'il est déjà debout — avant de saisir les poignées. Se déplacer Mouvements : Utilisez vos touches directionnelles habituelles (ZQSD). Le brancard suit votre physique. Courir : Pour des raisons de sécurité, le sprint est désactivé lorsque vous poussez un brancard (comportement configurable côté serveur). Obstacles : Le brancard possède des collisions physiques. Il ne passera pas à travers les murs ou les poteaux. Lâcher le brancard Pour arrêter de pousser, appuyez sur votre touche d'interaction principale (par défaut E) ou utilisez le menu Target. Un menu apparaîtra pour choisir la position de dépôt : Position Haute : Laisse le brancard sur ses roues (prêt à repartir). Position Basse : Replie les pieds au sol (mode stationnaire ou intervention). Système de Freins Si le terrain est en pente, le brancard peut rouler tout seul s'il n'est pas tenu. Ciblez le brancard (ALT) et sélectionnez "Bloquer/Débloquer Freins". Visuel : Le brancard se fige physiquement pour éviter tout accident. 2.2 Gestion des Patients Installer un Joueur Le patient peut s'installer lui-même ou être installé par un médecin. Ciblez le brancard (ALT) -> "Menu Brancard". Sélectionnez "S'installer". Choisissez la position (Couché, Assis, PLS, etc.). Installer un PNJ (Civil IA) Idéal pour les scènes RP sans joueurs blessés. Ciblez le PNJ blessé (ALT). Sélectionnez "Placer sur le brancard". Note : Un brancard vide doit être à proximité immédiate. Modifier la posture Une fois le patient installé, le médecin peut ajuster sa position via le menu : Ciblez le brancard -> "Menu Brancard". Choisissez "Position du patient" pour changer l'animation en temps réel (ex: passer de "Couché" à "Assis" pour le transport). Pour un PNJ, utilisez l'option "Débarquer le PNJ" pour le faire descendre. 2.3 Système de Relais (Duo) Vous pouvez passer le brancard à un collègue sans le lâcher au sol, pour fluidifier les interventions. Donner : Ciblez votre collègue -> "Donner le brancard". Il recevra une notification pour accepter. Prendre : Ciblez un collègue qui pousse -> "Prendre le relais". 2.4 Intégration Véhicules (Ambulances) Le système d'ancrage est compatible uniquement avec les véhicules configurés (voir Chapitre 4). Charger dans l'ambulance Ouvrez impérativement les portes arrières du véhicule. Approchez le brancard de l'ouverture (les pieds doivent être proches du pare-chocs). Ciblez le véhicule (ALT) et sélectionnez "Rentrer le brancard". Le brancard se repliera et glissera automatiquement dans le rail. Sortir de l'ambulance Ouvrez les portes arrières. Ciblez le véhicule (ALT) -> "Sortir le brancard". Votre personnage effectuera l'animation de sortie et récupérera le contrôle du brancard instantanément. Menu Interne (Modifications Visuelles) Certains brancards (Ferno/Stryker) sont modulables. Ciblez le brancard -> "Extras & Accessoires". Vous pouvez ajouter/retirer : La tablette médicale. Le brancard cuillère. La bouteille d'oxygène. Le plan dur. La couverture de survie. La coquille M.I.D. Relever/Baisser les barrières latérales (Garde-corps). Relever/Baisser le dossier. Configuration des Véhicules (Ambulances/Paniers) Ce chapitre est le plus technique mais le plus important. Il permet de définir quels véhicules peuvent interagir avec le brancard (chargement/déchargement) et comment le brancard se positionne physiquement à l'intérieur. Toute la configuration se fait dans la table Config.AmbulanceConfig du fichier vehicles.lua. 4.1 Structure d'une Ambulance Pour ajouter un nouveau véhicule, copiez un bloc existant et modifiez les valeurs. Voici l'explication ligne par ligne : { model = "Master III VSAV", -- Nom indicatif (pour vous repérer) hash = `rmaster317_vsav-bspp`, -- Le nom de spawn du véhicule entre ` ` (backticks) auteur = "Anto", -- Informatif AutoBrancardName = "ferno-f2", -- Le modèle de brancard qui spawn avec (si Auto-Armement actif) requiredDoors = {2, 3}, -- Les portes qui doivent être ouvertes (voir 4.3) -- RÉGLAGES DE POSITION (OFFSET) detection = 2.4, -- Rayon de détection (en mètres) autour du véhicule alignementLateral = -0.25, -- Position Gauche/Droite (X) profondeur = -1.25, -- Position Avant/Arrière (Y) hauteur = -0.25, -- Position Haut/Bas (Z) rotation = 0.0 -- Rotation du brancard (0.0 = Pieds vers l'avant) Comment trouver les bonnes coordonnées ? De manière intuitive Il y a un outil magique : la commande /configBrancard. Elle va vous poser des questions puis vous pourrez bouger le brancard pour le faire coller au niveau de l'ambulance. Ensuite, vous prendrez les lignes générées (presse-papiers ou F8) et vous les mettrez dans vehicles.lua. Manuellement Faites apparaître le brancard et l'ambulance. Chargez le brancard. S'il est mal mis, modifiez les valeurs alignementLateral, profondeur ou hauteur dans le config. Redémarrez la ressource ( restart suivi du nom de votre dossier) et réessayez. Alignement Latéral (X) : 0.0 : Centre exact du véhicule. Valeur négative (ex: -0.5) : Vers la gauche (conducteur). Valeur positive (ex: 0.5) : Vers la droite (passager). Profondeur (Y) : Valeur négative : Vers l'arrière (coffre). Valeur positive : Vers l'avant (pare-brise). Hauteur (Z) : Ajustez pour que les roues touchent le plancher de l'ambulance sans passer au travers. 4.2 Les Portes Requises (requiredDoors) Cette liste définit quelles portes doivent être physiquement ouvertes pour que l'action "Rentrer/Sortir le brancard" soit disponible. Codes des portes GTA V : 0 : Avant Gauche (Conducteur) 1 : Avant Droit (Passager) 2 : Arrière Gauche (Passager AR) 3 : Arrière Droit (Passager AR) 4 : Capot Moteur 5 : Coffre (Hayon) 6 : Soute (Back) - Souvent utilisé pour les hélicos. Exemples : Pour un VSAV type camionette avec deux portes battantes arrières : requiredDoors = {2, 3}. Pour un hélicoptère comme ceux d'Anto avec une soute : requiredDoors = {6}. Pour un hélicoptère sans portes ou toujours ouvertes : requiredDoors = {} (liste vide = aucune restriction). 4.3 Configuration des Hélicoptères Les hélicoptères fonctionnent exactement comme les ambulances, mais nécessitent souvent une zone de détection plus large car le joueur ne peut pas se coller au modèle (à cause des patins). Astuce : Augmentez detection à 2.0 ou 3.0 mètres. 4.4 Nacelles et Grandes Échelles Pour les camions de pompiers équipés d'une nacelle (Bucket), la configuration se fait dans une autre table du même fichier vehicles.lua : Config.LadderBasketConfig. { label = "Nacelle EPAN", hash = -84503767, -- Hash du PROP de la nacelle (pas du camion !) offset = { x = 0.44, y = -0.43, z = 0.15 }, -- Position relative dans le panier rot = { x = 90.0, y = 0.0, z = 0.0 } -- Rotation (90° pour être debout/fixé) }, Ici, le hash n'est pas celui du véhicule, mais celui de l'objet "panier" (cs_bucket ou équivalent) qui est attaché au bras de l'échelle. Vous devrez trouver le hash du prop utilisé par votre moddeur de véhicule. Détail des paramètres : label : Nom pour vous repérer. hash : ATTENTION, c'est le point crucial. Ce n'est PAS le hash du camion de pompier, mais le hash de l'objet 3D de la nacelle (cs_bucket, laddertruck_bucket, etc.). offset (x, y, z) : La position du brancard DANS le panier. rot (x, y, z) : L'orientation. Généralement, une rotation X à 90.0 est nécessaire pour que le brancard soit "debout" ou fixé à la verticale contre la paroi de la nacelle. Astuce : Utilisez un script de "Dev Tools" ou "Object Spawner" pour trouver le nom/hash du prop de la nacelle quand elle est déployée. Utilisation en Jeu Déployez l'échelle du camion. Montez le brancard (vide ou avec patient) dans la nacelle. Visez la nacelle (Target ALT) et choisissez "Fixer le brancard à la nacelle". Pour le retirer : Visez la nacelle ou le brancard et choisissez "Sortir le brancard". Configuration du gameplay Ce chapitre détaille les options disponibles dans le fichier config.lua pour adapter le script à votre serveur. Ce fichier est le cœur de la personnalisation du gameplay. 3.1 Framework & Permissions Cette section permet de définir comment le script s'intègre à votre économie et à vos systèmes de métiers. Config.FrameworkMetier : Définit le framework utilisé par votre serveur. "esx" : Pour les serveurs ESX Legacy ou v1. "qb" : Pour les serveurs QBCore. "qbx" : Pour les serveurs QBox (qbx_core). "ox" : Pour les serveurs basés sur ox_core. "standalone" : Aucune dépendance métier (tout le monde peut tout faire). Config.TargetSystem : Définit le système de visée (Third-eye). "ox" : Recommandé (ox_target). "qb" : Pour qb-target. "none" : Désactive totalement le système de cible (interactions au clavier uniquement, voir Config.DefaultKey). Utile si votre serveur n'utilise aucun système de visée. Config.JobRestriction : true : Active la restriction par métier. Seuls les métiers listés ci-dessous pourront utiliser les brancards. false : Désactive les restrictions. Tout le monde peut utiliser le matériel. Config.AuthorizedJobs : Configuration fine des grades (si JobRestriction est activé). Le chiffre correspond au grade minimum requis. push : Autorisation de pousser le brancard. patient : Autorisation de manipuler le patient (installer/sortir). stow : Autorisation de charger/décharger de l'ambulance. spawn : Autorisation de faire apparaître un brancard via un item. extras : Autorisation de modifier les accessoires (sac, oxygène...). delete : Autorisation de supprimer le brancard (Admin/Boss). Config.MaxInteractionDistance (défaut 6.0) : Distance maximale (en mètres) à laquelle un joueur peut interagir avec un brancard ou un véhicule configuré. Au-delà, les actions sont refusées côté serveur, même si le client tente de les déclencher. 3.2 Gameplay & Physique Ces options modifient le ressenti et le comportement du brancard en jeu. Config.DefaultKey ( 'E') : La touche clavier par défaut pour interagir (lâcher le brancard) si le Target n'est pas utilisé. Config.EnableSlopePhysics : Si true, le brancard soumis à la gravité roulera tout seul dans les pentes s'il n'est pas tenu ou freiné. Config.SlowDownWhenPushing : Si true, force le joueur à marcher (empêche le sprint) lorsqu'il pousse un brancard. Config.HolsterWeaponBeforePush : Si true, range automatiquement l'arme du joueur avant qu'il ne saisisse les poignées (évite les bugs visuels). Config.AutoBrakeOnRelease : Si true, les freins s'activent automatiquement dès que vous lâchez le brancard. Config.EnablePickupAnimation (défaut false, ⚠️ expérimental) : Si true, le joueur se déplace automatiquement devant le brancard et effectue un geste de prise en main contextuel (accroupi si le brancard est au sol, prise directe s'il est debout) avant de le saisir, au lieu d'une prise en main instantanée. Les animations et distances utilisées sont réglables via Config.PickupAnims et Config.PickupWalkDistance (fichier stretchers.lua). Cette fonctionnalité est encore en cours d'ajustement — désactivez-la si vous rencontrez un comportement inattendu. 3.3 Audio et Immersion Config.EnableWheelSound : Active le bruitage réaliste de roulement. Config.WheelSoundVolume : Volume du son (0.0 à 1.0). Config.WheelSoundDistance : Distance à laquelle les autres joueurs entendent le brancard (défaut : 15 mètres). 3.4 Objets & Items Vous pouvez définir quels items de votre inventaire font apparaître quel modèle de brancard. Exemple de configuration : Config.ItemsVeh = { {hash = `ferno-f2`, item = 'stretcher', label = 'Ferno F2'}, {hash = `fernof3`, item = 'stretcher2', label = 'Ferno F3'}, {hash = `stryker`, item = 'stretcher3', label = 'Stryker M1'}, } hash : Le modèle 3D du brancard (doit exister dans le jeu). item : Le nom technique de l'item dans votre base de données (DB). label : Le nom affiché lors du spawn. 3.5 Système d'Inventaire Par défaut, MasterStretcher utilise le système d'item natif de votre framework (ESX/QBCore/QBox). Si votre serveur utilise ox_inventory comme inventaire (indépendamment du framework de jobs utilisé), il faut le préciser : Config.InventorySystem : "native" (défaut) : Utilise le système d'item de votre framework ( Config.FrameworkMetier). "ox" : Utilise ox_inventory. Configuration requise pour ox_inventory Si Config.InventorySystem = "ox", MasterStretcher ne suffit pas à lui seul : il faut aussi déclarer l'item côté ox_inventory. Dans votre ox_inventory/data/items.lua, pour chaque item de Config.ItemsVeh, ajoutez : ['nom_item'] = { label = 'Brancard', weight = 5000, client = { export = 'MasterStretcher.stretchermod_use_item' } } Remplacez MasterStretcher par le nom exact du dossier de la ressource MasterStretcher sur votre serveur (par exemple MasterStretcher_MasterMods_v17). ⚠️ Le retrait de l'item après usage se gère via le champ consume de votre configuration ox_inventory, pas via MasterStretcher. Intégrations (Pour les moddeurs) Ce document liste tous les exports et événements disponibles pour intégrer le StretcherMod avec vos propres scripts (menus radiaux, context menus, dispatch, MDT, etc.). Si vous utilisez vos propres menus via ces exports, n'oubliez pas de désactiver le système de ciblage intégré en mettant Config.TargetSystem = "none" dans votre config.lua pour éviter les conflits et les erreurs dans la console ! Les exemples ci-dessous utilisent MasterStretcher comme nom de ressource — c'est le nom recommandé après avoir renommé le dossier téléchargé (voir chapitre Installation). Si vous avez gardé un autre nom de dossier, remplacez MasterStretcher par celui-ci dans chaque appel exports[...]. 💻 EXPORTS CLIENT Vous pouvez appeler ces fonctions depuis n'importe quel script client. La plupart de nos exports retournent deux valeurs : success (boolean) et message (string ou boolean selon le cas) pour vous permettre de gérer vos erreurs proprement (ex: si le joueur n'a pas le bon métier). Note : Si vous ne précisez pas d'entité en paramètre, le script ciblera automatiquement le brancard ou l'ambulance la plus proche du joueur. 🛠️ Actions 1. Pousser / Lâcher un brancard local success, action = exports['MasterStretcher']:TogglePush(entity) -- action retourne "pushed" ou "dropped" 2. Ouvrir le menu de gestion du brancard local success, reason = exports['MasterStretcher']:OpenMenu(entity) 3. Ranger le brancard dans l'ambulance (Vérifie automatiquement que les portes requises de l'ambulance sont ouvertes) local success, reason = exports['MasterStretcher']:StowStretcher(ambulanceVehicle) 4. Sortir le brancard de l'ambulance local success, reason = exports['MasterStretcher']:UnstowStretcher(ambulanceVehicle) 5. Ouvrir le menu du brancard depuis l'intérieur de l'ambulance local success, reason = exports['MasterStretcher']:OpenAmbulanceMenu(ambulanceVehicle) 6. Bloquer / Débloquer les freins local success, isBraked = exports['MasterStretcher']:ToggleBrakes(entity) -- isBraked retourne le nouvel état des freins (true = bloqué) 🔍 Lecture d'informations (Getters) Savoir si le joueur pousse actuellement un brancard : local isPushing = exports['MasterStretcher']:IsPushingStretcher() -- Retourne true/false Récupérer l'entité du brancard tenu par le joueur : local stretcherEntity = exports['MasterStretcher']:GetAttachedStretcher() -- Retourne l'entité ou nil Savoir si un brancard est occupé (Joueur ou PNJ) : local isOccupied = exports['MasterStretcher']:IsStretcherOccupied(entity) -- Retourne true/false 📡 ÉVÉNEMENTS CLIENT (Hooks) Le script diffuse ces événements en local. Vous pouvez les écouter dans vos autres scripts pour déclencher actions automatiques (ex: allumer les gyrophares quand on sort le brancard, envoyer un message radio, etc.). stretchermod:onPushStart(entity) : Se déclenche quand le joueur attrape le brancard. stretchermod:onPushStop(entity, position) : Se déclenche quand le joueur lâche le brancard ( position = 'debout' ou 'couche'). stretchermod:onStretcherStowed(ambulanceEntity, stretcherEntity) : Se déclenche quand un brancard est rangé dans un véhicule. stretchermod:onStretcherUnstowed(ambulanceEntity, stretcherEntity) : Se déclenche quand un brancard est sorti d'un véhicule. Exemple d'utilisation : AddEventHandler('stretchermod:onStretcherStowed', function(ambulance, stretcher) print("Un brancard vient d'être chargé dans l'ambulance !") -- Insérez ici votre code pour fermer les portes arrière automatiquement, par exemple. end) En cas d'erreur POURQUOI CA MARCHE PAS ? Journaux des changements 📋 Changelog (Mise à jour du 30/12 - 31/12) - 3.1.0 Nouvelles Fonctionnalités Système PNJ Complet : Placement de PNJ vivants sur le brancard avec un menu de position dédié pour modifier l’animation après l’installation. Support Nacelle : Support de l’EPAN d’Anto avec détection automatique et masquage visuel des roues. Alignement Dynamique (Pitch & Roll) : Le brancard s’incline automatiquement selon l’inclinaison du terrain (avant/arrière et latéral). Correctifs & Patches Remaniement : Simplification du fichier de configuration Système de Relais : Transfert de contrôle fluide entre deux collègues via une demande et une confirmation synchronisées. Persistance d’Animation : Système de vérification pour empêcher que l’animation du patient ne soit coupée par des scripts tiers. Optimisation des Collisions : Désactivation des collisions entre le patient et le brancard pendant le transport pour supprimer les mouvements erratiques. Patch Technique : Correction de la fonction native de débarquement, correction d’un bug où les joueurs-non-métier ne pouvaient pas se coucher sur le brancard. Changement de système : Plus besoin d’être sur Discord SAUF pour garder les fonctions ‘Premium’ : Support Nacelle, alignement dynamique, restriction métier Optimisation des Extras : Regroupement des dossiers et garde-corps en interrupteurs uniques (ON/OFF) avec logique d’exclusion mutuelle pour une gestion simplifiée. 📑 Changelog - MasterStretcher (Mise à jour du 01/01) - 3.1.1 Attention : changement du fichier config.lua nécessaire ! Correction du bug des nacelles : Le brancard ne devrait plus léviter et ne plus boguer lorsqu’il est attaché à une échelle ou un panier. Il reste désormais parfaitement fixé pour tout le monde, même lors des mouvements. Alerte de mise à jour : Si une nouvelle version du script est disponible, un gros message d’alerte très visible (en rouge et jaune) s’affichera directement dans la console de votre serveur au démarrage. Affichage des véhicules amélioré : Les véhicules s’affichent désormais par leur nom et leur auteur (ex: Master III [Anto]), au lieu de simples numéros techniques pour une compréhension plus simple de la config. Meilleure stabilité : Le système de vérification est plus robuste et ne risque plus de bloquer le démarrage, même si vous avez une liste de véhicules configurés extrêmement longue. Gestion des pieds : Modification afin de pouvoir intégrer plus facilement d’autres brancards. 📑 Changelog - MasterStretcher (Mise à jour du 02/01) - 3.1.4 Attention : changement du fichier config.lua nécessaire ! 🚑 Configuration & Identification des Véhicules Labels des Ambulances : Les véhicules sont désormais identifiés par leurs noms configurés (ex: “Master III 2012”) au lieu de simples identifiants techniques. Affichage des Auteurs : L’auteur du modèle (si renseigné dans la configuration) apparaît désormais entre crochets à côté du nom du véhicule (ex: [Anto]). AutoBrancardName (Liaison automatique) : Ce paramètre définit le modèle de brancard nativement associé à une ambulance. Le rapport automatique traduit désormais l’ID technique en label lisible, vous permettant de valider instantanément que la liaison entre votre ambulance et son brancard est opérationnelle. requiredDoors (Gestion des accès) : Ce paramètre liste les indices des portes (ex: 2, 3) qui doivent être impérativement ouvertes pour charger ou décharger un brancard. Le rapport technique répertorie ces portes pour chaque véhicule, garantissant un contrôle précis de vos réglages de réalisme. 📑 Changelog - MasterStretcher (Mise à jour du 02/01) - 3.1.5 Test : essais nacelle Rotation : possibilité de tourner le brancard pour l’attachement dans le véhicule 📑 Changelog - MasterStretcher (Mise à jour du 03/01) - 3.1.6 Correction d'un bug sur les portes des hélicoptères mal détectées 📑 Changelog - MasterStretcher (Mise à jour du 25/01) - 3.1.7 Correction d'un bug sur le fait que l'index métier (grade) n'était pas vérifié. Changement de sa logique générale. 📑 Changelog - MasterStretcher (Mise à jour du 25/01) - 3.1.8 Allègement de code Ajout de trois fichiers de langage pour un changement rapide 📑 Changelog - MasterStretcher (Mise à jour du 15/02) - 3.2.0 Attention : changement du fichier config.lua nécessaire ! Uniformisation du matériel : Lors de la sortie automatique de l'ambulance, le brancard apparaît avec un équipement propre et défini (via la configuration), supprimant l'apparition d'accessoires aléatoires. Nouvelle option de configuration : Ajout d'un paramètre permettant de régler finement la réactivité de la physique selon les besoins du serveur. Refonte de l'optimisation : La consommation du script (Resmon) a été drastiquement réduite. Il est désormais ultra-léger (autour de 0.03ms) tout en conservant une physique de pente et d'inclinaison en temps réel. 📑 Changelog - MasterStretcher (Mise à jour du 17/02) - 3.2.1 Ajout de la langue Espagnole. Correction d'un bug où le son de roulement ne pouvait pas être désactivé. 📑 Changelog - MasterStretcher (Mise à jour du 18/03) - 3.2.2 Nouvelle API Complète (Exports) : Intégration totale avec vos menus personnalisés (Context Menu, Radial, etc.) via une nouvelle liste d'exports (pousser, ranger, ouvrir les menus, lire les états). Support "No-Target" : Possibilité de définir Config.TargetSystem = "none" pour désactiver totalement les cibles (ox/qb) sans générer d'erreurs dans la console. Nouveaux Événements (Hooks) : Ajout d'événements clients et serveurs exploitables pour déclencher vos propres scripts (ex: allumer les gyrophares au déploiement du brancard). Mémorisation du Dossier : Correction d'un problème agaçant où le dossier du brancard se recouchait tout seul lorsqu'on le posait au sol. Accessoires au Spawn : Les brancards (qu'ils soient sortis manuellement ou via l'auto-arm de l'ambulance) apparaissent désormais bien avec les accessoires par défaut définis dans votre configuration. Lâcher Réaliste (Ragdoll) : Si un joueur trébuche, tombe d'un toit ou se fait renverser, il lâche désormais instantanément le brancard, évitant les bugs de collision destructeurs. Blindage des Actions Externes : Les actions déclenchées via l'API (menus custom) vérifient désormais rigoureusement les permissions des métiers et l'ouverture des portes des ambulances. Fini les vols de brancards par les civils ! Alerte de Désynchronisation : Ajout d'une notification visible pour le joueur s'il tente d'interagir avec un brancard qui ne répond pas au réseau (prévention des bugs de clics dans le vide). 📑 Changelog - MasterStretcher (Mise à jour du 01/04) - 3.2.3 Attention : changement du fichier config.lua nécessaire ! Système UI Caméléon : Les notifications et textes à l'écran s'adaptent désormais 100% automatiquement à votre serveur (ox, qb, esx, okok ou natif). Synchronisation & Stabilité : Résolution des animations "dans le vide" après un redémarrage, du spam lors du rangement, et des conflits réseaux sur la gestion des accessoires. 📑 Changelog - MasterStretcher (Mise à jour du 02/04) - 3.2.4 Attention : changement du fichier config.lua nécessaire ! Physique des sols réaliste : Le script détecte désormais la matière sous vos pieds (sable, boue, neige) et ralentit drastiquement la poussée. Désactivable dans la config. Outil Dev  /configBrancard : Un assistant visuel 3D directement en jeu pour aligner les brancards dans vos véhicules moddés et copier la configuration générée en un clic. 📑 Changelog - MasterStretcher (Mise à jour du 03/04) - 3.2.5 Bouclier Anti-Crash : Si une erreur ou un oubli se glisse dans le config.lua, le script ne crashera plus en jeu. Il ignore le véhicule défectueux en silence pour les joueurs, et affiche une alerte claire et précise uniquement dans la console du serveur.  Sélection des Portes : L'assistant /configBrancard s'enrichit d'un menu à cases à cocher (multi-select) pour paramétrer les portes requises. Il suffit de cocher "Coffre" ou "Passager" et l'outil génère le code parfait. Dépréciation des versions antérieures à 3.2.0 - Mise à jour vers 3.2.5 conseillée 📑 Changelog - MasterStretcher (Mise à jour du 13/05) - 3.2.6 Essais : tentative de correction de désynchronisations. 📑 Changelog - MasterStretcher (Mise à jour du 31/08) - 3.3.4 Attention : changement du fichier config.lua nécessaire ! Framework : Prise en charge de QBox Compatibilité ox_inventory ajoutée pour l'item brancard, en plus des inventaires natifs 📑 Changelog - MasterStretcher (Mise à jour du 31/08) - 3.3.5 - 3.3.10 Le brancard ne spawnait pas avec ox_inventory malgré aucune erreur visible — corrigé Les accessoires du brancard (dossier, garde-corps, options) restaient bloqués — corrigé. Sur certains serveurs, les accessoires ne pouvaient jamais être changés du tout, peu importe la situation — corrigé Correction d'un cas où la position de spawn du brancard pouvait être rejetée à tort par le serveur. Renforcement général de la fiabilité réseau : plusieurs actions (spawn, rangement, freins, patient sur brancard) passent désormais systématiquement par une validation serveur Extras configurables au spawn : possibilité de définir quels accessoires (dossier, garde-corps, équipements) apparaissent par défaut quand un brancard est créé, via la configuration Nombreux messages de diagnostic ajoutés en mode debug pour un support plus rapide en cas de souci. 📋 Changelog - MasterStretcher (Mise à jour du 07/09) 3.3.12 Brancard mal positionné après rangement : dans de rares cas, un brancard rangé dans un véhicule pouvait apparaître visuellement décalé/flottant, alors que le rangement semblait pourtant réussi. Une vérification supplémentaire est désormais faite après chaque rangement, avec une nouvelle tentative automatique si un problème est détecté. Renforcement de la fiabilité réseau lors du rangement, pour éviter les cas où l'opération semble aboutir sans l'être réellement. Corrections mineures de robustesse interne. 📋 Changelog - MasterStretcher (Mise à jour du 11/09) 3.3.13 - 3.4.0 Décalages de véhicules incohérents selon le modèle de brancard : les offsets de rangement (position dans l'ambulance) étaient calibrés pour un seul modèle de référence et ne convenaient pas forcément aux autres. Chaque véhicule accepte désormais un réglage dédié par modèle de brancard, appliqué aussi bien au rangement manuel qu'à l'auto-armement. permission_denied remonté en boucle dans le dashboard (action=patient) : les options du menu patient (s'installer, changer la position, placer/retirer un PNJ) n'étaient pas filtrées selon la permission du joueur avant affichage — le bouton apparaissait puis se faisait rejeter côté serveur. distance_too_far remonté dans le dashboard (action=stow, jusqu'à 49m constatés) : les options de rangement restaient sélectionnables bien au-delà de la portée autorisée. Un contrôle de distance côté client fait maintenant disparaître le bouton dès que le joueur s'éloigne. Brancard bloqué "occupé" après déconnexion du patient : si un joueur se déconnectait en étant allongé sur un brancard, celui-ci restait marqué occupé indéfiniment, empêchant quiconque de s'y installer ou de le libérer. Nettoyage automatique ajouté à la déconnexion. Commande /configStretcher : calibration complète d'un modèle de brancard en jeu (position portée, position haute et basse au sol), avec animation de poussée réelle jouée pendant le réglage. Génère directement le bloc de configuration à coller. Invitation à s'allonger avec consentement : un secouriste peut désormais viser un autre joueur et lui proposer de s'allonger sur un brancard à proximité. Le joueur ciblé dispose de 10 secondes pour accepter ou refuser — plus aucun placement forcé d'un vrai joueur sur un brancard. Permissions du menu patient revues : s'installer soi-même, changer sa propre position et se relever sont désormais libres pour tout le monde. Agir sur un autre joueur ou un PNJ reste réservé aux secouristes. Réorganisation de config.lua pour plus de clarté (sections Audio et Objets & Inventaire séparées, réglages mal classés remis à leur place). Ajout de la configuration pour le stryker en vente ici Nouvelle version du Ferno F2 incluse : changement de quelques textures (Textures du matelas, Textures du M.I.D. et de la couverture de survie retravaillées pour un meilleur rendu en jeu).