AI Core
API-ReferenzAI Core: Server-Exports

EMS

Wie viele Sanitäter frei sind, um einen Einsatz zu übernehmen, und Notrufe von Spielern am Boden, über das laufende EMS-Skript oder ai-core selbst.

Die EMS-Ebene beantwortet zwei Fragen für jedes Skript: „Wie viele Sanitäter können einen Einsatz übernehmen?“ und „Sende den Sanitätern einen Notruf“. ai-core fragt die EMS-Quelle, die die Panel-Einstellung EMS source (EMS-Quelle) wählt, oder das erste EMS-Skript, das läuft. Was dieses Skript nicht beantworten kann, beantwortet ai-core selbst: freie Sanitäter aus seinen eigenen Dienstzahlen und einen Notruf als Alarm mit hoher Priorität an die Jobs über die Dispatch-Ebene.

GetEmsSystem

Die genutzte EMS-Quelle.

Seite: Server · Wartet: nein · Lib: ems.provider()

Signature
GetEmsSystem(): string | null
Lua
local system = exports['ai-core']:GetEmsSystem() -- 'ai-core' oder ein Skriptname

Parameter

Keine.

Rückgabe

string | null: der Ressourcenname des EMS-Skripts oder "ai-core", wenn der eigene Teil von ai-core antwortet (kein EMS-Skript läuft). Der eigene Teil von ai-core ist immer da, in der Praxis ist das also nie null.

Beispiel

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

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

addCommand("emssystem", { help: "Shows the EMS source", restricted: true }, () => {
  console.log(core.GetEmsSystem());
});

GetAvailableMedics

Wie viele Sanitäter in den angegebenen Jobs jetzt einen Einsatz übernehmen können. Ein EMS-Skript mit eigenem Dispatch lässt beschäftigte Sanitäter weg; die eigene Antwort von ai-core sind alle im Dienst.

Seite: Server · Wartet: nein · Lib: ems.available

Signature
GetAvailableMedics(jobs: string[]): number
Lua
local medics = exports['ai-core']:GetAvailableMedics({ 'ambulance' })

Parameter

Prop

Type

Rückgabe

number: freie Sanitäter. 0 für keine, eine leere Liste oder einen Wert, der keine Liste ist. Wenn das EMS-Skript fehlschlägt, antwortet die eigene Dienstzahl von ai-core.

Beispiel

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

const core = resourceExport("ai-core");
const EMS_JOBS = ["ambulance"];

// Der Button „Im Krankenhaus respawnen“ funktioniert nur, solange kein Sanitäter kommen kann.
onClientCallback("myscript:respawn", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (core.GetAvailableMedics(EMS_JOBS) > 0) return fail("MEDICS_AVAILABLE");
  // ... den Spieler ins Krankenhaus bringen und wiederbeleben
  return { ok: true };
});

SendDistress

Sendet den Notruf eines Spielers am Boden an die Sanitäter. Mit einem EMS-Skript, das Einsätze annimmt, geht der Ruf dorthin; sonst sendet ai-core einen Alarm mit hoher Priorität (Code 10-52, ein Verbandskasten-Icon, die Position des Spielers) über das aktive Alarmsystem an die Mitglieder von jobs, die im Dienst sind.

Seite: Server · Wartet: nein · Lib: ems.distress

Signature
SendDistress(source: number, call: DistressCall): boolean
Lua
local sent = exports['ai-core']:SendDistress(source, { jobs = { 'ambulance' }, message = 'Unconscious' })

Parameter

Prop

Type

DistressCall

Prop

Type

Siehe DistressCall.

Rückgabe

boolean: true, wenn etwas den Ruf angenommen hat. false, wenn der Spieler nicht online ist, jobs leer ist, das EMS-Skript ihn abgelehnt hat oder der eigene Alarm von ai-core kein laufendes Alarmsystem gefunden hat.

Beispiel

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

const core = resourceExport("ai-core");
const cooldowns = new Cooldowns();

// Der Button „Sanitäter rufen“ auf dem Todesbildschirm, einmal pro Minute.
onClientCallback("myscript:distress", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (!cooldowns.take(source, 60_000)) return fail("WAIT");
  const sent = core.SendDistress(source, { jobs: ["ambulance"], message: Locale("DISTRESS_UNCONSCIOUS") });
  return sent ? { ok: true } : fail("NO_MEDICS");
});

Auf dieser Seite