Confirmedusers
409
edits
(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)) | ||
{ | { | ||
// | // Удалите блок в текущей позиции и поместите его в выбранную позицию | ||
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: | ||
} | } | ||
// | // Сообщите игровому движку и другим моделям поведения блоков, что мы обработали взаимодействие игрока с блоком. | ||
// | // Если бы мы не задали поле обработки, игрок все равно смог бы ставить блоки, если бы они были у него в руках. | ||
handling = EnumHandling.PreventDefault; | handling = EnumHandling.PreventDefault; | ||
return true; | return true; | ||
Line 166: | Line 166: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == Добавление другого блока == | ||
Давайте создадим еще один блок, используя это поведение, но на этот раз мы настроим некоторые дополнительные свойства ... | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
Line 182: | Line 182: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Блок будет толкать два блока вместо одного, и игрок может тянуть его, крадясь, нажимая правую кнопку мыши. | |||
= | = Скачать Мод = | ||
* | * Для VS 1.9: [https://wiki.vintagestory.at/images/7/7b/Advancedmoving_v1.0.0.zip AdvancedMoving_v1.0.0.zip] | ||
* | * Для VS 1.6: [https://wiki.vintagestory.at/images/7/72/AdvancedMoving.zip AdvancedMoving.zip] | ||
{{Navbox/modding|Vintage Story}} | {{Navbox/modding|Vintage Story}} |