AI Core
Référence de l’APIAI Core : exports serveur

Médical

Réanimer et soigner des joueurs et vérifier si un joueur est à terre, via le script de mort qu’utilise le serveur.

Les morts et réanimations passent par ai-core, jamais par les exports ou state bags propres à un script de mort (ai-death compris). ai-core transmet chaque appel au premier script de mort qui tourne : ai-death, qbx_medical, ars_ambulancejob, qb-ambulancejob, esx_ambulancejob et les autres de la liste de compatibilité. Sans script en cours, personne ne compte comme à terre et rien ne peut être réanimé.

« À terre » signifie mort ou en dernier souffle, tel que le voit le script de mort. Les scripts de mort gardent en vie un ped à terre ; n’utilisez donc jamais IsEntityDead du jeu pour savoir si un joueur est à terre.

Pour réagir quand un joueur meurt, écoutez l’événement serveur d’ai-core ai-core:playerDied (src, killer, weaponHash) au lieu de vérifier la santé. Voir Événements et état.

GetMedicalSystem

Le nom de ressource du script de mort auquel ai-core transmet.

Côté : Serveur · Attend : non · Lib : medical.provider()

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

Paramètres

Aucun.

Retour

string | null : le nom de ressource du script de mort. null quand aucun ne tourne.

Exemple

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

Relève un joueur à terre là où il est allongé.

Côté : Serveur · Attend : non · Lib : medical.revive

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

Paramètres

Prop

Type

Retour

boolean : true quand le joueur était à terre et que le script de mort l’a réanimé. false quand le joueur n’était pas à terre, n’est pas en ligne, qu’aucun script de mort ne tourne ou qu’il a échoué.

Exemple

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édecin réanime avec une trousse un joueur à terre à côté de lui.
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

Rend toute sa santé à un joueur qui n’est pas à terre.

Côté : Serveur · Attend : non · Lib : medical.heal

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

Paramètres

Prop

Type

Retour

boolean : true quand le soin a été transmis au script de mort. false quand le joueur n’est pas en ligne, qu’aucun script de mort ne tourne ou qu’il a échoué. Un joueur à terre a besoin de RevivePlayer ; ce que fait un script de mort d’un soin sur un joueur à terre ne dépend que de lui.

Exemple

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

// Admission à l’hôpital : payer et se faire soigner.
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

Indique si un joueur est à terre (mort ou en dernier souffle) dans le script de mort en cours.

Côté : Serveur · Attend : non · Lib : medical.isDead (serveur) ; sur le client, medical.isDead() de la lib lit l’état du joueur local sans appel

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

Paramètres

Prop

Type

Retour

boolean : true quand le joueur est à terre. false quand il est debout, pas en ligne, ou qu’aucun script de mort ne tourne.

Exemple

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

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

// Un joueur à terre ne peut pas ouvrir le menu du magasin de téléphones.
onClientCallback("myscript:openShop", (source) =>
  core.IsPlayerDead(source) ? fail("IS_DOWN") : { ok: true },
);

Sur cette page