Метаданные и настройки
Читать и записывать метаданные персонажа, читать брендинг сервера и список устаревших скриптов.
GetMeta
Одно значение из метаданных персонажа: свободного набора именованных значений, который сохраняется вместе с персонажем. Скрипты ESX и QB держат там свои дополнительные данные персонажа через мост (hunger, thirst, armor, isdead...), и ваш скрипт может хранить там свои небольшие значения.
Сторона: сервер · Ожидание: нет · Библиотека: нет
GetMeta(src: number, key: string): unknownlocal 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): booleanlocal 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(): Brandinglocal 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[]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})`);
});Работы и банды
Читать и менять работы, банды, ранги и дежурство персонажа, считать игроков на дежурстве, прайм-тайм, читать определения работ и банд.
Предметы
Добавлять, забирать, считать и проверять предметы в любом инвентаре, регистрировать тайники, магазины скриптов и используемые предметы, читать определения предметов и переносимый вес.