RE:NODE

Команда devcommands в Valheim: разбор для админов

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


devcommands - это переключатель, который превращает консоль Valheim из пары админских инструментов в набор разработчиков для читов и отладки: режим бога, полёт, бесплатная стройка, управление временем и погодой, массовые убийства, раскрытие карты. Он работает в одиночной игре и в мире, который вы запускаете из самой игры. На ванильном выделенном сервере он не работает ни у кого - ни у админа, ни у обычного игрока, - и обычный способ получить его там - мод Server Devcommands. Каждая команда из этого набора - инструмент со своей ценой, а на общем мире несколько из них обходятся дорого другим людям: их приручённым животным, предметам, которые они оставили на земле, и ощущению, что убийство босса что-то значило.

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

Где devcommands работает, а где нет#

Valheim делит консоль на три группы. Команды игрока (эмоции, help, ping) работают у всех. Админские команды (kick, ban, unban, banned, save и, с появлением модификаторов мира, setworldmodifier, setworldpreset и resetworldkeys) работают у каждого, чей ID есть в adminlist.txt - они описаны в справочнике админских консольных команд. Третья группа - набор читов, и доступ к нему открывается вводом devcommands.

Где вы играетеРаботает ли devcommands?
Мир в одиночной игреДа
Мир, запущенный из игры (отмечено "Start server")Да, для хоста
Ванильный выделенный сервер, обычный игрокНет
Ванильный выделенный сервер, вы в adminlist.txtНет
Выделенный сервер с Server DevcommandsДа, для админов, которым это разрешает мод

Строка про список админов удивляет больше всего. Права админа на выделенном сервере дают команды модерации, а не читы. Iron Gate уже двигала эту границу: до патча 0.148.6 команда называлась imacheater, а затем её переименовали и ужесточили, кому ею можно пользоваться. Так что если будущий патч изменит это снова, самая быстрая проверка - ввести devcommands на своём сервере и прочитать ответ.

Открыть консоль - отдельный шаг. В свежих версиях в настройках игры есть переключатель консоли разработчика, в более старых нужно добавить -console в параметры запуска Valheim в Steam. В любом случае в игре консоль открывается клавишей F5. Введите devcommands один раз, чтобы включить читы, и ещё раз, чтобы выключить; каждый раз консоль печатает строку с новым состоянием, так что читайте её, а не полагайтесь на догадки.

code
> devcommands> debugmode> fly> devcommands

Эта последовательность включает читы, включает отладочные клавиши, переключает полёт и снова выключает читы. Команды из набора читов, введённые при выключенном devcommands, просто отклоняются.

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

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

Server Devcommands. Мод JereKuusela, который распространяется через Thunderstore, работает под BepInEx и позволяет аккаунтам из adminlist.txt пользоваться набором читов на выделенном сервере. Он также добавляет множество собственных команд, псевдонимов и привязок клавиш. Установка, настройка и то, какие функции требуют мода и на сервере, и на клиенте, описаны в руководстве по Server Devcommands, а сам BepInEx - в статье моды Valheim с BepInEx. Если на вашем сервере играют с кроссплеем и на Xbox, эти игроки не могут ставить моды, но им это и не нужно: мод нужен только админам, которые используют команды.

Локальная копия мира. Остановите сервер, скачайте Name.db и Name.fwl, откройте их в одиночной игре или запустите из игры, внесите изменение через devcommands, корректно выйдите, чтобы мир сохранился, и загрузите пару файлов обратно. Это ванильный способ исправить состояние уровня мира, например глобальные ключи, и для него совсем не нужны моды. Часть про загрузку описана в статье загрузка локального мира на сервер. Подвох в том, что сервер должен быть остановлен всё это время, иначе его следующее сохранение перезапишет вашу правку.

Путь через персонажа. Персонажи хранятся на машине каждого игрока, а не на сервере. Любой может загрузить своего персонажа в мир одиночной игры, включить devcommands, выдать себе что угодно и прийти с этим на ваш сервер. Ванильный сервер не может этого обнаружить. Полезно это знать, чтобы не принять фразу "devcommands на нашем сервере отключён" за "на нашем сервере никто не читерил".

Личные команды: god, ghost, fly, debugmode, nocost#

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

КомандаЧто делает
godЗдоровье никогда не опускается ниже 1. Удары вы всё равно получаете, шатаетесь и теряете выносливость
ghostСущества вас игнорируют
flyВключает и выключает полёт. Пробел - вверх, Ctrl - вниз
debugmodeВключает отладочные клавиши, описанные ниже
nocostСтроительство и крафт не требуют материалов
freeflyОтвязывает камеру от персонажа, для скриншотов
healВосстанавливает здоровье, выносливость и eitr
posВыводит ваши координаты
goto [x] [z]Телепортирует вас по этим координатам

