Modding:Adding Block Behavior/ru: Difference between revisions

From Vintage Story Wiki
no edit summary
(Created page with "// Удалите блок в текущей позиции и поместите его в выбранную позицию")
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 11: Line 11:
В этом уроке мы создадим новое поведение(Behavior), которое можно будет прикреплять к блокам, чтобы сделать их подвижными, нажав правую кнопку мыши.
В этом уроке мы создадим новое поведение(Behavior), которое можно будет прикреплять к блокам, чтобы сделать их подвижными, нажав правую кнопку мыши.


== Подготовка ==  
== Подготовка ==  


Этот руководство по '''code mod''' требует наличия среды разработки. Если у вас её еще нет, прочтите руководство по {{ll|Modding:Setting up your Development Environment|настройке среды для разработки}}. Кроме того, вам понадобятся активы (тип блока, текстура и lang-файл). Вы можете либо создать свой собственный, либо воспользоваться готовыми: [https://wiki.vintagestory.at/images/2/2f/Moving_-_No_CS_File.zip Moving - No CS File.zip]
Этот руководство по '''code mod''' требует наличия среды разработки. Если у вас её еще нет, прочтите руководство по {{ll|Modding:Setting up your Development Environment|настройке среды для разработки}}. Кроме того, вам понадобятся активы (тип блока, текстура и lang-файл). Вы можете либо создать свой собственный, либо воспользоваться готовыми: [https://wiki.vintagestory.at/images/2/2f/Moving_-_No_CS_File.zip Moving - No CS File.zip]
Line 45: Line 45:
     public override bool OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling)
     public override bool OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling)
     {
     {
         // Найдите позицию цели
         // Найдите выбранную позицию
         BlockPos pos = blockSel.Position.AddCopy(blockSel.Face.Opposite);
         BlockPos pos = blockSel.Position.AddCopy(blockSel.Face.Opposite);
         // Можем ли мы разместить здесь блок?
         // Можем ли мы разместить здесь блок?
         if (world.BlockAccessor.GetBlock(pos).IsReplacableBy(block))
         if (world.BlockAccessor.GetBlock(pos).IsReplacableBy(block))
         {
         {
             // Remove the block at the current position and place it at the target position
             // Удалите блок в текущей позиции и поместите его в выбранную позицию
             world.BlockAccessor.SetBlock(0, blockSel.Position);
             world.BlockAccessor.SetBlock(0, blockSel.Position);
             world.BlockAccessor.SetBlock(block.BlockId, pos);
             world.BlockAccessor.SetBlock(block.BlockId, pos);
Line 159: Line 159:
             }
             }


             // Notify the game engine other block behaviors that we handled the players interaction with the block.
             // Сообщите игровому движку и другим моделям поведения блоков, что мы обработали взаимодействие игрока с блоком.
             // If we would not set the handling field the player would still be able to place blocks if he has them in hands.
             // Если бы мы не задали поле обработки, игрок все равно смог бы ставить блоки, если бы они были у него в руках.
             handling = EnumHandling.PreventDefault;
             handling = EnumHandling.PreventDefault;
             return true;
             return true;
Line 166: Line 166:
</syntaxhighlight>
</syntaxhighlight>


== Adding another block ==  
== Добавление другого блока ==  


Let's create another block using this behavior, but this time we will configure some additional properties ...
Давайте создадим еще один блок, используя это поведение, но на этот раз мы настроим некоторые дополнительные свойства ...


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
Line 182: Line 182:
</syntaxhighlight>
</syntaxhighlight>


The block will be pushed two blocks instead of one and the player can pull it by sneaking while right clicking.
Блок будет толкать два блока вместо одного, и игрок может тянуть его, крадясь, нажимая правую кнопку мыши.


= Mod Download =  
= Скачать Мод =  


* for VS 1.9: [https://wiki.vintagestory.at/images/7/7b/Advancedmoving_v1.0.0.zip AdvancedMoving_v1.0.0.zip]
* Для VS 1.9: [https://wiki.vintagestory.at/images/7/7b/Advancedmoving_v1.0.0.zip AdvancedMoving_v1.0.0.zip]
* for VS 1.6: [https://wiki.vintagestory.at/images/7/72/AdvancedMoving.zip AdvancedMoving.zip]
* Для VS 1.6: [https://wiki.vintagestory.at/images/7/72/AdvancedMoving.zip AdvancedMoving.zip]






{{Navbox/modding|Vintage Story}}
{{Navbox/modding|Vintage Story}}
Confirmedusers
409

edits