Свой сервер

KF2 Magicked Admin: чат-бот, статистика и команды сервера

KF2 Magicked Admin - инструмент для выделенных серверов Killing Floor 2: скриптовое управление, статистика и чат-бот. Он общается с сервером только через web admin, поэтому не меняет ранговый или кастомный статус сервера. Игрокам и админам доступны внутриигровые команды, программа ведёт статистику по убийствам, доши, смертям и времени игры, показывает живые таблицы лидеров на экране приветствия, здоровается с игроками и умеет автоматически выполнять команды по таймеру, на определённой волне, при открытии торговца или входе игрока. Её можно запускать прямо на сервере или удалённо, и управлять сразу несколькими серверами. На странице описана версия 0.1.5 (выпущена 25 октября 2019). Если сервера у вас ещё нет, начните с руководства по SteamCMD.

Возможности

  • Таблицы лидеров в реальном времени на экране приветствия и в чате.
  • Статистика убийств, доши, смертей и времени игры.
  • 18 команд для игроков и 24 команды для администраторов.
  • Автоматические команды по времени, волне, входу игрока или состоянию торговца.
  • Чтение сообщений игроков с вашего рабочего стола.
  • Работает в режимах weekly, survival и endless (для endless и weekly нужен небольшой патч web admin, см. ниже).

Загрузка и запуск

Исполняемый файл для Windows выложен на странице релизов проекта на GitHub. На Linux и macOS автор советует запускать из исходников: установите зависимости командой pip3 install -r requirements.txt и запустите python3 -O magicked_admin/magicked_admin.py.

  1. Распакуйте архив куда угодно.
  2. Запустите исполняемый файл и пройдите первоначальную настройку.
  3. Чтобы повторить её, удалите conf/magicked_admin.conf.

Есть и образ Docker. Подключите папку конфигурации к /magicked_admin/conf, откройте порт 1880, дайте контейнеру один раз завершиться (он создаст конфиг по умолчанию), отредактируйте конфиг и запустите контейнер снова.

Как пользоваться командами

Чат-команды начинаются с !. В скриптах и цепочках команд ! не пишется. Параметры подбираются по наилучшему совпадению: biotics найдёт kf-biotics-lab. Любая команда принимает -h (справка), -q (без вывода) и -p (дополнить вывод, чтобы скрыть строку с именем). В сообщениях \n - перевод строки, \t - табуляция.

Команды игроков

КомандаНазначение
!commandsСписок команд для игроков
!stats, !kills, !dosh <user>Общая статистика, убийства и доши игрока (по умолчанию ваши)
!map, !record_waveСтатистика текущей карты и рекордная волна
!top_kills, !top_dosh, !top_timeОбщие таблицы лидеров
!top_wave_kills, !top_wave_doshКто больше всех убил или заработал за волну, обычно с !start_trc
!server_kills, !server_doshИтоги по серверу
!scoreboard (!sb)Полная таблица, удобна при более чем шести игроках
!game, !maps (-a), !player_countСведения об игре, ротация карт, число игроков

Команды администраторов

КомандаНазначение
!op / !deop <user>Выдать или снять права админа
!say <message>Вывести сообщение в чат
!players, !kick, !banСведения об игроках, кик, бан (в web admin есть ошибка: баны остаются после удаления, поэтому команды разбана нет)
!length, !difficultyДлина или сложность следующей игры
!game_mode, !load_map, !restartСразу сменить режим или карту либо перезапустить
!password [--set] on/offВключить, выключить или задать пароль игры
!start_jc / !stop_jcКоманда при каждом входе игрока
!start_wc / !stop_wcКоманда на заданной волне; отрицательные номера считаются от волны босса
!start_tc / !stop_tcКоманда через заданное время, с -r - по повторам
!start_trc / !stop_trcКоманда при открытии торговца
!silentСкрыть вывод в чат, оставив действие команд
!run <script>Выполнить скрипт из conf/scripts
!marquee, !enforce_dosh, !update_motd, !reload_motdБегущая строка, кик игроков с доши выше лимита, обновление и перезагрузка экрана приветствия

