ai-death dla deweloperów
Reanimacja, leczenie i stan powalenia przez warstwę medyczną AI Core, eksporty serwera ai-death, state bag dead i zdarzenie reanimacji QB.
Aby reanimować, uleczyć lub sprawdzić powalonego gracza ze swojego skryptu, używaj medical z biblioteki (TypeScript) lub eksportów RevivePlayer / HealPlayer / IsPlayerDead z ai-core (Lua). Przechodzą przez warstwę medyczną AI Core i działają z każdym działającym skryptem śmierci (ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance...). Eksporty ai-death opisane niżej to to, co wywołuje ta warstwa, gdy działa ai-death.
Funkcje biblioteki (zalecane)
medical.revive
Stawia powalonego gracza na nogi tam, gdzie leży.
Strona: serwer · Czeka: nie
medical.revive(source: number): booleanlocal ok = exports['ai-core']:RevivePlayer(source)W Lua nie ma aiLib.medical: wywołaj eksport ai-core jak wyżej.
Parametry
Prop
Type
Zwraca
true, gdy gracz był powalony i teraz wstał. false, gdy nie był powalony albo nie działa żaden skrypt śmierci.
Przykład
import { addCommand, medical, notify } from "@aicore-fivem/lib/server";
// /revive <id> dla administratorów 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
Pełne zdrowie dla gracza, który nie jest powalony.
Strona: serwer · Czeka: nie
medical.heal(source: number): booleanlocal ok = exports['ai-core']:HealPlayer(source)Zwraca
true, gdy skrypt śmierci przyjął wywołanie. false, gdy nie działa żaden skrypt śmierci.
Z ai-death leczenie powalonego gracza stawia peda na nogi, ale zachowuje stan powalenia. Sprawdź medical.isDead(source) i najpierw wywołaj medical.revive.
medical.isDead
Czy gracz jest powalony.
Strona: serwer · Czeka: nie
medical.isDead(source: number): booleanlocal down = exports['ai-core']:IsPlayerDead(source)Zwraca
true, dopóki gracz jest powalony. false, gdy stoi albo nie działa żaden skrypt śmierci.
medical.provider
Skrypt śmierci, którego używa warstwa medyczna.
Strona: serwer · Czeka: nie
medical.provider(): string | nulllocal name = exports['ai-core']:GetMedicalSystem() -- 'ai-death', 'qbx_medical'... albo nilZwraca
Nazwa zasobu albo null / nil, gdy nie działa żaden obsługiwany skrypt śmierci.
medical.isDead (client)
Stan powalenia lokalnego gracza, po stronie klienta, bez względu na działający skrypt śmierci. Skrypty śmierci utrzymują powalonego peda przy życiu, aby go animować, więc samo IsEntityDead nie wystarcza.
Strona: klient · Czeka: nie
medical.isDead(): boolean
medical.onChange(fn: (dead: boolean) => void): voidlocal down = exports['ai-core']:IsDead()Przykład
import { medical, notify } from "@aicore-fivem/lib/client";
RegisterCommand("emote", () => {
if (medical.isDead()) return notify("Not while down", "error");
// ... odtwórz emotkę
}, false);
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" }); // zamknij swój ekran, gdy gracz zostanie powalony
});Eksporty serwera
Warstwa medyczna wywołuje je, gdy działa ai-death. Typowane jako AiDeathServerExports w @aicore-fivem/shared, więc resourceExport("ai-death") je zna. Revive i IsDead odpowiadają też jako exports.qbx_medical:Revive / IsDead. Każdy eksport odpowiada też pod swoim odpowiednikiem pisanym małą literą (revive).
Revive
Revive(source: number): booleanlocal ok = exports['ai-death']:Revive(source)Stawia powalonego gracza na nogi tam, gdzie leży. true, gdy był powalony, w przeciwnym razie false.
IsDead
IsDead(source: number): booleanlocal down = exports['ai-death']:IsDead(source)true, dopóki gracz jest powalony.
Heal
Heal(source: number): voidexports['ai-death']:Heal(source)Pełne zdrowie dla gracza, który nie jest powalony. Nic nie zwraca. Na powalonym graczu stawia peda na nogi, ale stan powalenia zostaje: najpierw wywołaj Revive.
State bag dead
true w state bagu gracza, dopóki ai-death trzyma go powalonego; zapisuje go serwer. Klucz to PLAYER_BAGS.dead w @aicore-fivem/shared.
local down = Player(source).state.dead == true -- serwer
local down = LocalPlayer.state.dead == true -- klient, lokalny graczimport { 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;Czytaj go tylko wtedy, gdy wiesz, że działa ai-death; medical.isDead działa z każdym skryptem śmierci.
Metadane postaci isdead
true podczas powalenia, zapisywane w postaci (klucz QBCore), więc gracz, który połączy się ponownie, będąc powalonym, wraca powalony. Nie zapisuj go: ai-death ustawia go, gdy gracz zostaje powalony, i czyści, gdy wstaje.
Zdarzenie klienta hospital:client:Revive
Zdarzenie reanimacji QBCore. Gdy serwer wyśle je do gracza, ai-death reanimuje go tam, gdzie stoi (używają go skrypty QB i menu administratora).
Strona: serwer -> klient · Argumenty: brak
emitNet("hospital:client:Revive", target);To zdarzenie nie czyści stanu powalenia na serwerze tak, jak robi to medical.revive. W nowym kodzie używaj medical.revive(source).
Prywatne zdarzenia i callbacki
Własny kontrakt skryptu (resource/common/death.ts). Mogą się zmieniać między wersjami: nie wywołuj ich ani nie nasłuchuj ich z innych zasobów.
| Nazwa | Kierunek | Co przenosi |
|---|---|---|
ai-death:client:down | serwer -> gracz | (seconds, medics, callSeconds): gracz jest powalony; odrodzenie otwiera się po seconds, medics są teraz wolni, lekarza można wezwać ponownie po callSeconds. |
ai-death:client:revive | serwer -> gracz | (point | null): znów na nogach w szpitalu albo tam, gdzie leży. |
ai-death:respawn | callback klienta | (): odrodzenie w najbliższym szpitalu po upływie licznika (płaci opłatę). |
ai-death:treat | callback klienta | (hospitalId): płatne leczenie w punkcie rejestracji. |
ai-death:distress | callback klienta | (): wezwij lekarza; odpowiada { ok, seconds }. |