MysteryKaar Ответов: 1

Как исправить ошибку CS0103 в этом случае?


В настоящее время я застрял с CS0103 в своем коде, и я понятия не имею, как это исправить.
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;

namespace MI.Items.Placeable
{
	public class MinecraftInjection : ModItem
	{
		public override void SetStaticDefaults()
		{
			ItemID.Sets.SortingPriorityMaterials[item.type] = 59;
		}

		public override void SetDefaults()
		{
			item.width = 20;
			item.height = 20;
			item.maxStack = 99;
			item.value = 7800;
			item.useStyle = 1;
			item.useTurn = true;
			item.useAnimation = 15;
			item.useTime = 10;
			item.autoReuse = true;
			item.consumable = true;
			item.createTile = mod.TileType(Tiles("NetheriteBar"));
			item.placeStyle = 0;
		}

		public override void AddRecipes()
		{
			ModRecipe recipe = new ModRecipe(mod);
			recipe.AddIngredient(mod.ItemType("ExampleOre"), 4);
			recipe.AddIngredient(ItemID.GoldBar, 2);
			recipe.AddIngredient(ItemID.HellstoneBar);
			recipe.SetResult(this);
			recipe.AddRecipe();
		}
	}
}


любая помощь будет оценена по достоинству, спасибо!

Что я уже пробовал:

Я попробовал добавить
var things = new List<Tiles>

{
		public override void SetStaticDefaults()
		{
			ItemID.Sets.SortingPriorityMaterials[item.type] = 59;
		}

		public override void SetDefaults()
        var things = new List<Tiles>
		{
			item.width = 20;
			item.height = 20;
			item.maxStack = 99;
			item.value = 7800;
			item.useStyle = 1;
			item.useTurn = true;
			item.useAnimation = 15;
			item.useTime = 10;
			item.autoReuse = true;
			item.consumable = true;
			item.createTile = mod.TileType(Tiles("NetheriteBar"));
			item.placeStyle = 0;
		}

это, однако, изменило 2 ошибки на 44
меняющийся
<Tiles>
в
(Tiles)
не помочь

RickZeeland

Очевидно, вы используете имя, которое не распознается, см.: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0103

Richard MacCutchan

Почему вы думаете, что какая-то случайная строка кода исправит вашу ошибку? Вы ссылаетесь на два объекта (recipe и item но вы не объявили их нигде, что мы можем видеть.

1 Ответов

Рейтинг:
1

Maciej Los

Пожалуйста, сначала прочтите это: Ошибка компилятора CS0103 | Microsoft Docs[^]

Сообщение компилятора совершенно очевидно. Tiles класс не существует (в текущем контексте) или недоступен из-за уровня защиты!

Мое лучшее предположение: вы должны добавить пространство имен, в котором Tiles класс объявляется путем добавления using директива в верхней части модуля.

Даже если Tiles имя не распознается, есть еще одна проблема:

var things = new List<Tiles>
{
    item.width = 20;
    //skipped lines
    item.placeStyle = 0;
}

Вы не может инициализировать список Tiles сюда!
Так и должно быть:
var things = new List<Tiles>
{
    new Tiles(...),
    new Tiles(...),
    new Tiles(...)
}


TheRealSteveJudge

Хороший совет! 5*

Maciej Los

Спасибо.

[no name]

Я уже читал этот документ, я пробовал его, определенно сделал что-то не так, вернул его только для того, чтобы убедиться, что я не испортил что-то еще, вместо этого он дал мне другую ошибку (CS0119, если я правильно помню), которую я исправил, и в настоящее время я застрял с CS0118