Нет подходящего метода для переопределения
Не позволите ли мне добавить это к моему старому вопросу о том же самом сценарии
Ошибка: 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
Рад помочь, удачи в изучении программирования.