RE:NODE

Server Devcommands для Valheim: читы на выделенном сервере

Автор Команда RE:NODE
13 мин чтения


На ванильном выделенном сервере команда devcommands ничего не даёт, даже если ваш ID есть в adminlist.txt. Набор читов - god, fly, spawn, goto, killall и остальные - блокируется на выделенных серверах самой игрой. Server Devcommands от JereKuusela - мод, который снимает эту блокировку для админов и только для админов. Коротко: установите его на ПК каждого админа, впишите ID админов в adminlist.txt, а если нужны дополнительные возможности - поставьте мод и на сервер. Это выполнение команд на самом сервере, журнал того, кто что вводил, и возможность запрещать отдельные команды. Обычным игрокам ничего не нужно.

В этой статье разберём, что именно меняет мод, где его нужно устанавливать, файл конфигурации, алиасы и бинды, дополнительные команды и то, как не дать доверенному админу случайно испортить общий мир. Что делают отдельные чит-команды, описано в статье Valheim devcommands: разбор команд, а у синтаксиса spawn есть отдельное руководство. Здесь речь о самом моде и о том, что вокруг него.

Что делает Server Devcommands#

На Thunderstore мод называется JereKuusela-Server_devcommands. На момент написания актуальна версия 1.115, единственная зависимость - BepInExPack для Valheim. Мод обновляется после каждого крупного обновления Valheim, и это важно: инструмент админа, который ломается в день патча, оказывается недоступен именно тогда, когда что-то пошло не так.

Что он меняет, простыми словами:

  • `devcommands` работает на выделенном сервере для любого игрока, прошедшего проверку на админа, то есть чей ID есть в adminlist.txt сервера. Остальным по-прежнему отказывают.
  • Консоль открывается без параметра запуска `-console`, а чит-команды работают и в окне чата, с автодополнением параметров.
  • Несколько команд в одной строке, разделённых ;, и новые команды на основе старых через alias.
  • Бинды клавиш с модификаторами и колёсиком мыши вместо ванильной системы bind.
  • Улучшенные режимы: god, который ещё и убирает расход выносливости, отбрасывание и оглушение; ghost, способный скрывать вас от игроков; fly, позволяющий проходить сквозь стены.
  • Новые команды для телепортации игроков, рассылки сообщений, поиска объектов, отмены спавна и выполнения команд на самом сервере.
  • Журнал: если мод стоит и у админа, и на сервере, каждая команда админа записывается в лог сервера.

Права админа мод никому не выдаёт. Ворота по-прежнему - список админов, и мод его проверяет. Он также не добавляет RCON или веб-консоль: команды по-прежнему вводятся в игре подключённым игроком.

Где его нужно устанавливать#

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

Где установленЧто вы получаете
Только на ПК админаdevcommands с проверкой на админа, алиасы, бинды, команды в чате, улучшенные режимы
На ПК админа и на сервереВсё перечисленное, плюс команды server, журнал команд, find, отключённые команды, отключённые события и глобальные ключи, приватные позиции игроков, видимые админам
Только на сервереНичего полезного - ни у кого нет клиентской половины, чтобы вводить команды
У обычных игроковНе нужен. Они могут заходить с ним и без него

Поскольку игроки без мода могут заходить, Server Devcommands не вызывает кики из-за несовпадения версий, как моды с контентом. Он не использует проверку версий при подключении. Значит, и ничто не мешает админу сидеть на старой копии: если команда ведёт себя по-разному у двух админов, сначала сравните версии.

На клиенте проще всего поставить мод через менеджер модов (r2modman или Thunderstore Mod Manager): найдите "Server devcommands" и установите его в тот профиль, с которым вы играете в Valheim. Если у вашей группы общий профиль, добавьте мод туда; как это сделать, описано в статье профили r2modman для группы. Вручную: в архиве один плагин, положите его в BepInEx/plugins в папке игры.

На сервере сначала должен быть установлен BepInEx: сам пакет, стартовый скрипт start_server_bepinex.sh на Linux и подтверждённый первый запуск, после которого создана папка BepInEx/plugins. Полная инструкция есть в статье моды Valheim с BepInEx на сервере. Затем загрузите тот же файл плагина в папку BepInEx/plugins сервера по SFTP или через файловый менеджер и перезапустите сервер. В логе должна появиться строка о загрузке:

