Logo ACStudioACSTUDIOFIVEM DEVELOPMENT
cdt_admin / DOCUMENTATION

Bridge médical

Les actions existantes « réanimer » et « soigner », leurs permissions, leurs journaux et les écrans du menu restent en place. Le bridge choisit le système médical et traduit ses opérations et états. Les fichiers de configuration permettent d'adapter une version ou une ressource supplémentaire sans modifier le menu.

Sélection

Dans server.cfg, par exemple :

setr cdt_admin:medical "wasabi_v2"

Valeurs : auto, esx, qbx, qb, wasabi_v2, wasabi, qs, brutal, sky, ak47. auto exige exactement une ressource réelle démarrée parmi les fournisseurs configurés. Si plusieurs sont présentes, sélectionner explicitement le système actif. Une ressource arrêtée ou un export manquant produit un refus ; aucune réanimation de substitution n'est utilisée pour soigner.

config/medical.lua contient les noms des ressources et les clés d'état configurables. Le convar doit être répliqué avec setr, car les opérations locales vérifient également le fournisseur choisi. Redémarrer cdt_admin après modification des fichiers de configuration.

Opérations raccordées

FournisseurRéanimationSoinsÉtat
ESX Legacy esx_ambulancejobÉvénement client esx_ambulancejob:reviveÉvénement client esx_ambulancejob:heal avec big (santé maximale)State bag serveur isDead, sans dernier souffle
Qbox qbx_medicalExport serveur ReviveExport serveur HealMétadonnées Qbox
Wasabi V2 wasabi_ambulance_v2Export serveur RevivePlayerExport serveur ApplyHealÉtat numérique wasabi:deathState : 0 vivant, 1 dernier souffle, 2 mort
Wasabi V1 wasabi_ambulanceExport serveur RevivePlayerExport client clearPlayerInjury(true)State bag dead : dead / laststand / false ou nil vivant
Quasar qs-medical-creatorÉvénement client ambulance:revivePlayerambulance:healPlayer, uniquement pour un joueur vivantÉtat dead : dead / lastStand
QB qb-ambulancejobÉvénement client hospital:client:Revivehospital:client:HealInjuries('full') et hospital:client:adminHealMétadonnées, ou adaptation
Brutal brutal_ambulancejobÉvénement local documenté brutal_ambulancejob:reviveÀ adapterMétadonnées, ou adaptation
Sky sky_ambulancejobExport serveur revive, contexte commandÉvénement serveur sky_ambulancejob:healPlayer(source)Export serveur getDeathState(source), champ booléen dead
AK47 ak47_ambulancejobÀ adapterÀ adapterMétadonnées, ou adaptation

Ce tableau décrit le raccordement de CDT, pas une certification de fonctionnement de ces produits sur toutes les versions de Qbox. Leur propre configuration framework et leurs dépendances restent nécessaires. Si AK47 coexiste avec qbx_medical, le mode auto détecte plusieurs fournisseurs et ne choisit pas entre eux. Sélectionner explicitement le fournisseur dans ce cas. Vérifier également le nom effectif de la ressource Quasar et le renseigner dans config/medical.lua si nécessaire.

Le raccordement Wasabi V2 utilise ApplyHeal pour les soins. Cet appel reçoit santé 200, toutes les blessures, santé des membres 100 et réinitialisation des besoins. Cette dernière suit la sémantique Wasabi, incluant le stress. Ces effets peuvent être personnalisés dans l'adaptateur.

Les soins complets Quasar incluent une réanimation dans l'API documentée. Le bridge les refuse sur un joueur mort ou en dernier souffle pour conserver les deux actions distinctes. Une API permettant des soins complets sans réanimation doit être fournie par un adaptateur pour couvrir ce cas. Pour Brutal et AK47, aucune API de soins complète vérifiable n'est supposée. Les opérations manquantes échouent clairement jusqu'à leur configuration. Sky utilise son événement serveur officiel de santé complète et suppression des effets de blessures ; le retour signifie un dispatch, sans prétendre confirmer la fin du soin.

Adaptation

config/medical_server.lua permet de remplacer chaque opération séparément :

return { adapters = {
    mon_medical = {
        Revive = function(source)
            -- Appeler ici l'API réelle de votre version.
            return true -- demande acceptée ; false, message en cas de refus
        end,
        Heal = function(source)
            -- Soins sans réanimation implicite.
            return false, 'API de soins à renseigner'
        end,
        GetState = function(source, metadata)
            return { isDead = metadata.isdead == true,
                     inLaststand = metadata.inlaststand == true }
        end,
    }
} }

Pour ajouter ce fournisseur, définir providers.mon_medical = {resource = 'nom_reel'} dans config/medical.lua, puis sélectionner mon_medical. Les clés d'adaptateur peuvent être le fournisseur ou son nom de ressource. Les opérations omises gardent leur implémentation native si elle existe.

config/medical_client.lua propose les mêmes remplacements locaux Revive() et Heal(), retournant explicitement true lorsque la demande est acceptée. Le serveur appelle uniquement le joueur ciblé via un callback après les contrôles habituels du menu. Le client vérifie la ressource sélectionnée et limite les opérations à ces deux noms. Un accusé client n'est pas une preuve autoritaire de guérison.

L'état affiché des joueurs connectés utilise les informations documentées lorsqu'elles sont disponibles, sinon les métadonnées du framework. Pour un autre système qui ne synchronise pas ces métadonnées, renseigner GetState. Les profils hors ligne conservent leurs métadonnées sauvegardées.

Journaux et vérification

Les journaux des actions administratives conservent le contrat Qbox existant : ils consignent une demande transmise avec succès. Les exports sans retour et les événements ne permettent pas de certifier la fin asynchrone des soins.

InstallAudit(report) dans la configuration serveur permet de brancher des confirmations fiables du système médical et doit retourner une fonction de désinscription. Appeler report(source, action, details) depuis une confirmation serveur vérifiée. Aucun événement client arbitraire n'est ajouté pour fabriquer un historique autoritaire. Les journaux Qbox existants de changements de métadonnées sont conservés.

Tests locaux : lua tests/medical-bridge.lua et lua tests/medical-esx-api.lua, ainsi que les tests existants de gameplay, joueurs, cache, intégrations et waypoint. Les produits commerciaux absents n'ont pas été testés en jeu ; leurs API publiques servent de référence et les adaptations manquantes sont indiquées ci-dessus.

Références officielles

Les références et signatures ci-dessus décrivent les raccordements présents dans CDT ; elles ne certifient pas les dernières versions des produits tiers. Les fichiers tests/ cités appartiennent au dépôt de développement et ne sont pas inclus dans le ZIP.

← Tous les guides