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

Общие типы

Все типы, на которые ссылаются страницы API, с каждым полем, его типом и примером значения.

Страницы API пишут типы по имени (Vec3, ActionResult, InventoryRef...). Эта страница объясняет каждый из них один раз: его поля, что означает каждое поле, и пример значения.

Откуда берётся тип:

ПакетИмпортТипы
@aicore-fivem/sharedimport type { AiPlayerData } from "@aicore-fivem/shared";Всё на этой странице, если заголовок не говорит иное.
@aicore-fivem/lib/sharedimport type { Vec3 } from "@aicore-fivem/lib/shared";Vec3, Vec4, AccessRule, BlipStyle, ZoneShape, VehicleProps, VehicleSetup, PlacePed.
@aicore-fivem/lib/clientimport type { ProgressOptions } from "@aicore-fivem/lib/client";ProgressOptions.
@aicore-fivem/lib/serverimport type { ProgressForOptions } from "@aicore-fivem/lib/server";ProgressForOptions.

В Lua нет типов во время выполнения. Таблица Lua с теми же ключами - это то же значение: { x = 1.0, y = 2.0, z = 3.0 } - это Vec3. Массивы - это списки Lua ({ 'police', 'sheriff' }), null - это nil. О векторах см. Библиотека для Lua.

Позиции

Vec3

Точка в мире, в метрах. В GTA x - восток, y - север, z - вверх.

Prop

Type

Пример
const counter: Vec3 = { x: 25.7, y: -1347.3, z: 29.5 };
Lua
local counter = vector3(25.7, -1347.3, 29.5) -- или { x = 25.7, y = -1347.3, z = 29.5 }

Vec4

Точка с направлением: где стоит пед или появляется транспорт и куда он обращён. Поля панели vec4 и инструмент точки в панели хранят именно эту форму.

Prop

Type

Пример
const spawn: Vec4 = { x: -42.1, y: -1098.4, z: 26.4, heading: 158.0 };

В Lua vector4 называет направление w. Функции чтения библиотеки (readVec4) принимают и heading, и w.

ZoneShape

Область в мире. Используется клиентскими Zones и серверными проверками областей (геометрия зон). Это одна из трёх форм, выбираемая по type.

Sphere (шар вокруг точки):

Prop

Type

Cylinder (круг на земле, уходящий вверх и вниз):

Prop

Type

Poly (многоугольник на земле между двумя высотами):

Prop

Type

Пример
const yard: ZoneShape = { type: "sphere", center: { x: 440.1, y: -981.2, z: 30.7 }, radius: 25 };
const lot: ZoneShape = {
  type: "poly",
  points: [ { x: 210, y: -810 }, { x: 240, y: -800 }, { x: 230, y: -770 }, { x: 200, y: -780 } ],
  minZ: 28,
  maxZ: 36,
};

Результаты

ActionResult

Что каждое серверное действие отвечает клиенту: либо успех, либо языковой ключ, который клиент показывает как причину. В ветке успеха могут идти дополнительные поля (ActionResult<{ id: number }>). Само новое состояние никогда не передаётся в ответе: оно приходит дельтой.

Успех:

Prop

Type

Отказ:

Prop

Type

Пример
const done: ActionResult = { ok: true };
const created: ActionResult<{ id: number }> = { ok: true, id: 42 };
const refused: ActionResult = { ok: false, error: "NOT_ENOUGH_MONEY" };
Lua
return { ok = true }
return aiLib.fail('NOT_ENOUGH_MONEY') -- { ok = false, error = 'NOT_ENOUGH_MONEY' }

Собирайте отказы через fail; читайте ответы через isActionOk и replyError.

Игроки и персонажи

AiPlayerData

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

Prop

Type

