ФЭНДОМ


Всем привет, и сегодня я решил написать гайд для тех, кто хочет научится создавать собственные моды. Предупреждаю, здесь не описана процедура установки tAPI , а лишь рассказано, как с ним обращаться.

Толковый словарик

  • json - основной тип документов, в котором будут описаны аспекты и параметры добавленных объектов
  • cs - тип документа, в котором будет описано поведение объекта(его способности, спаун, и многое другое)
  • ai - искуственный интелект.
  • ID - идентификатор. Они пригодятся вам, при создании предметов, использующих файлы обычной игры. Идентификаторы имеют все предметы, блоки, снаряды, и монстры. Например, обычная стрела имеет идентификатор 1, а горящая - 2. Все идентификаторы можно найти здесь.
  • projectile - снаряд
  • NPC - существо. Это могут быть как и дружественные НИПы, так и монстры с боссами.
  • items - всё, что можно положить в инвентарь!
  • gore - трупы монстров.
  • particles - частицы оружия, снарядов, блоков и монстров.
  • tiles - устанавливаемые объекты
  • walls - стены.

Что ж, теперь, когда вы изучили основные термины и установили tAPI, давайте начнём создавать наш мод!

Создаём первый мод!

Запуск tAPI создаст нужные папки и подпапки. Именно в них мы будем создавать моды. Обычно они находятся

(Windows 7): в C:/Users/*Имя пользователя*/Documents/My Games/Terraria/tAPI/Mods/Local/Sourses

(Windows XP): в C:/Documents And Settings/*Имя пользователя*/Documents/My Games/Terraria/tAPI/Mods/Sourses.

В папке Sourses создаём другую папку - называем её именем нашего мода. Помните, что оно не должно содержать пробелов. Например, "MyMod" или "My_Mod".

Теперь заходим в нашу папку. Здесь у нас будет директория мода. Создаём папки Items, NPCs, Gores, Tiles. Если вы собираетесь начать с предметов, можете создать только папку Items - это ничего не испортит.

Заходим в папку Items. Теперь нужно открыть.. Блокнот. Да, обычного блокнота достаточно для создания нашего мода. После этого впишите в него:

{
"displayName": "Название предмета"
}




Как мы видим, здесь присутсвует переменная - displayName, которая отвечает за отображение названия предметов(Название предмета должно быть на английском языке. Пробелы использовать можно.)

Теперь, давайте добавим ещё одну переменную:

{
"displayName": "Название предмета",
"maxStack": 99
}




Эта переменная отвечает за количество предмета в стаке. 

Между переменными должна стоять запятая. Не ставьте запятую после последней переменной, это может вызвать ошибку! Так же не забудьте, что каждая переменная должна быть в кавычках.

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

Важные переменные(без них мод не будет запускаться)
"displayName": "Название предмета" - имя предмета в игре
"maxStack": 99 - максимальное количество в стаке
"value": [0,0,3,0] - стоимость, выражается в четырёх
 числах. Первая - платина, вторая - золото,
 третья - серебро, четвертая - медь.
 Сейчас в коде стоимость равна трём серебрянным монетам.
"rare": 1 - Редкость
Остальные переменные:
"tooltip": "'Описание'" - здесь вы оставляете описание вашего предмета в игре.
"recipes":
[{
"items": { "Fallen Star": 1 }, 
"tiles": [ "Work Bench" ], 
"creates": 2
}]
Крафт вашей вещи. Данный предмет крафтится из Упавшей звезды на верстаке,
и получается два предмета в результате. 
Вы можете поставить свой крафт, какой пожелаете.
"useStyle": 1 - стиль использования. 1 - махание предметом(кирки, топоры, молоты, мечи).
5 - луки, огнестрелы. 3-кинжал, и т.д.
"useAnimation": 12 - анимация использования.
"useTime": 30 - скорость использования. Чем больше число, 
тем больше скорость(уловили отсылку ;D)
"damage": 12 - урон.
"knockback": 4.5 - отбрасывание. Как и скорость, зависит от числа.
"useSound": 1 - звук. 1 - мечи, 5 луки, 3 кинжалы..(а вообще, включите чувство Колумба, 
и открывайте новые звуки сами =D)
"useTurn": true - автоатака. В дальнейшем - true -да, false - нет.
"melee": true - тип оружия. Он определяет зачарования вашего предмета, бонусы от брони, 
и т.д. melee - ближний бой, ranged - дальний бой, magic - это уже ясно.
"shoot": 14 - стрельба! Создайте свой огнестрел, лук, или даже стреляющий меч! 
Сюда мы вписываем ID нужного на снаряда(projectile), а создавать свой мы пока что не умеем. Найти все проджектайлы можно по ссылке выше.
"shootSpeed": 15 - скорость стрельбы
"useAmmo": 949 - использование снарядов. Сюда мы вписываем ID, только не снаряда, 
а предмета, который будет тратиться при стрельбе. 
Например, ID 949 заставит игрока тратить снежки при стрельбе.
"pick": 15 - делает из вашего предмета кирку! Число задаёт силу кирки.
"axe": 15 - делает из вашего предмета топор. Число задаёт силу топора.
"hammer": 15 - делает из вашего предмета молот. Число задаёт силу молота.
"mana": 4 - Важный параметр любого магического оружия. Его число определяет трату маны за ваше колдунство.




