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

Логи

Отправлять логи вашего ресурса через 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): void
Lua
exports['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>): void
Lua
exports['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, которая хранит их в файле, не попадающем в общий доступ.

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