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

Библиотека: shared и fivem

@aicore-fivem/lib/shared (без нативов, работает везде) и /fivem (нативы на обеих сторонах) - каждая функция с сигнатурой.

/shared никогда не вызывает нативы: используйте его в коде NUI, в resource/common/ и на обеих сторонах. /fivem вызывает нативы, которые есть на обеих сторонах; клиентский и серверный входы реэкспортируют его.

TypeScript
import { readInt, fail, groupDigits } from "@aicore-fivem/lib/shared";
import { resourceExport, every } from "@aicore-fivem/lib/fivem";

Экспорты между ресурсами (/fivem)

ФункцияЧто
registerExport(name, handler): voidРегистрирует экспорт, также под именем-двойником с изменённым регистром первой буквы (GetItems и getItems).
resourceExport(resource): CitizenExports[K]Типизированный доступ к экспортам другого ресурса; один дескриптор на файл.
optionalExport(resource): CitizenExports[K] | nullТо же для ресурса, который может быть не запущен (null, пока остановлен).
callExport(resource, name, ...args): unknownЭкспорт скрипта без типов здесь; разберите результат.
provideExport(resource, name, fn): voidОтвечает на exports["<resource>"].<name> для имени, которое этот ресурс делает через provide.
isResourceStarted(resource): booleanЗапущен ли ресурс сейчас.

Ресурсы, планировщик, состояние (/fivem)

ФункцияЧто
every(ms, fn, { active?, name? }): JobЕдиный планировщик ресурса: 0 = каждый кадр. job.set(active), job.stop(), job.running.
caller(): stringРесурс, который вызывает этот экспорт (этот же при локальном вызове).
onStop(fn): voidСрабатывает при остановке этого ресурса.
new ByResource({ onDrop? }): set(key, value, owner = caller()), get, delete, ownerOf, values, entriesЗаписи по вызывающему ресурсу, удаляются при его остановке.
new Reasons(): set(reason, on, owner?), has, any(), onChangeСостояние, которое держится, пока задана хоть одна причина (скрытый HUD, пауза синхронизации).
plateOf(vehicle): stringНомер транспорта, обрезанный, в верхнем регистре.
createLocale(), loadLocaleTexts(resource?)Языковые тексты ресурса (t(key, ...args)) и вся таблица для NUI.
new EntityState(key, parse), new PlayerState(key, parse), new GlobalKey(key, parse), new GlobalGroup(prefix, parse)Чтение state bag: get, onChange; EntityState.getByNetId, GlobalGroup.ids().
stateNumber, stateBoolean, stateStringПарсеры для классов состояния.
TypeScript
const fuel = new EntityState("fuel", stateNumber);
const job = every(1000, () => {
  if (cache.vehicle) updateGauge(fuel.get(cache.vehicle) ?? 100);
});

Действия и ввод (/shared)

ФункцияЧто
fail("LANG_KEY")Отказ { ok: false, error } для ActionResult.
isActionOk(reply), replyError(reply, fallback)Чтение ответа вручную.
readInt(value, min, max), readFinite(value), readId(value), readText(value, max)Строгое чтение значений от клиента; null отказывает (NaN, Infinity, дроби).
readVec3(value), readVec4(value)Точки из ввода клиента или экспорта (объекты или векторы Lua); null при плохом значении.
oneArg(read)Парсер args с одним значением для callback: { args: oneArg(readId) }.
asArgs(value)Одно разобранное значение как результат args.
num, int, bool, str, record, vec4 (value, fallback, ...)Чтение содержимого панели с запасным значением.
isRecord(value)Проверка на обычный объект.

Числа, текст, позиции (/shared)

ФункцияЧто
round(value, decimals = 0), groupDigits(value, separator = ",")1,234,567.
formatWeight(grams)750 g, 1.5 kg.
normalizePlate(text)Номер как ключ или для сравнения.
stripGameText(text)Убирает HTML и коды ~r~ из текста другого скрипта.
formatText(template, args)Подстановки {0}.
new LangTexts(): set, translate, subscribe, snapshotЯзыковые тексты страницы NUI.
logSafe(text, max), previewJson(value, max)Ненадёжный текст и данные, безопасные для консоли.
createLogger(resource)info, warn, error с именем ресурса впереди.
distance(a, b), flatDistance(a, b), headingTo(from, to), nearestOf(items, point, pos, max?)Векторная математика (Vec3).
randomInt(min, max), pickRandom(list), rollChance(percent)Случайные функции.
sleep(ms), waitFor(check, timeoutMs = 10000, intervalMs = 0)Ожидание.
new ServerClock(): sync(serverNow), now(), toLocal(serverTime)Часы сервера на клиенте, для обратных отсчётов.
gridCell(x, y, size), cellKey(cx, cy)Ячейки сетки для AreaStream.
zoneContains(shape, x, y, z), zoneBounds(shape), polyFromCorners(corners, height)Геометрия зон.
vehicleTypeOfClass(vehicleClass)Класс транспорта в тип для CreateVehicleServerSetter.
toVehicleProps(value), toVehicleSetup(value)Внешний вид транспорта из ненадёжного ввода или null.

Данные панели (/shared)

ФункцияЧто
spec.int(min, max, optional?), spec.num(min, max, optional?)Построители спецификаций данных для schema.ts.
readAccess(record), ACCESS_FIELDS, accessFields(), isPublic(rule), decideAccess(...)Кто может пользоваться местом: работы, банды, ранги, смена.
readBlipStyle(value, fallback), BLIP_STYLE_FIELDSСтиль метки из панели.
PLACE_PED_SPEC, placePedFields(path?), readPlacePed(value)NPC места в панели.
readRecords(raw, readOne)Файл записей, разобранный один раз.
new RecordObjects(source, file, readOne | records, build): rebuild(key), rebuildAll()Точки, метки и педы файла записей; изменённая запись перестраивает только свои объекты.
withoutSchemaKey(value)Файл данных без ключа $schema.

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