Если вы разобрались в этом, и не умерли от количество полученной информации.. поздравляем! Вы можете называть себя мододелом-рекрутом =D

Если же вы не хотите разбираться во всём этом, просто скопируйте этот код в свой блокнот:

{
"displayName": "Darksteel BraodSword",
"size": [40,60],
"maxStack": 1,
"value": [0,0,80,0],	
"rare": 9,
"scale": 1.2,
"useStyle": 1,
"useAnimation": 20,
"useTime": 50,
"damage": 999,
"knockback": 6.5,
"useSound": 1,
"useTurn": true,
"melee": true,	
"recipes":
[{
"items": { "Dirt Block": 10 }, 
"tiles": [ "Work Bench" ], 
"creates": 1	
}]
}





Это имбо-меч, который создаётся из десяти блоков земли на верстаке и наносит OVER-999 урона. Можете использовать его как исходник.

Далее, нам нужно сохранить наш документ. Для это нажимаем Сохранить как, пишем имя нашего предмета. После имени ставим точку, и пишем json . Тогда файл сохранится не как обычный блокнот, а как файл json! Именно в таких файлах вы будете создавать предметы, монстров, и многое другое!

Теперь в папке есть файл json! Вы создали своё оружие или предмет? Не спешите радоваться. Теперь вам нужно изображение этого оружия. Думаю, сделать его вам не составит труда.

Изображение должно быть в формате png, и называться так же, как вам json файл. Перенесите его в папку Items.

Готово! Пора занятся тестированием!

Для этого нужно запустить ModBuilder. Он прилагается вместе с tAPI. Выбираем наш мод и нажимаем Build. Если вы следовали всем инструкциям урока, то ошибок вы не обнаружите.

TAPI v1

tAPI обыкновенный.

Запускаем tAPI! Нажимаем Mods, выбираем наш мод (двойным кликом), и нажимаем Reload Mods. ВЫ СДЕЛАЛИ ЭТО! Создавайте мир и персонажа, и отправляйтесь истреблять монстров своим.. предметом!

Теперь, когда вы создали свой первый, небольшой мод, у вас может появится множество вопросов. Чтож, давайте начнём разбираться с этой программой, и делать более продвинутые моды! Следующие уроки разделенны на три категории - легкие, средние, и сложные. Выбирайте то, что нужно вам, и обучайтесь этому! Начнём =D

Легко
Создание снаряда

В этом уроке вы научитесь создавать снаряд!

Сначала - что такое снаряды? Снаряды - это особые объекты, которые могут наносить урон игроку и монстрам, или исполнять какие либо другие функции. Например, снарядами считаются вылетевшие из лука стрелы, клинок от Терра Меча, бомбы.

Заходим в папку нашего мода, где уже находится папка Items из базового урока. Теперь, кроме Items нам понадобится папка Projectile. В ней будут хранится проджейктайлы.

Итак, давайте создадим свой снаряд!

По примеру первого урока мы создаём документ в Блокноте, а затем пишем в него следующий код:

{
	"displayName": "Название проджектайла",
	"size": [20, 20],
	"aiStyle": 1,
	"timeLeft": 600,
	"friendly": true,
	"tileCollide": true,
	"damage": 40,
	"ranged": true
}




Что ж, давайте разберёмся, что к чему.

С переменными displayName, damage и ranged мы уже знакомы. 

