AI Core
Справочник API

Библиотека: клиент

@aicore-fivem/lib/client - каждая клиентская функция с сигнатурой и её аналог в Lua aiLib, если он есть.

TypeScript
import { Points, notify, progress, cache } from "@aicore-fivem/lib/client";

Клиентский вход также реэкспортирует функции /fivem (every, ByResource, Reasons, caller, onStop, plateOf, функции экспортов и локализации, классы state bag): см. Библиотека: shared и fivem. Последний столбец называет аналог в aiLib (Библиотека для Lua).

Связь с сервером

ФункцияЧтоLua
triggerServerCallback(name, args = [], timeoutMs?): Promise<unknown>Спрашивает сервер (там onClientCallback); разберите ответ.triggerServerCallback
onServerCallback(name, handler: (...args) => unknown): voidОтвечает на triggerClientCallback сервера.onServerCallback
onServerEvent(name, handler) / onServerEvent(name, { args }, handler)Сетевое событие от сервера; вызовы не от сервера отбрасываются. args разбирает данные.onServerEvent
fromServer(): booleanПришло ли обрабатываемое событие от сервера.
callAction(name, args = [], { fallback, timeout?, silent? })Выполняет серверное действие, сам показывает переведённый отказ, возвращает ответ ok или null.callAction
isActionOk(reply), replyError(reply, fallback)Чтение ActionResult вручную.
TypeScript
const reply = await callAction("buy", [itemId], { fallback: "BUY_FAILED" });
if (reply) notify(t("BOUGHT"), "success");

Локальный игрок

ФункцияЧтоLua
cacheped, playerId, serverId, vehicle, seat, weapon (false = нет), их ведёт один наблюдатель ai-core.cache
onCache(key, handler: (value, old) => void): voidСрабатывает при изменении кэшированного значения.cache.onChange
readPlayerState(ped), readWeapon(ped)Транспорт, место и оружие педа прямо сейчас.
player.coords(), player.heading(), player.distanceTo(point), player.ped()Чтение позиции (из кэша).player
player.freeze(state: boolean)Замораживает педа.player.freeze
player.teleport(to: { x, y, z? }, { heading?, ground?, fade?, keepVehicle? }): Promise<void>Телепорт за затемнением с загрузкой коллизии; без z приземляет на землю.player.teleport
player.playAnim(dict, clip, options?): Promise<void>, player.stopAnim()Запускает или останавливает анимацию.player.playAnim, player.stopAnim
player.holdAnim(dict, clip, { ...options, while? })Держит анимацию до stop() или пока while() не вернёт false.
fadeOut(ms = 300), fadeIn(ms = 400)Затемнение экрана; каждое завершается, когда готово.fadeOut, fadeIn
getPlayerData(key), onPlayerData(key, handler): () => void, seedPlayerData(data)Данные игрока из ai-core (character, money, jobs, duty, job, gangs, activeGang, metadata).playerData.get, playerData.onChange
hasJob(jobs, minGrade = 0), inGang(gangs, minGrade = 0), onDutyIn(jobs)Проверки членства (пустой список = все).
onMembershipChange(fn)Изменились работы, смена или банды.
allows(rule: AccessRule): booleanМожет ли игрок пользоваться местом (серверный online.allows решает так же).
playerPed(serverId): numberПед игрока по серверному id, 0 вне зоны.playerPed
nearestPlayer(metres, { from?, filter? }): number | nullСерверный id ближайшего другого игрока.nearestPlayer

Места и мир

ФункцияЧтоLua
new Points()Каждое место, которым пользуется игрок: подсказка или таргет (выбор владельца), NPC, метка.Points.new()
points.add(id, { coords, label, icon?, radius?, height?, canShow?, onPressed, onEnter?, onExit?, ped?, blip?, world?, promptOnly?, preferTarget? })Добавляет точку; label может быть функцией.points:add
points.addModel(id, { models, label, icon?, radius?, canShow?(entity), onPressed(entity), vehicles?, inVehicle? })Точка на каждом объекте нужных моделей (банкоматы, стулья).points:addModel
points.addVehicle(id, { label, icon?, radius?, canShow?(vehicle), onPressed(vehicle) })Точка на каждом сетевом транспорте.points:addVehicle
points.remove(id), clear(), refresh(id?), isInside(id)Управление точками; refresh заново читает canShow.
new Zones(): add(id, options), remove, clear, isInside, sizeОбласти без взаимодействия.Zones.new()
new LocalPed({ model, coords, ... }): entity, removeПед, которого видит только этот клиент, создаётся рядом с игроком.LocalPed.new()
new Blips(): add(id, options), get, remove, clear; createBlip(options)Именованные метки.Blips.new(), Blips.create()
showPrompt(id, text, at?), hidePrompt(id), onPromptPressed(handler)Подсказка ai-lib вручную (её использует Points).showPrompt, hidePrompt, onPromptPressed
new AdminWorld(files): get, onChange, view, recordsКлиентская копия файлов панели скрипта с sync: "all".
TypeScript
const points = new Points();
points.add("shop", {
  coords: { x: 25.7, y: -1347.3, z: 29.5 },
  label: t("OPEN_SHOP"),
  icon: "basket-shopping",
  blip: { sprite: 52, color: 2, scale: 0.8, label: t("SHOP") },
  onPressed: () => openShop(),
});

