AI Core
Справочник APILib: сервер

Работы и службы

Полицейские оповещения, тюрьма, записи MDT, медики, реанимация и лечение, стресс, голод и жажда, определения работ и банд, прайм-тайм.

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

Каждый объект здесь работает через один из слоёв ai-core: отвечает тот скрипт, который сервер использует для этой задачи (система оповещений, тюрьма, MDT, скрипт смерти, HUD). Ваш скрипт продолжает работать, когда владелец его меняет. Пока такой скрипт не запущен, вызовы тихо завершаются неудачей (false, 0, null).

dispatch

dispatch.alert

Отправляет оповещение полиции (или другой работе). Система оповещений показывает его членам jobs на дежурстве, по умолчанию полицейским работам.

Сторона: Сервер · Ждёт: нет

Сигнатура
dispatch.alert(alert: DispatchAlert): boolean
Lua
local ok = aiLib.dispatch.alert(alert)

DispatchAlert

Prop

Type

Тип: DispatchAlert.

Возвращает

boolean: true, если отправлено. false, если не запущена система оповещений или оповещение неверное.

Пример

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

Тюремные сроки через ai-core, какой бы скрипт тюрьмы ни был запущен.

prison.jail

Отправляет загруженного игрока в тюрьму.

Сторона: Сервер · Ждёт: нет

Сигнатура
prison.jail(source: number, minutes: number, by?: number): boolean
Lua
local ok = aiLib.prison.jail(source, minutes, by)

Prop

Type

Возвращает true, если посажен, false, пока не запущена тюрьма.

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

prison.release

Выпускает заключённого игрока.

Сторона: Сервер · Ждёт: нет

Сигнатура
prison.release(source: number): boolean
Lua
local ok = aiLib.prison.release(source)

Возвращает true, если освобождён, false, если игрок не в тюрьме или тюрьма не запущена.

prison.release(target);

prison.timeLeft

Сторона: Сервер · Ждёт: нет

Сигнатура
prison.timeLeft(source: number): number
Lua
local minutes = aiLib.prison.timeLeft(source)

Возвращает оставшиеся минуты срока, 0, если игрок на свободе.

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

mdt

Полицейские записи MDT (штрафы, ордера, аресты, тюрьма) через слой MDT ai-core. Пока MDT не запущен, ничего не записывается.

mdt.record

Записывает запись в полицейский MDT.

Сторона: Сервер · Ждёт: нет

Сигнатура
mdt.record(record: MdtRecord): boolean
Lua
local ok = aiLib.mdt.record(record)

MdtRecord

Prop

Type

Тип: MdtRecord.

Возвращает true, если записано, false, если MDT не запущен или не принимает такую запись.

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

mdt.provider

Сторона: Сервер · Ждёт: нет

Сигнатура
mdt.provider(): string | null
Lua
local name = aiLib.mdt.provider()

Возвращает MDT, в который уходят записи, или null.

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

ems

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

ems.available

Сколько медиков свободно, чтобы принять вызов.

Сторона: Сервер · Ждёт: нет

Сигнатура
ems.available(jobs: string[]): number
Lua
local count = aiLib.ems.available(jobs)

Prop

Type

Возвращает число медиков на дежурстве в jobs, не считая занятых, если скрипт диспетчера о них знает.

// Разрешаем игрокам возрождаться в больнице, только если ни один медик не может приехать.
const canRespawn = ems.available(["ambulance"]) === 0;

ems.distress

Отправляет вызов бедствия для игрока медикам из call.jobs.

Сторона: Сервер · Ждёт: нет

Сигнатура
ems.distress(source: number, call: DistressCall): boolean
Lua
local ok = aiLib.ems.distress(source, call)

Prop

Type

Тип: DistressCall.

Возвращает true, если вызов кто-то принял, иначе false.

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

ems.provider

Сторона: Сервер · Ждёт: нет

Сигнатура
ems.provider(): string | null
Lua
local name = aiLib.ems.provider()

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

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

medical

