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.
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
dispatch.alert(alert: DispatchAlert): booleanlocal 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
prison.jail(source: number, minutes: number, by?: number): booleanlocal 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
prison.release(source: number): booleanlocal 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
prison.timeLeft(source: number): numberlocal 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
mdt.record(record: MdtRecord): booleanlocal 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
mdt.provider(): string | nulllocal 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
ems.available(jobs: string[]): numberlocal 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
ems.distress(source: number, call: DistressCall): booleanlocal 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
ems.provider(): string | nulllocal 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
medical.revive(source: number): booleanRetour 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
medical.heal(source: number): booleanRetour 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
medical.isDead(source: number): booleanRetour 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
medical.provider(): string | nullRetour 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
stress.gain(source: number, amount: number): booleanlocal 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 fusilladestress.relieve
Retire des points de stress.
Côté : serveur · Attend : non
stress.relieve(source: number, amount: number): booleanlocal 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
stress.provider(): string | nulllocal 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
needs.refill(source: number): booleanPas 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
definitions.job(name: string): JobDefinition | nullPas 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
definitions.gang(name: string): GangDefinition | nullPas 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
isPrimeTime(job?: string): booleanPas 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");Argent et banque
money.transfer entre deux comptes, le script bancaire via ai-core, et les factures via le script de facturation qui tourne.
Monde
L’heure et la météo via le script météo qui tourne, les routing buckets de l’allocateur d’ai-core, le verrouillage des portes et les points d’apparition des personnages enregistrés.