Библиотека
@aicore-fivem/lib - вспомогательные функции, из которых построен каждый скрипт ai-*, и ai-lib для Lua.
@aicore-fivem/lib заменяет ox_lib в AI Core: здесь находится всё, что скрипты писали бы вручную, построенное с расчётом на масштаб и проверенное бенчмарками. Ресурсы на TypeScript импортируют её (@aicore-fivem/lib/client, /server, /shared); ресурсы на Lua загружают её из ai-lib (shared_script '@ai-lib/init.lua', затем aiLib.<name>), ресурсы на JavaScript без сборщика загружают @ai-lib/dist/client.js / server.js.
Ввод между клиентом и сервером
| Функция | Что |
|---|---|
onClientCallback, onClientEvent | Запросы клиента через шлюз: частота, условия доступа (isAdmin, hasCharacter, near), парсер аргументов, один вызов за раз (lock). |
triggerServerCallback, callAction | Клиентская сторона; callAction сам показывает переведённый отказ. |
fail("KEY"), ActionResult | Отказы с языковым ключом. |
readInt, readId, readText, readVec3, readVec4, oneArg | Строгое чтение значений от клиента. |
progressFor | Действие с таймером, которое запускает сервер: полоса прогресса ai-lib на клиенте игрока; результат истинен, только если она там дошла до конца и на сервере прошло достаточно времени. |
minigameFor | Мини-игра, которая нужна серверному сценарию (взлом отмычкой, проверка навыка): победа, поражение или поломка, решается на клиенте игрока, сервер всё равно проверяет. |
PendingActions | Диалоги, ответа на которые ждёт сервер (текст записки): токен, освобождается при выходе игрока. |
PlayerMap, Cooldowns, KeyedCooldowns, onCharacter | Состояние для каждого игрока, которое само очищается при выходе и смене персонажа. |
Мир
| Функция | Что |
|---|---|
Points | Все места, которыми пользуются игроки: prompt или target (на выбор владельца), NPC, блипы, точки на моделях (банкоматы, колонки), точки транспорта. |
Zones, Blips, LocalPed | Зоны, блипы, локальные педы. |
hasJob, inGang, onDutyIn, onMembershipChange | Проверки членства для canShow. |
player, cache, onCache | Локальный пед: телепорт с загрузкой коллизий, анимации, заморозка; кэшированные пед, транспорт, сиденье, оружие. |
spawnVehicle, vehicleKeys, vehicleFromNet, pedFromNet | Серверный транспорт с номером, ключами, топливом, внешним видом и сиденьями одним вызовом. |
EntityState, PlayerState, GlobalKey, GlobalGroup | State bags без затрат на каждое чтение. |
raycast, groundZ, locationName, vehicleLabel, pedHeadshot | Замеры и названия. |
AreaStream, AreaFollower | Объекты мира (предметы на земле, растения, тела, пропы), которые передаются игрокам рядом с ними: снимок ячеек вокруг игрока, затем только изменения. |
Интерфейс и поток действий
| Функция | Что |
|---|---|
notify, progress, menu, input, itemPicker | Общий интерфейс, который рисует ai-lib (выбор предметов рисует ai-core). progress принимает анимацию или сценарий, точку, к которой нужно повернуться, заблокированные элементы управления, заморозку, клавишу отмены. |
skillCheck, lockpick | Мини-игры, которые рисует ai-lib: кольцо проверки навыка (уровни сложности в формате ox_lib) и взлом отмычкой со штифтами и отмычками. |
NuiScreen | Полноэкранная страница ресурса: фокус, скрытые HUD, сообщение о закрытии и колбэки страницы в одном классе. |
Keybind, addCommand | Клавиши (показываются в панели и в списке клавиш) и команды (с проверкой ACE, перечислены в панели). |
every(ms, fn) | Единый планировщик ресурса для периодической работы. |
hud, keyHints, radial, controls | Скрытие HUD при полноэкранном интерфейсе, подсказки клавиш, пункты радиального меню, отключённые элементы управления. |
Через AI Core
inventory, vehicleKeys, dispatch, phone, world (время и погода), prison, medical, appearance, money.transfer, buckets, online (игроки, работы, дежурство, имена), isPrimeTime: каждая из них передаёт вызов тому скрипту, который сервер использует для этой задачи.
Полный и актуальный список находится в .claude/rules/lib.md в папке сервера.