AI Core
Référence de l’APILib : serveur

Métiers et services

Alertes police, prison, dossiers MDT, médecins, réanimation et soins, stress, faim et soif, définitions des métiers et des gangs, heures de pointe.

TypeScript
import { dispatch, prison, mdt, ems, medical, stress, needs, definitions, isPrimeTime } from "@aicore-fivem/lib/server";

Chaque objet ici passe par l’une des couches d’ai-core : le script que le serveur utilise pour ce rôle (un système d’alertes, une prison, un MDT, un script de mort, un HUD) répond. Votre script continue de fonctionner quand le propriétaire du serveur le remplace. Tant qu’aucun script de ce type ne tourne, les appels échouent en silence (false, 0, null).

dispatch

dispatch.alert

Envoie une alerte police (ou d’un autre métier). Le système d’alertes l’affiche aux membres en service de jobs, par défaut les métiers de police.

Côté : serveur · Attend : non

Signature
dispatch.alert(alert: DispatchAlert): boolean
Lua
local ok = aiLib.dispatch.alert(alert)

DispatchAlert

Prop

Type

Le type est DispatchAlert.

Retour

boolean : true quand elle est envoyée. false quand aucun système d’alertes ne tourne ou que l’alerte est invalide.

Exemple

import { dispatch, coordsOf, createLocale } from "@aicore-fivem/lib/server";

const Locale = createLocale();

function storeRobbed(source: number, store: string) {
  dispatch.alert({
    code: "10-90",
    title: Locale("ALERT_STORE_ROBBERY"),
    message: store,
    coords: coordsOf(source),
    source,
    icon: "store",
    priority: "high",
  });
}

prison

Les peines de prison via ai-core, quel que soit le script de prison qui tourne.

prison.jail

Envoie un joueur chargé en prison.

Côté : serveur · Attend : non

Signature
prison.jail(source: number, minutes: number, by?: number): boolean
Lua
local ok = aiLib.prison.jail(source, minutes, by)

Prop

Type

Retour true quand il est emprisonné, false tant qu’aucune prison ne tourne.

if (!prison.jail(target, 15, officer)) return fail("NO_PRISON");

prison.release

Libère un joueur emprisonné.

Côté : serveur · Attend : non

Signature
prison.release(source: number): boolean
Lua
local ok = aiLib.prison.release(source)

Retour true quand il est libéré, false quand il n’est pas emprisonné ou qu’aucune prison ne tourne.

prison.release(target);

prison.timeLeft

Côté : serveur · Attend : non

Signature
prison.timeLeft(source: number): number
Lua
local minutes = aiLib.prison.timeLeft(source)

Retour les minutes de peine restantes, 0 quand il est libre.

if (prison.timeLeft(source) > 0) return fail("IN_PRISON");

mdt

Les dossiers du MDT de police (amendes, mandats, arrestations, prison) via la couche MDT d’ai-core. Rien n’est écrit tant qu’aucun MDT ne tourne.

mdt.record

Écrit un dossier dans le MDT de police.

Côté : serveur · Attend : non

Signature
mdt.record(record: MdtRecord): boolean
Lua
local ok = aiLib.mdt.record(record)

MdtRecord

Prop

Type

Le type est MdtRecord.

Retour true quand il est écrit, false quand aucun MDT ne tourne ou qu’il n’accepte pas ce type de dossier.

if (prison.jail(target, 20, officer)) mdt.record({ kind: "jail", target, by: officer, title: "Armed robbery", minutes: 20 });

mdt.provider

Côté : serveur · Attend : non

Signature
mdt.provider(): string | null
Lua
local name = aiLib.mdt.provider()

Retour le MDT vers lequel vont les dossiers, ou null.

if (!mdt.provider()) console.log("no MDT: records are skipped");

ems

Les médecins via la couche EMS d’ai-core : le décompte et les appels de détresse propres à un script EMS, sinon les décomptes de service et les alertes d’ai-core.

ems.available

Combien de médecins sont libres pour prendre un appel.

Côté : serveur · Attend : non

Signature
ems.available(jobs: string[]): number
Lua
local count = aiLib.ems.available(jobs)

Prop

Type

Retour le nombre de médecins en service dans jobs, sans compter ceux qui sont occupés quand un script de dispatch les connaît.

// Laisser les joueurs réapparaître à l’hôpital seulement quand aucun médecin ne peut venir.
const canRespawn = ems.available(["ambulance"]) === 0;

ems.distress

Envoie un appel de détresse pour un joueur aux médecins de call.jobs.

Côté : serveur · Attend : non

Signature
ems.distress(source: number, call: DistressCall): boolean
Lua
local ok = aiLib.ems.distress(source, call)

Prop

Type

Le type est DistressCall.

Retour true quand quelque chose a pris l’appel, false sinon.