Реанимация, лечение и состояние без сознания через медицинский слой ai-core, какой бы скрипт смерти или скорой помощи ни был запущен. Lua-аналога нет: вызывайте экспорты ai-core RevivePlayer, HealPlayer, IsPlayerDead.

medical.revive

Поднимает игрока без сознания там, где он лежит.

Сторона: Сервер · Ждёт: нет

Сигнатура
medical.revive(source: number): boolean

Возвращает true, если реанимирован, false, если игрок не без сознания или не запущен скрипт смерти.

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

medical.heal

Полностью восстанавливает здоровье игроку, который не лежит без сознания.

Сторона: Сервер · Ждёт: нет

Сигнатура
medical.heal(source: number): boolean

Возвращает true, если вылечен, false, если не запущен скрипт смерти.

medical.heal(source);

medical.isDead

Лежит ли игрок без сознания.

Сторона: Сервер · Ждёт: нет

Сигнатура
medical.isDead(source: number): boolean

Возвращает true, если без сознания; false без скрипта смерти. Используйте вместо чтения здоровья педа.

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

medical.provider

Сторона: Сервер · Ждёт: нет

Сигнатура
medical.provider(): string | null

Возвращает скрипт смерти, который отвечает (ai-death...), или null, если никакой не запущен.

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

stress

Стресс игроков (от 0 до 100) через слой стресса ai-core, какой бы HUD его ни хранил.

stress.gain

Добавляет очки стресса.

Сторона: Сервер · Ждёт: нет

Сигнатура
stress.gain(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.gain(source, amount)

Prop

Type

Возвращает true, если добавлено, false, если не запущен HUD со стрессом.

stress.gain(source, 5); // после перестрелки

stress.relieve

Убирает очки стресса.

Сторона: Сервер · Ждёт: нет

Сигнатура
stress.relieve(source: number, amount: number): boolean
Lua
local ok = aiLib.stress.relieve(source, amount)

Возвращает true, если убрано, false, если не запущен HUD со стрессом или amount равен 0 или меньше.

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

stress.provider

Сторона: Сервер · Ждёт: нет

Сигнатура
stress.provider(): string | null
Lua
local name = aiLib.stress.provider()

Возвращает HUD, который хранит стресс, или null.

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

needs

needs.refill

Полностью восполняет голод и жажду (реанимация администратором, больница) через HUD, который их хранит, а без него через метаданные персонажа ai-core.

Сторона: Сервер · Ждёт: нет

Сигнатура
needs.refill(source: number): boolean

Lua-аналога нет: вызывайте экспорт ai-core RefillNeeds(source).

Возвращает true, если восполнено, false, если у игрока нет персонажа.

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

Определения работ и банд

definitions.job

Определение работы так, как оно задано в панели ai-core. Каждое читается из ai-core один раз и хранится, пока панель его не изменит, поэтому чтение сводится к поиску в памяти.

Сторона: Сервер · Ждёт: нет

Сигнатура
definitions.job(name: string): JobDefinition | null

Lua-аналога нет: вызывайте экспорт ai-core GetJobDefinition(name).

Возвращает JobDefinition (label, type, defaultDuty, listed?, grades) или null, если такой работы нет.

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

definitions.gang

Сторона: Сервер · Ждёт: нет

Сигнатура
definitions.gang(name: string): GangDefinition | null

Lua-аналога нет: вызывайте экспорт ai-core GetGangDefinition(name).

Возвращает GangDefinition (label, grades) или null.

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

Прайм-тайм

isPrimeTime

Идёт ли прайм-тайм для работы, по настройке прайм-тайма ai-core. Часы берутся из tgiann-policealert, пока он запущен, иначе из часов, заданных в панели ai-core.

Сторона: Сервер · Ждёт: нет

Сигнатура
isPrimeTime(job?: string): boolean

Lua-аналога нет: вызывайте экспорт ai-core IsPrimeTime(job).

Prop

Type

Возвращает true во время прайм-тайма.

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

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