Токены для команд при входе: %PLR (ник), %KLL (убийства), %DSH (доши), %BCK («back» для вернувшихся), %DRK и %KRK (места в рейтингах), %TME (время игры), %TRK и %SES (сессии).

Таблицы лидеров на экране приветствия

Создайте файл conf/server_name.motd с парами %PLR и %SCR, а также %SRV_K и %SRV_D для итогов сервера. Обновляйте командой !update_motd kills|dosh|time, лучше по таймеру, например !start_tc 300 -- update_motd dosh. Существующее приветствие будет перезаписано, а !reload_motd перечитывает шаблон без перезапуска.

Пример таблицы лидеров на экране приветствия

Экран приветствия сервера Survival Suicidal с созданной таблицей лидеров.

Скрипты

Скрипты выполняют команды по порядку, строки с ; - комментарии. Скрипт server_name.init в conf/scripts запускается при старте бота для этого сервера, остальные запускаются по требованию через !run. Примеры из руководства:

  • Показывать лучшего по доши за волну при открытии торговца и обновлять таблицу каждые пять минут: start_trc -- top_wave_dosh и start_tc 300 -- update_motd dosh.
  • Рекламировать группу на волне босса: start_wc -w -1 -- say Join our steam group.
  • Напоминать, что на сервере есть бот: start_tc -rt 800 -- say I'm a bot, type !commands.
  • Приватная комната одной командой: тишина, пароль, сложность, длина и загрузка карты.

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

В conf/magicked_admin.conf у каждого сервера своя секция вроде [server_one] с параметрами address (адрес web admin со схемой), username, password и game_password. Для бота лучше завести отдельную учётную запись: её имя видно в чате.

Переименование бота (multi-admin)

  1. Откройте KF2-Server\KFGame\Config\Config\KFWebAdmin.ini.
  2. В секции [WebAdmin.WebAdmin] добавьте AuthenticationClass=WebAdmin.MultiWebAdminAuth.
  3. В web admin появится раздел Administrators; выберите Create Administrator и введите логин.

Раздел Administrators в web admin

Пункт Administrators появляется в боковом меню web admin после включения multi-admin.

  1. Укажите отображаемое имя (его видно в чате), пароль и включите учётную запись.

Форма создания администратора

Форма: отображаемое имя, пароль и флаг включения.

  1. Оставьте Access Order как Deny/Allow без шаблонов, сохраните и впишите данные в конфиг. Логин чувствителен к регистру - частая причина неудачного входа.

Режимы endless и weekly

Вне режима survival страницы web admin отличаются, поэтому доступен ограниченный набор функций. Патчер web admin из проекта это исправляет, но ему нужны чистые файлы в KF2Server/KFGame/Web/ServerAdmin. Если вы их правили, сначала проверьте файлы сервера командой app_update 232130 validate или примените diff вручную. Патчер запускается с интерфейсом или без него с параметром --target /путь/к/kf2/server.

Несколько серверов, переименование и сброс

Для каждого дополнительного сервера скопируйте весь блок [server_one] и измените address, username и password. Чтобы переименовать сервер, смените название секции и переименуйте server_one.motd и server_one.init. Для сброса статистики удалите соответствующий файл conf/*.sqlite.

Известные проблемы и планы

  • !difficulty и !length могут быть забыты web admin; сразу после них используйте !restart.
  • В версии 0.1.6 планируются алиасы команд и скрипты на Lua. Перевод ведётся на Crowdin.
  • Проект с открытым кодом (MIT), автор - th3-z, есть несколько соавторов.

Вопросы и ответы

Меняет ли Magicked Admin ранговый или кастомный статус сервера?
Нет. Программа работает только через web admin, поэтому ранговый сервер остаётся ранговым. Поддерживаются режимы weekly, survival и endless.
Можно ли управлять несколькими серверами из одной установки?
Да. Для каждого дополнительного сервера скопируйте секцию [server_one] из conf/magicked_admin.conf и поменяйте address, username и password.
Как сбросить статистику?
Удалите файл conf/<имя сервера>.sqlite и запустите программу снова - будет создана чистая база.
Почему !difficulty и !length иногда не срабатывают?
Web admin забывает эти изменения после некоторых других правок. Сразу после них выполните !restart.