Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem przy tworzeniu modyfikacji


_MC0Kuba0MC_

Rekomendowane odpowiedzi

Opublikowano

Używam TModLoader'a, robię modyfikację. (Terraria 1.3.4.4)
Mam takie errory:
 

oji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(26,17) : error CS1061: Element „Terraria.NPC” nie zawiera definicji „HitSound”, a nie odnaleziono metody rozszerzającej „HitSound”, która przyjmuje pierwszy argument typu „Terraria.NPC” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(26,28) : error CS0103: Nazwa „SoundID” nie istnieje w bieżącym kontekście.

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(27,17) : error CS1061: Element „Terraria.NPC” nie zawiera definicji „DeathSound”, a nie odnaleziono metody rozszerzającej „DeathSound”, która przyjmuje pierwszy argument typu „Terraria.NPC” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(27,30) : error CS0103: Nazwa „SoundID” nie istnieje w bieżącym kontekście.

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(69,32) : error CS0161: „MangetsuuMod.NPCs.Friendly.Creator.TownNPCName()”: nie dla wszystkich ścieżek kodu jest zwracana wartość.

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(79,32) : error CS0161: „MangetsuuMod.NPCs.Friendly.Creator.GetChat()”: nie dla wszystkich ścieżek kodu jest zwracana wartość.

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(130,33) : error CS1061: Element „Terraria.Item” nie zawiera definicji „shopCustomPrice”, a nie odnaleziono metody rozszerzającej „shopCustomPrice”, która przyjmuje pierwszy argument typu „Terraria.Item” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(133,33) : error CS1061: Element „Terraria.Item” nie zawiera definicji „shopCustomPrice”, a nie odnaleziono metody rozszerzającej „shopCustomPrice”, która przyjmuje pierwszy argument typu „Terraria.Item” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).

c:\Users\Kunoji\Documents\My Games\Terraria\ModLoader\Mod Sources\MangetsuuMod\NPCs\Creator.cs(136,33) : error CS1061: Element „Terraria.Item” nie zawiera definicji „shopCustomPrice”, a nie odnaleziono metody rozszerzającej „shopCustomPrice”, która przyjmuje pierwszy argument typu „Terraria.Item” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).


Robiłem NPC'ta na podstawie ExampleMod i jakiegoś innego moda.
 

using System.Linq;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;

namespace MangetsuuMod.NPCs.Friendly
{
    public class Creator : ModNPC
    {
        public override bool Autoload(ref string name, ref string texture, ref string[] altTextures)
        {
            name = "Creator";
            return mod.Properties.Autoload;
        }
        public override void SetDefaults()
        {
            npc.name = "Creator";
            npc.townNPC = true;
            npc.friendly = true;
            npc.width = 18;
            npc.height = 40;
            npc.aiStyle = 7;
            npc.damage = 10;
            npc.defense = 15;
            npc.lifeMax = 250;
            npc.HitSound = SoundID.NPCHit1;
            npc.DeathSound = SoundID.NPCDeath1;
            npc.knockBackResist = 0.5f;
            Main.npcFrameCount[npc.type] = 25;
            NPCID.Sets.ExtraFramesCount[npc.type] = 9;
            NPCID.Sets.AttackFrameCount[npc.type] = 4;
            NPCID.Sets.DangerDetectRange[npc.type] = 700;
            NPCID.Sets.AttackType[npc.type] = 0;
            NPCID.Sets.AttackTime[npc.type] = 90;
            NPCID.Sets.AttackAverageChance[npc.type] = 30;
            NPCID.Sets.HatOffsetY[npc.type] = 4;
            NPCID.Sets.ExtraTextureCount[npc.type] = 0;
            animationType = NPCID.ArmsDealer;
        }

        public override void HitEffect(int hitDirection, double damage)
        {
            int num = npc.life > 0 ? 1 : 5;
            for (int k = 0; k < num; k++)
            {
                Dust.NewDust(npc.position, npc.width, npc.height, DustID.Blood);
            }
        }

		public override bool CanTownNPCSpawn(int numTownNPCs, int money)
		{
			for (int k = 0; k < 255; k++)
			{
				Player player = Main.player[k];
				if (player.active)
				{
					for (int j = 0; j < player.inventory.Length; j++)
					{
						if (player.inventory[j].type == mod.ItemType("EnchantedTetra") || player.inventory[j].type == mod.ItemType("EnchantedTetra"))
						{
							return true;
						}
					}
				}
			}
			return false;
		}