code
[Info   :   BepInEx] Loading [ServerDevcommands 1.115.0]

Если этой строки нет, значит, BepInEx вообще не запущен - проверьте команду запуска, прежде чем разбираться с модом.

Как пройти проверку на админа#

Проверка использует собственный adminlist.txt сервера, по одному ID в строке. На сервере только для Steam это 17-значный SteamID64. На сервере с кроссплеем ID содержат префикс платформы, а мод принимает и ID в стиле PlayFab:

adminlist.txt
// Steam-only server76561198012345678// Crossplay serverSteam_76561198012345678

Подходит тот формат, который сервер выводит в лог при подключении игрока, поэтому копируйте его оттуда, а не с какого-нибудь сайта. Все три файла списков подробно описаны в статье adminlist, bannedlist и permittedlist.

Если включён auto_devcommands (по умолчанию так и есть), мод сам выполняет devcommands, когда вы заходите на сервер, где проходите проверку. В консоли вы увидите сообщение о том, что читы включены. Если его нет:

  1. Убедитесь, что ваш ID есть в adminlist.txt в каталоге сохранений сервера, а не в копии где-то в другом месте. Сервер перечитывает файл, но для надёжности зайдите заново.
  2. Введите devcommands сами и прочитайте ответ. Отказ означает, что проверка не пройдена; полное отсутствие ответа - что мод не загружен на вашем клиенте.
  3. Убедитесь, что вы играете на ПК. Игроки на Xbox не могут устанавливать моды, поэтому на сервере с кроссплеем всем этим могут пользоваться только админы с ПК.

Файл конфигурации и dev_config#

Настройки хранятся в BepInEx/config/server_devcommands.cfg, который создаётся при первом запуске. Копия админа управляет клиентским поведением, копия сервера - серверными возможностями. Менять настройки можно тремя способами: отредактировать файл, воспользоваться модом Configuration Manager в игре или применить собственную команду мода:

code
dev_config auto_god 1dev_config auto_flyserver dev_config disable_events 1

dev_config [name] [value] задаёт значение; если значение опущено, параметр переключается, 0 выключает, 1 включает. С приставкой server команда меняет копию на сервере, для чего мод должен стоять и на сервере.

Настройки, к которым вы с наибольшей вероятностью обратитесь:

НастройкаПо умолчаниюЧто делает
auto_devcommandstrueВыполняет devcommands при входе, если вы админ
auto_god, auto_ghost, auto_fly, auto_nocost, auto_debugmodefalseАвтоматически включают соответствующий режим
god_no_stamina, god_no_knockback, god_no_staggertrueЧто ещё убирает god
ghost_invisibilityfalseСкрывает админа в режиме ghost от других игроков
fly_no_clipfalseПолёт сквозь ландшафт и постройки
access_private_cheststrueАдмин может открывать приватные сундуки других игроков
access_warded_areastrueАдмин может строить и взаимодействовать внутри зон варда
max_undo_steps50Сколько действий помнит undo
disable_eventsfalseНа сервере: отключает случайные набеги
server_chatfalseНа сервере: позволяет серверу отправлять сообщения в чат
command_log_formatсм. нижеФормат серверного журнала команд; пустое значение отключает его

Два пункта требуют пояснения. access_private_chests и access_warded_areas по умолчанию включены - это нужно админу, который наводит порядок после грифинга, - но это также значит, что админ может обчистить чью угодно базу, а вард этого не заметит. Если ваши админы одновременно обычные игроки в том же мире, вопрос доверия стоит один раз обсудить вслух. Что защищают варды, когда админ не вмешивается, описано в статье варды и грифинг.

server_chat добавляет на сервер фиктивного клиента, чтобы сам сервер мог писать в чат. В документации мода отмечен побочный эффект: с боссов выпадает лишний предмет, потому что игра считает фиктивного клиента игроком при расчёте добычи. Не включайте этот параметр без реальной необходимости.

Алиасы, несколько команд и бинды#

Три возможности превращают консоль из ящика с читами в инструмент админа.

Несколько команд. Всё, что разделено ;, выполняется по порядку. wait добавляет паузу в миллисекундах:

