AI Core
Справочник APIAI Core: серверные экспорты

EMS

Сколько медиков свободно, чтобы принять вызов, и сигналы бедствия лежащих игроков через тот скрипт EMS, который работает, или через сам ai-core.

Слой EMS отвечает любому скрипту на два вопроса: «сколько медиков могут принять вызов?» и «отправь медикам сигнал бедствия». ai-core спрашивает источник EMS, выбранный в настройке панели EMS source, или первый запущенный скрипт EMS. На то, на что этот скрипт ответить не может, ai-core отвечает сам: свободные медики по собственному подсчёту дежурных, а сигнал бедствия как оповещение высокого приоритета работам через слой диспетчера.

GetEmsSystem

Используемый источник EMS.

Сторона: сервер · Ожидание: нет · Библиотека: ems.provider()

Сигнатура
GetEmsSystem(): string | null
Lua
local system = exports['ai-core']:GetEmsSystem() -- 'ai-core' или имя скрипта

Параметры

Нет.

Возвращает

string | null: имя ресурса скрипта EMS или "ai-core", когда отвечает собственная часть ai-core (ни один скрипт EMS не работает). Собственная часть ai-core есть всегда, поэтому на практике это никогда не null.

Пример

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

Сколько медиков в заданных работах могут сейчас принять вызов. Скрипт EMS со своим диспетчером не учитывает занятых медиков; собственный ответ ai-core - все на дежурстве.

Сторона: сервер · Ожидание: нет · Библиотека: ems.available

Сигнатура
GetAvailableMedics(jobs: string[]): number
Lua
local medics = exports['ai-core']:GetAvailableMedics({ 'ambulance' })

Параметры

Prop

Type

Возвращает

number: свободные медики. 0, если их нет, для пустого списка или значения, которое не является списком. Когда скрипт EMS даёт сбой, отвечает собственный подсчёт дежурных ai-core.

Пример

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

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

// Кнопка «возродиться в больнице» работает, только пока ни один медик не может приехать.
onClientCallback("myscript:respawn", (source) => {
  if (!core.IsPlayerDead(source)) return fail("NOT_DOWN");
  if (core.GetAvailableMedics(EMS_JOBS) > 0) return fail("MEDICS_AVAILABLE");
  // ... переместить игрока в больницу и реанимировать
  return { ok: true };
});

SendDistress

Отправляет медикам сигнал бедствия лежащего игрока. Если скрипт EMS принимает вызовы, вызов идёт туда; иначе ai-core отправляет оповещение высокого приоритета (код 10-52, иконка аптечки, позиция игрока) сотрудникам jobs на дежурстве через активную систему оповещений.

Сторона: сервер · Ожидание: нет · Библиотека: ems.distress

Сигнатура
SendDistress(source: number, call: DistressCall): boolean
Lua
local sent = exports['ai-core']:SendDistress(source, { jobs = { 'ambulance' }, message = 'Unconscious' })

Параметры

Prop

Type

DistressCall

Prop

Type

См. DistressCall.

Возвращает

boolean: true, когда кто-то принял вызов. false, когда игрока нет в сети, jobs пуст, скрипт EMS отказал или собственное оповещение ai-core не нашло работающей системы оповещений.

Пример

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

// Кнопка «вызвать медика» на экране смерти, раз в минуту.
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");
});

На этой странице