"size"- эта переменная отвечает за размер. Нет, не за 
размер картинки в игре, а за её невидимый размер. Например, 
маленький меч с большими показателями "size" будет 
задевать собой очень далёких врагов, потому что игра будет считать предмет очень большим.
Надеюсь, вы поняли 0-0
"aiStyle" - это поведение. Вскоре мы встретимся с этой переменной, когда начнём создавать монстров. Например, число 1 даёт снаряду поведение стрелы, 2 - метательное оружие, например сюрикены и ножи, 3 - бумеранга, 20 - бура.
"timeLeft" - это жизнь снаряда. Чем больше значение, тем дольше будет он лететь.
"friendly" - снаряд не может атаковать игрока.
"tileCollide" - снаряд сталкивается с блоками и исчезает(при значении true)



Теперь когда вы создали свой снаряд, приготовьте ему изображение. Помните, что картинки снарядов должны быть направлены остриём наверх.

На прошлом уроке мы изучили две переменные, отвечающие за стрельбу - shoot и shootSpeed. Так вот, чтобы предмет стрелял вашим снарядом, вместо числа(например "shoot": 14), нужно вставить такую строку: "Название мода:Название снаряда". В результате у вас выйдет "shoot": "Название мода:Название снаряда".



Открываем tAPIBuilder и компилируем наш мод. Готово! Отправляемся на тест нашего оружия!

Создание патрон

Наверняка вы в недоумении, что же это значит 0-0.

В прошлом уроке мы создали оружие, которое стреляет нашим снарядом. Теперь давайте создадим предмет - стрелу, которая будет выпускать наш снаряд, и её смогут использовать все стрелковые оружия! Для начала нам нужно подготовить сам снаряд. Теперь создаём предмет, который мы и будем тратить при стрельбе.

{
	"displayName": "Стрела",
	"size": [20,20],
	"maxStack": 250,
	"value": [0,0,5,0],	
	"rare": 1,
	"tooltip": "'Описание'",
	"damage": 9,
	"shoot": "Название Мода:Название снаряда",
	"ammo": 1,
	"ranged": true,
	"consumable": true,
	"shootSpeed": 4
}



Как вы поняли, здесь всё невероятно легко. Но здесь появилась новая переменная - ammo.

Число в этой переменной должно совпадать с ID снарядов(можно посмотреть по ссылке выше). Например, число 1 - это ID стрелы, а значит этим предметом можно стрелять только из луков.

Готово! У нас есть предмет, который мы можем использовать как снаряды!

Теперь давайте сделаем всё тоже самое, только с огнестрельным оружием. Очевидно, что пуля должна лететь гораздо быстрей стрелы, поэтому мы ставим shootSpeed выше пяти. 

Кроме того, теперь значение ammo должно быть не 1, а 14. Тогда вашей пулей смогут стрелять огнестрельные оружия, и только огнестрельные оружия.

Совет: Для полноценного огнестрельного оружия вам понадобится его звук. Для этого в файле самого оружия ставим в useSound 11.

Создание метательного оружия

Итак, мы научились делать и снаряды, и оружия, которые их метают, и используемые в качестве патрон предметы. Сегодня мы попытаемся создать метательное оружие.

Для начала нам понадобится снаряд. Напомню, что у метательных оружий aiStyle - 2.

{
"displayName": "Название предмета",
"size": [50,15],
"maxStack": 250,
"value": [0,0,12,0],	
"rare": 1,
"useStyle": 1,
"useAnimation": 16,
"useTime": 16,
"damage": 8,
"knockback": 5,
"useSound": 1,
"noMelee": true,	
"melee": true,
"useAmmo": "Название мода:Название предмета",	
"noUseGraphic": true,
"shoot": "Название мода:Название снаряда",
"shootSpeed": 6
}

Для урока я набросал небольшой код. Это предмет, которому лучше всего сделать такой же спрайт, как и у снаряда(хотя бы просто для экономии)

Здесь мы снова замечаем новые переменные. noUseGraphic позволяет стрелять без изображения самого предмета. Ведь обычно мы видим, чем машем или стреляем. Теперь мы будем видеть только сам снаряд.

А вот useAmmo как раз таки заставляет нас тратить сам предмета. 

Совет: Вы можете убрать строку с useAmmo и добавить например, трату маны к своему оружию. Тогда вы сможете делать магические метательные оружия наподобии Волшебного кинжала.

Спасибо за внимание. Скоро появятся новые уроки. Вы можете отписаться в комментариях, задавать свои вопросы о создании тех или иных вещей. Всем пока =D

Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.