code
god; ghost; flybroadcast center Restart in 5 minutes; wait 240000; broadcast center Restart in 1 minute

Алиасы. alias [name] [command] создаёт новую команду. Маркер подстановки, по умолчанию $$ (настройка substitution), заменяется тем, что вы введёте после имени алиаса:

code
alias admin god; ghost; fly; nocostalias say broadcast center $$alias heal dmg $$ -1000

После этого admin включает весь набор, а say Raid at the main base выводит сообщение в центре каждого экрана. Алиасы сохраняются в собственном конфиге админа, поэтому они следуют за админом, а не за сервером.

Бинды. Мод заменяет ванильный bind версией с поддержкой клавиш-модификаторов: bind [key,modifier1,modifier2] [command]. Именно версия с модификаторами делает бинды безопасными: одиночную клавишу легко случайно нажать посреди боя, а сочетание клавиши с leftalt - нет.

code
bind keypad1,leftalt adminbind keypad2,leftalt calm 30bind keypad3,leftalt removedrops

Есть и бинды на колёсико мыши, они включаются параметром mouse_wheel_bind_key, по умолчанию равным none.

Дополнительные команды, о которых стоит знать#

Мод добавляет или расширяет длинный список команд; help в игре выводит всё, что есть в вашей версии, с описаниями. Вот те, что оправдывают своё место на общем сервере.

КомандаЧто делает
playerlistИгроки онлайн с их ID, персонажами и позициями
tp [players] [x,z,y or player]Телепортирует игроков по имени, ID или маске
goto [x,z,y], goto [name], goto lastТелепортирует вас к координатам, к игроку или обратно
pos [player]Позиция игрока
broadcast [center/side] [message]Сообщение всем игрокам
message [players] [center/side] [message]Сообщение отдельным игрокам
calm [radius]Успокаивает разъярённых существ поблизости (по умолчанию 20)
repair [radius]Чинит ближайшие постройки (по умолчанию 20)
dmg [players] [amount]Наносит урон игрокам; отрицательное значение лечит
inventory [clear/refill/repair/upgrade]Управление вашим собственным инвентарём
find [id] [limit]Находит объекты по ID и отмечает их на карте (нужна копия на сервере)
search_id [term]Поиск по ID объектов, полезно перед spawn
undo / redoОтменяет или возвращает недавние действия, например спавн
event [event] [x] [z]Запускает событие в указанном месте
move_spawn [x,z,y]Переносит стандартную точку появления в мире
resetdungeonСбрасывает ближайший лагерь или подземелье - удаляет всё внутри
seedВыводит сид мира
server [command]Выполняет команду на самом сервере

find отвечает на больше всего обращений в поддержку. find Cart ставит метку на каждую телегу в мире, так вы найдёте ту, которую кто-то бросил в болоте. Второй по полезности - undo: ошибочно набранный spawn Troll 50 отменяется тремя нажатиями клавиш вместо боя.

resetdungeon и move_spawn - команды противоположного рода: набрать легко, откатить трудно. Используйте их только после резервной копии.

Как ограничить команды на групповом сервере#

Если мод установлен на сервере, вы можете запретить отдельные команды для всех админов, кроме нескольких названных root-пользователей. Эта возможность делает Server Devcommands пригодным для сервера с несколькими админами разного темперамента.

  • Отключённые команды. disable_command хранит список команд, которые могут выполнять только root-пользователи. Пример из документации мода: server dev_config disable_command event, который не даёт админам запускать набеги вручную.
  • Root-пользователи. Список SteamID через запятую в server_devcommands.cfg на сервере, в разделе консоли. Root-пользователи могут выполнять отключённые команды. Задать его через dev_config намеренно нельзя - файл нужно править на сервере, чтобы админ не мог повысить себя из игры.
  • Отключённые глобальные ключи. server dev_config disable_global_key [keys] не даёт убийствам боссов устанавливать названные ключи. Без аргументов команда выводит уже отключённые. Что открывает каждый ключ, объясняет статья глобальные ключи и setkey.
  • Отключённые события. server dev_config disable_events 1 полностью отключает случайные набеги. Для более тонкой настройки обычно лучше подходит ванильный модификатор мира raids - см. набеги и события на серверах.

