Modding:The Remapper/ru: Difference between revisions

From Vintage Story Wiki
(Created page with "Modding:The Remapper")
 
(Created page with "{{Navbox/modding/ru|Vintage Story}}")
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>{{GameVersion|1.15}}
<languages/>{{GameVersion|1.15}}


The Remapper. A server side system that, under ideal circumstances, no one should know it even exists. It's the thing that makes sure your world doesn't go bonkers from installing or removing a mod that adds blocks or items.  
Ремаппер. Серверная система, о существовании которой в идеальных условиях никто не должен даже знать. Это то, что гарантирует, что ваш мир не сойдет с ума от установки или удаления мода, который добавляет блоки или предметы.  


Let's say a user wants to craft your modded in Uberbasket. You would want to write a recipe that tells the game which item should get created. This is done by referencing the items unique code - a sequence of letters, usually a written word separated by dashes.  
Допустим, пользователь хочет создать ваш мод в Uberbasket. Вы хотели бы написать рецепт, который сообщает игре, какой предмет должен быть создан. Это делается путем ссылки на уникальный код элемента - последовательность букв, обычно написанное слово, разделенное тире.  


However those codes do not store very efficiently and thus, in order to reduce memory usage, the engine internally assigns a per-world unique number to each item and block, then stores a mapping from code to id into the save game. Those ids are created when the game loads the blocks and items, and once created, are never deleted from the mapping. Like this, just to give you an idea.
Однако эти коды хранятся не очень эффективно, и поэтому, чтобы уменьшить использование памяти, движок внутренне присваивает каждому элементу и блоку уникальный номер для каждого мира, а затем сохраняет сопоставление кода с идентификатором в сохраненной игре. Эти идентификаторы создаются, когда игра загружает блоки и предметы, и после создания никогда не удаляются из сопоставления. Вот так, просто чтобы дать вам представление.


{| class="wikitable"
{| class="wikitable"
Line 19: Line 19:
|}
|}


Storing this mapping into the save game is necessary, because otherwise, if a new block gets added, for example, before the stick, the numbering would change, and suddenly every stick in the world would turn into coal, every iron ingot would become coal and so on. New blocks can get added and removed either when a new version is out or when the user adds or removes mods.  
Сохранение этого отображения в сейве необходимо, потому что иначе, если добавить новый блок, например, перед палкой, нумерация изменится, и вдруг каждая палка в мире превратится в уголь, каждый железный слиток станет углем. и так далее. Новые блоки могут добавляться и удаляться либо при выходе новой версии, либо при добавлении или удалении модов пользователем.  


==== So how does this affect you, the modder? ====
==== Итак, как это влияет на вас, моддера? ====


Well, the issue arises when you decide to change the code of a block or item. Or when a user wants to remove one of your mods and have the now modded blocks replaced with something else.  
Итак, проблема возникает, когда вы решаете изменить код блока или элемента. Или когда пользователь хочет удалить один из ваших модов и заменить модифицированные блоки чем-то другим.
Let's say your mod added the Uberbasket, but you realize it was not powerful enough and changed it into the Hyperbasket, including its item code, in your latest mod update. As soon as a player updates to your latest version of the mod, all their Uberbaskets will become unknown items, because, remember, the code<->id mapping for the uberbasket is still stored in the savegame.  
Допустим, ваш мод добавил Уберкорзину, но вы понимаете, что она недостаточно мощная, и изменили ее на Гиперкорзину, включая код предмета, в последнем обновлении мода. Как только игрок обновится до вашей последней версии мода, все его убер-корзины станут неизвестными предметами, потому что, помните, сопоставление кода <-> идентификатора для убер-корзины все еще хранится в сохраненной игре.  


Thankfully you can help the player fix this! There are commands (/bir and /iir) that let you edit this table. In this case, the player would need to type
К счастью, вы можете помочь игроку исправить это! Существуют команды (/bir и /iir), позволяющие редактировать эту таблицу. В этом случае игроку нужно будет ввести


<code>/iir remap hyperbasket uberbasket force</code>
<code>/iir remap hyperbasket uberbasket force</code>


