AI Core
Справочник APIСобытия и состояние

Клиентские события

Все клиентские локальные события, которые отправляет ai-core - локальный персонаж загружен или выгружен, состояние «лежит», кэшированные значения, видимость HUD, синхронизация мира, определения работ, подсказки клавиш, ремень безопасности - с аргументами и обработчиками.

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

ai-core:client:playerLoaded

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

Сторона: клиент · Константа: CORE.clientPlayerLoadedEvent

Аргументы

Prop

Type

Обработчик

resource/client/index.ts
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE, type AiPlayerData } from "@aicore-fivem/shared";

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

function start(data: AiPlayerData): void {
  console.log(`hello ${data.character?.firstname}, cash ${data.money.cash ?? 0}`);
}

// Также покрывает перезапуск ресурса, когда игрок уже в мире.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);

ai-core:client:playerUnloaded

Локальный персонаж отпущен: игрок вернулся на экран персонажей. Остановите работу, привязанную к персонажу, и очистите то, что хранили для него. (Когда игрок покидает сервер, его игра закрывается; ничего не срабатывает.)

Сторона: клиент · Константа: CORE.clientPlayerUnloadedEvent

Аргументы

Нет.

Обработчик

resource/client/index.ts
import { CORE } from "@aicore-fivem/shared";

on(CORE.clientPlayerUnloadedEvent, () => {
  SendNUIMessage({ action: "reset" });
});

ai-core:client:dead

Локальный игрок упал (мёртв или last stand) или поднялся, в том скрипте смерти, который работает. Срабатывает только при изменении.

Сторона: клиент · Константа: CORE.clientDeadEvent · Библиотека: medical.onChange

Аргументы

Prop

Type

Обработчик

resource/client/index.ts
import { medical } from "@aicore-fivem/lib/client";

// То же, что on(CORE.clientDeadEvent, ...).
medical.onChange((dead) => {
  if (dead) SendNUIMessage({ action: "close" });
});

ai-core:client:cache

Изменилось кэшированное значение локального игрока. Один наблюдатель в ai-core читает педа, транспорт, место и оружие для всех ресурсов и отправляет это событие только при изменении значения, поэтому ни одному ресурсу не нужно их опрашивать. На нём построены cache и onCache из библиотеки (aiLib.cache и aiLib.cache.onChange в Lua); используйте их.

Сторона: клиент · Константа: CORE.clientCacheEvent

Аргументы

Prop

Type

Обработчик

resource/client/index.ts
import { onCache } from "@aicore-fivem/lib/client";

onCache("vehicle", (vehicle, old) => {
  if (vehicle !== false) console.log(`entered vehicle ${vehicle}`);
  else if (old !== false) console.log("left the vehicle");
});

ai-core:client:hudVisible

HUD должны показаться или скрыться: открылся полноэкранный интерфейс или закрылся последний. Ресурс HUD слушает его.

Сторона: клиент · Константа: CORE.clientHudVisibleEvent · Библиотека: hud.onChange

Аргументы

Prop

Type

Обработчик

resource/client/hud.ts
import { hud } from "@aicore-fivem/lib/client";

hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));

ai-core:client:worldSync

Синхронизация погоды и времени приостановлена или снова идёт. Скрипт погоды слушает его. См. Синхронизация погоды и времени.

Сторона: клиент · Константа: CORE.clientWorldSyncEvent

Аргументы

Prop

Type

Обработчик

resource/client/weather.ts
import { CORE } from "@aicore-fivem/shared";

on(CORE.clientWorldSyncEvent, (paused: boolean) => {
  console.log(paused ? "weather sync paused" : "weather sync running");
});

ai-core:client:definitions

Работа или банда добавлена, изменена или удалена в админ-панели. Срабатывает на каждом клиенте, один раз на каждую изменённую работу или банду. Используйте в паре с экспортом GetDefinitions.

Сторона: клиент · Константа: CORE.clientDefinitionsEvent

Аргументы

Prop

Type

Обработчик

См. пример GetDefinitions.

ai-core:client:characterPortrait

Портрет для карточки персонажа на экране персонажей. Его отправляет скрипт одежды (ai-appearance); экран персонажей ai-core слушает и показывает картинку. Отправляйте его сами, только если пишете скрипт одежды.

Сторона: клиент · Константа: CORE.clientCharacterPortraitEvent · Кто отправляет: скрипт одежды, слушает ai-core

Аргументы

Prop

Type

Обработчик

resource/client/portraits.ts
import { CORE } from "@aicore-fivem/shared";

// Скрипт одежды передаёт портрет экрану персонажей.
export function sendPortrait(charId: number, txd: string): void {
  emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}

ai-core:client:keyHints

Список подсказок клавиш, которые должны показывать HUD, изменился. Несёт весь новый список. Используйте в паре с экспортом GetKeyHints.

Сторона: клиент · Константа: KEY_HINTS.changedEvent

Аргументы

Prop

Type

Обработчик

См. пример GetKeyHints.

ai-core:client:seatbelt

Ремень безопасности локального игрока изменился, в том скрипте ремня, который читает ai-core. Срабатывает от скриптов, которые сообщают об изменениях (ai-smallresources, qbx_seatbelt); с собственным ремнём HUD читайте GetSeatbelt, когда нужно.

Сторона: клиент · Константа: CORE.clientSeatbeltEvent · Библиотека: seatbelt.onChange

Аргументы

Prop

Type

Обработчик

resource/client/hud.ts
import { seatbelt } from "@aicore-fivem/lib/client";

seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));

ai-smallresources:seatbelt

Собственное событие ремня ai-smallresources. Его слушают HUD, которые поддерживают только ai-smallresources. Новый код должен слушать ai-core:client:seatbelt выше, которое работает с каждым поддерживаемым скриптом ремня.

Сторона: клиент · Константа: SEATBELT_EVENT

Аргументы

Prop

Type

Обработчик

resource/client/hud.ts
import { SEATBELT_EVENT } from "@aicore-fivem/shared";

on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));

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

Keybind из библиотеки общается с клиентом ai-core двумя локальными событиями. Не отправляйте их и не отвечайте на них сами; используйте Keybind (TS) или aiLib.Keybind (Lua).

СобытиеКонстантаНаправлениеАргументы
ai-core:client:keybindKEYBIND.announceEventот библиотеки к ai-core(info: KeybindInfo) привязка ждёт свою клавишу по умолчанию.
ai-core:client:keybindKeyKEYBIND.keyEventот ai-core к библиотеке(resource: string, name: string, key: string) клавиша для регистрации: клавиша из панели, иначе собственная клавиша скрипта.

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