if (!ems.distress(source, { jobs: ["ambulance"], message: "Unconscious" })) return fail("NO_MEDICS");

ems.provider

Côté : serveur · Attend : non

Signature
ems.provider(): string | null
Lua
local name = aiLib.ems.provider()

Retour la source EMS utilisée par la couche, "ai-core" pour ses propres décomptes de service.

console.log(`medics through ${ems.provider()}`);

medical

La réanimation, les soins et l’état à terre via la couche médicale d’ai-core, quel que soit le script de mort ou d’ambulance qui tourne. Pas d’équivalent Lua : appelez les exports d’ai-core RevivePlayer, HealPlayer, IsPlayerDead.

medical.revive

Relève un joueur à terre là où il se trouve.

Côté : serveur · Attend : non

Signature
medical.revive(source: number): boolean

Retour true quand il est réanimé, false quand il n’est pas à terre ou qu’aucun script de mort ne tourne.

if (!medical.revive(target)) return fail("NOT_DOWN");

medical.heal

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

Côté : serveur · Attend : non

Signature
medical.heal(source: number): boolean

Retour true quand il est soigné, false quand aucun script de mort ne tourne.

medical.heal(source);

medical.isDead

Indique si le joueur est à terre.

Côté : serveur · Attend : non

Signature
medical.isDead(source: number): boolean

Retour true quand il est à terre ; false sans script de mort. Utilisez-la au lieu de lire la santé du ped.

if (medical.isDead(source)) return fail("YOU_ARE_DOWN");

medical.provider

Côté : serveur · Attend : non

Signature
medical.provider(): string | null

Retour le script de mort qui répond (ai-death...), ou null quand aucun ne tourne.

console.log(`deaths through ${medical.provider() ?? "nothing"}`);

stress

Le stress des joueurs (de 0 à 100) via la couche stress d’ai-core, quel que soit le HUD qui le gère.

stress.gain

Ajoute des points de stress.

Côté : serveur · Attend : non

Signature
stress.gain(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.gain(source, amount)

Prop

Type

Retour true quand ils sont ajoutés, false quand aucun HUD avec stress ne tourne.

stress.gain(source, 5); // après une fusillade

stress.relieve

Retire des points de stress.

Côté : serveur · Attend : non

Signature
stress.relieve(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.relieve(source, amount)

Retour true quand ils sont retirés, false quand aucun HUD avec stress ne tourne ou que amount vaut 0 ou moins.

inventory.registerUsableItem("cigarette", (source) => {
  stress.relieve(source, 10);
});

stress.provider

Côté : serveur · Attend : non

Signature
stress.provider(): string | null
Lua
local name = aiLib.stress.provider()

Retour le HUD qui gère le stress, ou null.

if (!stress.provider()) console.log("no HUD keeps stress");

needs

needs.refill

Remplit entièrement la faim et la soif (réanimation par un admin, hôpital), via le HUD qui les gère, ou sans HUD via les métadonnées du personnage dans ai-core.

Côté : serveur · Attend : non

Signature
needs.refill(source: number): boolean

Pas d’équivalent Lua : appelez l’export d’ai-core RefillNeeds(source).

Retour true quand elles sont remplies, false quand le joueur n’a pas de personnage.

if (medical.revive(target)) needs.refill(target);

Définitions des métiers et des gangs

definitions.job

La définition d’un métier telle que réglée dans le panneau d’ai-core. Chacune est lue une fois depuis ai-core et gardée jusqu’à ce que le panneau la modifie, donc une lecture est une simple recherche en mémoire.

Côté : serveur · Attend : non

Signature
definitions.job(name: string): JobDefinition | null

Pas d’équivalent Lua : appelez l’export d’ai-core GetJobDefinition(name).

Retour JobDefinition (label, type, defaultDuty, listed?, grades), ou null quand ce métier n’existe pas.

const label = definitions.job("police")?.label ?? "police";

definitions.gang

Côté : serveur · Attend : non

Signature
definitions.gang(name: string): GangDefinition | null

Pas d’équivalent Lua : appelez l’export d’ai-core GetGangDefinition(name).

Retour GangDefinition (label, grades), ou null.

const gang = definitions.gang("ballas");
if (!gang) return fail("UNKNOWN_GANG");

Heures de pointe

isPrimeTime

Indique si c’est l’heure de pointe pour un métier, d’après le réglage d’heures de pointe d’ai-core. Les heures viennent de tgiann-policealert tant qu’il tourne, sinon des heures réglées dans le panneau d’ai-core.

Côté : serveur · Attend : non

Signature
isPrimeTime(job?: string): boolean

Pas d’équivalent Lua : appelez l’export d’ai-core IsPrimeTime(job).

Prop

Type

Retour true pendant l’heure de pointe.

if (!isPrimeTime("police")) return fail("BANK_CLOSED_FOR_HEISTS");

Sur cette page