Глобальный ключ - это именованный флаг, хранящийся в файле мира. Когда кто-то убивает 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: разбор.
> 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.
Правка копии мира
Мод не нужен, но придётся немного поплатиться простоем. Этот метод стоит использовать, когда правка нужна один раз.
- Корректно остановите сервер и дождитесь сохранения. Сделайте backup.
- Скачайте
Name.dbиName.fwlиз папкиworlds_localсервера. - На своём ПК положите их в
%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\. - Запустите Valheim, выберите любого персонажа, загрузите мир, откройте консоль клавишей
F5и выполнитеdevcommands. - Выполните
listkeys, внесите изменения и снова выполнитеlistkeys, чтобы убедиться. - Выйдите в меню, чтобы мир сохранился, затем загрузите оба файла обратно поверх копии на сервере.
- Запустите сервер и проверьте по логу, что мир загружается под обычным именем.
Сервер должен оставаться остановленным с шага 1 до шага 6, иначе его следующее сохранение перезапишет изменённый мир старым. Файловая часть, включая ловушку Steam Cloud на случай, если мир окажется в неверном списке, описана в статье загрузка локального мира на сервер.
Аргумент запуска -setkey
Выделенный сервер принимает -setkey при запуске, его можно повторять, и он задокументирован для переключателей мира: nobuildcost, playerevents, passivemobs и nomap.
./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, и то же делает созданный босс, который погибает. Ни то ни другое не даёт силу, трофей или материалы, которые должен был дать бой.


