ФЭНДОМ


Гайд для чайников

Все, наверное, хотели бы создать свою собственную экипировку, оружия на Terraria 1.3.0.8. Ну так вот, это стало возможно! Для того, чтобы создать свой мод, нужно;

  • tModLoader. (скачать - ищите на terrariago (чтобы скачать, нужна регистрация на сайте));
  • Terraria 1.3.0.8. (скачать -  ищите на terrariago (чтобы скачать, нужна регистрация на сайте));

Не забудьте прочитать советы в конце!

Начало.

Главное меню

Главное меню

-

-


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

Documents/MyGames/Terraria/ModSources

В конечной папке, создайте папку с именем Вашего мода:

Пример: 

UrilosMode

В папке "Имя Вашего мода" создайте папки:

  • Items;
  • Armor;
  • Tile;
  • Walls;
  • NPCs;

И прочее...

Далее в папке "Имя Вашего мода" создаём файл "build.txt"

В него прописываем:

author = "Имя автора";

version = "Текущая версия мода";

displayName = "Дополнительное название мода"; 


После этого создаем файл "Имя Вашего мода".cs (в папке Items) и там прописываем следующее:

using System;

using Terraria;          //то, что мы будем использовать

using Terraria.ModLoader;



namespace UriloSMode {         //имя Вашего мода

public class UriloSMode : Mod           //имя мода и к какой группе относится

{

public override void SetModInfo(out string name, ref ModProperties properties)     //начало описание мода (инфо-ция о моде)

{

name = "UriloSMode";            //тут пишем имя мода

properties.Autoload = true;      //при включени мода, он будет автоматически включатся? В значении TRUE - да

}

}

Создали? Молодец. Приступайте к гайдам.

Совет:

Всё, что Вы напишете, будет видно в самой игре.

Гайд 1. Начало начал.

-

- В этом уроке, мы "синтезируем" новый предмет.

Обычный предмет: (Пример из Example Mod)
EquipMaterial

Спрайт к крафту

using System; 

using Terraria;        //то что мы будем использовать

using Terraria.ModLoader;

using ID;



namespace ExampleMod.Items  //название Вашего мода

{

public class EquipMaterial : ExampleItem //название предмета и в какой группе находится

{

public override void SetDefaults() //подсказки, описания

{

base.SetDefaults();

item.name = "Equipment Item"; //название предмета

item.toolTip = "Used to craft equipment"; //первое описание предмета

item.toolTip2 = ""; //второе описание

}



public override void AddRecipes() //рецепт крафта

{

ModRecipe recipe = new ModRecipe(mod); //начало рецепта крафта

recipe.AddIngredient(Terraria.ID.ItemID. Wood, 10); //крафт предмета (10 дерева);

recipe.AddTile(Terraria.ID.TileID.Workbenches); //на чём крафтится предмет (все верстаки)

recipe.SetResult(this); // сколько получается, в значении "this" - крафтится 1 предмет

recipe.AddRecipe(); //конец крафта

}

}

}

Этот предмет находится в папке Items;

Гайд 2. Палка-махалка.

-

-

В этом гайде, Вы научитель создавать первое оружие ближнего боя - меч.
LightSword

Пример моего меча

Совет:

Меч и спрайт должны находиться в папке Weapons, которая находится в папке Items;  


using System;

using Microsoft.Xna.Framework;

using Terraria;                               //то что мы будем использовать

using Terraria.ID;

using Terraria.ModLoader;



namespace ExampleMod.Items.Weapons  //расположение файла

{

public class ExampleSword : ModItem     //название файла и к какой группе относится

{

public override void SetDefaults()         //начало описаний и характеристик

{

item.name = "Example Sword";        //имя предмета

item.damage = 50;             //урон меча

item.melee = true;           //оружие ближнего боя? В значении TRUE - да.

item.width = 40;                //размер меча в игре в вертикаль

item.height = 40;             //размер меча в игре в горизонталь

item.toolTip = "This is a modded sword.";       //описание меча

item.useTime = 20;     //скорость использования

item.useAnimation = 20;              //скорость махания 

item.useStyle = 1;                 //в значении 1 - '''''меч''''', кирка или топор

item.knockBack = 6;           //отбрасывание

item.value = 10000;          //цена

item.rare = 2;              //редкость

item.useSound = 1;            //звук использования. В значении 1 - '''''меч''''', кирка или топор

item.autoReuse = true;       //автоатака. В значении TRUE - да

}



public override void AddRecipes()            //начало крафта

{

ModRecipe recipe = new ModRecipe(mod);          //начало рецепта крафта

recipe.AddIngredient(null, "ExampleItem", 10);           //крафт предмета. NULL - означает, что предмета нет в оригинальной версии, крафтится из 10 "Экспериментальных предметов"

recipe.AddTile(null, "ExampleWorkbench");        //на чем крафтится, крафтится на "Экпериментальном верстаке"

recipe.SetResult(this);    //сколько получается, в значении THIS - 1.

recipe.AddRecipe();         //конец крафта

}



public override void MeleeEffects(Player player, Rectangle hitbox)   //эффекты

{

if (Main.rand.Next(3) == 0)

{

int dust = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, mod.DustType("Sparkle"));

}

}



public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit)

{

target.AddBuff(BuffID.OnFire, 60);  //баффы

}

}

}              //об этом позже


