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.
- Распакуйте архив куда угодно.
- Запустите исполняемый файл и пройдите первоначальную настройку.
- Чтобы повторить её, удалите
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)
- Откройте
KF2-Server\KFGame\Config\Config\KFWebAdmin.ini. - В секции
[WebAdmin.WebAdmin]добавьтеAuthenticationClass=WebAdmin.MultiWebAdminAuth. - В web admin появится раздел Administrators; выберите Create Administrator и введите логин.

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

Форма: отображаемое имя, пароль и флаг включения.
- Оставьте 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.