EMS
Сколько медиков свободно, чтобы принять вызов, и сигналы бедствия лежащих игроков через тот скрипт EMS, который работает, или через сам ai-core.
Слой EMS отвечает любому скрипту на два вопроса: «сколько медиков могут принять вызов?» и «отправь медикам сигнал бедствия». ai-core спрашивает источник EMS, выбранный в настройке панели EMS source, или первый запущенный скрипт EMS. На то, на что этот скрипт ответить не может, ai-core отвечает сам: свободные медики по собственному подсчёту дежурных, а сигнал бедствия как оповещение высокого приоритета работам через слой диспетчера.
GetEmsSystem
Используемый источник EMS.
Сторона: сервер · Ожидание: нет · Библиотека: ems.provider()
GetEmsSystem(): string | nulllocal 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[]): numberlocal 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): booleanlocal 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");
});