AI Core
Dokumentacja APIAI Core: eksporty serwerowe

Leczenie

Reanimuj i lecz graczy oraz sprawdzaj, czy gracz jest powalony, przez skrypt śmierci, którego używa serwer.

Śmierci i reanimacje przechodzą przez ai-core, nigdy przez własne eksporty lub state bagi skryptu śmierci (łącznie z ai-death). ai-core przekazuje każde wywołanie do pierwszego działającego skryptu śmierci: ai-death, qbx_medical, ars_ambulancejob, qb-ambulancejob, esx_ambulancejob i innych z listy zgodności. Gdy żaden nie działa, nikt nie liczy się jako powalony i nikogo nie da się reanimować.

"Powalony" znaczy martwy lub w last stand, tak jak widzi to skrypt śmierci. Skrypty śmierci utrzymują powalonego peda przy życiu, więc nigdy nie używaj IsEntityDead z gry, aby sprawdzić, czy gracz jest powalony.

Aby zareagować, gdy gracz umiera, nasłuchuj serwerowego zdarzenia ai-core ai-core:playerDied (src, killer, weaponHash) zamiast sprawdzać zdrowie. Zobacz Zdarzenia i stan.

GetMedicalSystem

Nazwa zasobu skryptu śmierci, do którego ai-core przekazuje wywołania.

Strona: Serwer · Czeka: nie · Lib: medical.provider()

Sygnatura
GetMedicalSystem(): string | null
Lua
local system = exports['ai-core']:GetMedicalSystem() -- string lub nil

Parametry

Brak.

Zwraca

string | null: nazwa zasobu skryptu śmierci. null, gdy żaden nie działa.

Przykład

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

addCommand("deathsystem", { help: "Shows the death script in use", restricted: true }, () => {
  console.log(core.GetMedicalSystem() ?? "none: revive and heal do nothing");
});

RevivePlayer

Stawia powalonego gracza na nogi tam, gdzie leży.

Strona: Serwer · Czeka: nie · Lib: medical.revive

Sygnatura
RevivePlayer(source: number): boolean
Lua
local revived = exports['ai-core']:RevivePlayer(source)

Parametry

Prop

Type

Zwraca

boolean: true, gdy gracz był powalony i skrypt śmierci go reanimował. false, gdy gracz nie był powalony, nie jest online, nie działa żaden skrypt śmierci albo zawiódł.

Przykład

import { onClientCallback, coordsOf, isNear, progressFor, resourceExport } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";
import { Locale } from "common";

const core = resourceExport("ai-core");

// Medyk reanimuje apteczką powalonego gracza obok siebie.
onClientCallback("myscript:revive", { args: oneArg(readId), lock: true }, async (source, target) => {
  if (core.GetDutyJob(source) !== "ambulance") return fail("NOT_EMS");
  if (target === source || !isNear(target, coordsOf(source), 2)) return fail("TOO_FAR");
  if (!core.IsPlayerDead(target)) return fail("NOT_DOWN");
  if (!(await progressFor(source, { label: Locale("REVIVING"), duration: 10000 }))) return fail("CANCELLED");
  if (!core.RemoveItem(source, "medkit")) return fail("NO_MEDKIT");
  core.RevivePlayer(target);
  core.RefillNeeds(target);
  return { ok: true };
});

HealPlayer

Daje pełne zdrowie graczowi, który nie jest powalony.

Strona: Serwer · Czeka: nie · Lib: medical.heal

Sygnatura
HealPlayer(source: number): boolean
Lua
local ok = exports['ai-core']:HealPlayer(source)

Parametry

Prop

Type

Zwraca

boolean: true, gdy leczenie zostało przekazane skryptowi śmierci. false, gdy gracz nie jest online, nie działa żaden skrypt śmierci albo zawiódł. Powalony gracz potrzebuje RevivePlayer; co skrypt śmierci robi z leczeniem powalonego gracza, zależy od niego.

Przykład

import { onClientCallback, resourceExport, near } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");
const CHECK_IN = { x: 308.4, y: -595.3, z: 43.3 };

// Rejestracja w szpitalu: zapłać i daj się opatrzyć.
onClientCallback("myscript:checkIn", { guards: [near(CHECK_IN, 2)], lock: true }, (source) => {
  if (core.IsPlayerDead(source)) return fail("IS_DOWN");
  if (!core.RemoveMoney(source, "bank", 250, "hospital")) return fail("NOT_ENOUGH_MONEY");
  core.HealPlayer(source);
  return { ok: true };
});

IsPlayerDead

Czy gracz jest powalony (martwy lub w last stand) w działającym skrypcie śmierci.

Strona: Serwer · Czeka: nie · Lib: medical.isDead (serwer); na kliencie medical.isDead() z liba czyta stan lokalnego gracza bez wywołania

Sygnatura
IsPlayerDead(source: number): boolean
Lua
local down = exports['ai-core']:IsPlayerDead(source)

Parametry

Prop

Type

Zwraca

boolean: true, gdy gracz jest powalony. false, gdy stoi na nogach, nie jest online albo nie działa żaden skrypt śmierci.

Przykład

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// Powalony gracz nie może otworzyć menu sklepu z telefonami.
onClientCallback("myscript:openShop", (source) =>
  core.IsPlayerDead(source) ? fail("IS_DOWN") : { ok: true },
);

Na tej stronie