Member 13322529 Ответов: 0

Нет подходящего метода для переопределения


Не позволите ли мне добавить это к моему старому вопросу о том же самом сценарии

Ошибка: c:\Users\Hailey\Documents\My игры\в Terraria\ModLoader\мод источники элементов\SaobiesMod\элементы\\подозрительный кусок.КС(35,26) : CS0115 ошибка: 'SaobiesMod.Предметы.Имя элемента.AddRecipe()': не найден подходящий метод для переопределения

Полный сценарий:

using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace SaobiesMod.Items
{
		public class ItemName : ModItem
		{
				public override void SetDefaults()
				{
					item.name = "Suspicious Chunk";
					item.width = 20;
					item.height = 20;
					item.maxStack = 20;
					AddTooltip("A weird hunk of various minerals.";
					item.value = 100;
					item.rare = 1;
					item.useAnimation = 30;
					item.useTime = 30;
					item.useStyle = 4;
					item.consumable = true;
				}
				public override bool CanUseItem(Player player)
				{
					return !NPC.AnyNPCs(mod.NPCType("Gouzibal"));  //you cant spawn this boss multiple times
					return !Main.dayTime; //can use only at night
				}
				public override bool UseItem(Player player)
				{
					NPC.SpawnOnPlayer(plaer.whoAmI, mod.NPCType("Gouzibal")); //boss spawn
					Main.PlayerSound(15, (int)player.position.X (int)player.position.Y, 0);
					
					return true;
				}
				public override void AddRecipe()
				{
					ModRecipe recipe = new ModRecipe(mod);
					recipe.AddIngredient(ItemID:MeteoriteBar, 10);
					recipe.AddIngredient(ItemID:Ruby, 3);
					recipe.AddIngredient(ItemID:StoneBlock, 250);
					recipe.SetResult(this);
					recipe.AddRecipe();
				}
		}
		
}		


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

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

Редактировать: IV также попытался изменение "общественного переопределить недействительными AddRecipe()" на "Addrecipe открытый класс()". Он вернулся, сказав "{ожидалось". Даже после добавления одного в конце строки он все равно сказал это. Я добавил как 3 и после того, как все еще получал эту ошибку, вернул код обратно к тому, как это было "public override void AddRecipe()"

George Swan

Убедитесь,что сигнатура метода базового класса, который вы переопределяете, ModItem.SetDefaults () объявляется с помощью ключевого слова virtual, abstract или override.

Member 13322529

Как именно я буду решать эту проблему, учитывая эту информацию? Просто имейте в виду, что это мой первый раз в жизни кодирования, многие термины потеряны для меня

David_Wimbley

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

Вы пытаетесь переопределить метод, называемый AddRecipe в классе ItemName который наследуется от вашего базового класса ModItem. Похоже, что в классе нет никакого метода ModItem называемый AddRecipe, или если есть метод, называемый AddRecipe тогда это не пустой метод. То есть, если AddReceipe метод действительно существует в вашем базовом классе ModItem что метод в этом классе имеет какие-то параметры.

Не видя кода для класса ModItem Я не буду знать наверняка, и никто другой тоже. Я бы посоветовал вам использовать виджет/ссылку Improve Question в вашем вопросе, чтобы добавить код, который я упомянул, чтобы мы могли оказать более значимую помощь.

Member 13322529

Хм ... видите ли, скрипта для ModItem не существует. Я следую учебнику для выполнения всех этих вещей и записываю то, что он сказал, а затем изменяю то, что он сказал, что я мог бы сделать по своему вкусу. Оттуда iv подделывал вещи на кодах, которые работали, чтобы я мог понять, что делает что, и попробовать свое собственное дело

Кода ModItem нет, но есть папка Items в папке my mods

David_Wimbley

Тогда это должно быть так ModItem это класс из сторонней библиотеки (я ничего не знаю о Террарии.

Изменить public override void AddRecipe() к public void AddRecipe() где вы удаляете переопределение модификатора из самого метода. По крайней мере, это корень вашей проблемы.

Member 13322529

Похоже, это все исправило. Однако теперь я получаю эту ошибку

c:\Users\Hailey\Documents\My игры\Terraria\ModLoader\Mod Sources\SaobiesNPC\Items\NPCs\Boss\Gouzibal. cs(38,24): ошибка CS0115: 'SaobiesMod.NPCs.Boss.Имя босса.AutoloadHead(ref string, ref string)': не найден подходящий метод для переопределения

Вот кодировка для самого босса (код в ссылке)

использование системы;
использование системы.ИО;
использование Microsoft.Xna. Framework;
с помощью Microsoft.Кснк.Рамки.Графика;
использование Террарии;
используя террариумов.Идентификатор;
использование Террарии.ModLoader;

SaobiesMod пространства имен.НПС.Босс
{
публичный класс BossName : ModNPC
{
public override void SetDefaults()
{
npc.name = " Гузибаль"
npc. displayName = " Gouzibal"
НПЦ.aiStyle = 5; //5-летящее ИИ
NPC. lifeMax = 4250; / / жизнь боссов
npc. damage = 35; / / урон боссов
NPC. defense = 40; / / Защита боссов
НПЦ.knockBackResist = 0С;
NPC. width = 100;
npc. height = 100;
animationType = NPCID.EyeOfCthulu; / / босс будет вести себя как глаз cthulu
Главная.npcFrameCount[НПЦ.тип] = 2; //начальник кадров в анимации
npc. value = Item. buyPrice(0, 40, 75, 45);
НПЦ.npcSlot = 1Ф;
НПЦ.босс = истина;
НПЦ.lavaImmune = истина;
НПЦ.noGravity = истина;
НПЦ.noTileCollide = истина;
НПЦ.soundHit = 8;
НПЦ.soundKilled= 14;
НПЦ.buffImmune[24] = истина;
музыка = musicid приложение.Boss3;
НПЦ.netAlways = истина;
}
общественного переопределить недействительными AutoloadHead(см. строку headTexture, Реф стринг bossHeadTexture)
{
bossHeadTexture = "SaobiesMod/NPC/Boss/Gouzibal_Head_Boss"; / / текстура головы босса
}
общественного переопределить недействительными BossLoot(справ имя строки, Реф инт potionType)
{
pottiontype = ItenID.LesserHealingPotion; / / босс падает
Предмет.Элемент newitem((инт)НПЦ.положение.Х, (инт)НПЦ.положение.Г, НПЦ.ширина, НПЦ.высоты, мод.ItemType ("Сталагмит"));
}
общественного переопределить недействительными ScaleExpertStats(инт numPlayers, bossLifeScale поплавок )
{
НПЦ.lifemaxбыл = (тип int)(НЭК.lifemaxбыл * 0.579 Ф * bossLifeScale); весы //жизни боссов в режиме эксперта
НПЦ.урон = (тип int)(НЭК.повреждения * 0.6 Ф); //наносят урон боссам в нем могут содержаться материалы эксперт
}
}
}

Member 13322529

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

Теперь мы вернулись к подозрительному фрагменту кода. Например, 15, символ 52, он говорит ") ожидаемый". Даже после того, как я вставил один, он все еще говорит, что

Member 13322529

Зафиксировано, что слишком. Все еще на подозрительном куске

Строка 34, символ 11. "Terraria Main не содержит определения для "PlayerSound""

David_Wimbley

Я не знаю, что такое Terraria Main, так как я ее не вижу, но вы должны думать, что если вы пытаетесь вызвать PlayerSound и его сообщение вам не содержит определения PlayerSound, то это означает, что его не существует. Таким образом, вы либо используете устаревший учебник, который не соответствует современным требованиям terraria, пропустили шаг в учебнике, который определяет PlayerSounce, либо вам нужно написать код, который создает PlayerSound, чтобы при вызове его вы не получили эту ошибку.

Member 13322529

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

Это привело к тому, что мы работали над исправлением мелких ошибок. Теперь я на новом

Я думаю, что мой друг поможет мне разобраться в этом. Я действительно ценю помощь, которую вы мне оказали, хотя я использовал ваш пример, чтобы исправить 2 другие строки кода, которые имели ту же проблему (reletively)

David_Wimbley

Рад помочь, удачи в изучении программирования.

0 Ответов