AI Core
Jobs und Diensteai-death

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

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

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

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

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

Rü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

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

Signatur
Revive(source: number): boolean
Lua
local 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

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

true, solange der Spieler am Boden ist.

Heal

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

Lua
local down = Player(source).state.dead == true   -- Server
local down = LocalPlayer.state.dead == true      -- Client, der lokale Spieler
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;

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.

NameRichtungWas es überträgt
ai-death:client:downServer -> 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:reviveServer -> Spieler(point | null): wieder auf den Beinen in einem Krankenhaus oder dort, wo er liegt.
ai-death:respawnClient-Callback(): nach dem Timer im nächsten Krankenhaus respawnen (zahlt die Gebühr).
ai-death:treatClient-Callback(hospitalId): bezahlte Behandlung an einem Check-in-Punkt.
ai-death:distressClient-Callback(): einen Arzt rufen; antwortet mit { ok, seconds }.

Auf dieser Seite