AI Core
Referencia de la APIAI Core: exports de servidor

Médico

Reanima y cura a jugadores y comprueba si un jugador está caído, a través del script de muerte que tenga el servidor.

Las muertes y reanimaciones pasan por ai-core, nunca por los exports o state bags propios de un script de muerte (ai-death incluido). ai-core reenvía cada llamada al primer script de muerte en marcha: ai-death, qbx_medical, ars_ambulancejob, qb-ambulancejob, esx_ambulancejob y los demás de la lista de compatibilidad. Si no hay ninguno en marcha, nadie cuenta como caído y no se puede reanimar nada.

"Caído" significa muerto o en last stand, según lo vea el script de muerte. Los scripts de muerte mantienen vivo un ped caído, así que nunca uses el IsEntityDead del juego para preguntar si un jugador está caído.

Para reaccionar cuando un jugador muere, escucha el evento de servidor de ai-core ai-core:playerDied (src, killer, weaponHash) en lugar de comprobar la salud. Consulta Eventos y estado.

GetMedicalSystem

El nombre de recurso del script de muerte al que reenvía ai-core.

Lado: Servidor · Espera: no · Lib: medical.provider()

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

Parámetros

Ninguno.

Devuelve

string | null: el nombre de recurso del script de muerte. null cuando no hay ninguno en marcha.

Ejemplo

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

Levanta a un jugador caído allí donde está tumbado.

Lado: Servidor · Espera: no · Lib: medical.revive

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

Parámetros

Prop

Type

Devuelve

boolean: true cuando el jugador estaba caído y el script de muerte lo reanimó. false cuando el jugador no estaba caído, no está conectado, no hay ningún script de muerte en marcha o falló.

Ejemplo

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");

// Un médico reanima con un botiquín a un jugador caído que tiene al lado.
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

Da la salud completa a un jugador que no está caído.

Lado: Servidor · Espera: no · Lib: medical.heal

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

Parámetros

Prop

Type

Devuelve

boolean: true cuando la curación se entregó al script de muerte. false cuando el jugador no está conectado, no hay ningún script de muerte en marcha o falló. Un jugador caído necesita RevivePlayer; lo que haga un script de muerte con una curación sobre un jugador caído depende de él.

Ejemplo

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 };

// Ingreso en el hospital: paga y te curan.
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

Si un jugador está caído (muerto o en last stand) en el script de muerte en marcha.

Lado: Servidor · Espera: no · Lib: medical.isDead (servidor); en el cliente, el medical.isDead() de la lib lee el estado del jugador local sin hacer una llamada

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

Parámetros

Prop

Type

Devuelve

boolean: true cuando el jugador está caído. false cuando está de pie, no está conectado o no hay ningún script de muerte en marcha.

Ejemplo

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

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

// Un jugador caído no puede abrir el menú de la tienda de teléfonos.
onClientCallback("myscript:openShop", (source) =>
  core.IsPlayerDead(source) ? fail("IS_DOWN") : { ok: true },
);

En esta página