debugmode сбивает с толку тем, что сам по себе ничего не делает. После включения он назначает клавиши: Z переключает полёт, B переключает строительство без затрат, K убивает врагов вокруг вас, а L убирает ближайшие выпавшие предметы. Благодаря этому он удобен для стройки и опасен для всего остального: K и L - это одно нажатие до двух самых разрушительных команд этого руководства, и эти клавиши действуют, пока вы пишете в чат или переименовываете табличку.

Чем это обходится на общем мире:

  • `god` и `ghost` ничего не стоят другим, если только ими не играют. Админ, который сражается с боссом в режиме god, потратил этого босса для всего мира, потому что убийство ставит глобальный ключ для всех. В статье глобальные ключи и setkey объясняется, что этот ключ открывает.
  • `fly` - это способ для админа проверить грифинг, найти потерянное надгробие и осмотреть далёкую базу. По мере полёта он открывает карту, но только вам лично, а не группе.
  • `nocost` - самая дорогая. Постройка, сделанная бесплатно, выглядит так же, как оплаченная. Строить что-то для сервера, например общий узел порталов или причал, стоит только с согласия группы, и скажите об этом у себя в Discord. Бесплатная стройка для собственной базы на сервере, где все остальные добывают железо, - самый быстрый способ опустошить такой сервер.

Команды, затрагивающие мир: killall, removedrops, tame#

Они действуют на то, что существует в мире, а не на вашего персонажа, то есть на то, что принадлежит другим игрокам.

killall убивает всех существ вокруг вас, включая приручённых: волков в загоне, локсов, на приручение которых кто-то потратил вечер, разводимых кабанов. Игроки не страдают. killenemies - более узкая версия, которая не трогает прирученных, а killtame делает обратное. На общем мире почти никогда нет причин вводить killall вместо killenemies.

removedrops удаляет все предметы, лежащие на земле в этой области. Сюда входит куча камня, которую кто-то оставил у печи для обжига, брёвна после большой вырубки и всё, что игрок намеренно положил на землю как склад. Надгробия, сундуки и стойки для предметов он не трогает: это контейнеры, а не выпавшие предметы. Если применять с умом, это инструмент производительности: сотни лежащих предметов в одной зоне стоят владельцу зоны частоты кадров, а серверу - памяти, как объясняется в статье сколько RAM нужно серверу Valheim. Если применить рядом с базой, это потеря, которую кто-нибудь заметит на следующей сессии.

tame приручает всех приручаемых существ поблизости. В дикой местности безвредно, а в чужом загоне выглядит странно.

Безопасная привычка перед любой из них: проверить место через pos, осмотреться, летая с fly, и объявить в чате. Большинство споров вида "админ удалил мои вещи" начинается с того, что админ стоял ближе к базе, чем думал.

Время и погода: tod и env#

Эти две команды существуют для скриншотов, тестов и записи видео. Они в основном косметические.

code
> tod 0.5> env ThunderStorm> tod -1> resetenv

tod принимает число от 0 до 1: 0 и 1 - полночь, 0.5 - полдень, а -1 возвращает управление временем игре. env принудительно задаёт погодное окружение по имени - Clear, Rain, LightRain, ThunderStorm, Misty, Snow, SnowStorm, Ashrain и небеса битв с боссами, такие как Eikthyr или Bonemass, - а resetenv возвращает всё в норму. Имена чувствительны к регистру, поэтому env thunderstorm ничего полезного не сделает.

В многопользовательском мире считайте обе команды изменением того, что показывает ваш клиент, а не серверных часов или погоды. Счётчик дней мира, ночные спавны и погода, которую видят другие игроки, не в вашей власти таким способом; пропускать ночь для группы - для этого и нужны кровати. Если нужно сдвинуть время для всех, честный инструмент - когда все ложатся спать. Не используйте tod, чтобы проверить, "прекращаются ли ночные спавны": то, что вы видите, и то, что запускает сервер, будут расходиться.

Карта: exploremap и resetmap#

exploremap открывает всю карту мира. resetmap стирает её дочерна. Обе действуют только на вашу карту, потому что исследованное хранится в файле вашего персонажа для каждого мира, а не в самом мире.

Поэтому exploremap дёшев для сервера и дорог для вас: однажды увидев весь сид, "развидеть" его нельзя, а команды "вернуть мою старую карту" нет. resetmap тоже не возвращает карту, которая была до exploremap, - он даёт пустую. Если хотите заглянуть и вернуться, единственный путь назад - резервная копия файла персонажа (.fch в папке characters_local на вашей собственной машине, а не на сервере).

Две заметки для общего мира:

  • Картографический стол делится тем, что вы исследовали. Если прочитать карту с него после exploremap, вся карта скопируется тому, кто воспользуется им следующим, и это испортит игру группе, даже если вы хотели сделать это только для себя.
  • Если мир запущен с -setkey nomap, раскрывать нечего: карты нет. Переключатель nomap и остальные правила мира описаны в статье модификаторы и пресеты мира Valheim.

Команды, которые меняют прогресс#

