ai-hud для разработчиков
Экспорты ai-hud для потребностей (голод, жажда, стресс) и его настроек HUD, а также что он читает из других скриптов.
Потребности являются числами от 0 до 100, которые хранятся в метаданных персонажа (hunger, thirst, stress, ключи QB). Голод и жажда уменьшаются (100 = сыт); стресс растёт (0 = спокоен). ai-hud является единственным скриптом, который их пишет.
Чтобы добавить стресс из своего скрипта, используйте слой стресса AI Core (stress из lib, экспорт AddStress), который работает с любым запущенным HUD. Эффекты еды и напитков задаются у предмета: укажите значения предмета Hunger, Thirst и Stress в панели ai-inventory, и ai-hud применит их, когда предмет используют.
Серверные экспорты
SetNeed и AddNeed типизированы как AiHudServerExports в @aicore-fivem/shared (resourceExport("ai-hud") в TypeScript). GetNeeds не типизирован: вызывайте его через callExport("ai-hud", "GetNeeds", source) из lib.
GetNeeds
Читает потребности загруженного игрока.
Сторона: сервер · Ожидание: нет
GetNeeds(source: number): { hunger: number; thirst: number; stress: number } | nulllocal needs = exports['ai-hud']:GetNeeds(source) -- таблица или nilПараметры
Prop
Type
Возвращает
{ hunger, thirst, stress } | null: каждое значение 0-100 (дробная часть сохраняется). null, если у игрока нет загруженного персонажа.
SetNeed
Устанавливает одну потребность в значение.
Сторона: сервер · Ожидание: нет
SetNeed(source: number, need: "hunger" | "thirst" | "stress", value: number): voidexports['ai-hud']:SetNeed(source, 'hunger', 100)Параметры
Prop
Type
Возвращает
Ничего. Ничего не делает, если у игрока нет загруженного персонажа или аргумент неверен. Новое значение сохраняется в персонаже и отправляется в HUD игрока, когда меняется его округлённое значение.
AddNeed
Меняет одну потребность на величину.
Сторона: сервер · Ожидание: нет
AddNeed(source: number, need: "hunger" | "thirst" | "stress", delta: number): voidexports['ai-hud']:AddNeed(source, 'thirst', 25)Параметры
Prop
Type
Возвращает
Ничего.
Пример
import { callExport, resourceExport, onClientCallback } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const hud = resourceExport("ai-hud");
// Автомат с газировкой: немного утоляет жажду, отказывает, если игрок не хочет пить.
onClientCallback("myscript:soda", (source) => {
const needs = callExport("ai-hud", "GetNeeds", source) as { thirst: number } | null;
if (!needs) return fail("NO_CHARACTER");
if (needs.thirst > 90) return fail("NOT_THIRSTY");
hud.AddNeed(source, "thirst", 20);
return { ok: true };
});Эти экспорты работают, только пока запущен ai-hud. Если владелец заменит ai-hud другим HUD, ваши вызовы завершатся ошибкой. Слой стресса AI Core (AddStress) продолжает работать с другими HUD.
Клиентские экспорты
Типизированы как AiHudClientExports.
| Экспорт | Что делает |
|---|---|
OpenSettings(): void | Открывает настройки HUD игрока (то же, что /hud). Другие скрипты открывают настройки любого HUD через OpenHudSettings() из AI Core. |
SetMinimapAlways(on: boolean): void | Собственный переключатель администратора (меню ai-admin): держит миникарту пешком независимо от панели, только для этого игрока. |
GetMinimapAlways(): boolean | Включён ли этот переключатель. |
Что читает ai-hud
| Источник | Для чего |
|---|---|
Серверное событие AI Core itemUsed (source, name, status) | Добавляет значения предмета hunger, thirst, stress. |
Клиентское событие AI Core CORE.clientHudVisibleEvent (visible) | Скрывает HUD, пока открыто полноэкранное меню (hud.hide(reason) из lib в любом скрипте). |
Подсказки клавиш AI Core (ai-core:client:keyHints, GetKeyHints()) | Список клавиш слева. |
State bag транспорта fuel | Указатель топлива. |
State bag игрока proximity и события pma-voice:setTalkingMode / pma-voice:radioActive | Дальность голоса, разговор, рация. |
seatbelt из lib (слой ремня безопасности AI Core) | Предупреждение о ремне. |
inventory.currentWeapon() из lib | Блок оружия. |
События
Собственные события ai-hud (resource/common/hud.ts) внутренние. Одно открыто только для его собственного клиента: ai-hud:stress (от клиента к серверу, от 1 до 5 очков, не чаще двух раз в секунду). Другие скрипты добавляют стресс на сервере через AI Core.