Логи
Отправлять логи вашего ресурса через ai-core в Discord, Fivemanage, FiveM Stats и консоль и описывать свои каналы логов.
Каждый ресурс пишет логи через ai-core. Ваш ресурс называет канал (purchases, robberies) и пишет сообщение; ai-core решает, куда оно пойдёт. Владелец сервера включает провайдеров в админ-панели (консоль, Discord, Fivemanage, FiveM Stats), задаёт минимальный уровень и вставляет url вебхуков Discord для каждого ресурса и канала. Ресурс никогда сам не отправляет данные в вебхук или сервис логов и никогда не хранит url вебхука.
Передавайте участвующих игроков как source и target, а не пишите их имена в сообщение: ai-core добавляет имя каждого игрока, персонажа, citizen id и идентификаторы (IP только тогда, когда это разрешает панель).
Log
Отправляет одну запись лога вашего ресурса.
Сторона: сервер · Ожидание: нет · Библиотека: aiLog(channel, message, options?) (Lua: aiLib.aiLog; оба выводят в консоль, пока ai-core не запущен)
Log(channel: string, message: string, options?: LogOptions): voidexports['ai-core']:Log('purchases', 'Bought a car', { source = source, metadata = { price = 25000 } })Параметры
Prop
Type
LogOptions
Prop
Type
См. LogOptions и LogLevel.
Возвращает
Ничего. Запись молча отбрасывается, когда её уровень ниже минимального в панели или её канал выключен через LogChannels.
Пример
import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
onClientCallback("myscript:buyCar", { lock: true }, (source) => {
const price = 25_000;
if (!core.RemoveMoney(source, "bank", price, "car_purchase")) return fail("NOT_ENOUGH_MONEY");
// ... создать и сохранить машину
core.Log("purchases", "Bought a car", { source, metadata: { model: "sultan", price } });
return { ok: true };
});Логи предназначены владельцу сервера, поэтому сообщение остаётся на английском и не переводится. Делайте сообщение коротким, а значения кладите в metadata, где сервисы логов могут по ним фильтровать.
LogChannels
Описывает каналы вашего ресурса: их имя набора данных для Fivemanage и FiveM Stats и включён ли каждый. Вызовите один раз при старте ресурса. Каналы, которые вы так и не описали, всё равно работают со значениями по умолчанию.
Сторона: сервер · Ожидание: нет · Библиотека: aiLogChannels(channels)
LogChannels(channels: Record<string, LogChannel>): voidexports['ai-core']:LogChannels({ purchases = { dataset = 'myscript-sales' }, debug = { active = false } })Параметры
Prop
Type
LogChannel
Prop
Type
См. LogChannel.
Возвращает
Ничего. Второй вызов заменяет всё описание вашего ресурса. Оно удаляется, когда ваш ресурс останавливается. Значение, которое не является таблицей, ничего не делает.
Пример
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Один раз при старте.
core.LogChannels({
purchases: { dataset: "myscript-sales" },
robberies: { dataset: "myscript-crime" },
debug: { active: false },
});Url вебхуков никогда не пишутся ни сюда, ни куда-либо в вашем ресурсе: их задаёт владелец сервера в панели ai-core, которая хранит их в файле, не попадающем в общий доступ.