AI Core
Dokumentacja APIAI Core: eksporty serwerowe

EMS

Ilu medyków może przyjąć wezwanie i wezwania pomocy powalonych graczy, przez działający skrypt EMS albo samo ai-core.

Warstwa EMS odpowiada każdemu skryptowi na dwa pytania: "ilu medyków może przyjąć wezwanie?" i "wyślij medykom wezwanie pomocy". ai-core pyta źródło EMS wybrane ustawieniem EMS source w panelu albo pierwszy działający skrypt EMS. Na to, na co ten skrypt nie umie odpowiedzieć, ai-core odpowiada sam: wolni medycy z własnych liczników służby, a wezwanie pomocy jako alert o wysokim priorytecie do prac przez warstwę dispatchu.

GetEmsSystem

Używane źródło EMS.

Strona: Serwer · Czeka: nie · Lib: ems.provider()

Sygnatura
GetEmsSystem(): string | null
Lua
local system = exports['ai-core']:GetEmsSystem() -- 'ai-core' albo nazwa skryptu

Parametry

Brak.

Zwraca

string | null: nazwa zasobu skryptu EMS albo "ai-core", gdy odpowiada własna część ai-core (nie działa żaden skrypt EMS). Własna część ai-core jest zawsze dostępna, więc w praktyce to nigdy nie jest null.

Przykład

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

Ilu medyków w podanych pracach może teraz przyjąć wezwanie. Skrypt EMS z własnym dispatchem pomija zajętych medyków; własna odpowiedź ai-core to wszyscy na służbie.

Strona: Serwer · Czeka: nie · Lib: ems.available

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

Parametry

Prop

Type

Zwraca

number: wolni medycy. 0, gdy nie ma żadnego, dla pustej listy albo wartości, która nie jest listą. Gdy skrypt EMS zawiedzie, odpowiada własny licznik służby ai-core.

Przykład

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

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

// Przycisk "odrodzenie w szpitalu" działa tylko wtedy, gdy żaden medyk nie może przyjechać.
onClientCallback("myscript:respawn", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (core.GetAvailableMedics(EMS_JOBS) > 0) return fail("MEDICS_AVAILABLE");
  // ... przenieś gracza do szpitala i reanimuj
  return { ok: true };
});

SendDistress

Wysyła medykom wezwanie pomocy powalonego gracza. Przy skrypcie EMS, który przyjmuje wezwania, wezwanie trafia tam; w przeciwnym razie ai-core wysyła alert o wysokim priorytecie (kod 10-52, ikona apteczki, pozycja gracza) do członków jobs na służbie przez aktywny system alertów.

Strona: Serwer · Czeka: nie · Lib: ems.distress

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

Parametry

Prop

Type

DistressCall

Prop

Type

Zobacz DistressCall.

Zwraca

boolean: true, gdy coś przyjęło wezwanie. false, gdy gracz nie jest online, jobs jest puste, skrypt EMS je odrzucił albo własny alert ai-core nie znalazł działającego systemu alertów.

Przykład

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();

// Przycisk "wezwij medyka" na ekranie śmierci, raz na minutę.
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");
});

Na tej stronie