Перейти к содержимому

Логирование

Игра показывает вывод модуля во встроенной консоли. Логгер добавляет постоянный префикс компонента и помогает управлять повторяющимися сообщениями. Он не пишет файлы и не отправляет телеметрию.

Создавайте логгер рядом с компонентом, которому принадлежат сообщения:

import { logger } from "@killscript/sdk/client";
const log = logger("Targeting");
log.info("enabled");
log.debug(`Target: ${target?.Nickname ?? "none"}`);
log.warn("Local agent is unavailable");

В консоли появится:

[Targeting] enabled
[Targeting] [DEBUG] Target: Bot1
[Targeting] [WARN] Local agent is unavailable

logger() доступен и на клиенте, и в Reflex. Это небольшая сгенерированная функция, а не загружаемый пакет.

Отдельный print() для каждого поля создаёт много записей, перемешанных с логами движка. Если строки описывают один результат, используйте batch():

log.batch([
"Scan complete",
`Candidates: ${candidates.length}`,
`Selected: ${target?.Nickname ?? "none"}`,
`Tick: ${Time.Tick}`,
]);

Logger объединит строки и выполнит один нативный print. Такой отчёт можно выделить и скопировать целиком.

once() подходит для условия, которое проверяется на каждом обновлении, но должно попасть в лог один раз:

if (Agents.GetLocalAgent() === undefined) {
log.once("missing-player", "Local agent is unavailable");
}

throttled() используйте, когда свежее значение полезно, но не на каждом кадре:

log.throttled(
"local-position",
1,
`Position: ${local.Movement.Position}`,
);

Ключи принадлежат одному logger. Два logger могут использовать "missing-player" независимо друг от друга. once() помнит ключ до перезагрузки среды модуля, а throttled-сообщение снова разрешается после заданного интервала.