Этот предмет находится в подпапке Weapons; (Items - Weapons)

Гайд 3. Ноу проблем, или как добыть деревянную руду.

По названию гайда понятно, что мы поговорим в данном гайде о создании своей кирки.

"Название кирки".cs и "Название кирки".png должны быть в папке Items! А не в подпапке Weapons.

ДА БУДЕТ КОД!

Поехали?!


using System;

using Microsoft.Xna.Framework;

using Terraria;                         //то, что мы будем использовать

using Terraria.ModLoader;



namespace ExampleMod.Items          //расположение кирки

{

public class ExamplePickaxe : ModItem          //название кирки и к какой группе относится

{

public override void SetDefaults()               //начало характеристик и описания

{

item.name = "Example Pickaxe";        //имя кирки

item.damage = 20;           //наносимый урон кирки

item.melee = true;         //оружие ближнего боя? В значении TRUE - да

item.width = 40;          //размер кирки в игре в вертикаль

item.height = 40;       //размер кирки в игре в вертикаль

item.toolTip = "This is a modded pickaxe.";         //описание кирки

item.useTime = 10;              //скорость использования

item.useAnimation = 10;        //скорость махания

item.pick = 220;               //мощность кирки. (БЕЗ %)

item.useStyle = 1;          //в значении 1 - меч, кирка или топор

item.knockBack = 6;      //отбрасывание

item.value = 10000;        //цена

item.rare = 2;         //редкость

item.useSound = 1;        //звук использования. В значении 1 - меч, кирка или топор

item.autoReuse = true;          //автоатака. В значении TRUE - да

}

public override void AddRecipes()           //начало рецепта крафта 

{

ModRecipe recipe = new ModRecipe(mod);             //начало крафта

recipe.AddIngredient(null, "ExampleItem", 10);           //что нужно для крафта. В Гайде 1, я говорил, что значит NULL

recipe.AddTile(null, "ExampleWorkbench");           //на чем крафтиться

recipe.SetResult(this);                 //сколько получается. В значении TRUE - да

recipe.AddRecipe();           //конец крафта

} 

public override void MeleeEffects(Player player, Rectangle hitbox)          //эффекты, ожидайте в следующем

{

if (Main.rand.Next(10) == 0)

{

int dust = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, mod.DustType("Sparkle"));

}

}

}

}

Подсказки к гайду 3, гайду 2:
*Также после item.damage, можно написать код item.crit, которая отвечает за критический удар.(БЕЗ %), (пример: item.crit: 25;).
*Также можно написать бафы, а точнее дебаффы, которые будет накладывать меч, кирка, топор или прочие инструменты / оружия. (Пример:


public override void AddRecipes()

{

ModRecipe recipe = new ModRecipe(mod);

recipe.AddIngredient(null, "IngotBalance", 10);

recipe.AddTile(Terraria.ID.TileID.WorkBenches);

recipe.SetResult(this);

recipe.AddRecipe();

}

public override void MeleeEffects(Player player, Rectangle hitbox)

{

if (Main.rand.Next(3) == 0)
{

}
}

public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit)

{

target.AddBuff(BuffID.Confused, 150);   public override void AddRecipes()

{

ModRecipe recipe = new ModRecipe(mod);

recipe.AddIngredient(null, "IngotBalance", 10);

recipe.AddTile(Terraria.ID.TileID.WorkBenches);

recipe.SetResult(this);

recipe.AddRecipe();

}

public override void MeleeEffects(Player player, Rectangle hitbox)

{

if (Main.rand.Next(3) == 0)

{

}

}

public override void OnHitNPC(Player player, NPC target, int damage, float knockback, bool crit)

{

target.AddBuff(BuffID.Confused, 150);    //какие дебаффы накладывает оружие. Прописываем BuffID, затем название дебаффа (пример: BuffID.Frostburn, 150), а после на какое время.

}

}

}


