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

Метаданные и настройки

Читать и записывать метаданные персонажа, читать брендинг сервера и список устаревших скриптов.

GetMeta

Одно значение из метаданных персонажа: свободного набора именованных значений, который сохраняется вместе с персонажем. Скрипты ESX и QB держат там свои дополнительные данные персонажа через мост (hunger, thirst, armor, isdead...), и ваш скрипт может хранить там свои небольшие значения.

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

Сигнатура
GetMeta(src: number, key: string): unknown
Lua
local value = exports['ai-core']:GetMeta(source, 'myscript_xp') -- любое значение или nil

Параметры

Prop

Type

Возвращает

unknown: сохранённое значение (число, текст, boolean, список или таблица) в том виде, в каком его задали. null, когда ключ не задан или у игрока нет загруженного персонажа. Проверяйте тип перед использованием: значение мог записать другой скрипт или более старая версия вашего.

Пример

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

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

/** The character's fishing level, 1 when none was stored yet. */
export function fishingLevel(source: number): number {
  const value = core.GetMeta(source, "myscript_level");
  return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : 1;
}

SetMeta

Сохраняет одно значение в метаданных персонажа. Значение сохраняется при следующем периодическом сохранении персонажа (настройка панели, по умолчанию каждые 5 минут), при выходе и при остановке сервера.

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

Сигнатура
SetMeta(src: number, key: string, value: unknown): boolean
Lua
local ok = exports['ai-core']:SetMeta(source, 'myscript_level', 3)

Параметры

Prop

Type

Возвращает

boolean: true, когда значение сохранено (или удалено). false, когда у игрока нет загруженного персонажа или key не текст.

Изменение сразу доходит до игры самого игрока и вызывает серверное событие ai-core:metaChanged (src, key, value).

Пример

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

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

/** One level up after enough catches. */
export function levelUp(source: number): void {
  const level = core.GetMeta(source, "myscript_level");
  const next = (typeof level === "number" ? level : 1) + 1;
  core.SetMeta(source, "myscript_level", next);
}

Метаданные - для небольших значений, принадлежащих одному персонажу (уровень, флаг, несколько чисел). Растущие списки (история, каждый улов) и всё, что вы ищете или считаете по многим персонажам, должны лежать в вашей собственной таблице базы данных. Значения в метаданных сохраняются не сразу: деньги и предметы туда никогда не кладут.

GetBranding

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

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

Сигнатура
GetBranding(): Branding
Lua
local brand = exports['ai-core']:GetBranding() -- таблица

Параметры

Нет.

Возвращает

Branding: копия с name, subtitle, tagline, taglineSub и background ("skyline" или "wet-drive", картинка в ai-core). См. Branding.

Пример

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

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

// Экран приветствия показывает название сервера.
onClientCallback("myscript:welcome", () => {
  const { name, tagline } = core.GetBranding();
  return { ok: true, name, tagline };
});

GetUpdates

Скрипты, у которых на GitHub есть релиз новее запущенной версии, по проверке обновлений ai-core. ai-core спрашивает GitHub не чаще раза в 6 часов на скрипт (и при старте скрипта) для каждого запущенного скрипта со строкой repository в его fxmanifest.lua, если в панели не выключено Check for updates.

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

Сигнатура
GetUpdates(): UpdateInfo[]
Lua
local outdated = exports['ai-core']:GetUpdates() -- список таблиц

Параметры

Нет.

Возвращает

UpdateInfo[]: по записи на каждый устаревший скрипт с resource, label (имя, под которым его знают), current (запущенная версия), latest (новейший релиз) и url (страница релиза). Пустой список, когда всё актуально или ещё ничего не проверялось (первая проверка идёт через 15 секунд после старта). См. UpdateInfo.

Пример

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

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

addCommand("outdated", { help: "Lists outdated scripts", restricted: true }, () => {
  for (const u of core.GetUpdates()) console.log(`${u.label}: ${u.current} -> ${u.latest} (${u.url})`);
});

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