我的问题是关于向对象添加更多字符串条目

我的问题是关于如何向 MakeSpawner 对象添加多个字符串?

此创建的对象有 13 个单独的字符串条目。


在当前配置中,它生成 3 个单独的 spawn 对象,每个对象都有一个字符串。我需要用至少八个单独的刺条目生成一个项目。


namespace Server

{

    public class GenItems

    {

        private static int m_Count;



        private const int ICount = 8;

        private const int HomeRange = 20;

        private const bool TotalRespawn = false;


        public static void Initialize()

        {

            CommandSystem.Register("GenItems", AccessLevel.Administrator, new CommandEventHandler(Generate_OnCommand));

        }


        [Usage("GenItems")]

        [Description("Generates Items")]

        private static void Generate_OnCommand(CommandEventArgs e)

        {

            Parse(e.Mobile);

        }


        public static void Parse(Mobile from)

        {


            from.SendMessage("Generating all items...");



   MakeSpawner(new string[] { "aaa", "bbb", "ccc" },  2850, 810, 0);




        }


        private static Queue m_ToDelete = new Queue();


        public static void ClearSpawners(int x, int y, int z)

        {

            IPooledEnumerable eable = Map.Sample.GetItemsInRange(new Point3D(x, y, z), 0);


            foreach (Item item in eable)

            {

                if (item is Spawner && item.Z == z)

                    m_ToDelete.Enqueue(item);

            }


            eable.Free();


            while (m_ToDelete.Count > 0)

                ((Item)m_ToDelete.Dequeue()).Delete();

        }


        private static void MakeSpawner(string[] types, int x, int y, int z)

        {

            if (types.Length == 0)

                return;


            ClearSpawners(x, y, z);


                {

                    sp.Respawn();

                    sp.BringToHome();

                }


                ++m_Count;

            }

        }

    }

}

我没有想法,因为我还是一个学习 C# 的新手。


千巷猫影
浏览 208回答 1
1回答

慕的地10843

为了允许您将多个生物名称传递给Spawner,您应该Spawner像这样更改构造函数:[Constructable]public Spawner(params string[] creatureName ) : base( 0x1f13 ){&nbsp; &nbsp; InitSpawn( 1, TimeSpan.FromMinutes( 5 ), TimeSpan.FromMinutes( 10 ), 0, 4, creaturesName.ToList() );}然后MakeSpawner像这样修改你的方法:private static void MakeSpawner(string[] types, int x, int y, int z){&nbsp; &nbsp; if (types.Length == 0)&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; ClearSpawners(x, y, z);&nbsp; &nbsp; Spawner sp = new Spawner(types);&nbsp; &nbsp; sp.Count = ICount;&nbsp; &nbsp; sp.HomeRange = HomeRange;&nbsp; &nbsp; sp.MoveToWorld(new Point3D(x, y, z), Map.Sample);&nbsp; &nbsp; if (TotalRespawn)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; sp.Respawn();&nbsp; &nbsp; &nbsp; &nbsp; sp.BringToHome();&nbsp; &nbsp; }&nbsp; &nbsp; ++m_Count;}注意:params修饰符允许您将单个字符串 ( new Spawner("a"))、多个字符串 ( new Spanwer("a", "b", "c")) 或字符串数组 ( new Spanwer(types)) 传递给同一方法。我还稍微修改了您的代码,以利用 LINQ( using System.Linq) 转换为List<string>.现在,我唯一担心的是ClearSpawners(x, y, z);:如果您添加多个具有相同 x,y,z 的单独生成器,它将(可能)清除旧生成器。我猜想,因为这些是 Spawner,但可能没问题,而且每个位置只有一个 Spawner。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go