What this command effectively does, is to search for "uberbasket" in the mapping table, then replace the id with the hyperbasket id. And so, upon world reload all the uberbaskets will have turned into hyperbaskets.
Эта команда эффективно выполняет поиск «уберкорзины» в таблице сопоставления, а затем заменяет идентификатор на идентификатор гиперкорзины. Итак, при перезагрузке мира все уберкорзины превратятся в гиперкорзины.


==== The remaps.json ====
==== remaps.json ====


For even greater player convenience. You can create a json patch to add an entry to assets/game/config/remaps.json. This file lets you add your remaps and the player will get a user friendly dialog popping up that remappings are required. You might want to use the "remapq" subcommand to reduce chat log spam.  
Для еще большего удобства игрока. Вы можете создать патч json, чтобы добавить запись в assets/game/config/remaps.json. Этот файл позволяет вам добавлять свои переназначения, и игрок получит всплывающее удобное диалоговое окно, в котором требуется переназначение. Возможно, вы захотите использовать подкоманду «remapq», чтобы уменьшить количество спама в журнале чата.  


==== Can I remap 2 blocks/items into 1 block/item ====
==== Могу ли я переназначить 2 блока/предмета в 1 блок/предмет ====


No. By definition, all ids must be unique. If you were to remap 2 to 1, it would mean an item or block would have 2 ids. The game was not designed to handle multiple ids for the same block or item.
Нет. По определению все идентификаторы должны быть уникальными. Если бы вы переназначили 2 на 1, это означало бы, что элемент или блок будут иметь 2 идентификатора. Игра не предназначена для обработки нескольких идентификаторов одного и того же блока или предмета.


{{Navbox/modding|Vintage Story}}
{{Navbox/modding/ru|Vintage Story}}

Latest revision as of 06:46, 16 June 2022

Other languages:

Эта страница проверялась в последний раз для версии Vintage Story 1.15.


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

Допустим, пользователь хочет создать ваш мод в Uberbasket. Вы хотели бы написать рецепт, который сообщает игре, какой предмет должен быть создан. Это делается путем ссылки на уникальный код элемента - последовательность букв, обычно написанное слово, разделенное тире.

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

Code Id
stick 1
coal 2
ingot-iron 3
... ...

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

Итак, как это влияет на вас, моддера?

Итак, проблема возникает, когда вы решаете изменить код блока или элемента. Или когда пользователь хочет удалить один из ваших модов и заменить модифицированные блоки чем-то другим. Допустим, ваш мод добавил Уберкорзину, но вы понимаете, что она недостаточно мощная, и изменили ее на Гиперкорзину, включая код предмета, в последнем обновлении мода. Как только игрок обновится до вашей последней версии мода, все его убер-корзины станут неизвестными предметами, потому что, помните, сопоставление кода <-> идентификатора для убер-корзины все еще хранится в сохраненной игре.

К счастью, вы можете помочь игроку исправить это! Существуют команды (/bir и /iir), позволяющие редактировать эту таблицу. В этом случае игроку нужно будет ввести

/iir remap hyperbasket uberbasket force

Эта команда эффективно выполняет поиск «уберкорзины» в таблице сопоставления, а затем заменяет идентификатор на идентификатор гиперкорзины. Итак, при перезагрузке мира все уберкорзины превратятся в гиперкорзины.

remaps.json

Для еще большего удобства игрока. Вы можете создать патч json, чтобы добавить запись в assets/game/config/remaps.json. Этот файл позволяет вам добавлять свои переназначения, и игрок получит всплывающее удобное диалоговое окно, в котором требуется переназначение. Возможно, вы захотите использовать подкоманду «remapq», чтобы уменьшить количество спама в журнале чата.

Могу ли я переназначить 2 блока/предмета в 1 блок/предмет

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

Icon Sign.png

Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.

Modding
Modding Introduction Getting Started Пакет тем
Content Modding Content Mods Developing a Content Mod Basic Tutorials Intermediate Tutorials Advanced Tutorials Content Mod Concepts
Code Modding Code Mods Setting up your Development Environment
Property Overview ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository