AI Core
API-ReferenzLib: Server

Jobs und Dienste

Polizeialarme, Gefängnis, MDT-Einträge, Sanitäter, Wiederbeleben und Heilen, Stress, Hunger und Durst, Job- und Gang-Definitionen, Prime Time.

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

Jedes Objekt hier läuft über eine der Ebenen von ai-core: Das Skript, das der Server für diese Aufgabe betreibt (ein Alarmsystem, ein Gefängnis, ein MDT, ein Death-Skript, ein HUD), antwortet. Dein Skript funktioniert weiter, wenn der Betreiber es austauscht. Solange kein solches Skript läuft, schlagen Aufrufe still fehl (false, 0, null).

dispatch

dispatch.alert

Sendet einen Alarm an die Polizei (oder einen anderen Job). Das Alarmsystem zeigt ihn den Mitgliedern von jobs im Dienst, standardmäßig den Polizei-Jobs.

Seite: Server · Wartet: nein

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

DispatchAlert

Prop

Type

Der Typ ist DispatchAlert.

Rückgabewert

boolean: true, wenn gesendet. false, wenn kein Alarmsystem läuft oder der Alarm ungültig ist.

Beispiel

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

Haftstrafen über ai-core, egal welches Gefängnis-Skript läuft.

prison.jail

Schickt einen geladenen Spieler ins Gefängnis.

Seite: Server · Wartet: nein

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

Prop

Type

Rückgabewert: true, wenn eingesperrt, false, solange kein Gefängnis läuft.

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

prison.release

Lässt einen eingesperrten Spieler frei.

Seite: Server · Wartet: nein

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

Rückgabewert: true, wenn freigelassen, false, wenn nicht eingesperrt oder kein Gefängnis läuft.

prison.release(target);

prison.timeLeft

Seite: Server · Wartet: nein

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

Rückgabewert: die verbleibenden Strafminuten, 0, wenn frei.

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

mdt

Polizei-MDT-Einträge (Bußgelder, Haftbefehle, Festnahmen, Haft) über die MDT-Ebene von ai-core. Solange kein MDT läuft, wird nichts geschrieben.

mdt.record

Schreibt einen Eintrag ins Polizei-MDT.

Seite: Server · Wartet: nein

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

MdtRecord

Prop

Type

Der Typ ist MdtRecord.

Rückgabewert: true, wenn geschrieben, false, wenn kein MDT läuft oder es keinen solchen Eintrag annimmt.

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

mdt.provider

Seite: Server · Wartet: nein

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

Rückgabewert: das MDT, an das Einträge gehen, oder null.

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

ems

Sanitäter über die EMS-Ebene von ai-core: die eigene Zählung und die Notrufe eines EMS-Skripts, sonst die Dienstzählungen und Alarme von ai-core.

ems.available

Wie viele Sanitäter frei sind, um einen Einsatz zu übernehmen.

Seite: Server · Wartet: nein

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

Prop

Type

Rückgabewert: die Anzahl der Sanitäter im Dienst in jobs, ohne beschäftigte, wenn ein Dispatch-Skript sie kennt.

// Spieler nur dann im Krankenhaus respawnen lassen, wenn kein Sanitäter kommen kann.
const canRespawn = ems.available(["ambulance"]) === 0;

ems.distress

Sendet einen Notruf für einen Spieler an die Sanitäter von call.jobs.

Seite: Server · Wartet: nein

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

Prop

Type

Der Typ ist DistressCall.

Rückgabewert: true, wenn etwas den Notruf angenommen hat, sonst false.

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

ems.provider

Seite: Server · Wartet: nein

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

Rückgabewert: die EMS-Quelle, die die Ebene nutzt, "ai-core" für die eigenen Dienstzählungen.

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

medical

Wiederbeleben, Heilen und der Bewusstlos-Zustand über die Medical-Ebene von ai-core, egal welches Death- oder Ambulance-Skript läuft. Kein Lua-Zwilling: Rufe die Exports RevivePlayer, HealPlayer, IsPlayerDead von ai-core auf.

