RE:NODE

Глобальные ключи Valheim: listkeys, setkey и ключи боссов

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


Глобальный ключ - это именованный флаг, хранящийся в файле мира. Когда кто-то убивает Eikthyr, мир получает defeated_eikthyr; когда убивают Древнего - defeated_gdking; и так далее вниз по боссам. Эти ключи определяют, какие рейды возможны, и принадлежат миру, а не игроку, поэтому одно убийство на общем сервере продвигает вперёд всю группу, включая друга, который зайдёт через месяц в кожаной броне. С тех пор как в патче 0.217 появились модификаторы мира, настройки сложности тоже хранятся как глобальные ключи. listkeys показывает их, setkey и removekey добавляют и убирают один ключ, а resetkeys убирает все, включая настройки.

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

Что такое глобальный ключ#

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

  • Система рейдов читает ключи боссов и существ, чтобы решить, какие события допустимы, а какие уже выведены из игры.
  • Спавнеры биомов проверяют некоторые ключи, поэтому часть спавнов меняется после гибели босса.
  • Торговцы проверяют ключи для части своего ассортимента.
  • Модификаторы мира сами являются ключами: NoMap, PlayerEvents, EventRate с процентом, PassiveMobs и остальные.

Ключи ставятся событиями в мире. Ключ босса записывается в момент его гибели, кто бы его ни убил и где бы ни была группа. Ничто в ключе не фиксирует, кто присутствовал, поэтому он не может быть "частично" поставлен для игроков, пропустивших бой. Эта модель - тема руководства по прогрессу боссов на общих серверах; а это руководство - про сами ключи и команды.

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

Ключи боссов и существ#

КлючКогда ставитсяЧто меняет для мира
defeated_eikthyrПогибает EikthyrПрекращает рейд кабанов и нек, включает рейд грейдвагов
defeated_gdkingПогибает ДревнийПрекращает рейды грейдвагов и троллей, включает рейд драугров
defeated_bonemassПогибает BonemassПрекращает рейды болотной эпохи, включает рейд дракончиков
defeated_dragonПогибает МодерПрекращает дракончиков, включает рейд фулингов
defeated_goblinkingПогибает ЯглутПрекращает фулингов, включает рейды Gjall и Seeker
defeated_queenПогибает КоролеваПрекращает рейды Туманных земель, включает рейды Charred
defeated_faderПогибает FaderПрекращает рейды Charred
KilledTrollПогибает любой тролльПока Древний жив, включает рейд троллей
killed_surtlingПогибает любой surtlingДелает возможным рейд surtling
KilledBatПогибает любая летучая мышьДелает возможным рейд летучих мышей

Внутренние имена - наследие разработки: Древний - это gdking, Модер - dragon, Яглут - goblinking, и именно эти имена нужны командам. Обратите внимание на непоследовательный регистр в KilledTroll и killed_surtling; вводите ключи в точности так, как их печатает listkeys. Рейды существ проверяют и ключи боссов, поэтому один лишь ключ существа не гарантирует рейд: точное сочетание менялось между версиями.

Две детали, которые вызывают путаницу на серверах:

  • Ключам существ всё равно, кто убил существо. Тролль, погибший под упавшим деревом, или surtling, убитый водой, вытекшей из болота, всё равно ставит ключ. Группы, которые ни разу не сражались с троллем, получают рейд троллей и недоумевают.
  • Ключи после Ashlands зависят от вашей версии. Поздние обновления добавляют собственных боссов и ключи существ. Запустите listkeys в своём мире после большого патча, а не доверяйте никакому списку, включая этот.

Полное соответствие ключей и рейдов, включая небоссовые события, то, как сервер выбирает цель, и что делает stopevent, описано в статье рейды и события на серверах Valheim.

Ключи-модификаторы, которые вы увидите в listkeys#

Запустите listkeys в любом мире, созданном или запущенном с модификаторами после патча 0.217, и увидите не только ключи боссов. Правила мира появляются рядом с ними, потому что игра хранит их именно там. Знание того, что это такое, не даст админу удалить один из них по ошибке при наведении порядка.

