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

Медицина

Реанимировать и лечить игроков и проверять, лежит ли игрок, через тот скрипт смерти, который использует сервер.

Смерти и реанимации идут через ai-core, а не через собственные экспорты или state bag скрипта смерти (включая ai-death). ai-core передаёт каждый вызов первому запущенному скрипту смерти: ai-death, qbx_medical, ars_ambulancejob, qb-ambulancejob, esx_ambulancejob и остальным из списка совместимости. Если ни один не работает, никто не считается лежащим и никого нельзя реанимировать.

«Лежит» означает мёртв или в last stand, как это видит скрипт смерти. Скрипты смерти оставляют лежащего педа живым, поэтому никогда не используйте игровой IsEntityDead, чтобы узнать, лежит ли игрок.

Чтобы реагировать на смерть игрока, слушайте серверное событие ai-core ai-core:playerDied (src, killer, weaponHash) вместо проверки здоровья. См. События и состояние.

GetMedicalSystem

Имя ресурса скрипта смерти, которому ai-core передаёт вызовы.

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

Сигнатура
GetMedicalSystem(): string | null
Lua
local system = exports['ai-core']:GetMedicalSystem() -- string или nil

Параметры

Нет.

Возвращает

string | null: имя ресурса скрипта смерти. null, когда ни один не работает.

Пример

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

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

addCommand("deathsystem", { help: "Shows the death script in use", restricted: true }, () => {
  console.log(core.GetMedicalSystem() ?? "none: revive and heal do nothing");
});

RevivePlayer

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

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

Сигнатура
RevivePlayer(source: number): boolean
Lua
local revived = exports['ai-core']:RevivePlayer(source)

Параметры

Prop

Type

Возвращает

boolean: true, когда игрок лежал и скрипт смерти его реанимировал. false, когда игрок не лежал, не в сети, ни один скрипт смерти не работает или он дал сбой.

Пример

import { onClientCallback, coordsOf, isNear, progressFor, resourceExport } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";
import { Locale } from "common";

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

// Медик реанимирует лежащего рядом игрока аптечкой.
onClientCallback("myscript:revive", { args: oneArg(readId), lock: true }, async (source, target) => {
  if (core.GetDutyJob(source) !== "ambulance") return fail("NOT_EMS");
  if (target === source || !isNear(target, coordsOf(source), 2)) return fail("TOO_FAR");
  if (!core.IsPlayerDead(target)) return fail("NOT_DOWN");
  if (!(await progressFor(source, { label: Locale("REVIVING"), duration: 10000 }))) return fail("CANCELLED");
  if (!core.RemoveItem(source, "medkit")) return fail("NO_MEDKIT");
  core.RevivePlayer(target);
  core.RefillNeeds(target);
  return { ok: true };
});

HealPlayer

Восстанавливает полное здоровье игроку, который не лежит.

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

Сигнатура
HealPlayer(source: number): boolean
Lua
local ok = exports['ai-core']:HealPlayer(source)

Параметры

Prop

Type

Возвращает

boolean: true, когда лечение передано скрипту смерти. false, когда игрока нет в сети, ни один скрипт смерти не работает или он дал сбой. Лежащему игроку нужен RevivePlayer; что скрипт смерти делает с лечением лежащего игрока, решает он сам.

Пример

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

const core = resourceExport("ai-core");
const CHECK_IN = { x: 308.4, y: -595.3, z: 43.3 };

// Регистрация в больнице: заплатить и подлечиться.
onClientCallback("myscript:checkIn", { guards: [near(CHECK_IN, 2)], lock: true }, (source) => {
  if (core.IsPlayerDead(source)) return fail("IS_DOWN");
  if (!core.RemoveMoney(source, "bank", 250, "hospital")) return fail("NOT_ENOUGH_MONEY");
  core.HealPlayer(source);
  return { ok: true };
});

IsPlayerDead

Лежит ли игрок (мёртв или в last stand) в запущенном скрипте смерти.

Сторона: сервер · Ожидание: нет · Библиотека: medical.isDead (сервер); на клиенте medical.isDead() из библиотеки читает состояние локального игрока без вызова

Сигнатура
IsPlayerDead(source: number): boolean
Lua
local down = exports['ai-core']:IsPlayerDead(source)

Параметры

Prop

Type

Возвращает

boolean: true, когда игрок лежит. false, когда он на ногах, не в сети или ни один скрипт смерти не работает.

Пример

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

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

// Лежащий игрок не может открыть меню магазина телефонов.
onClientCallback("myscript:openShop", (source) =>
  core.IsPlayerDead(source) ? fail("IS_DOWN") : { ok: true },
);

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