Создание предметов
Узнайте, как создавать пользовательские предметы, оружие и аксессуары с помощью API ModItem. Убедитесь, что вы завершили настройку среды разработки.
Базовый пример предмета
Вот простой пример создания пользовательского меча:
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace YourModName.Items
{
public class ExampleSword : ModItem
{
public override void SetDefaults()
{
Item.damage = 50;
Item.DamageType = DamageClass.Melee;
Item.width = 40;
Item.height = 40;
Item.useTime = 20;
Item.useAnimation = 20;
Item.useStyle = ItemUseStyleID.Swing;
Item.knockBack = 6;
Item.value = 10000;
Item.rare = ItemRarityID.Blue;
}
public override void AddRecipes()
{
Recipe recipe = CreateRecipe();
recipe.AddIngredient(ItemID.DirtBlock, 10);
recipe.AddTile(TileID.WorkBenches);
recipe.Register();
}
}
}
Описание свойств предметов
Полный справочник по всем основным свойствам предметов:
damage
Базовое значение урона до модификаторов
Item.damage = 50;
DamageType
Ближний бой, Дальний бой, Магия, Призыв, Метание
Item.DamageType = DamageClass.Melee;
useTime
Кадры между использованиями (меньше = быстрее)
Item.useTime = 20;
useAnimation
Длительность анимации (обычно = useTime)
Item.useAnimation = 20;
rare
Уровень редкости (от -1 до 11, влияет на цвет)
Item.rare = ItemRarityID.Blue;
knockBack
Сила отбрасывания (обычно 0-20)
Item.knockBack = 6;
width / height
Размер хитбокса в пикселях
Item.width = 40; Item.height = 40;
value
Цена продажи в медных монетах (100 = 1 серебряная)
Item.value = Item.sellPrice(gold: 1);
Ещё примеры предметов
Создание дальнобойного оружия
public class ExampleGun : ModItem
{
public override void SetDefaults()
{
Item.damage = 25;
Item.DamageType = DamageClass.Ranged;
Item.width = 44;
Item.height = 24;
Item.useTime = 10;
Item.useAnimation = 10;
Item.useStyle = ItemUseStyleID.Shoot;
Item.noMelee = true; // Important for guns
Item.knockBack = 2;
Item.value = Item.sellPrice(silver: 50);
Item.rare = ItemRarityID.Green;
Item.UseSound = SoundID.Item11;
Item.autoReuse = true;
Item.shoot = ProjectileID.Bullet;
Item.shootSpeed = 16f;
Item.useAmmo = AmmoID.Bullet;
}
}
Создание аксессуара
public class ExampleAccessory : ModItem
{
public override void SetDefaults()
{
Item.width = 24;
Item.height = 24;
Item.value = Item.sellPrice(gold: 1);
Item.rare = ItemRarityID.Orange;
Item.accessory = true; // Makes it an accessory
}
public override void UpdateAccessory(Player player, bool hideVisual)
{
player.moveSpeed += 0.1f; // +10% movement speed
player.maxRunSpeed += 1f;
player.GetDamage(DamageClass.Generic) += 0.05f; // +5% all damage
}
}