Modding:Basic Block/ru: Difference between revisions

From Vintage Story Wiki
Updating to match new version of source page
(Updating to match new version of source page)
Tags: Mobile edit Mobile web edit
(Updating to match new version of source page)
 
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div class="mw-translate-fuzzy">
{{GameVersion|1.15}}
__FORCETOC__
__FORCETOC__
</div>


Пожалуйста, сначала прочитайте руководство [[Modding:The_Asset_System|Система активов]], если вы этого еще не сделали. Это руководство познакомит вас с основами добавления блоков в игру, используя JSON файлы. Если вы хотите добавить функциональный блок, то вам необходимо изучить руководство по [[Advanced Blocks|Продвинутым блокам]]. С полным списком свойств которые вы можете использовать в json файлах, вы можете ознакомиться [[Block Json Properties|здесь]].
Пожалуйста, сначала прочитайте руководство по {{pll|Modding:Asset_System|системе ассетов}}, если вы этого еще не сделали. Это руководство познакомит вас с основами добавления блоков в игру, используя JSON файлы. Если вы хотите добавить функциональный блок, то вам необходимо изучить руководство по [[Advanced Blocks|Продвинутым блокам]]. С полным списком свойств которые вы можете использовать в json файлах, вы можете ознакомиться [[Block Json Properties|здесь]].


= Простой блок =
= Простой блок =
Line 14: Line 17:
== Текстуры ==
== Текстуры ==


