ФЭНДОМ


Всем привет!

Привет, привет всем! Надеюсь вы помните мой старый гайд по tModLoader.

И так вот, я представляю Вам более подробный гайд.

Ну начинаем!

Начало.

Итак, мы установили tModLoader и в папке Terraria (Мои документы), появилась новая папка ModLoader. В этой папке находите папку Mod Sources. Заходите и началось.

В этой папке создаем папку с именем Вашего мода. Пример:

Мои документы/ My Games/ Terraria/ ModLoader/ Mod Sources/ UriloSMod.

В конечной папке создаем несколько папок (Items, Gores. Projectiles. NPCs, Tiles, Walls) и файлы - build, "Имя Вашего мода".cs. 

Build с типом txt. В нем пишем:

author = "Ваше имя или ник" - автор.

version = "Ваше версия" - версия.

displayname = "Имя мода" - имя мода, который будет отображаться, если его опубликовать.

Файл build нужен полностью для публикации.

Другой файл в папке Вашего мода - "Имя Вашего мода".cs. В нем прописываем:

using Terraria.ModLoader;                       //все что мы используем.
 
namespace "Имя Вашего мода"                     //расположение.
{
  public class "Имя Вашего мода" : Mod          //имя Вашего мода и в какой группе.
  {
      public override void SetModInfo(out string name, ref ModProperties properties)  //переменная описание мода
      {
          name = "Имя Вашего мода";             //имя мода
          properties.Autoload = true;           //авто загрузка мода. True - Да
      }
  }
}

Вот мы и создали папку мода и можем свободно создавать мод.

Обучение 1. Создаем предмет.

Итак.

Все наши предметы находятся в папке Items, которую мы создали в "Начало".

Не забываем про спрайт предмету и главное, в названии пишем без пробелов! Вместо них, Вы можете использовать "_". Все описания и характеристики записанны в cs файле! (Это главное) А спрайты к нему в png.

Вот мы создали файл и заходим в него. (Notepad++, Visual Community Studiо и многое другое, чем открываете файлы)

Начинаем писать код!

Начинаем с Using.

using Terraria;
using Terraria.ID;            // это главное, что у Вас должно быть.
using Terraria.ModLoader;
 
namespace "Имя Вашего мода".Items            //Чтобы программа не заблудилась
 
{
public class "Имя Вашего мода" : ModItem     //Имя Вашего мода и в какой группе. Все предметы тут
{
   public override void SetDefaults()        //Переменная, которая добавляет описание.
   {
 
      // Далее подробно описано то, что тут может быть:
 
      item.name       //имя
      item.damage     //урон
      item.rare       //редкость
      item.expert     //предмет экспертный? True - да
      item.crit       //крит. предмета
      item.maxStack   //максимальный стак
      item.magic      //предмет магический? True - да
      item.mana       //потребление маны
      item.​toolTip    //описание
      item.knockback  //отбрасывание
      item.value      //цена
      item.autoReuse  //авто атака. True - да
      item.shootSpeed // скорость снарядов
      item.shoot      //снаряд
      item.width      //размер по горизонтали
      item.height     //размер по вертикали
      item.useTime    //скорость использования (кадры)
      item.useAnimation   //скорость махания (кадры)
      item.useStyle   //стиль
      item.useSound   //звук
      item.noMelee    //не ближний. True - да
      item.consumable // тратится? True - да
      item.pick       //мощность кирки
      item.axe        //мощность топора
      item.hammer     //мощность молота
      item.mountType  //используемый маунт
      item.melee      //ближний. True   - да
      item.accessory      //аксессуар? True - да
      item.tileBoost      //дальность использования
      item.defense        //кол-во добавляемой брони
 
   }
}

После каждой характеристики ставим "=", и пишем число, а также не забываем ставить ";" в конце строчки.

И не забываем, что бывают значения где не нужно использовать числа! А к примеру - true или false.

На начальных стадиях этого достаточно.

Далее не забываем указывать рецепт:


public override void AddRecipes() //Переменная "Рецепт"
{
	ModRecipe recipe = new ModRecipe(mod);   //доказывает, что предмет имеет рецепт
 
	recipe.AddIngredient(Terraria.ID.ItemID.Wood, 10); //Ингредиенты крафта
 
	recipe.AddTile(Terraria.ID.TileID.Anvils); //На чем крафтится
 
	recipe.SetResult(this); //Сколько получается
 
	recipe.AddRecipe(); //Конец
}

Обучение 2. Создаем тайл.

Все тайлы находятся в папке Tiles, которую мы создали в "Начало".

Не забываем про спрайт предмету и главное, в названии пишем без пробелов! Вместо них, Вы можете использовать "_". Все описания и характеристики записаны в cs файле! (Это главное) А спрайты к нему в png.

Вот мы создали файл и заходим в него. (Notepad++, Visual Community Studiо и многое другое, чем открываете!

И снова пишем код ! Начинаем с Using.

using System;
using Microsoft.Xna.Framework;
using Terraria;  // это главное, что у Вас должно быть.
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.ObjectData;
 
 
namespace "Имя Вашего мода".Tiles         //Чтобы программа не заблудилась
 
{
public class "Имя Вашего мода" : ModTile   //Имя Вашего мода и в какой группе. Все тайлы тут
{
   public override void SetDefaults()        //Переменная, которая добавляет описание.
   {
// Далее  описано то, что должно тут быть:
 
Main.tileSolidTop[Type] = true; // продается
 
Main.tileFrameImportant[Type] = true; // можно поставить 
 
Main.tileNoAttach[Type] = true; // просвечивает или нет 
 
Main.tileTable[Type] = true; // это стол ( можно использовать как стол, тип )
 
Main.tileLavaDeath[Type] = true; // горит или НЕ горит в лаве
 
TileObjectData.newTile.CopyFrom(TileObjectData.Style2x1); // стиль предмета
 
TileObjectData.newTile.CoordinateHeights = new int[]{ 18 }; // вид тайла 
 
TileObjectData.addTile(Type); // это тайл (стиль)
 
AddToArray(ref TileID.Sets.RoomNeeds.CountsAsTable); // Стол - верстак
 
AddMapEntry(new Color(200, 200, 200), "Название тайла"); // цвет 
 
adjTiles = new int[]{ TileID.WorkBenches }; // группа использования вместо WorkBenches можно писать Anvils и т.д.
 
 
 
public override void NumDust(int i, int j, bool fail, ref int num)
{
num = fail ? 1 : 3;
}
 
public override void KillMultiTile(int i, int j, int frameX, int frameY)
{
Item.NewItem(i * 16, j * 16, 32, 16, mod.ItemType("Название тайла "));
} // что будет если сломать тайл

Пока все ! Ждите продолжения !

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