КлючТипЧто означает
NoMapПереключательКарта отключена для всех
PlayerEventsПереключательРейды следуют за прогрессом каждого игрока
PassiveMobsПереключательСущества остаются пассивными, пока их не атакуют
NoBuildCostПереключательСтроительство ничего не стоит
NoPortals, NoBossPortalsПереключательОграничения порталов из модификатора portals
TeleportAllПереключательРуды и металлы могут проходить через порталы
EventRateПроцентЧастота рейдов, 100 - обычная скорость
ResourceRateПроцентКоличество добычи из модификатора resources
EnemyDamage, PlayerDamageПроцентСложность боёв
SkillReductionRateПроцентПотеря навыков при смерти
PresetЗначениеПресет, на который настроен мир, если он есть

Переключатели работают самим своим наличием: в мире нет карты, потому что существует NoMap, а удаление ключа возвращает карту. Процентные ключи несут число, где 100 - значение по умолчанию, так что EventRate 50 - вдвое меньше рейдов, а EventRate 200 - вдвое больше. Ползунки сложности в меню настроек мира записывают эти числа за вас, поэтому команды модификаторов безопаснее, чем ввод значения через setkey.

Названия ключей в выводе listkeys могут отличаться регистром от аргументов запуска: -setkey nomap в командной строке и NoMap в списке. Игра считает это одним и тем же переключателем. Значения, которые принимает каждый модификатор в командной строке, и то, что они делают в игре, описаны в руководстве по модификаторам мира по ссылке ниже.

Команды: listkeys, setkey, removekey, resetkeys#

КомандаДействие
listkeysПечатает все установленные сейчас глобальные ключи вместе со значениями
setkey [name]Добавляет ключ
setkey [name] [value]Добавляет ключ со значением, для числовых ключей модификаторов
removekey [name]Убирает один ключ
resetkeysУбирает все ключи - и прогресс, и модификаторы мира

Все четыре входят в набор читов, поэтому сначала нужен devcommands. Это работает в одиночной игре и у хоста мира, запущенного из игры. На ванильном выделенном сервере это не работает даже для аккаунтов из adminlist.txt; почему так и какие ещё есть команды читов, см. в статье devcommands в Valheim: разбор.

code
> listkeys> setkey defeated_eikthyr> removekey KilledTroll

Есть и админские команды, доступные аккаунтам из adminlist.txt без devcommands, которые затрагивают только модификаторы: setworldpreset [name], setworldmodifier [name] [value] и resetworldkeys, который сбрасывает модификаторы к значениям по умолчанию и не трогает ключи боссов. Для правил мира именно они - правильные инструменты, а допустимые значения перечислены в статье модификаторы и пресеты мира Valheim. Менять сложность через setkey с сырыми числами можно, но легко выставить значение, которое меню пресетов никогда бы не предложило.

Изменение ключей на выделенном сервере#

Поскольку ванильные выделенные серверы отказываются от devcommands, есть три способа менять на них ключи.

Server Devcommands

Мод даёт набор читов вашим админам на выделенном сервере, поэтому listkeys, setkey и removekey работают вживую. Это удобный путь для группы, которая уже использует BepInEx. Настройка и права описаны в руководстве по Server Devcommands.

Правка копии мира

Мод не нужен, но придётся немного поплатиться простоем. Этот метод стоит использовать, когда правка нужна один раз.

  1. Корректно остановите сервер и дождитесь сохранения. Сделайте backup.
  2. Скачайте Name.db и Name.fwl из папки worlds_local сервера.
  3. На своём ПК положите их в %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\.
  4. Запустите Valheim, выберите любого персонажа, загрузите мир, откройте консоль клавишей F5 и выполните devcommands.
  5. Выполните listkeys, внесите изменения и снова выполните listkeys, чтобы убедиться.
  6. Выйдите в меню, чтобы мир сохранился, затем загрузите оба файла обратно поверх копии на сервере.
  7. Запустите сервер и проверьте по логу, что мир загружается под обычным именем.

Сервер должен оставаться остановленным с шага 1 до шага 6, иначе его следующее сохранение перезапишет изменённый мир старым. Файловая часть, включая ловушку Steam Cloud на случай, если мир окажется в неверном списке, описана в статье загрузка локального мира на сервер.

Аргумент запуска -setkey

Выделенный сервер принимает -setkey при запуске, его можно повторять, и он задокументирован для переключателей мира: nobuildcost, playerevents, passivemobs и nomap.

bash
./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \    -world "Midgard" -password "herring-barrel-42" -setkey playerevents

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

Когда менять ключи - правильное решение#

Ключи - это прогресс, поэтому их правка - решение группы, а не того админа, который не спит. Вот случаи, когда это явно правильно.

