ai-death für Entwickler
Wiederbeleben, Heilen und der Zustand am Boden über den Medizin-Layer von AI Core, die Server-Exports von ai-death, der State Bag dead und das QB-Wiederbelebungs-Event.
Um aus deinem Skript einen Spieler am Boden wiederzubeleben, zu heilen oder zu prüfen, nutze medical der Lib (TypeScript) oder die Exports RevivePlayer / HealPlayer / IsPlayerDead von ai-core (Lua). Sie laufen über den Medizin-Layer von AI Core und funktionieren mit jedem laufenden Todesskript (ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance...). Die Exports von ai-death weiter unten sind das, was dieser Layer aufruft, solange ai-death läuft.
Lib-Funktionen (empfohlen)
medical.revive
Bringt einen Spieler am Boden dort wieder auf die Beine, wo er liegt.
Seite: Server · Wartet: nein
medical.revive(source: number): booleanlocal ok = exports['ai-core']:RevivePlayer(source)Es gibt kein aiLib.medical in Lua: Rufe den Export von ai-core wie oben auf.
Parameter
Prop
Type
Rückgabewert
true, wenn der Spieler am Boden war und jetzt steht. false, wenn er nicht am Boden war oder kein Todesskript läuft.
Beispiel
import { addCommand, medical, notify } from "@aicore-fivem/lib/server";
// /revive <id> für Admins von 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
Volle Gesundheit für einen Spieler, der nicht am Boden ist.
Seite: Server · Wartet: nein
medical.heal(source: number): booleanlocal ok = exports['ai-core']:HealPlayer(source)Rückgabewert
true, wenn ein Todesskript den Aufruf angenommen hat. false, wenn kein Todesskript läuft.
Mit ai-death bringt das Heilen eines Spielers am Boden den Ped auf die Beine, behält aber den Zustand am Boden. Prüfe medical.isDead(source) und rufe zuerst medical.revive auf.
medical.isDead
Ob ein Spieler am Boden ist.
Seite: Server · Wartet: nein
medical.isDead(source: number): booleanlocal down = exports['ai-core']:IsPlayerDead(source)Rückgabewert
true, solange der Spieler am Boden ist. false, wenn er steht oder kein Todesskript läuft.
medical.provider
Das Todesskript, das der Medizin-Layer nutzt.
Seite: Server · Wartet: nein
medical.provider(): string | nulllocal name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... oder nilRückgabewert
Der Ressourcenname oder null / nil, wenn kein unterstütztes Todesskript läuft.
medical.isDead (Client)
Der Zustand am Boden des lokalen Spielers, auf dem Client, egal welches Todesskript läuft. Todesskripte halten einen Ped am Boden am Leben, um ihn zu animieren, daher reicht IsEntityDead allein nicht.
Seite: Client · Wartet: nein
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): voidlocal down = exports['ai-core']:IsDead()Beispiel
import { medical, notify } from "@aicore-fivem/lib/client";
RegisterCommand("emote", () => {
if (medical.isDead()) return notify("Not while down", "error");
// ... das Emote abspielen
}, false);
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" }); // deinen Bildschirm schließen, wenn der Spieler zu Boden geht
});Server-Exports
Der Medizin-Layer ruft diese auf, solange ai-death läuft. Typisiert als AiDeathServerExports in @aicore-fivem/shared, sodass resourceExport("ai-death") sie kennt. Revive und IsDead antworten auch als exports.qbx_medical:Revive / IsDead. Jeder Export antwortet auch unter seinem kleingeschriebenen Gegenstück (revive).
Revive
Revive(source: number): booleanlocal ok = exports['ai-death']:Revive(source)Bringt einen Spieler am Boden dort wieder auf die Beine, wo er liegt. true, wenn er am Boden war, sonst false.
IsDead
IsDead(source: number): booleanlocal down = exports['ai-death']:IsDead(source)true, solange der Spieler am Boden ist.
Heal
Heal(source: number): voidexports['ai-death']:Heal(source)Volle Gesundheit für einen Spieler, der nicht am Boden ist. Gibt nichts zurück. Bei einem Spieler am Boden bringt es den Ped auf die Beine, aber der Zustand am Boden bleibt: Rufe zuerst Revive auf.
State Bag dead
true im State Bag des Spielers, solange ai-death ihn am Boden hält; der Server schreibt ihn. Der Schlüssel ist PLAYER_BAGS.dead in @aicore-fivem/shared.
local down = Player(source).state.dead == true -- Server
local down = LocalPlayer.state.dead == true -- Client, der lokale Spielerimport { 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;Lies ihn nur, wenn du weißt, dass ai-death läuft; medical.isDead funktioniert mit jedem Todesskript.
Charakter-Metadaten isdead
true, solange am Boden, am Charakter gespeichert (der Schlüssel von QBCore), sodass ein Spieler, der sich am Boden neu verbindet, am Boden zurückkommt. Schreibe ihn nicht: ai-death setzt ihn, wenn der Spieler zu Boden geht, und löscht ihn, wenn er aufsteht.
Client-Event hospital:client:Revive
Das Wiederbelebungs-Event von QBCore. Wenn der Server es an einen Spieler sendet, belebt ai-death ihn dort wieder, wo er steht (QB-Skripte und Admin-Menüs nutzen es).
Seite: Server -> Client · Argumente: keine
emitNet("hospital:client:Revive", target);Dieses Event löscht den Zustand am Boden auf dem Server nicht so, wie medical.revive es tut. Nutze in neuem Code medical.revive(source).
Private Events und Callbacks
Der eigene Vertrag des Skripts (resource/common/death.ts). Sie können sich zwischen Versionen ändern: Löse sie nicht aus anderen Ressourcen aus und höre nicht darauf.
| Name | Richtung | Was es überträgt |
|---|---|---|
ai-death:client:down | Server -> Spieler | (seconds, medics, callSeconds): Der Spieler ist am Boden; der Respawn öffnet sich nach seconds, medics sind jetzt frei, ein Arzt kann nach callSeconds erneut gerufen werden. |
ai-death:client:revive | Server -> Spieler | (point | null): wieder auf den Beinen in einem Krankenhaus oder dort, wo er liegt. |
ai-death:respawn | Client-Callback | (): nach dem Timer im nächsten Krankenhaus respawnen (zahlt die Gebühr). |
ai-death:treat | Client-Callback | (hospitalId): bezahlte Behandlung an einem Check-in-Punkt. |
ai-death:distress | Client-Callback | (): einen Arzt rufen; antwortet mit { ok, seconds }. |