Пример
const data: AiPlayerData = {
  character: { id: 12, citizenid: "AB12CD34", slot: 1, firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12", sex: "female", nationality: "American" },
  money: { cash: 500, bank: 5000, black_money: 0, crypto: 0 },
  jobs: [{ job: "police", grade: 2 }],
  duty: "police",
  job: { job: "police", grade: 2 },
  gangs: [],
  activeGang: null,
  metadata: { hunger: 80, thirst: 75 },
};

CharacterInfo

Персонаж так, как его видят другие ресурсы («character» из GetCharacter, playerLoaded и AiPlayerData.character).

Prop

Type

Пример
const character: CharacterInfo = {
  id: 12, citizenid: "AB12CD34", slot: 1,
  firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12",
  sex: "female", nationality: "American",
};

JobMembership

Одна работа персонажа.

Prop

Type

Пример
const membership: JobMembership = { job: "police", grade: 2 };

GangMembership

Одна банда, в которой состоит персонаж.

Prop

Type

Пример
const membership: GangMembership = { gang: "ballas", grade: 0 };

SpawnPoint

Где и как загруженный персонаж появляется в мире (данные, которые ai-core отправляет, чтобы поместить персонажа в мир).

Prop

Type

Пример
const spawn: SpawnPoint = { x: -1037.6, y: -2737.9, z: 20.2, heading: 330, model: "mp_f_freemode_01", armour: 0, health: 200 };

Branding

Название и оформление сервера в полноэкранных меню (настройки General в панели; экспорт GetBranding).

Prop

Type

Пример
const branding: Branding = { name: "Los Santos RP", subtitle: "Serious roleplay", tagline: "Welcome", taglineSub: "Pick a character", background: "skyline" };

PlayerCache

Часто читаемые значения локального игрока, которые поддерживает в актуальном виде единый наблюдатель ai-core (cache из библиотеки на клиенте). false означает «нет».

Prop

Type

Пример
const snapshot: PlayerCache = { ped: 258, playerId: 0, serverId: 7, vehicle: 81922, seat: -1, weapon: false };

UnloadReason

Почему персонаж отпущен.

ЗначениеСмысл
"dropped"Игрок покинул сервер.
"switch"Игрок вернулся на экран персонажей.

Деньги

Имена счетов

Деньги лежат на именованных счетах. Какие существуют, задаёт список Accounts в панели; ai-core поставляется с такими:

ИмяПодписьНачальная сумма
cashCash500
bankBank5000
black_moneyDirty money0
cryptoCrypto0

Владелец сервера может добавлять, переименовывать или удалять счета в панели, поэтому читайте список экспортом GetAccountTypes, а не полагайтесь на него. Когда список пуст, ai-core оставляет единственный счёт cash.

Пример
core.AddMoney(source, "bank", 250, "Paycheck");

AccountTypeDefinition

Один тип счёта из списка Accounts в панели (GetAccountTypes возвращает Record<string, AccountTypeDefinition> с ключами по имени счёта).

Prop

Type

Пример
const bank: AccountTypeDefinition = { label: "Bank", start: 5000, allowNegative: false };

MoneyRef

Одна сторона денежного перевода (TransferMoney): счёт загруженного игрока или общий счёт работы или банды.

Prop

Type

Пример
const player: MoneyRef = { source: 7, account: "bank" };
const society: MoneyRef = { owner: "job", id: "mechanic", account: "bank" };

Работы и банды

GradeDefinition

Один ранг работы или банды (содержимое панели).

Prop

Type

Пример
const grade: GradeDefinition = { label: "Sergeant", salary: 400, boss: false };

JobDefinition

Одна работа из списка Jobs панели (GetJobDefinition). Ранг n в JobMembership - это grades[n].

Prop

Type

Пример
const police: JobDefinition = {
  label: "Police", type: "leo", defaultDuty: false, listed: false,
  grades: [ { label: "Cadet", salary: 200, boss: false }, { label: "Chief", salary: 900, boss: true } ],
};

GangDefinition

Одна банда из списка Gangs панели (GetGangDefinition).

Prop

Type

Пример
const ballas: GangDefinition = { label: "Ballas", grades: [ { label: "Recruit", salary: 0, boss: false } ] };

AccessRule

Кто может пользоваться местом (магазин, тайник, гараж): одна из jobs или одна из gangs. Оба списка пусты - значит, все. Из @aicore-fivem/lib/shared; читайте через readAccess.

Prop

Type

Пример
const armoury: AccessRule = { jobs: ["police"], gangs: [], grades: { police: 2 }, onDuty: true };

Инвентарь

InventoryRef

С каким инвентарём работает вызов.

ЗначениеОзначает
numberСерверный id игрока: собственный инвентарь этого игрока.
stringЛюбой другой инвентарь по его id: имя тайника, id багажника или бардачка.
Пример
inventory.addItem(source, "water", 2);          // игрок
inventory.addItem("police_evidence", "phone", 1); // тайник

ItemMetadata

Свободные данные, хранящиеся на одной стопке предметов (Record<string, unknown>): серийный номер, прочность, заметка. Каждый инвентарь сам показывает некоторые ключи (label, description, image в большинстве из них).

Пример
const metadata: ItemMetadata = { serial: "AB-1029", durability: 100 };

Держите метаданные небольшими и безопасными для JSON (строки, числа, boolean, простые объекты и массивы). Две стопки с разными метаданными никогда не складываются вместе.

InventoryStack

Одна стопка в инвентаре (GetItems возвращает их список).

Prop

Type

Пример
const stack: InventoryStack = { name: "water", label: "Water", count: 3, slot: 4, metadata: {} };

UsedItem

Стопка, которую получает обработчик используемого предмета, когда игрок использует предмет.

Prop

Type

Пример
const used: UsedItem = { name: "lockpick", slot: 2, count: 1, metadata: { durability: 80 } };

UsableItemHandler

(source: number, item: UsedItem) => unknown: выполняется, когда игрок использует предмет. Возврат false оставляет предмет в инвентарях, которые сами забирают использованный предмет (ai-inventory забирает количество consume предмета); другие инвентари следуют своим настройкам предметов.

Пример
const onUse: UsableItemHandler = (source, item) => {
  if (item.metadata.durability === 0) return false; // оставить его
  return true;
};

ItemDefinition

Один предмет так, как его определяет активный инвентарь (GetItemDefinition). Другие страницы могут называть это «предметом» или «определением предмета».

Prop

Type

Пример
const water: ItemDefinition = { name: "water", label: "Water", weight: 500, unique: false, close: true, description: "Fresh water" };

StashDefinition

Тайник так, как его хранит ai-core (аргументы RegisterStash).

Prop

Type

Пример
const evidence: StashDefinition = { name: "police_evidence", label: "Evidence", slots: 50, maxWeight: 100000, jobs: ["police"] };

ShopProduct

Один товар магазина скрипта.

Prop

Type

Пример
const product: ShopProduct = { name: "bandage", price: 50 };

ShopDefinition

Магазин, который регистрирует скрипт. Сервер открывает его игроку; своего места у него нет.

Prop

Type

Пример
const shop: ShopDefinition = { name: "police_armoury", label: "Armoury", items: [{ name: "bandage", price: 50 }] };

HeldWeapon

Предмет-оружие, которое держит локальный игрок, как его знает инвентарь.

Prop

Type

Пример
const held: HeldWeapon = { name: "WEAPON_PISTOL", label: "Pistol" };

Транспорт

VehicleProps

Внешний вид и тюнинг транспорта в виде простых данных: цвета, моды, дополнения, ливрея, колёса, неон, тонировка, номер и состояние. Из @aicore-fivem/lib/shared. Сохранённый JSON несёт v: 1. Проверяйте полученные данные через toVehicleProps.

Prop

Type

Пример
const props: VehicleProps = {
  v: 1, model: 1032823388, plate: "AI 123", plateIndex: 0,
  colors: [12, 12], extraColors: [0, 156], customPrimary: null, customSecondary: null,
  wheelType: 0, windowTint: -1, livery: -1, mods: { 11: 2, 18: 1 }, xenonColor: 255,
  neon: [false, false, false, false], neonColor: [255, 0, 255], tyreSmoke: [255, 255, 255],
  extras: { 1: true }, dirt: 0, engineHealth: 1000, bodyHealth: 1000,
};

VehicleSetup

Что получает только что заспавненный транспорт поверх значений модели по умолчанию (setup у spawnVehicle из библиотеки, цвет, выбранный в магазине). Из @aicore-fivem/lib/shared. Каждое поле необязательно. Проверяйте полученные данные через toVehicleSetup.

Prop

Type

Пример
const setup: VehicleSetup = { colors: [27, 27], windowTint: 1, engineOn: true };

KeyPurpose

Почему игрок получает ключ от транспорта. Скрипты ключей обрабатывают каждый вариант по-своему. Всё неизвестное считается "temporary".

ЗначениеИспользуйте, когда
"purchase"Игрок теперь владеет транспортом (автосалон, выдача админом): новый ключ, старые копии перестают работать.
"garage"Личный транспорт выходит со стоянки: у владельца ключ уже есть.
"job"Рабочий транспорт на смену.
"rental"Арендованный транспорт на время аренды.
"temporary"Всё остальное кратковременное (спавн админом, тест-драйв, транспорт для ограбления). По умолчанию.
Пример
vehicleKeys.give(source, vehicle, "rental");

VehicleOwner

Кто владеет транспортом ai-vehicles.

Prop

Type

Пример
const owner: VehicleOwner = { type: "character", id: "12" };

OwnedVehicle

Личный транспорт так, как его хранит ai-vehicles (GetVehicle).

Prop

Type

Пример
const car: OwnedVehicle = {
  id: 7, plate: "AI 123", owner: { type: "character", id: "12" }, model: "sultan",
  props: null, setup: null, state: "garage", garage: "legion", fuel: 100, engine: 1000, body: 1000,
};

Мир

Weather

Имя типа погоды из контракта qb-weathersync, точно в верхнем регистре: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". Список - это константа WEATHERS; isWeather(value) проверяет значение.

Пример
import { isWeather, type Weather } from "@aicore-fivem/shared";

const next: Weather = "RAIN";
if (isWeather(input)) world.setWeather(input);

BlipStyle

Внешний вид метки так, как его хранит виджет панели blip. Из @aicore-fivem/lib/shared; читайте через readBlipStyle.

Prop

Type

Пример
const style: BlipStyle = { sprite: 52, color: 2, scale: 0.8 };

PlacePed

NPC, стоящий в месте (продавец, клерк). Из @aicore-fivem/lib/shared; читайте через readPlacePed.

Prop

Type

Пример
const clerk: PlacePed = { model: "mp_m_shopkeep_01", scenario: "WORLD_HUMAN_STAND_IMPATIENT", coords: { x: 24.5, y: -1346.6, z: 29.5, heading: 270 } };

Интерфейс игрока

NotificationKind

Цвет и иконка карточки уведомления: "success", "error", "info" или "warning". Другие страницы могут называть это «видом уведомления».

Пример
notify(source, "Vehicle stored", "success"); // серверная библиотека notify(source, text, kind?, duration?)

Notification

Карточка уведомления. Её рисует ai-lib; тексты уже переведены отправителем.

Prop

Type

Пример
const card: Notification = { text: "Vehicle stored", kind: "success", duration: 3000 };

ProgressOptions

Что показывает клиентская полоса прогресса (progress из библиотеки на клиенте) и как игрок может двигаться, пока она идёт. Из @aicore-fivem/lib/client.

Prop

Type

Пример
const repair: ProgressOptions = {
  label: "Repairing",
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
  disable: { move: true, combat: true },
};

ServerProgress

Полоса, которую серверный сценарий запускает на клиенте игрока (progressFor из библиотеки). Те же поля, что у ProgressOptions, без whileDead. ProgressForOptions (из @aicore-fivem/lib/server) добавляет одно поле:

Prop

Type

Пример
const bar: ProgressForOptions = { label: "Picking the lock", duration: 6000, scenario: "PROP_HUMAN_PARKING_METER", minRatio: 0.9 };

Одна строка меню.

Prop

Type

Пример
const row: MenuItem = { id: "water", label: "Water ($5)", icon: "bottle-water" };

Меню для показа (menu из библиотеки, aiLib.menu.show в Lua).

Prop

Type

Пример
const shop: MenuRequest = {
  title: "24/7",
  items: [ { id: "water", label: "Water ($5)" }, { id: "bread", label: "Bread ($3)" } ],
};

InputField

Одно поле диалога ввода. Это числовое поле или текстовое поле, выбираемое по type.

Числовое поле:

Prop

Type

Текстовое поле:

Prop

Type

InputRequest

Диалог ввода для показа (input из библиотеки, aiLib.input в Lua).

Prop

Type

Пример
const fine: InputRequest = {
  title: "Write a fine",
  confirm: "Send",
  fields: [
    { name: "amount", label: "Amount", type: "number", min: 1, max: 10000 },
    { name: "reason", label: "Reason", type: "text", maxLength: 80 },
  ],
};

PromptAnchor

Где парит подсказка в мире: фиксированная точка или места на сущностях. Смещения на сущностях задаются в собственном пространстве сущности, поэтому подсказка двигается и поворачивается вместе с ней (распахивающаяся дверь). Из нескольких мест на сущностях каждый кадр показывается ближайшее к игроку.

Точка:

Prop

Type

Места на сущностях:

Prop

Type

Пример
const atPoint: PromptAnchor = { x: 25.7, y: -1347.3, z: 30.2 };
const onDoor: PromptAnchor = { anchors: [{ entity: door, offset: { x: 0.5, y: 0, z: 0 } }] };

ItemPickerRequest

Выбор предметов ai-core для админских инструментов: каждый предмет активного инвентаря с картинкой, поиском и количеством.

Prop

Type

Пример
const request: ItemPickerRequest = { title: "Give items", target: 7 };

PickedItem

Одна строка, которую отвечает выбор предметов.

Prop

Type

SkillDifficulty

Насколько сложен этап skill check: "easy", "medium", "hard" или собственная форма ox_lib { areaSize: number; speedMultiplier: number }. Именованные этапы: easy = зелёная дуга 50 градусов при 0.6 оборота в секунду, medium = 40 при 0.85, hard = 25 при 1.

Пример
const stages: SkillDifficulty[] = ["easy", "medium", { areaSize: 30, speedMultiplier: 1.2 }];

LockpickResult

Что отвечает взлом замка: "opened" (замок открылся), "broken" (игрок сломал все отмычки) или "cancelled" (игрок закрыл его).

RadialItem

Один пункт радиального колеса (radial из библиотеки). Его функции выполняются в ресурсе, который его добавил; ai-core удаляет пункт, когда этот ресурс останавливается.

Prop

Type

Пример
const item: RadialItem = {
  id: "engine", label: "Engine", icon: "car", parent: "vehicle",
  canShow: () => cache.seat === -1,
  onPressed: () => SetVehicleEngineOn(cache.vehicle as number, !GetIsVehicleEngineRunning(cache.vehicle as number), false, true),
};

KeyHintRequest

Строка справки по клавише, которую скрипт показывает какое-то время (клавиши noclip у админа). Укажите keybind или key.

Prop

Type

Пример
const hint: KeyHintRequest = { label: "Speed up", key: "SHIFT", icon: "gauge-high" };

KeyHintWhen

Когда подсказка привязки показывается в HUD: "foot" (пешком), "vehicle" (в транспорте) или "always". Владелец сервера может изменить это в панели; привязка без этого значения никогда не показывает подсказку.

KeyHintView

Одна строка подсказок клавиш, которую показывает HUD (клиентский экспорт GetKeyHints, событие ai-core:client:keyHints): клавиша так, как её назначил игрок, и что она делает.

Prop

Type

Пример
const row: KeyHintView = { id: "noclip_speed", key: "SHIFT", label: "Speed up", icon: "gauge-high" };

Логи, оповещения, телефон

LogOptions

Дополнительные подробности строки лога (aiLog из библиотеки, экспорт Log).

Prop

Type

Пример
aiLog("payments", "Paid a bill", { source, metadata: { amount: 250 } });

LogLevel

Важность строки лога: "debug", "info", "warn" или "error".

LogChannel

Как ресурс описывает один из своих каналов логов (aiLogChannels из библиотеки, экспорт LogChannels, вызывается один раз при старте). Url вебхуков здесь никогда нет: их задаёт владелец сервера в панели ai-core.

Prop

Type

Пример
aiLogChannels({ payments: { dataset: "my-shop" }, debug: { active: false } });

DispatchAlert

Оповещение полиции (или другой работы). Активный скрипт оповещений показывает его сотрудникам jobs на дежурстве. Тексты уже переведены.

Prop

Type

Пример
const alert: DispatchAlert = { code: "10-71", title: "Shots fired", source, jobs: ["police"], priority: "high" };

PhoneMail

Письмо, которое скрипт отправляет на телефон игрока.

Prop

Type

Пример
const mail: PhoneMail = { sender: "Los Santos Customs", subject: "Your car is ready", message: "Pick it up at the garage." };

PhoneNotification

Уведомление на телефоне игрока.

Prop

Type

Пример
const note: PhoneNotification = { title: "Bank", message: "You received $250", app: "bank" };

Счета, MDT, EMS, гаражи

BillRequest

Счёт, который отправляет скрипт (billing.send из библиотеки): от работы (штрафы, оплата услуг) или от игрока, игроку. Тексты уже переведены.

Prop

Type

Пример
const bill: BillRequest = { to: 7, amount: 250, label: "Speeding", from: source, job: "police" };

UnpaidBill

Один открытый счёт игрока.

Prop

Type

MdtRecord

Запись, которую скрипт пишет в полицейский MDT (mdt.record из библиотеки). Тексты уже переведены.

Prop

Type

Пример
const record: MdtRecord = { kind: "jail", target: 7, by: source, title: "Armed robbery", minutes: 20 };

MdtRecordKind

О чём запись MDT: "fine", "warrant", "arrest" или "jail".

DistressCall

Вызов медиков лежащим игроком (ems.distress из библиотеки).

Prop

Type

Пример
const call: DistressCall = { jobs: ["ambulance"], message: "Unconscious" };

GaragedVehicle

Один из транспортов игрока, который хранит скрипт гаражей.

Prop

Type

Внешность

CharacterAppearance

Внешность в том виде, в каком её выдаёт слой внешности ai-core: модель педа и собственные данные скрипта одежды. Считайте data непрозрачными: возвращайте весь объект в ApplyAppearance без изменений.

Prop

Type

ClothingMenu

Меню скрипта одежды, которое открывают другие скрипты: "clothing" (магазин одежды), "barber" или "outfits" (сохранённые наряды игрока).

JobOutfit

Рабочая форма для модели freemode, которую носит игрок. Меняются только перечисленные части.

Prop

Type

OutfitPiece

Одна часть рабочей формы.

Prop

Type

Пример
const uniform: JobOutfit = {
  components: [ { id: 11, collection: "", index: 55, texture: 0 }, { id: 4, collection: "", index: 35, texture: 0 } ],
  props: [ { id: 0, collection: "", index: 46, texture: 0 } ],
};

Команды

CommandInfo

Команда из addCommand библиотеки в том виде, в каком ресурс сообщает её ai-core (её показывает вкладка Commands панели).

Prop

Type

Пример
const info: CommandInfo = { names: ["jail", "prison"], help: "Jails a player", params: [{ name: "id", type: "playerId" }], aces: ["ai.admin"] };

CommandParam

Один аргумент команды addCommand из библиотеки, разобранный и проверенный до запуска обработчика.

Prop

Type

Пример
const params: CommandParam[] = [
  { name: "id", type: "playerId", help: "Player id" },
  { name: "reason", type: "longString", help: "Reason", optional: true },
];

Админ-панель

PanelSchema

Админ-панель скрипта: какие у неё файлы данных и как панель их раскладывает. Ресурс передаёт её в AdminPanel из библиотеки (см. Админ-панель). Каждое текстовое поле - языковой ключ из locales/*.json ресурса.

Prop

Type

Пример
const schema: PanelSchema = {
  title: "ADMIN_TITLE",
  icon: "store",
  files: { shops: { kind: "records", sync: "all", labelPath: "label", sections: { label: { type: "text", min: 1, max: 48 }, coords: { type: "vec3" } } } },
  tabs: [{ id: "shops", file: "shops", icon: "store", label: "ADMIN_TAB_SHOPS", desc: "ADMIN_TAB_SHOPS_DESC", cards: [] }],
};

FileSpec

Один файл данных панели.

Prop

Type

TabSpec

Одна вкладка панели, показывающая один файл.

Prop

Type

CardSpec

Одна карточка полей внутри вкладки.

Prop

Type

Пример
const card: CardSpec = {
  icon: "location-dot",
  title: "ADMIN_CARD_PLACE",
  fields: [{ widget: "point", path: "coords", label: "ADMIN_F_COORDS", hint: "ADMIN_H_COORDS" }],
};

LookupSource

Список значений, из которого выбирает поле панели. lookup на текстовом поле или поле имён заставляет сервер отклонять всё остальное, а панель предлагать этот список.

ЗначениеСписок
"item"Предметы активного инвентаря.
"job"Работы из списка Jobs панели.
"gang"Банды из списка Gangs панели.
"account"Денежные счета.
"resource"Запущенные ресурсы.
"player"Игроки в сети, по citizen id.
"vehicle"Все модели транспорта, которые есть в игре админа, включая аддоны. Сервер никогда не отклоняет (он не может перечислить модели).
"ped"Модели педов GTA. Сервер никогда не отклоняет.

AdminDelta

Изменённая запись файла панели, которая передаётся админам с открытой панелью (экспорт AdminPanelChanged).

Prop

Type

Пример
const delta: AdminDelta = { resource: "my-shop", file: "shops", key: "legion", value: { label: "Legion" } };

UpdateInfo

Скрипт, чей релиз на GitHub новее запущенной версии (проверка обновлений ai-core, экспорт GetUpdates).

Prop

Type

Пример
const update: UpdateInfo = { resource: "ai-core", label: "ai-core", current: "1.4.0", latest: "1.5.0", url: "https://github.com/..." };

Мост vRP

VrpConfig

Сопоставление прав vRP из панели (data/vrp.json) в том виде, в каком его читает мост vRP в ai-core (серверный экспорт GetVrpConfig; локальное событие ai-core:vrp:config несёт ту же форму после изменения).

Prop

Type

VrpPermissionRule: выдаёт permission всем, кто подходит под любую заполненную цель.

Prop

Type

VrpGroupAlias: имя группы vRP, которое означает ранг работы или банды или админа (звания в стиле vRPex, такие как "Coronel").

Prop

Type

Пример
const config: VrpConfig = {
  defaults: { jobPrefix: true, jobOnDuty: true, adminPrefix: true, playerPrefix: true },
  permissions: [{ permission: "police.armory", job: "police", gang: "", group: "", grade: 2, onDuty: true, admin: false, everyone: false }],
  groups: { Coronel: { job: "police", gang: "", grade: 4, admin: false } },
  items: { "edible|tacos": "tacos" },
};

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