فئة ModItem

الفئة الأساسية لإنشاء العناصر والأسلحة والأدوات والإكسسوارات المخصصة.

نظرة عامة

تُستخدم فئة ModItem لتعريف العناصر المخصصة في tModLoader. من خلال وراثة هذه الفئة، يمكنك إنشاء أسلحة وإكسسوارات ومواد استهلاكية وأي نوع آخر من العناصر. راجع الأمثلة العملية في دليل إنشاء العناصر.

مساحة الأسماء

Terraria.ModLoader

الطرق الشائعة

SetDefaults()

تعيين خصائص العنصر مثل الضرر والحجم ووقت الاستخدام وغيرها.

public override void SetDefaults()
{
    Item.damage = 50;
    Item.width = 40;
    Item.height = 40;
    Item.useTime = 20;
}

AddRecipes()

تحديد وصفات التصنيع لعنصرك.

public override void AddRecipes()
{
    Recipe recipe = CreateRecipe();
    recipe.AddIngredient(ItemID.Wood, 10);
    recipe.AddTile(TileID.WorkBenches);
    recipe.Register();
}

أمثلة متقدمة للعناصر

إنشاء سلاح بعيد المدى

public class ExampleBow : ModItem
{
    public override void SetDefaults()
    {
        Item.damage = 30;
        Item.DamageType = DamageClass.Ranged;
        Item.width = 16;
        Item.height = 32;
        Item.useTime = 25;
        Item.useAnimation = 25;
        Item.useStyle = ItemUseStyleID.Shoot;
        Item.noMelee = true; // Don't deal melee damage
        Item.knockBack = 2;
        Item.value = Item.sellPrice(silver: 30);
        Item.rare = ItemRarityID.Green;
        Item.UseSound = SoundID.Item5;
        Item.autoReuse = true;
        Item.shoot = ProjectileID.WoodenArrowFriendly;
        Item.shootSpeed = 10f;
        Item.useAmmo = AmmoID.Arrow; // Uses arrows as ammo
    }
}

إنشاء عنصر استهلاكي

public class ExamplePotion : ModItem
{
    public override void SetDefaults()
    {
        Item.width = 20;
        Item.height = 26;
        Item.useStyle = ItemUseStyleID.DrinkLiquid;
        Item.useAnimation = 15;
        Item.useTime = 15;
        Item.useTurn = true;
        Item.UseSound = SoundID.Item3;
        Item.maxStack = 30;
        Item.consumable = true; // Item is consumed on use
        Item.rare = ItemRarityID.Orange;
        Item.value = Item.buyPrice(gold: 1);
        Item.buffType = BuffID.Ironskin; // Grants buff
        Item.buffTime = 5 * 60 * 60; // 5 minutes
    }
}

إنشاء إكسسوار

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; // Mark as accessory
    }

    public override void UpdateAccessory(Player player, bool hideVisual)
    {
        player.moveSpeed += 0.15f; // +15% movement speed
        player.jumpSpeedBoost += 1.5f; // Better jumps
        player.GetDamage(DamageClass.Generic) += 0.08f; // +8% all damage
    }
}

مرجع الخصائص الكامل

الخاصية النوع الوصف مثال
damage int قيمة الضرر الأساسية 50
useTime int الإطارات بين الاستخدامات 20
knockBack float قوة الارتداد 6.5f
autoReuse bool تأرجح تلقائي عند الضغط true
maxStack int الحد الأقصى للتكديس 999
consumable bool يُستهلك عند الاستخدام true

موارد خارجية