Интерфейс

ФункцияЧтоLua
notify(text, kind = "info", duration?)Карточка уведомления.notify
progress({ label, duration, anim?, scenario?, face?, allowVehicle?, canCancel?, whileDead?, freeze?, disable? }): Promise<boolean>Действие с таймером и полосой ai-lib; false при отмене.progress
cancelProgress(), isProgressRunning()Остановить или проверить полосу этого ресурса.progress.cancel(), progress.isRunning()
menu(request, onHover? | { onHover, onToggle }): Promise<string | null>Меню ai-lib; возвращает выбранный id.menu.show
input(request): Promise<Record<string, string | number> | null>Диалог ввода ai-lib.input
itemPicker({ title, target? }): Promise<PickedItem[] | null>Инструменты админа: сетка предметов ai-core.itemPicker
skillCheck(difficulty | difficulty[], keys = ["e"]): Promise<boolean>Проверка навыка ("easy" | "medium" | "hard" или { areaSize, speedMultiplier }).skillCheck
lockpick({ difficulty?, pins?, picks? }): Promise<"opened" | "broken" | "cancelled">Мини-игра с отмычкой.lockpick
new NuiScreen(name, { cursor?, onClose?, closeCallback? }): open, close, send, on, isOpenПолноэкранный NUI: фокус, скрытые HUD, сообщение закрытия, callback.
hud.hide(reason), hud.show(reason), hud.visible(), hud.onChange(fn)Скрытие HUD вокруг полноэкранного интерфейса.hud
keyHints.show(id, { label, keybind?, key?, icon? }), keyHints.hide(id)Строка подсказки клавиши в HUD.keyHints
radial.add(item), radial.remove(id), radial.refresh()Пункты в запущенном радиальном меню.radial
controls.disable(reason, controls, group?), controls.enable(reason), controls.disableAll(reason, except?)Отключённое управление, одна задача на кадр.controls
new Keybind({ name, description, defaultKey, defaultMapper, hint?, icon?, hintLabel?, onPressed, onReleased })Переназначаемая клавиша; панель может задать её по умолчанию. isPressed(), currentKey(), disable(state).Keybind.new()
TypeScript
const done = await progress({
  label: t("REPAIRING"),
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
});

Через AI Core

ФункцияЧтоLua
inventory.openInventory(), inventory.hasItem(item, count = 1), inventory.currentWeapon()Активный инвентарь.inventory
medical.isDead(), medical.onChange(fn)Локальный игрок упал, в любом скрипте смерти.
gestures.isHandsUp(), isPointing(), provider()Поднятые руки и указание в любом скрипте эмоций.gestures
appearance.apply(ped, look), appearance.read(ped)Внешность через активный скрипт одежды.appearance
world.pauseSync(reason), world.resumeSync(reason)Пауза синхронизации погоды и времени.world

Транспорт и сущности

ФункцияЧтоLua
nearestVehicle(metres, { networked?, notOwn?, filter? }): numberБлижайший транспорт.nearestVehicle
drivenVehicle(): number | falseТранспорт, которым управляет игрок.
waitForEntity(netId, timeoutMs = 5000): Promise<number>Сущность, когда она появится здесь, 0 по таймауту.waitForEntity
entityFromNetId(netId, type?): numberСущность сейчас или 0 (тип 1 пед, 2 транспорт, 3 объект).
getVehicleProps(vehicle), setVehicleProps(vehicle, props), setVehicleSetup(vehicle, setup)Чтение и применение внешнего вида транспорта.
new PreviewVehicle(): show(model, at, setup?), clear()Локальный транспорт для автосалона.
vehicleLabel(model | hash | vehicle): stringОтображаемое название транспорта.vehicleLabel

Пробы, загрузка, время

ФункцияЧтоLua
raycast(from, to, { flags?, ignore?, options? }): RayHit | nullЛуч-проба: { coords, normal, entity }.raycast
groundZ(x, y, z = 1000): number | nullВысота земли, null, пока коллизия не загружена.groundZ
locationName(coords?): { street, crossing?, zone }Названия улицы и района.locationName
waypoint(): { x, y } | nullМетка маршрута на карте.waypoint
pedHeadshot(ped, transparent = false, timeoutMs = 5000)Дескриптор и имя текстуры портрета педа.pedHeadshot
onShot(handler: (weapon) => void): () => voidКадр, в котором локальный пед стреляет.onShot
requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeoutMs = 10000)Загрузка игрового ассета.те же имена
attachProp(model, { ped?, bone, offset?, rotation?, collision?, rotationOrder? }): Promise<number>Локальный проп в кости педа.
new TickLoop(onFrame, name?): set(active), runningЗадача на каждый кадр, включаемая только по необходимости.
new AreaFollower(event, cellSize = 64): start, stopСообщает ячейку сетки игрока серверному AreaStream.
new ScriptCamera(type?): start, move, glideTo, attach, pointAt, setFov, shake, blur, stopСкриптовая камера, возвращается игровой камере при остановке.

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