Гайд 4. Вспышка на каникулах.

В этом гайде мы поговорим о эффектах, которые были упомянуты в предыдущих гайдах.

Для начала создадим новую папку Dusts.

Для того, чтобы задать эффект нужно прописать следующее:


int dust = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, mod.DustType("Название эффекта"));

Это нужно прописать в орудии!(кирка, топор и т.д.);

В коде написанно, это эффект,по вектору - 2. размер по вертикали и горизонтали.

Далее нужно в папке Dusts создать спрайт и "Имя эффекта".cs.


using System;

using Microsoft.Xna.Framework;

using Terraria;                    //то, что мы будем использовать

using Terraria.ModLoader;



namespace UriloSMode.Dusts            //расположение эффекта

{

public class Hira : ModDust            //имя эффекта и в какой группе находится

{

public override void OnSpawn(Dust dust)          //спаун эффектов

{

dust.velocity *= 1f;               //скорость появления

dust.noGravity = true;           //подвержен гравитации? В значении TRUE - да

dust.noLight = true;         //не светится? В значении TRUE - да

dust.scale *= 0.5f;         //масштаб эффекта (размер)

}



public override bool Update(Dust dust)

{

dust.position += dust.velocity;        //позиция, то есть отскакивает от орудия?

dust.rotation += dust.velocity.X * 0.10f;         //скорость вращения

dust.scale *= 0.99f;          //не изменяйте, иначе эффект появляться не будет

float light = 0.75f * dust.scale;     //время свечения, 0.75% умножить на 0.99%

Lighting.AddLight(dust.position, light, light, light);

if (dust.scale < 0.125f)            //макс. масштаб. В данном случае 1.25%

{

dust.active = false;      //эффект активный? В значении FALSE - нет

}

return false;

}

}

}

Спрайт у эффекта должен быть примерно таким: (можно нарисовать свой, только наподобе этого)

Hira
, то есть три раза. (можно разные).



Гайд 5. МАЙН КРЫЛЫШКА, КАНЕШ

По названию понятно, что речь в этом гайде будет идти о КРЫЛЫШКА!

Крылья находятся в папке Items!

Пример кода крыльев из Example Mod:


using System;

using System.Collections.Generic;

using Terraria;             <span style="font-weight:normal;">//то, что мы будем использовать</span>

using Terraria.ID;

using Terraria.ModLoader;



namespace ExampleMod.Items               <span style="font-weight:normal;">//расположение файла</span>

{

public class ExampleWings : ModItem            <span style="font-weight:normal;">//название крыльев и в какой группе находятся</span>

{

public override bool Autoload(ref string name, ref string texture, IList<EquipType> equips)                //автозагрузка, имя текстурки, активное снаряжение (можно, а точнее нужно не изменять)

{

equips.Add(EquipType.Wings);          //активно? Да, оставляем без изменений

return true;

}



public override void SetDefaults()           //начало описания и характеристик

{

item.name = "Example Wings";              //имя крыльев</span>

item.width = 22;               //размер крыльев в игре в вертикаль

item.height = 20;           //размер крыльев в игре в горизонталь

item.toolTip = "This is a modded wing.";        //описание

item.value = 10000;      //цена

item.rare = 2;         //редкость

item.accessory = true;        <//предмет - аксессуар? В значении TRUE - да

}

public override void UpdateAccessory(Player player)

{

player.wingTimeMax = 180;       //максимальное время полета

}



public override void VerticalWingSpeeds(ref float ascentWhenFalling, ref float ascentWhenRising,

ref float maxCanAscendMultiplier, ref float maxAscentMultiplier, ref float constantAscend)     //начало описания скорости крыльев, падения крыльев (вертикаль) I

{

ascentWhenFalling = 0.85f;        //подъем при падении                                              I

ascentWhenRising = 0.15f;      //подъем при восхождении (когда летишь вверх)        I<span зависит
maxCanAscendMultiplier = 1f;  //сколько может подниматься?(вверх)                        Iот макс. времени 

maxAscentMultiplier = 3f;          //какой максимальный множитель поднятия?weight:normal;">полета.</span>

constantAscend = 0.135f;        //постоянная величина поднятия                                I

}



public override void HorizontalWingSpeeds(ref float speed, ref float acceleration)   //начало описания скорости крыльев, падения крыльев (горизонталь) -

{

speed = 9f;       //скорость

acceleration *= 2.5f;     //ускорение

}



public override void AddRecipes()           //начало рецепта крафта

{

ModRecipe recipe = new ModRecipe(mod);         //начало крафта

recipe.AddIngredient(null, "EquipMaterial", 60);             //что нужно для крафта

recipe.AddTile(null, "ExampleWorkbench");       //на чем крафтится предмет

recipe.SetResult(this);             //сколько получается? В значении THIS - 1, если два, то (this, 2)

recipe.AddRecipe();          //конец крафта
}

}

}