medical.revive

Bringt einen bewusstlosen Spieler dort wieder auf die Beine, wo er liegt.

Seite: Server · Wartet: nein

Signatur
medical.revive(source: number): boolean

Rückgabewert: true, wenn wiederbelebt, false, wenn nicht bewusstlos oder kein Death-Skript läuft.

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

medical.heal

Gibt einem Spieler, der nicht bewusstlos ist, volle Gesundheit.

Seite: Server · Wartet: nein

Signatur
medical.heal(source: number): boolean

Rückgabewert: true, wenn geheilt, false, wenn kein Death-Skript läuft.

medical.heal(source);

medical.isDead

Ob der Spieler bewusstlos ist.

Seite: Server · Wartet: nein

Signatur
medical.isDead(source: number): boolean

Rückgabewert: true, wenn bewusstlos; false ohne Death-Skript. Nutze es, statt die Gesundheit des Peds zu lesen.

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

medical.provider

Seite: Server · Wartet: nein

Signatur
medical.provider(): string | null

Rückgabewert: das Death-Skript, das antwortet (ai-death...), oder null, wenn keins läuft.

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

stress

Der Stress der Spieler (0 bis 100) über die Stress-Ebene von ai-core, egal welches HUD ihn führt.

stress.gain

Fügt Stresspunkte hinzu.

Seite: Server · Wartet: nein

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

Prop

Type

Rückgabewert: true, wenn hinzugefügt, false, wenn kein HUD mit Stress läuft.

stress.gain(source, 5); // nach einer Schießerei

stress.relieve

Nimmt Stresspunkte weg.

Seite: Server · Wartet: nein

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

Rückgabewert: true, wenn weggenommen, false, wenn kein HUD mit Stress läuft oder amount 0 oder weniger ist.

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

stress.provider

Seite: Server · Wartet: nein

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

Rückgabewert: das HUD, das den Stress führt, oder null.

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

needs

needs.refill

Füllt Hunger und Durst ganz auf (Admin-Revive, Krankenhaus), über das HUD, das sie führt, oder ohne eines über die Charakter-Metadaten von ai-core.

Seite: Server · Wartet: nein

Signatur
needs.refill(source: number): boolean

Kein Lua-Zwilling: Rufe den Export RefillNeeds(source) von ai-core auf.

Rückgabewert: true, wenn aufgefüllt, false, wenn der Spieler keinen Charakter hat.

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

Job- und Gang-Definitionen

definitions.job

Die Definition eines Jobs, wie sie im Panel von ai-core eingestellt ist. Jede wird einmal aus ai-core gelesen und behalten, bis das Panel sie ändert, daher ist ein Lesezugriff ein Nachschlagen im Speicher.

Seite: Server · Wartet: nein

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

Kein Lua-Zwilling: Rufe den Export GetJobDefinition(name) von ai-core auf.

Rückgabewert: JobDefinition (label, type, defaultDuty, listed?, grades), oder null, wenn es keinen solchen Job gibt.

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

definitions.gang

Seite: Server · Wartet: nein

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

Kein Lua-Zwilling: Rufe den Export GetGangDefinition(name) von ai-core auf.

Rückgabewert: GangDefinition (label, grades), oder null.

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

Prime Time

isPrimeTime

Ob für einen Job gerade Prime Time ist, nach der Prime-Time-Einstellung von ai-core. Die Uhrzeiten kommen von tgiann-policealert, solange es läuft, sonst aus den Uhrzeiten im Panel von ai-core.

Seite: Server · Wartet: nein

Signatur
isPrimeTime(job?: string): boolean

Kein Lua-Zwilling: Rufe den Export IsPrimeTime(job) von ai-core auf.

Prop

Type

Rückgabewert: true während der Prime Time.

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

Auf dieser Seite