Мы будем использовать эту текстуру для нашего блока: [[File:Gold block.png]].
Мы будем использовать эту текстуру для нашего блока: [[File:Gold block.png]]. <br>
(Для создания собственных текстур вы можете использовать такие программы, как [https://www.dotpdn.com/downloads/pdn.html/ PaintDotNet(бесплатно)], [https://www.piskelapp.com/ Piskel(бесплатно)], или [https://github.com/aseprite/aseprite/ Aseprite (бесплатный открытый исходный код или оплата за предварительно скомпилированный вариант)])


Теперь нам нужно поместить текстуру в нужное место, чтобы мы могли использовать ее позже. Поэтому вам необходимо переименовать текстуру в <code>mygoldtexture.png</code> и поместить ее в <code>assets/mygoldblock/textures/block/</code> в вашем рабочем пространстве (сначала вы должны создать эти папки). <code>mygoldblock</code> будет нашим доменом.
Теперь нам нужно поместить текстуру в нужное место, чтобы мы могли использовать ее позже. Поэтому вам необходимо переименовать текстуру в <code>mygoldtexture.png</code> и поместить ее в <code>assets/mygoldblock/textures/block/</code> в вашем рабочем пространстве (сначала вы должны создать эти папки). <code>mygoldblock</code> будет нашим доменом.
Line 22: Line 26:
Следующее, что нам понадобится, это файл json, который определит свойства блока. Пока мы будем делать это просто и будем работать только с простыми свойствами. Если вы хотите сделать что-то более сложное, вы можете взглянуть на [[Block Json Properties|Обзор свойств блока]].
Следующее, что нам понадобится, это файл json, который определит свойства блока. Пока мы будем делать это просто и будем работать только с простыми свойствами. Если вы хотите сделать что-то более сложное, вы можете взглянуть на [[Block Json Properties|Обзор свойств блока]].


Теперь вам нужно создать новый файл json в вашем редакторе (мы рекомендуем использовать редактор с подсветкой синтаксиса, такой как [https://notepad-plus-plus.org/ Notepad++] или Visual Studio).
Теперь вам нужно создать новый файл json в вашем редакторе (мы рекомендуем использовать редактор с подсветкой синтаксиса, такой как [https://notepad-plus-plus.org/ Notepad++] или [https://www.sublimetext.com/ Sublime Text]. Если у вас будет много файлов JSON или немного C#, то [https://code.visualstudio.com/ Visual Studio Code] тоже хороший выбор).


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
code: "mygoldblock",
"code": "mygoldblock",
creativeinventory: { "general": ["*"] },
"creativeinventory": { "general": ["*"] },
blockmaterial: "Stone",
"blockmaterial": "Stone",
drawtype: "Cube",
"drawtype": "Cube",
textures: {
"textures": {
all: { base: "block/mygoldtexture" }
"all": { "base": "block/mygoldtexture" }
},
},
resistance: 3.5,
"resistance": 3.5,
sounds: {
"sounds": {
"place": "game:block/anvil",
"place": "game:block/anvil",
"walk": "game:walk/stone"
"walk": "game:walk/stone"
Line 69: Line 73:
Кроме того, вам нужно добавить файл <code>modinfo.json</code>, посмотрите [[Game_Content_Mod|это руководство]].
Кроме того, вам нужно добавить файл <code>modinfo.json</code>, посмотрите [[Game_Content_Mod|это руководство]].


Чтобы установить мод, перейдите к [[Vintagestory folder|папке Vintage Story]] и поместите его в папку модов.
Чтобы установить мод, перейдите к [[VintagestoryData folder/ru|папке Vintage Story]] и поместите его в папку модов.


[https://wiki.vintagestory.at/images/4/4c/MyGoldBlockMod.zip MyGoldBlockMod.zip]
[https://wiki.vintagestory.at/images/4/4c/MyGoldBlockMod.zip MyGoldBlockMod.zip]
Line 88: Line 92:
Теперь нам нужно добавить эти новые текстуры в файл json.
Теперь нам нужно добавить эти новые текстуры в файл json.
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
textures: {
"textures": {
all: {  
"all": {  
base: "block/mygoldtexture",
"base": "block/mygoldtexture",
alternates: [{base: "block/mygoldtexture1" }, {base: "block/mygoldtexture2" }, {base: "block/mygoldtexture3" }],
"alternates": [{"base": "block/mygoldtexture1" }, {"base": "block/mygoldtexture2" }, {"base": "block/mygoldtexture3" }],
},
},
},
},
Line 112: Line 116:
Итак, прежде всего нам снова понадобятся новые текстуры: [[File:Myirontexture.png]] [[File:Myirontexture1.png]] [[File:Myirontexture2.png]] [[File:Myirontexture3.png]]
Итак, прежде всего нам снова понадобятся новые текстуры: [[File:Myirontexture.png]] [[File:Myirontexture1.png]] [[File:Myirontexture2.png]] [[File:Myirontexture3.png]]


Теперь нам нужно изменить несколько вещей в нашем файле JSON. Мы можем добавлять все виды различных групп, но пока мы сохраняем это простым. Мы добавляем группу под названием <code>type</code>, с состояниями <code>gold</code> и <code>iron</code>. Вы можете использовать любой код группы, который вы хотите.
Теперь нам нужно изменить несколько вещей в нашем файле JSON. Мы можем добавлять все виды различных [[Modding:Registry_Object_JSON_Parsing/ru|групп]], но пока мы сохраняем это простым. Мы добавляем группу под названием <code>type</code>, с состояниями <code>gold</code> и <code>iron</code>. Вы можете использовать любой код группы, который вы хотите.
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
variantgroups: [
"variantgroups": [
{ code: "type", states: ["gold", "iron"] }
{ "code": "type", "states": ["gold", "iron"] }
],
],
</syntaxhighlight>
</syntaxhighlight>
Line 123: Line 127:


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
texturesbytype: {
"texturesbytype": {
"*-gold": {
"*-gold": {
all: {  
"all": {  
base: "block/mygoldtexture",
"base": "block/mygoldtexture",
alternates: [{base: "block/mygoldtexture1" }, {base: "block/mygoldtexture2" }, {base: "block/mygoldtexture3" }],
"alternates": [{"base": "block/mygoldtexture1" }, {"base": "block/mygoldtexture2" }, {"base": "block/mygoldtexture3" }],
},
},
},
},
"*-iron": {
"*-iron": {
all: {  
"all": {  
base: "block/myirontexture",
"base": "block/myirontexture",
alternates: [{base: "block/myirontexture1" }, {base: "block/myirontexture2" }, {base: "block/myirontexture3" }],
"alternates": [{"base": "block/myirontexture1" }, {"base": "block/myirontexture2" }, {"base": "block/myirontexture3" }],
},
},
}
}
Line 144: Line 148:


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
textures: {
"textures": {
all: {  
"all": {  
base: "block/my{type}texture",
"base": "block/my{type}texture",
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
"alternates": [{"base": "block/my{type}texture1" }, {"base": "block/my{type}texture2" }, {"base": "block/my{type}texture3" }],
},
},
},
},
Line 155: Line 159:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
code: "myshinyblock",
"code": "myshinyblock",
creativeinventory: { "general": ["*"] },
"creativeinventory": { "general": ["*"] },
variantgroups: [
"variantgroups": [
{ code: "type", states: ["gold", "iron"] }
{ "code": "type", "states": ["gold", "iron"] }
],
],
blockmaterial: "Stone",
"blockmaterial": "Stone",
drawtype: "cube",
"drawtype": "cube",
textures: {
"textures": {
all: {  
"all": {  
base: "block/my{type}texture",
"base": "block/my{type}texture",
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
"alternates": [{"base": "block/my{type}texture1" }, {"base": "block/my{type}texture2" }, {"base": "block/my{type}texture3" }],
},
},
},
},
resistance: 3.5,
"resistance": 3.5,
sounds: {
"sounds": {
"place": "game:block/anvil",
"place": "game:block/anvil",
"walk": "game:walk/stone"
"walk": "game:walk/stone"
Line 183: Line 187:


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
variantgroups: [
"variantgroups": [
{ code: "type", states: ["gold", "iron"] },
{ "code": "type", "states": ["gold", "iron"] },
{ code: "condition", states: ["good", "used"]}
{ "code": "condition", "states": ["good", "used"]}
],
],
</syntaxhighlight>
</syntaxhighlight>
Line 192: Line 196:


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
texturesbytype: {
"texturesbytype": {
"*-good": {
"*-good": {
all: {  
"all": {  
base: "block/my{type}texture",
"base": "block/my{type}texture",
},
},
},
},
"*-used": {
"*-used": {
all: {  
"all": {  
base: "block/my{type}texture",
"base": "block/my{type}texture",
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
"alternates": [{"base": "block/my{type}texture1" }, {"base": "block/my{type}texture2" }, {"base": "block/my{type}texture3" }],
},
},
},
},
Line 211: Line 215:
[[File:2017-01-10 15-02-38.png|700px]]
[[File:2017-01-10 15-02-38.png|700px]]


== Пользовательские формы (модели) ==
== Пользовательские модели ==


Чтобы использовать пользовательскую модель, нам нужно сначала ее создать. Движок поддерживает только формат модели / формы, созданные в [[VS Model Creator]].
Чтобы использовать пользовательскую модель, нам нужно сначала ее создать. Движок поддерживает только формат модели / формы, созданные в [[VS Model Creator]].
Line 220: Line 224:
Поэтому мы изменим drawtype с <code>cube</code> на <code>json</code>:
Поэтому мы изменим drawtype с <code>cube</code> на <code>json</code>:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
drawtype: "json",
"drawtype": "json",
</syntaxhighlight>
</syntaxhighlight>


и shape на <code>myshinymodel</code>
и shape на <code>myshinymodel</code>
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
shape: { base: "block/myshinymodel" },
"shape": { base: "block/myshinymodel" },
</syntaxhighlight>
</syntaxhighlight>


Хотя теоретически этого будет достаточно, мы также должны определить, что этот блок не является твердым, чтобы предотвратить графические сбои.
Хотя теоретически этого будет достаточно, мы также должны определить, что этот блок не является твердым, чтобы предотвратить графические сбои.
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
sidesolid: {
"sidesolid": {
all: "false"
"all": "false"
},
},
sideopaque: {
"sideopaque": {
all: "false"
"all": "false"
},
},
</syntaxhighlight>
</syntaxhighlight>
Line 248: Line 252:
Чтобы указать форму по типу, нам нужно удалить свойство <code>shape</code> и заменить его на <code>shapebytype</code>:
Чтобы указать форму по типу, нам нужно удалить свойство <code>shape</code> и заменить его на <code>shapebytype</code>:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
shapebytype: {
"shapebytype": {
"*-good": {
"*-good": {
base: "block/myshinymodel1",
"base": "block/myshinymodel1",
},
},
"*-used": {
"*-used": {
base: "block/myshinymodel",
"base": "block/myshinymodel",
},
},
},
},
Line 267: Line 271:
= Дальнейшее продвижение =
= Дальнейшее продвижение =


Приведенный здесь пример, хотя и выглядит на первый взгляд сложным, показывает только то, на что способны blocktypes в Vintage Story. Настоятельно рекомендуется поэкспериментировать или хотя бы ознакомиться со всеми известными свойствами блоков, прежде чем переходить к кодовым модам. Лучший способ сделать это - просмотреть '''[[Modding:Block Json Properties | Свойства блоков]]''' это страница, которая содержит текущий список всех используемых блоков свойств JSON, которые в настоящее время включены в игру. Большинство свойств в списке также имеют ссылки на файлы, которые можно искать в папке Vintage Story Assets. Если вы не знаете, где это, вы можете найти учебные пособия для каждой операционной системы в [[Modding:The Asset System | Система активов]].  
Приведенный здесь пример, хотя и выглядит на первый взгляд сложным, показывает только то, на что способны blocktypes в Vintage Story. Настоятельно рекомендуется поэкспериментировать или хотя бы ознакомиться со всеми известными свойствами блоков, прежде чем переходить к кодовым модам. Лучший способ сделать это - просмотреть '''[[Modding:Block Json Properties | Свойства блоков]]''' это страница, которая содержит текущий список всех используемых блоков свойств JSON, которые в настоящее время включены в игру. Большинство свойств в списке также имеют ссылки на файлы, которые можно искать в папке Vintage Story Assets. Если вы не знаете, где это, вы можете найти учебные пособия для каждой операционной системы в {{ll|Modding:The Asset System |nsp=0}}.  


Если вы еще этого не сделали, рекомендуется также проверить '''[[Modding:Basic Item | Основа предмета]]''' и '''[[Modding:Basic Entity | Основа существ]]''' страницы, чтобы узнать, как простые элементы и сущности через JSON добавляются в игру.  
Если вы еще этого не сделали, рекомендуется также проверить '''[[Modding:Basic Item | Основа предмета]]''' и '''[[Modding:Basic Entity | Основа существ]]''' страницы, чтобы узнать, как простые элементы и сущности через JSON добавляются в игру.  


Однако, если вы чувствуете, что хотите перейти к модам кода, вам следует начать с настройки своей'''[[Modding: Setting up your Development Environment | Среды разработки]]'''.
Однако, если вы чувствуете, что хотите перейти к модам кода, вам следует начать с настройки своей'''[[Modding: Setting up your Development Environment | Среды разработки]]'''.
= Обучающее видео: Как сделать мод без программирования (на Русском) =
Большая благодарность ZigTheHedge за великолепное подробное видео
<br><youtube>BAr7etxj-1o</youtube> <youtube>fnFFh_enXiA</youtube>


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
{{Navbox/modding|Vintage Story}}
{{Navbox/modding|Vintage Story}}
</div>
</div>
{{Navbox/modding|Vintage Story}}
43,103

edits