首页 > 解决方案 > 代码运行第 2 部分,而不是第一部分 / random.Next() 返回 0

问题描述

我正在使用 tModLoader 为泰拉瑞亚编写 Boss 战,但我遇到了问题。1. 注释为“// 运行 4 次普通攻击之一”的部分根本没有运行。(好吧,可能是这样,但至少 Main.NewText() 部分不起作用。) 2. random.Next() 返回 0。

我不知道这个问题之前是否被问过(它不在你开始提问时得到的建议列表中),所以你能做的任何事情都是好的。(我的主要问题是#1)

对于#1,我尝试切换 forloops 和 if 语句的位置。不幸的是,这就是我能想到的。对于#2,我看不出有什么问题,也没有尝试过任何事情。

此处的代码:https ://pastebin.com/yxe7XP8G (这里的这一点是我认为最可能的解释)

        public override bool PreAI()
        {
            if (npc.ai[0] == 0)
            {
                Main.NewText("The power of sock fetishes overwhelms you...", 224, 147, 4, true);
                npc.ai[0] = 1;
            }
            int hazumekAttackConj = 0;
            int hazumekAttackIDCurrent = 0;

            npc.TargetClosest(true);
            Player player = Main.player[npc.target];

            Random random = new Random();
            // Run one of 4 normal attacks
            Main.NewText(hazumekAttackIDCurrent);

我不知道这里到底发生了什么,所以我将分享我的整个 PreAI() 钩子。

没有显示错误消息。

我希望聊天输出是:“Hazumek NRM Attack 1-4”,然后是“Hazumek CNJ Attack S1”,然后是“Hazumek NRM Attack 1-4”,然后是“Hazumek CNJ Attack S2”。这应该永远重复。

聊天输出实际上是“Hazumek CNJ Attack S1”,然后一遍又一遍地“Hazumek CNJ Attack S2”。

标签: c#loops

解决方案


推荐阅读