AI Core
Métiers et servicesai-death

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

Signature
medical.revive(source: number): boolean
Lua
local 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

Signature
medical.heal(source: number): boolean
Lua
local 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

Signature
medical.isDead(source: number): boolean
Lua
local 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

Signature
medical.provider(): string | null
Lua
local name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... ou nil

Retour

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

Signature
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): void
Lua
local 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

Signature
Revive(source: number): boolean
Lua
local ok = exports['ai-death']:Revive(source)

Relève un joueur à terre là où il se trouve. true quand il était à terre, false sinon.

IsDead

Signature
IsDead(source: number): boolean
Lua
local down = exports['ai-death']:IsDead(source)

true tant que le joueur est à terre.

Heal

Signature
Heal(source: number): void
Lua
exports['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.

Lua
local down = Player(source).state.dead == true   -- serveur
local down = LocalPlayer.state.dead == true      -- client, le joueur local
TypeScript
import { 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.

NomDirectionCe qu’il transporte
ai-death:client:downserveur -> 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:reviveserveur -> joueur(point | null) : de nouveau debout à un hôpital, ou là où il se trouve.
ai-death:respawncallback client() : réapparaître à l’hôpital le plus proche après le minuteur (paie les frais).
ai-death:treatcallback client(hospitalId) : soins payants à un point d’accueil.
ai-death:distresscallback client() : appeler un médecin ; répond { ok, seconds }.

Sur cette page