К спрайту крыльев и "Имя крыльев".cs, должна прилагаться текстурка, которая называется "Имя крыльев"_Wings.png.

Спрайт выглядит примерно вот так:


ExampleWings Wings









Гайд 6. Как правильно рубить деревянную руду, а также правильно открываем солнце.

В этом гайде речь будет идти о топоре и молоте. Вообще, тут ничего сложного нету, просто добавляется новая строчка: item.axe = 220; или item.hammer = 200;

Вот пример: (МолотоТопора из ExampleMode


using System;

using Microsoft.Xna.Framework;          //то, что мы будем использовать

using Terraria;

using Terraria.ModLoader;



namespace ExampleMod.Items           //расположение файла

{

public class ExampleHamaxe : ModItem       <//имя файла и в какой группе находится

{

public override void SetDefaults()              //начало описаний и характеристик
{

item.name = "Example Hamaxe";           //имя нашего топора (на самом деле это МолотоТопор, ну ладно)))

item.damage = 25;       //урон молотоТопопа

item.melee = true;        //оружие ближнего боя? В значении TRUE - да

item.width = 40;        //размер молотоТопора в игре в вертикаль

item.height = 40;      //размер молотоТопопа в игре в горизонталь

item.toolTip = "This is a modded hamaxe.";     описание</span>

item.useTime = 15;                //скорость использования
item.useAnimation = 15;          //скорость махания
item.axe = 30;                     //мощность топора

item.hammer = 100;          //мощность молота</span>

item.useStyle = 1;             //В значении 1 - меч.

item.knockBack = 6;      //отбрасывание

item.value = 10000;          //цена

item.rare = 2;         //редкость

item.useSound = 1;    //звук использования. В значении 1 - меч

item.autoReuse = true;           //автоатака. В значении TRUE - да

}



public override void AddRecipes()               <//начала рецепта крафта

{

ModRecipe recipe = new ModRecipe(mod);              //начало крафта

recipe.AddIngredient(null, "ExampleItem", 10);          //что нужно для крафта

recipe.AddTile(null, "ExampleWorkbench");                //на чём крафтится молотоТопор

recipe.SetResult(this);               //сколько получается. В значении THIS - 1. Если хотите 2, то прописываем '''(this, 2)'''

recipe.AddRecipe();        //конец рецепта

}



public override void MeleeEffects(Player player, Rectangle hitbox)             //эффекты

{

if (Main.rand.Next(10) == 0)

{

int dust = Dust.NewDust(new Vector2(hitbox.X, hitbox.Y), hitbox.Width, hitbox.Height, mod.DustType("Sparkle"));               //эффект "Спаркл"

}

}

}

}

Молот и топор находятся в папке Items! А не в папке Weapons!


Гайд 7. Рум-Рум-Рум, Машинка!

В этом гайде Вы научитесь создавать Бур и пилу. (Кто, что хочет).

Вот пример из UriloSMode:


using System;

using Terraria;     //то, что мы будем использовать

using Terraria.ModLoader;



namespace UriloSMode.Items       <span style="font-weight:normal;">//расположение бура</span>

{

public class LightDrill : ModItem           <span style="font-weight:normal;">//название предмета и в какой группе находится</span>

{

public override void SetDefaults()          <span style="font-weight:normal;">//начало описаний и характеристик</span>

{

item.name = "Light Drill";                        <span style="font-weight:normal;">//название бура</span>

item.damage = 21;          <span style="font-weight:normal;">//урон бура</span>

item.melee = true;              <span style="font-weight:normal;">//орудие ближнего боя? В значении TRUE - да.</span>

item.width = 20;                       <span style="font-weight:normal;">//размер бура в игре в вертикаль</span>

item.height = 12;           <span style="font-weight:normal;">//размер бура в игре в горизонталь</span>

item.toolTip = "This is a Zerokk'a";                <span style="font-weight:normal;">//описание предмета</span>

item.useTime = 7;                                  <span style="font-weight:normal;">//скорость использования</span>

item.useAnimation = 7;                              <span style="font-weight:normal;">//скорость махания</span>

item.channel = true;                                      

item.noUseGraphic = true;               

item.noMelee = true;                       <span style="font-weight:normal;">//орудие не ближнее? В значении TRUE - да</span>

item.pick = 250;                        <span style="font-weight:normal;">//мощность бура</span>

item.tileBoost++;

item.useStyle = 5;                        <span style="font-weight:normal;">//стиль использования. В значении 5 - бур</span>

item.knockBack = 6;                     <span style="font-weight:normal;">//отбрасывание</span>

item.value = Item.buyPrice(0, 22, 50, 0);                          <span style="font-weight:normal;">//цена</span>

item.rare = 9;                          <span style="font-weight:normal;">//редкость</span>

item.useSound = 23;                    <span style="font-weight:normal;">//звук использования</span>

item.autoReuse = true;                 <span style="font-weight:normal;">//автоатака. В значении TRUE - Да</span>

item.shoot = mod.ProjectileType("LightDrill");                      <span style="font-weight:normal;">//расположение ПРОДЖЕКТАЙЛА (следующий гайд)</span>

item.shootSpeed = 40f;                               <span style="font-weight:normal;">//скорость использования ПРОДЖЕКТАЙЛА</span>

}



public override void AddRecipes()                   <span style="font-weight:normal;">//начало рецепта крафта</span>

{

ModRecipe recipe = new ModRecipe(mod);                 <span style="font-weight:normal;">//начало крафта</span>

recipe.SetResult(this);                  <span style="font-weight:normal;">//сколько получается</span>

recipe.AddRecipe();                       <span style="font-weight:normal;">//конец крафта</span>

}

}

}

Пилу сделать очень просто. Просто нужно добавить item.axe = 100; (пример, вместо 100 можно подставить любое число). 

Спрайт пилы/бура должны смотреть направо!

Гайд 8. Создание ПРОДЖЕКТАЙЛА.

Вот и пришло время, создать папку в папкe Items, которая носит название Projectiles.

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

В папке создаём имя предмета, которому принадлежит проджектайл. Например, у меня есть БУР, который называется LightDrill, то и проджектайл будет называться LightDrill.

Вот пример кода:


using System;

using Microsoft.Xna.Framework;

using Terraria;                          //то, что мы будем использовать

using Terraria.ID;

using Terraria.ModLoader;



namespace UriloSMode.Projectiles              <span style="font-weight:normal;">//расположение проджектайла</span>

{

public class LightDrill : ModProjectile                      <span style="font-weight:normal;">//название проджектайла и в какой группе находится</span>

{

public override void SetDefaults()               <span style="font-weight:normal;">//начало описаний и характеристик</span>

{

projectile.name = "Light Drill";                  <span style="font-weight:normal;">//название предмета</span>

projectile.width = 22;                    <span style="font-weight:normal;">//размер проджектайла в вертикаль</span>

projectile.height = 22;                   <span style="font-weight:normal;">//размер проджектайла в горизонталь</span>

projectile.aiStyle = 20;                            <span style="font-weight:normal;">//стиль проджектайла</span>

projectile.friendly = true;                        <span style="font-weight:normal;">//дружелюбный? То есть не трогает нипов?</span>

projectile.penetrate = -1;                      <span style="font-weight:normal;">//мощность пробивания</span>

projectile.tileCollide = false;                  //сталкивается с предметами?

projectile.hide = true;               .//скрывать проджектайл?

projectile.ownerHitCheck = true;              //атакует владельца? В значении TRUE - нет

projectile.melee = true;                             //орудие ближнего боя? 

}



public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)               //бафы

{

if (Main.rand.Next(10) == 0)

{

target.AddBuff(BuffID.OnFire, 180, false);

}

}

}

}

'''''Проджектайл должен быть таким же, как и сам предмет, только должен смотреть наверх!'''''

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


Советы:

  • Файлы крафта находятся в типе: .cs (C#);
  • К предмету должен прилагаться спрайт, в типе .png.(Рисунок);
  • Предмет и спрайт должны называться ОДИНАКОВО.
  • Всё должно быть РОВНЕНЬКО, как на слайдшоу(1 картинка).
  • После каждой строчки, ставьте знак ";".
    • Как правильно писать код.
    • Пример папок в папке "Имя Вашего мода".
    • Пример папок в папке "Items".
    • Обязательный файл в папке "Items", в котором должно быть указан ваш мод.

Гайды будут восполняться каждый день!!(не волнуйтесь, я с 10 этажа не спрыгну))));

Автор гайда: Zerokk(Сергей Мандрыгин). 4ум Iа4е4ий (обсуждение) 14:15, октября 28, 2015 (UTC)

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