AI Core
Справочник APIAI Core: серверные экспорты

Админ-панель и команды

Экспорты, на которых держится админ-панель ai-core - регистрация панели, изменения в панели, вкладка Commands, справочные списки и экраны настроек других скриптов на дашборде.

ai-core содержит одну админ-панель для всех скриптов. Большинство экспортов на этой странице - это внутренняя проводка, которую @aicore-fivem/lib вызывает за вас: скрипт, построенный на AdminPanel и addCommand из библиотеки, никогда сам не вызывает RegisterAdminPanel, AdminPanelChanged или RegisterCommands. Они описаны, чтобы вы знали, что происходит, и могли поддержать их из другого языка. RegisterExternalPanel и GetLookupValues полезны любому скрипту.

RegisterAdminPanel

Сообщает, что у вызывающего ресурса есть раздел в панели. После этого ai-core запрашивает у него схему и данные каждый раз, когда админ открывает панель.

Сторона: сервер · Ожидание: нет · Библиотека: вызывается AdminPanel из библиотеки при его старте

Сигнатура
RegisterAdminPanel(resource: string): void
Lua
exports['ai-core']:RegisterAdminPanel(GetCurrentResourceName())

Параметры

Prop

Type

Возвращает

Ничего. Регистрация удаляется, когда ресурс останавливается.

Пример

Без примера: его вызывает AdminPanel из библиотеки. Ресурс, который регистрируется без библиотеки, должен также отвечать на экспорты, которые ai-core вызывает в ответ (AdminPanelSnapshot, AdminPanelData, AdminPanelSummary, типизированы как AdminPanelResourceExports в @aicore-fivem/shared), а это работа библиотеки.

AdminPanelChanged

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

Сторона: сервер · Ожидание: нет · Библиотека: вызывается AdminPanel из библиотеки после каждого сохранённого изменения

Сигнатура
AdminPanelChanged(delta: AdminDelta): void
Lua
exports['ai-core']:AdminPanelChanged({ resource = GetCurrentResourceName(), file = 'shops', key = 'shop_1', value = record })

Параметры

Prop

Type

См. AdminDelta.

Возвращает

Ничего. ai-core не проверяет дельту; он отправляет её как есть.

Пример

Без примера: его вызывает AdminPanel из библиотеки после того, как изменение проверено и сохранено.

RegisterCommands

Выводит команды ресурса во вкладке Commands панели, с их справкой, параметрами и тем, кто может их использовать.

Сторона: сервер · Ожидание: нет · Библиотека: вызывается addCommand из библиотеки (TypeScript и Lua aiLib.addCommand)

Сигнатура
RegisterCommands(resource: string, commands: CommandInfo[]): void
Lua
exports['ai-core']:RegisterCommands(GetCurrentResourceName(), commands)

Параметры

Prop

Type

См. CommandInfo и CommandParam.

Возвращает

Ничего. Список удаляется, когда ресурс останавливается. Для команд, ограниченных principal (group.admin), ai-core также выдаёт этому principal command.<name>, для чего нужно add_ace resource.ai-core command.add_ace allow (и command.remove_ace) в permission.cfg.

Пример

Без примера: используйте addCommand из библиотеки (TypeScript) или aiLib.addCommand (Lua), и команда сама появится во вкладке. Команды, созданные голым RegisterCommand, тоже выводятся, с пометкой «простая».

GetLookupValues

Значения одного справочного списка: имена предметов активного инвентаря, имена работ, имена банд и так далее. Проверка панели в библиотеке использует его, чтобы убедиться, что значение, которое ввёл админ, существует.

Сторона: сервер · Ожидание: нет · Библиотека: используется проверкой AdminPanel из библиотеки

Сигнатура
GetLookupValues(source: LookupSource): string[]
Lua
local items = exports['ai-core']:GetLookupValues('item') -- список имён предметов

Параметры

Prop

Type

sourceЗначения
itemИмена предметов активного инвентаря.
job / gangИмена работ / банд из панели.
accountИмена типов счетов (cash, bank...).
resourceИмена запущенных ресурсов.
playerCitizen id игроков с загруженным персонажем.
vehicle / pedВсегда пусто: перечислить модели может только игра админа.

См. LookupSource.

Возвращает

string[]: значения, отсортированные по подписи. Пустой список для неизвестного source, для vehicle и ped и когда список ещё неизвестен (не работает ни один инвентарь): считайте пустой список значением «проверить нельзя», а не «ничего не допустимо».

Пример

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

/** Checks a reward item from your config; unknown is fine while no inventory runs. */
export function isKnownItem(name: string): boolean {
  const items = core.GetLookupValues("item");
  return items.length === 0 || items.includes(name);
}

Список строится заново при каждом вызове (список предметов может быть длинным). Вызывайте при проверке, а не в цикле.

RegisterExternalPanel

Выводит собственный экран настроек другого скрипта на дашборде панели ai-core, чтобы владелец сервера находил настройки всех скриптов в одном месте. Карточка открывает экран чат-командой или показывает веб-страницу внутри панели.

Сторона: сервер · Ожидание: нет · Библиотека: нет

Сигнатура
RegisterExternalPanel(panel: {
  id?: string;
  label: string;
  icon?: string;
  description?: string;
  command?: string;
  url?: string;
}): void
Lua
exports['ai-core']:RegisterExternalPanel({ label = 'My script', command = 'myscriptconfig' })

Параметры

Prop

Type

Поля panel

Prop

Type

Возвращает

Ничего. Без label или без command и url одновременно карточка не добавляется. Карточки удаляются, когда ваш ресурс останавливается.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Один раз при старте.
core.RegisterExternalPanel({
  label: "My script",
  icon: "gear",
  description: "Shops, prices and rewards",
  command: "myscriptconfig",
});

Скрипт, который вы не можете изменить, можно вывести строками в его fxmanifest.lua: ai_admin_label, ai_admin_command или ai_admin_url и при желании ai_admin_icon и ai_admin_description. Владелец сервера также может добавлять карточки вручную в панели.

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