ai-death pour les développeurs
Réanimer, soigner et lire l’état à terre à travers la couche médicale d’AI Core, les exports serveur d’ai-death, le state bag dead et l’event de réanimation QB.
Pour réanimer, soigner ou vérifier un joueur à terre depuis votre script, utilisez le medical de la lib (TypeScript) ou les exports RevivePlayer / HealPlayer / IsPlayerDead d’ai-core (Lua). Ils passent par la couche médicale d’AI Core et fonctionnent avec le script de mort qui tourne, quel qu’il soit (ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance...). Les exports d’ai-death plus bas sont ce qu’appelle cette couche tant qu’ai-death tourne.
Fonctions de la lib (recommandé)
medical.revive
Relève un joueur à terre là où il se trouve.
Côté : serveur · Attend : non
medical.revive(source: number): booleanlocal ok = exports['ai-core']:RevivePlayer(source)Il n’y a pas de aiLib.medical en Lua : appelez l’export d’ai-core comme ci-dessus.
Paramètres
Prop
Type
Retour
true quand le joueur était à terre et est maintenant debout. false quand il n’était pas à terre ou qu’aucun script de mort ne tourne.
Exemple
import { addCommand, medical, notify } from "@aicore-fivem/lib/server";
// /revive <id> pour les administrateurs d’ai-core.
addCommand(
"revive",
{ help: "Revive a player", restricted: true, params: [{ name: "id", type: "playerId" }] as const },
(source, { id }) => {
if (!medical.revive(id) && source > 0) notify(source, "That player is not down", "error");
},
);medical.heal
Santé au maximum pour un joueur qui n’est pas à terre.
Côté : serveur · Attend : non
medical.heal(source: number): booleanlocal ok = exports['ai-core']:HealPlayer(source)Retour
true quand un script de mort a pris l’appel. false quand aucun script de mort ne tourne.
Avec ai-death, soigner un joueur à terre relève le ped mais garde l’état à terre. Vérifiez medical.isDead(source) et appelez d’abord medical.revive.
medical.isDead
Indique si un joueur est à terre.
Côté : serveur · Attend : non
medical.isDead(source: number): booleanlocal down = exports['ai-core']:IsPlayerDead(source)Retour
true tant que le joueur est à terre. false quand il est debout ou qu’aucun script de mort ne tourne.
medical.provider
Le script de mort qu’utilise la couche médicale.
Côté : serveur · Attend : non
medical.provider(): string | nulllocal name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... ou nilRetour
Le nom de la ressource, ou null / nil quand aucun script de mort pris en charge ne tourne.
medical.isDead (client)
L’état à terre du joueur local, côté client, quel que soit le script de mort qui tourne. Les scripts de mort gardent en vie un ped à terre pour l’animer, donc IsEntityDead seul ne suffit pas.
Côté : client · Attend : non
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): voidlocal down = exports['ai-core']:IsDead()Exemple
import { medical, notify } from "@aicore-fivem/lib/client";
RegisterCommand("emote", () => {
if (medical.isDead()) return notify("Not while down", "error");
// ... jouer l’emote
}, false);
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" }); // fermer votre écran quand le joueur tombe à terre
});Exports serveur
La couche médicale les appelle tant qu’ai-death tourne. Typés AiDeathServerExports dans @aicore-fivem/shared, donc resourceExport("ai-death") les connaît. Revive et IsDead répondent aussi en tant que exports.qbx_medical:Revive / IsDead. Chaque export répond aussi sous son jumeau en minuscules (revive).
Revive
Revive(source: number): booleanlocal ok = exports['ai-death']:Revive(source)Relève un joueur à terre là où il se trouve. true quand il était à terre, false sinon.
IsDead
IsDead(source: number): booleanlocal down = exports['ai-death']:IsDead(source)true tant que le joueur est à terre.
Heal
Heal(source: number): voidexports['ai-death']:Heal(source)Santé au maximum pour un joueur qui n’est pas à terre. Ne renvoie rien. Sur un joueur à terre, relève le ped mais l’état à terre reste : appelez d’abord Revive.
State bag dead
true sur le state bag du joueur tant qu’ai-death le garde à terre ; le serveur l’écrit. La clé est PLAYER_BAGS.dead dans @aicore-fivem/shared.
local down = Player(source).state.dead == true -- serveur
local down = LocalPlayer.state.dead == true -- client, le joueur localimport { PlayerState, stateBoolean } from "@aicore-fivem/lib/server";
import { PLAYER_BAGS } from "@aicore-fivem/shared";
const dead = new PlayerState(PLAYER_BAGS.dead, stateBoolean);
const down = dead.get(source) === true;Ne le lisez que si vous savez qu’ai-death tourne ; medical.isDead fonctionne avec chaque script de mort.
Métadonnée de personnage isdead
true tant que le joueur est à terre, stockée sur le personnage (la clé de QBCore), donc un joueur qui se reconnecte à terre revient à terre. Ne l’écrivez pas : ai-death la règle quand le joueur tombe à terre et l’efface quand il se relève.
Event client hospital:client:Revive
L’event de réanimation de QBCore. Quand le serveur l’envoie à un joueur, ai-death le réanime là où il se trouve (les scripts QB et les menus d’administration l’utilisent).
Côté : serveur -> client · Arguments : aucun
emitNet("hospital:client:Revive", target);Cet event n’efface pas l’état à terre côté serveur comme le fait medical.revive. Utilisez medical.revive(source) dans le nouveau code.
Events et callbacks privés
Le contrat propre du script (resource/common/death.ts). Ils peuvent changer d’une version à l’autre : ne les déclenchez pas et ne les écoutez pas depuis d’autres ressources.
| Nom | Direction | Ce qu’il transporte |
|---|---|---|
ai-death:client:down | serveur -> joueur | (seconds, medics, callSeconds) : le joueur est à terre ; la réapparition s’ouvre après seconds, medics sont disponibles maintenant, un médecin peut être rappelé après callSeconds. |
ai-death:client:revive | serveur -> joueur | (point | null) : de nouveau debout à un hôpital, ou là où il se trouve. |
ai-death:respawn | callback client | () : réapparaître à l’hôpital le plus proche après le minuteur (paie les frais). |
ai-death:treat | callback client | (hospitalId) : soins payants à un point d’accueil. |
ai-death:distress | callback client | () : appeler un médecin ; répond { ok, seconds }. |
ai-death
Joueurs à terre, réapparition à l’hôpital le plus proche, réanimation par les médecins avec un medikit, appels aux médecins et soins à l’accueil.
ai-banking
Banques et distributeurs avec dépôts, retraits, virements, l’historique des transactions et les comptes de société pour les patrons de métier.