Разумная схема для группы с одним владельцем и двумя помощниками: владелец - единственный root-пользователь; в список отключённых на сервере входят команды, которые нельзя отменить или которые меняют весь мир, - resetdungeon, move_spawn, killall, resetkeys, removekey, setkey, exploremap, resetmap, - а у помощников остаются tp, goto, calm, repair, kick и broadcast.

code
server dev_config disable_command resetdungeonserver dev_config disable_command move_spawn

После этого откройте server_devcommands.cfg на сервере и посмотрите, что сохранила ваша версия: добавил ли второй вызов команду в список или заменил его, - и при необходимости поправьте список там.

Журнал команд#

Когда мод стоит и у админа, и на сервере, каждая команда записывается в консоль и лог сервера в формате из command_log_format:

code
{player_id}/{character_name} ({pos_x:F0}, {pos_z:F0}, {pos_y:F0}): {command}

Так получаются строки вроде Steam_76561198012345678/Astrid (512, -1340, 31): spawn Wolf 4. Это единственная запись о том, кто что заспавнил, и первое, что нужно читать, когда база оказывается забита троллями. На панелях хостинга она пролетает в консоли вместе со всем остальным; в RE:NODE у живой консоли есть командная строка и история, а файлы логов лежат в файловом менеджере в корне сервера, так что по ним можно искать задним числом (консоль и файлы в руководстве по панели).

Учтите, что журнал фиксирует только команды админов, у которых тоже стоит мод, - а поскольку именно мод даёт им читы, это все, кто имеет значение. Если задать command_log_format пустым, журнал отключится. Веских причин для этого почти не бывает.

Устранение неполадок#

`devcommands` отвечает, что это не разрешено. Проверка на админа не пройдена. ID в adminlist.txt не совпадает с тем, что сервер пишет в лог о вас: чаще всего это отсутствующий префикс платформы на сервере с кроссплеем или лишний пробел.

Ничего не происходит, когда я ввожу команду. Мод не загружен на вашем клиенте. Запускайте игру кнопкой "Start modded" в менеджере модов, а не через Steam, иначе BepInEx вообще не загружается.

Команды `server` возвращают ошибку. На сервере нет мода или не работает BepInEx сервера. Проверьте в стартовом логе строку о загрузке.

`find` ничего не находит на сервере. Нужна копия на сервере; без неё клиент видит только зоны, загруженные вокруг вас.

Команда работает у одного админа, а у другого нет. Разные версии мода, либо один из них root-пользователь, а второй упирается в список отключённых команд.

Всё сломалось после патча Valheim. Дождитесь обновления мода, затем обновите клиентские и серверную копии вместе. Общий порядок действий описан в статье что делать, когда обновление мода всё ломает.

FAQ#

Нужно ли всем игрокам устанавливать Server Devcommands?

Нет. Он нужен на ПК только тем админам, которые хотят пользоваться командами. Игроки без него заходят как обычно и не получают кик, потому что мод не сверяет версии между клиентами и сервером.

Можно ли использовать его на сервере с кроссплеем?

Да, для админов с ПК. Игроки на Xbox не могут устанавливать моды, поэтому команд у них не будет, но они всё равно могут заходить на сервер с модом, так как для остальных он не обязателен на клиенте.

Безопасно ли оставлять его на давно идущем мире?

Сама установка ничего в мире не меняет. Другое дело, что с ним делают админы: неосторожные killall или resetdungeon не отменить. Делайте резервную копию перед любой сессией с большим объёмом админской работы и используйте список отключённых команд для помощников.

Работает ли он вместе с World Edit Commands и другими модами JereKuusela?

Да. Другие моды JereKuusela, такие как World Edit Commands и Infinity Hammer, написаны так, чтобы работать рядом с ним, а их команды можно использовать в алиасах и биндах, как любые другие. Устанавливайте каждый на те стороны, которые указаны на его странице: правила у них не одинаковые.

Почему с босса иногда выпадает два трофея?

На некоторых серверах причина в включённом server_chat: фиктивный чат-клиент учитывается как игрок при расчёте добычи с босса. Если вы этого не хотели, отключите его командой server dev_config server_chat 0.