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
| Fournisseur | Réanimation | Soins | É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_medical | Export serveur Revive | Export serveur Heal | Métadonnées Qbox |
Wasabi V2 wasabi_ambulance_v2 | Export serveur RevivePlayer | Export serveur ApplyHeal | État numérique wasabi:deathState : 0 vivant, 1 dernier souffle, 2 mort |
Wasabi V1 wasabi_ambulance | Export serveur RevivePlayer | Export client clearPlayerInjury(true) | State bag dead : dead / laststand / false ou nil vivant |
Quasar qs-medical-creator | Événement client ambulance:revivePlayer | ambulance:healPlayer, uniquement pour un joueur vivant | État dead : dead / lastStand |
QB qb-ambulancejob | Événement client hospital:client:Revive | hospital:client:HealInjuries('full') et hospital:client:adminHeal | Métadonnées, ou adaptation |
Brutal brutal_ambulancejob | Événement local documenté brutal_ambulancejob:revive | À adapter | Métadonnées, ou adaptation |
Sky sky_ambulancejob | Export serveur revive, contexte command | Événement serveur sky_ambulancejob:healPlayer(source) | Export serveur getDeathState(source), champ booléen dead |
AK47 ak47_ambulancejob | À adapter | À adapter | Mé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
- ESX Legacy Addons — réanimation client, soins client et état serveur. La ressource médicale publie
isDeadet conserveusers.is_dead. Le bridge ne modifie pas cette colonne lors du dispatch : le cycle ESX de réapparition reste responsable de la persistance. - Wasabi V1 — états serveur. Attention à
laststanden minuscules, distinct delastStandchez Quasar. - Sky — instantané de mort. Son champ
deadenglobe la phasedowned: aucune phase de dernier souffle QB n'est inventée. - Wasabi V2 — exports et états de mort.
- Wasabi V1 — exports.
- Quasar Medical Creator — commandes et exports.
- QB Ambulance — code client officiel.
- Brutal Ambulance — exports et événements.
- Sky Ambulance — exports serveur.
- Sky Ambulance — événement serveur de soins.
- AK47 — dépôt officiel et frameworks annoncés.
- Qbox : exports
ReviveetHealde la ressource externeqbx_medical, utilisés parserver/medical_bridge.lua.
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.
