Перейти к содержанию

Конфигурация

DupeDetector настраивается через единственный файл config.json в папке плагина:

ShooterGame/Binaries/Win64/ArkApi/Plugins/DupeDetector/config.json

Рядом с ним поставляется второй файл, config_commented.json. Это та же конфигурация с комментариями // — читайте его, но не переименовывайте поверх config.json (комментарии не являются валидным JSON).

Ключи LicenseKey, Verbose, LogToFile и Database являются общими для каждого плагина Bytemart и задокументированы на странице Общая конфигурация. Эта страница описывает только блок DupeDetection, уникальный для DupeDetector.

💡 Проверяйте перед запуском. Всегда проверяйте ваш JSON после редактирования (например, через JSONLint). Код ошибки загрузки 1114 означает синтаксическую ошибку JSON.

DupeDetection

"DupeDetection": {
  "AlertWebhook": "",
  "Punishment": {
    "PunishmentWebhook": "",
    "Command": "",
    "ClearInventory": false,
    "After": {
      "Min": 1,
      "Max": 1
    }
  }
}
Поле Тип По умолчанию Описание
AlertWebhook string "" Вебхук Discord для обнаружений — одно сообщение на обнаружение, с указанием причастного игрока. Пусто означает, что обнаружения по-прежнему подсчитываются, но ничего не публикуется.

Punishment

Что происходит, когда у игрока накопилось достаточно обнаружений. Каждое поле необязательно: оставьте Command пустым, а ClearInventory в false, и DupeDetector станет режимом только отчётов.

Поле Тип По умолчанию Описание
PunishmentWebhook string "" Вебхук Discord для наказаний. Отделён от AlertWebhook, чтобы вы могли направлять (гораздо более редкие) наказания в канал, доступный только администраторам. Пусто означает, что ничего не публикуется.
Command string "" Серверная консольная команда, выполняемая над нарушителем при достижении порога — например, banplayer {steamid} или kickplayer {steamid}. Пусто означает, что команда не выполняется.
ClearInventory boolean false Очистить инвентарь нарушителя в рамках наказания.
After.Min number 1 Нижняя граница порога обнаружений.
After.Max number 1 Верхняя граница порога обнаружений.

Порог After

Min и Max задают, сколько обнаружений может накопить игрок, прежде чем сработает наказание. Задание им разных значений делает точный порог непредсказуемым, что и является рекомендуемой настройкой — фиксированное, известное число можно обойти.

  • "Min": 1, "Max": 1 — наказывать при первом обнаружении (значение по умолчанию).
  • "Min": 2, "Max": 5 — наказывать где-то в этом диапазоне.

Значения проверяются на допустимый диапазон при загрузке, так что вы не сможете случайно настроить порог, который никогда не сработает.

💡 Начните с режима только отчётов. Оставьте Command пустым, а ClearInventory в false на первые несколько дней, посмотрите, что приходит в AlertWebhook, и только потом решайте, каким должно быть наказание.

Вебхуки

Оба поля вебхуков должны быть URL вебхуков Discord. Принимаются следующие префиксы:

1
2
3
4
https://discord.com/api/webhooks/...
https://discordapp.com/api/webhooks/...
https://ptb.discord.com/api/webhooks/...
https://canary.discord.com/api/webhooks/...

Всё остальное — включая пустую строку — отбрасывается, с соответствующей записью в журнале плагина. Пустой вебхук никогда не является ошибкой; он просто означает «ничего не отправлять».

🔒 URL вебхука — это учётные данные. Любой, у кого он есть, может писать в ваш канал. Не публикуйте config.json в открытых репозиториях и на скриншотах.

Полный пример

{
  "LicenseKey": "PLACE_YOUR_LICENSEKEY_HERE",
  "Verbose": false,
  "LogToFile": false,
  "Database": {
    "MysqlHost": "localhost",
    "MysqlPort": 3306,
    "MysqlUser": "username",
    "MysqlPass": "password",
    "MysqlDB": "database"
  },
  "DupeDetection": {
    "AlertWebhook": "https://discord.com/api/webhooks/...",
    "Punishment": {
      "PunishmentWebhook": "https://discord.com/api/webhooks/...",
      "Command": "banplayer {steamid}",
      "ClearInventory": true,
      "After": {
        "Min": 2,
        "Max": 4
      }
    }
  }
}

Дальнейшие шаги: