Confirmedusers
13,514
edits
(Created page with "Самый простой предмет требует двух вещей: * '''code''': уникальный идентификатор элемента; * '''texture''':...") |
Mirotworez (talk | contribs) No edit summary |
||
(17 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> | |||
{{GameVersion|1.15}} | |||
__FORCETOC__ | __FORCETOC__ | ||
Во-первых, если вы этого еще не сделали, прочитайте руководство | Во-первых, если вы этого еще не сделали, прочитайте руководство по {{pll|Modding:Asset System|системе ассетов}}. Это руководство должно познакомить вас с основами использования файлов JSON для добавления предметов в игру. Если вы хотите добавить предмет с функциональностью, вам следует обратиться к учебнику для [[Advanced Items|Продвинутых предметов]]. На этой странице содержится полный список всех свойств, которые можно определить в файле json - [[Item Json Properties|Свойства предметов]]. Добавление блока в игру аналогично добавлению предмета, поэтому, если вы уже научились это делать, большинство следующих шагов должны быть знакомы. | ||
== Простой предмет == | == Простой предмет == | ||
Line 6: | Line 8: | ||
== Рабочее пространство == | == Рабочее пространство == | ||
Сначала создайте папку для размещения файлов мода, которая станет вашим рабочим пространством, где мы создадим сам мод. Нам придется добавить несколько папок в основную папку, чтобы сохранить наши файлы организованными. Мод-загрузчик Vintage Story требует, чтобы некоторые файлы были помещены в определенные папки, чтобы загрузчик мог найти то, что ему нужно для загрузки. Для этого мода все будет идти в нашей папке ресурсов пространства имен. Для нас эта папка является <code>assets/basicwand/</code>. ''Примечании'': пространство имен не обязательно должно совпадать с именем мода. | Сначала создайте папку для размещения файлов мода, которая станет вашим '''рабочим пространством''', где мы создадим сам мод. Нам придется добавить несколько папок в основную папку, чтобы сохранить наши файлы организованными. Мод-загрузчик Vintage Story требует, чтобы некоторые файлы были помещены в определенные папки, чтобы загрузчик мог найти то, что ему нужно для загрузки. Для этого мода все будет идти в нашей папке ресурсов пространства имен. Для нас эта папка является <code>assets/basicwand/</code>. ''Примечании'': пространство имен не обязательно должно совпадать с именем мода. | ||
Все моды, которые добавляют контент, должны находиться в папке <assets> и в своем собственном каталоге пространства имен. Пространство имен для нас это <code>basicwand</code>. Это соглашение предотвращает возникновение проблем у нескольких модов, использующих один и тот же код товара. Например, если вы включите расширенную информацию отладки с помощью команды <code>.edi</code>, вы можете заметить, что все элементы в игре имеют префикс <code>game:</code>, который является пространством имен для всего ванильного контента. | Все моды, которые добавляют контент, должны находиться в папке <assets> и в своем собственном каталоге пространства имен. Пространство имен для нас это <code>basicwand</code>. Это соглашение предотвращает возникновение проблем у нескольких модов, использующих один и тот же код товара. Например, если вы включите расширенную информацию отладки с помощью команды <code>.edi</code>, вы можете заметить, что все элементы в игре имеют префикс <code>game:</code>, который является пространством имен для всего ванильного контента. | ||
Line 13: | Line 15: | ||
== Добавление текстуры == | == Добавление текстуры == | ||
Давайте начнем с текстуры, которую мы будем использовать: [[File:Wand.png]] | Давайте начнем с текстуры, которую мы будем использовать: [[File:Wand.png]] <br> | ||
(Для создания собственных текстур вы можете использовать такие программы, как [https://www.dotpdn.com/downloads/pdn.html/ PaintDotNet(бесплатно)], [https://www.piskelapp.com/ Piskel(бесплатно)], [https://www.gimp.org/GIMP (бесплатно)] или [https://github.com/aseprite/aseprite/ Aseprite (бесплатно с открытым исходным кодом или платите за предварительно скомпилированную версию)]) | |||
Чтобы использовать текстуру, нам нужно поместить ее в нужное место (чтобы загрузчик модов мог ее найти). Для этого мы создадим папку <code>textures/item/</code>. Помните, это находится в нашей папке с пространством имен, поэтому полный путь - <code>assets/basicwand/textures/item/</code>. | Чтобы использовать текстуру, нам нужно поместить ее в нужное место (чтобы загрузчик модов мог ее найти). Для этого мы создадим папку <code>textures/item/</code>. Помните, это находится в нашей папке с пространством имен, поэтому полный путь - <code>assets/basicwand/textures/item/</code>. | ||
== Создание файла предмета == | == Создание файла предмета == | ||
Чтобы фактически создать элемент "палка", нам нужно создать файл JSON внутри папки <code>itemtypes/</code>. В этом примере мы назовем его <code>wand.json</code>. Этот файл содержит основные свойства нашего предмета. | Чтобы фактически создать элемент "палка", нам нужно создать файл JSON внутри папки <code>itemtypes/</code>. В этом примере мы назовем его <code>wand.json</code>. Этот файл содержит основные свойства нашего предмета. (мы рекомендуем использовать редактор с подсветкой синтаксиса, например [https://notepad-plus-plus.org/ Notepad++] или [https://www.sublimetext.com/ Sublime Text]. Если вы собираетесь использовать много файлов JSON или немного C#, то [https://code.visualstudio.com/ Visual Studio Code] также является хорошим выбором). | ||
Самый простой предмет требует двух вещей: | Самый простой предмет требует двух вещей: | ||
Line 24: | Line 27: | ||
* '''texture''': какие текстуры применить к предмету. | * '''texture''': какие текстуры применить к предмету. | ||
Мы также должны включить это свойство, чтобы позволить нам получить доступ к нашему предмету в творческом инвентаре: | |||
* '''creativeinventory''': | * '''creativeinventory''': определяет вкладки творческого инвентаря, на которых должен отображаться элемент. | ||
На данный момент наши значения для каждого свойства просты: | |||
* <code>code</code>: <code>wand</code> | * <code>code</code>: <code>wand</code> | ||
* <code>texture</code>: <code>item/wand</code> ( | * <code>texture</code>: <code>item/wand</code> (Обратите внимание, что указанный путь '''не''' включает в себя <code>texture</code>.) | ||
* <code>creativeinventory</code>: <code>general</code> | * <code>creativeinventory</code>: <code>general</code> | ||
'' | ''Окончательные'' значения нашего JSON выглядят так: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
Line 40: | Line 43: | ||
}, | }, | ||
texture: { | texture: { | ||
base: "item/wand" | base: "game:item/wand" | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Вы могли заметить, что свойства <code>creativeinventory</code> и <code>textures</code> не так просты, как значения <code>code</code>. Причину различий в <code>textures</code> и <code>creativeinventory</code> мы не рассмотрим в этом руководстве, а обсудим в расширенных руководствах. | |||
== | == Наименование предмета == | ||
Теперь у нас почти все готово, кроме имени. Для этого мы создаем другой файл JSON: <code>lang/en.json</code>. Игра использует этот файл, чтобы найти название предмета. Языковые файлы имеют очень простой синтаксис: <code>"item-code": "Item Name"</code>. | |||
Для нашей палочки это означает, что наш файл должен выглядеть примерно так: | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
Line 57: | Line 60: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == Вывод == | ||
Вместе, файлов предметов и языков технически достаточно, чтобы быть полноценным модом. Но они не добавляют ''классную'' палочку, j которой я сказал в начале этого урока. Чтобы добавить больше свойств, мы должны перейти к руководству [[Modding: Advanced Item|Продвинутый предмет]], где я объясняю, как мы можем сделать вещи намного круче, чем просто создать жалкую палку. | |||
{{Navbox/modding|Vintage Story}} | {{Navbox/modding|Vintage Story}} |