Ключ поставили тест или случайность. Кто-то создал босса, чтобы посмотреть на него, и убил, или шальной тролль погиб под деревом на два биома раньше срока. removekey для поставленного ключа возвращает таблицу рейдов мира туда, где она была. Сделайте это скорее: чем дольше ключ стоит, тем больше рейдов из него выпало.

Мир перенесли или пересоздали. Вы начали заново на новом сиде с той же группой и хотите сохранить уже заработанный прогресс. Поставьте setkey для побеждённых боссов. У персонажей уже есть силы и снаряжение, так что догонять нужно только мир.

Рейды перестали иметь смысл. Группа на Равнинах, а рейды всё ещё грейдварфские, потому что Древний так и не был убит: его пропустили из-за ключа болота, добытого другом. Установка ключа приводит таблицу рейдов в соответствие с тем, где группа на самом деле.

Давний сервер принимает новичков. Вместо удаления ключей ради мягких рейдов для новых игроков включите переключатель playerevents. Тогда рейды выбираются по прогрессу каждого игрока-цели, а ключи мира остаются как есть. Переключатель описан в статье модификаторы и пресеты мира Valheim.

Случай, когда это неверно: ставить ключи, чтобы группа могла пропустить босса. Ключ ничего не открывает игрокам - ни силы, ни рецептов, ни материалов, - так что группа получает более тяжёлые рейды и ни одного инструмента, который должен был к ним прилагаться.

Резервная копия перед правкой ключей#

Правка ключа - это изменение в одну строку с последствиями для всего мира, а у resetkeys нет отмены. Делайте backup перед каждой сессией правки ключей, каким бы способом вы ни пользовались. Пара файлов мира невелика, а её восстановление - единственный способ вернуть настройки модификаторов или список ключей, которые вы не записали. Где лежат файлы и как работают встроенные backup, описано в статье резервные копии Valheim и повреждение мира.

Помогает и сохранять вывод. Вставляйте listkeys в свой Discord до и после каждого изменения; это единственная запись о прогрессе мира, которая не зависит от чьей-то памяти.

На RE:NODE остановка сервера из панели сначала сохраняет мир, файловый менеджер и SFTP дают вам .db и .fwl для способа с правкой копии, а слоты резервных копий на каждом тарифе Valheim позволяют заблокировать backup перед изменением и восстановить его одной кнопкой, если результат не устроил группу.

Устранение проблем при изменении ключей#

`setkey` ничего не говорит, а `listkeys` не показывает ключ. devcommands был выключен, или вы на ванильном выделенном сервере, где его нельзя включить.

Ключ есть, но рейды не изменились. Уже идущий рейд завершается на своих условиях, а система рейдов делает бросок по таймеру: дайте ей несколько игровых дней. Проверьте и playerevents: когда он включён, решает прогресс самого игрока-цели, а не ключ мира.

Изменённый мир вернулся прежним. Сервер сохранил поверх него. Он работал или был запущен до завершения загрузки. Остановите его, загрузите заново, затем запустите.

Настройки сложности пропали. Кто-то выполнил resetkeys. Восстановите backup или заново примените модификаторы командами setworldpreset и setworldmodifier.

У позже пришедшего нет силы босса. Так и должно быть. Силы принадлежат персонажам. Им нужен трофей у камня босса, а трофей может быть со стены трофеев группы или из другого боя.

FAQ#

Что показывает listkeys в Valheim?

Каждый глобальный ключ текущего мира: ключи боссов, такие как defeated_eikthyr, ключи существ, такие как KilledTroll, и ключи модификаторов мира. Для него нужен devcommands, поэтому на ванильном выделенном сервере вы запускаете его на локальной копии мира.

Даёт ли setkey силу босса?

Нет. Ключи - это флаги мира. Сила падшего принадлежит персонажу и получается у камня босса с трофеем. Установка ключа меняет только рейды и другие проверки мира.

Resetkeys - это то же самое, что resetworldkeys?

Нет. resetkeys убирает все ключи вместе - прогресс боссов и модификаторы мира. resetworldkeys - админская команда, которая сбрасывает только модификаторы и сохраняет прогресс.

Действуют ли глобальные ключи на каждого игрока сервера?

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

Можно ли поставить ключ, если никто не убивал босса?

Да: именно это делает setkey, и то же делает созданный босс, который погибает. Ни то ни другое не даёт силу, трофей или материалы, которые должен был дать бой.