AI Core
Мир и инструментыai-exitsleeping

ai-exitsleeping для разработчиков

Серверные и клиентские экспорты, события-хуки и формат спящего тела ai-exitsleeping.

У ai-exitsleeping один серверный экспорт, три клиентских экспорта и четыре локальных события-хука (редактируемые хуки оригинального скрипта). Ни один не типизирован в @aicore-fivem/shared: в TypeScript вызывайте их через callExport.

Серверные экспорты

AddCreateCheck

Добавляет проверку, которая выполняется, когда игрок выходит. Верните false, чтобы не оставлять спящее тело (квартира, зона мероприятия, тюрьма). Используйте, когда ваш скрипт знает места, где тело не должно оставаться.

Сторона: сервер · Ожидание: нет

Сигнатура
AddCreateCheck(id: string, check: (source: number, charId: number, coords: { x: number; y: number; z: number; heading: number }) => boolean): void
Lua
exports['ai-exitsleeping']:AddCreateCheck(id, function(source, charId, coords) return true end)

Параметры

Prop

Type

Возвращает

Ничего. Проверка удаляется сама, когда ваш ресурс останавливается.

Пример

import { callExport } from "@aicore-fivem/lib/server";

// Никаких спящих тел внутри арены мероприятия (200 м вокруг её центра).
const ARENA = { x: -324.0, y: -1968.0, z: 21.6 };
callExport("ai-exitsleeping", "AddCreateCheck", "arena",
  (_source: number, _charId: number, c: { x: number; y: number; z: number }) =>
    Math.hypot(c.x - ARENA.x, c.y - ARENA.y) > 200,
);

Для фиксированного места то же самое без кода делает Hidden area в панели.

Клиентские экспорты

PlayerLoaded

Будит тело локального игрока и начинает показывать тела вокруг. Вызывайте его из скрипта появления после его собственного окончательного появления, и только когда Wake up on в панели установлено в PlayerLoaded export (spawn script).

Сторона: клиент · Ожидание: нет

Сигнатура
PlayerLoaded(): void
Lua
exports['ai-exitsleeping']:PlayerLoaded()

Возвращает

Ничего. Второй вызов до следующей смены персонажа ничего не делает.

SetHidden

Скрывает все спящие тела на этом клиенте, пока действует хотя бы одна причина. Используйте, пока игрок находится там, где тела выглядели бы неуместно (интерьер-шелл, катсцена).

Сторона: клиент · Ожидание: нет

Сигнатура
SetHidden(reason: string, hidden: boolean): void
Lua
exports['ai-exitsleeping']:SetHidden('myshell', true)

Параметры

Prop

Type

Возвращает

Ничего. Ваши причины удаляются, когда ваш ресурс останавливается.

Пример

import { callExport } from "@aicore-fivem/lib/client";

export function enterShell(): void {
  callExport("ai-exitsleeping", "SetHidden", "shell", true);
}
export function leaveShell(): void {
  callExport("ai-exitsleeping", "SetHidden", "shell", false);
}

SetCarryBlocked

Скрывает опцию переноски на этом клиенте, пока действует хотя бы одна причина (ваши собственные правила: мини-игра, тюрьма).

Сторона: клиент · Ожидание: нет

Сигнатура
SetCarryBlocked(reason: string, blocked: boolean): void
Lua
exports['ai-exitsleeping']:SetCarryBlocked('minigame', true)

Возвращает

Ничего. Те же правила причин, что и у SetHidden. Переноска и так заблокирована в транспорте, без сознания и в наручниках.

События-хуки

Локальные события (не отправляются по сети), которые можно слушать.

ai-exitsleeping:created

Для вышедшего персонажа создано спящее тело. Сторона: сервер.

Prop

Type

ai-exitsleeping:removed

Спящее тело исчезло (проснулось, истекло, переключено). Сторона: сервер. Аргумент: charId: number.

ai-exitsleeping:positionChanged

Позиция тела изменилась (несут, везут, положили). Сторона: сервер. Аргументы: charId: number, coords: { x, y, z, heading }.

ai-exitsleeping:client:pedSpawned

На этом клиенте создан спящий пед. Сторона: клиент. Аргументы: ped: number (локальный, не сетевой пед), view: SleeperView.

// Сервер: записывать в лог каждое тело, которое появляется и исчезает.
on("ai-exitsleeping:created", (charId: number, view: { x: number; y: number; z: number }) => {
  console.log(`character ${charId} fell asleep at ${view.x}, ${view.y}, ${view.z}`);
});
on("ai-exitsleeping:removed", (charId: number) => {
  console.log(`character ${charId} woke up`);
});

SleeperView

Prop

Type

Внутренние события

ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut ходят между его собственным клиентом и сервером; не вызывайте их.

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