        public override string TownNPCName()
        {
            switch (WorldGen.genRand.Next(2))
            {
                case 0:
                    return "Kunoji";
                case 1:
                    return "Infinity";
            }
        }
        public override string GetChat()
        {
            int goblinTinkerer = NPC.FindFirstNPC(NPCID.GoblinTinkerer);
            int cyborg = NPC.FindFirstNPC(NPCID.Cyborg);
            int guide = NPC.FindFirstNPC(NPCID.Guide);

            if (guide >= 0 && Main.rand.Next(11) == 0)
            {
                return Main.npc[guide].displayName + " I'm the creator of this mod. I created it to polish youtuber: Mangetsuu!.";
            }
            if (cyborg >= 0 && Main.rand.Next(10) == 0)
            {
                return "Making sprites are very hard.";
            }
            if (goblinTinkerer >= 0 && Main.rand.Next(9) == 0)
            {
                return "I need better spriter!";
            }
            switch (Main.rand.Next(5))
            {
                case 0:
                    return "Na H sie leczysz!";
                case 1:
                    return "We need more videos, Mangetsuu!";
                case 2:
                    return "Terraria is love, Terraria is life.";
                case 3:
                    return "Your subscribers are the best, Mangetsuu!"; 
                case 4:
                    return "Wlazl kotek na plotek i mruuuga!";
            }
        }

        public override void SetChatButtons(ref string button, ref string button2)
        {
            button = Lang.inter[28];
        }

        public override void OnChatButtonClicked(bool firstButton, ref bool shop)
        {
            if (firstButton)
            {
                shop = true;
            }
        }

        public override void SetupShop(Chest shop, ref int nextSlot)
        {
            shop.item[nextSlot].SetDefaults(mod.ItemType("EnchantedTetra"));
            nextSlot++;
            shop.item[nextSlot].SetDefaults(mod.ItemType("EnchantedTetra"));
            shop.item[nextSlot].shopCustomPrice = 2500;
            nextSlot++;
            shop.item[nextSlot].SetDefaults(mod.ItemType("EnchantedTetra"));
            shop.item[nextSlot].shopCustomPrice = 5000;
            nextSlot++;
            shop.item[nextSlot].SetDefaults(mod.ItemType("EnchantedTetra"));
            shop.item[nextSlot].shopCustomPrice = 10000;
            nextSlot++;
        }

        public override void TownNPCAttackStrength(ref int damage, ref float knockback)
        {
            damage = 50;
            knockback = 4f;
        }

        public override void TownNPCAttackCooldown(ref int cooldown, ref int randExtraCooldown)
        {
            cooldown = 40;
            randExtraCooldown = 30;
        }

        public override void TownNPCAttackProj(ref int projType, ref int attackDelay)
        {
            projType = ProjectileID.ElectrosphereMissile;
            attackDelay = 1;
        }

        public override void TownNPCAttackProjSpeed(ref float multiplier, ref float gravityCorrection, ref float randomOffset)
        {
            multiplier = 12f;
            randomOffset = 2f;
        }
    }
}

4613f3c2a38d0d10gen.png

Opublikowano

W GetChat oraz TownNPCName znajdują się 'switch'e - zamiast ostatnich 'case' wstaw 'default'. W ten sposób naprawisz dwa błędy.

Dla GetChat:

switch (Main.rand.Next(5))
            {
                case 0:
                    return "Na H sie leczysz!";
                case 1:
                    return "We need more videos, Mangetsuu!";
                case 2:
                    return "Terraria is love, Terraria is life.";
                case 3:
                    return "Your subscribers are the best, Mangetsuu!"; 
                default:
                    return "Wlazl kotek na plotek i mruuuga!";
            } 

Dla TownNPCName:

switch (WorldGen.genRand.Next(2))
            {
                case 0:
                    return "Kunoji";
                default:
                    return "Infinity";
            }

Co do pozostałych błędów - sprawdź swoje referencje do TModLoadera, testowałem na najnowszym i kod działał. Poglądowo ss moich referencji:

59bead96c2.png

(Terraria to exe z downloadu tModLoadera, nie czysta wersja)

"Większość ludzi się poddaje, ponieważ patrzy jak długą ma przed sobą drogę, a nie jak długą drogę już przebyli."

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...