Несколько devcommands меняют то, что дорого или невозможно вернуть обратно:

КомандаЦена на общем мире
setkey, removekey, resetkeysМеняют прогресс по боссам и таблицы рейдов для всех игроков
event, randomevent, stopeventЗапускают или завершают рейды на настоящей базе
spawnДобавляет предметы и существ в общий мир и экономику
raiseskill, resetskillНавсегда меняют навыки персонажа
resetcharacterСтирает данные вашего собственного персонажа
location [name]Размещает локацию; без SAVE навсегда отключает сохранение на время сессии

У этих команд есть свои руководства, потому что у каждой свой способ пойти не так. spawn - имена префабов, количество, аргумент уровня и почему спавн пятидесяти троллей в зоне, которая вам не принадлежит, плохо кончается - разобран в статье команда spawn и ID предметов. Ключи описаны в статье глобальные ключи и setkey, а рейды - в статье рейды и события на серверах.

location заслуживает отдельного предупреждения. Создание локации без аргумента SAVE отключает сохранение на эту сессию как мера предосторожности, а в запущенном мире это значит, что всё, что группа делает до перезапуска, будет потеряно. Не запускайте её в мире, который вам дорог.

Как пользоваться devcommands на групповом сервере и не разрушить его#

Риск не в командах. Риск в их использовании без предупреждения. Краткие домашние правила, записанные там, где группа их видит, предотвращают почти все споры:

  1. Только админы, и поимённо. Набор читов получают только аккаунты из adminlist.txt. Держите этот список коротким и знайте, чьи ID в нём; файл описан в статье adminlist, bannedlist и permittedlist.
  2. Резервная копия перед любым изменением уровня мира. Перед removedrops на базе, setkey, event или любым спавном делайте backup. Две минуты простоя дешевле потерянного мира - о файлах рассказано в статье резервные копии Valheim и повреждение мира.
  3. Скажите в чате. "Очищаю выпавшие предметы у старого лагеря в болоте" - до того, как сделаете. Если кто-то возразит, вы ещё ничего не сделали.
  4. Никаких админских боёв с `god`. Если админ хочет играть, он играет с выключенными читами, на тех же условиях, что и все.
  5. Исправьте, потом компенсируйте. Когда баг или сбой стоил кому-то надгробия или лодки, верните потерянное через spawn и оставьте заметку. Для этого инструмент и нужен.

На RE:NODE консоль сервера в панели выполняет админские команды - save перед рискованным изменением, перезапуск после, - а резервные копии делаются одной кнопкой, включая ручную, которую можно заблокировать от ротации перед админской сессией. Консоль не даёт вам devcommands на ванильном сервере так же, как и консоль в игре: путь по-прежнему лежит через мод.

Устранение проблем с devcommands#

"Dev commands: True" так и не появляется на сервере. Для ванильного выделенного сервера это ожидаемо. Одного присутствия в adminlist.txt недостаточно. Установите Server Devcommands или внесите изменение в локальной копии мира.

Консоль не открывается. Включите консоль разработчика в настройках игры или добавьте -console в параметры запуска Valheim в Steam, затем нажмите F5.

Кажется, `god` ничего не делает. Это переключатель, так что двойной ввод снова его выключает, и он работает только при включённом devcommands. Смотрите на строку подтверждения в консоли, а не полагайтесь на память.

`env` или `tod` ничего не изменили. Неверный регистр в названии окружения, либо вы ожидали, что команда изменит погоду на сервере. Она меняет вашу.

Я не могу строить там, где хочу, даже с `nocost`. nocost убирает требования к материалам, но не защиту ward и не запрет на строительство в подземельях. Ward, на который у вас нет разрешения, по-прежнему вас блокирует.

FAQ#

Могут ли админы использовать devcommands на ванильном выделенном сервере Valheim?

Нет. Список админов даёт kick, ban, save и команды модификаторов мира, но не набор читов. Используйте мод Server Devcommands или отредактируйте локальную копию мира в одиночной игре и загрузите её обратно.

Видят ли другие игроки, когда я включаю devcommands?

В ваниле нет. Другим игрокам ничего не сообщается, а переключатель не хранится в мире, поэтому письменные правила важнее любых технических средств контроля.

Помечает ли использование devcommands моего персонажа?

Постоянной отметки на персонаже или в мире не остаётся. Сохраняется результат: созданные в инвентаре предметы, повышенные навыки и открытая карта уходят вместе с персонажем на каждый сервер, куда вы заходите.

В чём разница между killall и killenemies?

killall убивает всех существ поблизости, включая прирученных животных. killenemies приручённых щадит. На общем мире используйте killenemies или вообще ничего рядом с чужой базой.

Можно ли отменить exploremap?

Командой нельзя. resetmap полностью очищает вашу карту, а не восстанавливает старую. Единственная настоящая отмена - восстановить резервную копию файла .fch вашего персонажа, сделанную до запуска команды.