コード例 #1
0
        public static void RevertToXmlSpawners(Mobile from)
        {
            string filename = "Spawns";

            if (System.IO.Directory.Exists(filename) == true)
            {
                List <string> files = null;
                string[]      dirs  = null;

                try
                {
                    files = new List <string>(Directory.GetFiles(filename, "*.xml"));
                    dirs  = Directory.GetDirectories(filename);
                }
                catch { }

                if (dirs != null && dirs.Length > 0)
                {
                    foreach (var dir in dirs)
                    {
                        try
                        {
                            string[] dirFiles = Directory.GetFiles(dir, "*.xml");
                            files.AddRange(dirFiles);
                        }
                        catch { }
                    }
                }

                ToConsole(String.Format("Found {0} Xmlspawner files for conversion.", files.Count), files != null && files.Count > 0 ? ConsoleColor.Green : ConsoleColor.Red);
                ToConsole("Deleting spawners...", ConsoleColor.Cyan);
                long start = Core.TickCount;

                if (files != null && files.Count > 0)
                {
                    int deletedxml = 0;
                    int deletedreg = 0;

                    foreach (string file in files)
                    {
                        FileStream fs = null;

                        try
                        {
                            fs = File.Open(file, FileMode.Open, FileAccess.Read);
                        }
                        catch { }

                        if (fs == null)
                        {
                            ToConsole(String.Format("Unable to open {0} for loading", filename), ConsoleColor.Red);
                            continue;
                        }

                        DataSet ds = new DataSet("Spawns");

                        try
                        {
                            ds.ReadXml(fs);
                        }
                        catch
                        {
                            fs.Close();
                            ToConsole(String.Format("Error reading xml file {0}", filename), ConsoleColor.Red);
                            continue;
                        }

                        if (ds.Tables != null && ds.Tables.Count > 0)
                        {
                            if (ds.Tables["Points"] != null && ds.Tables["Points"].Rows.Count > 0)
                            {
                                foreach (DataRow dr in ds.Tables["Points"].Rows)
                                {
                                    string id = null;

                                    try
                                    {
                                        id = (string)dr["UniqueId"];
                                    }
                                    catch { }

                                    if (DeleteSpawner(id))
                                    {
                                        deletedxml++;
                                    }
                                }
                            }
                        }

                        fs.Close();
                    }

                    List <Spawner> list = new List <Spawner>(World.Items.Values.OfType <Spawner>());

                    foreach (var item in list)
                    {
                        item.Delete();
                        deletedreg++;
                    }

                    ColUtility.Free(list);

                    ToConsole(String.Format("Deleted {0} XmlSpawners and {1} Spawners in {2} seconds.", deletedxml, deletedreg, ((Core.TickCount - start) / 1000).ToString()), ConsoleColor.Cyan);

                    ToConsole("Reproducing Spawners...", ConsoleColor.Green);

                    CommandSystem.Handle(from, Server.Commands.CommandSystem.Prefix + "XmlLoad Spawns");
                    _SpawnsConverted = false;

                    ToConsole(String.Format("Complete. Total Seconds: {0}.", ((Core.TickCount - start) / 1000).ToString()), ConsoleColor.Green);
                }
                else
                {
                    ToConsole(String.Format("Directory Not Found: {0}", filename), ConsoleColor.Red);
                }
            }
        }
コード例 #2
0
        public static void Initialize()
        {
            if (SiegeShard)
            {
                CommandSystem.Register(
                    "ResetROT",
                    AccessLevel.GameMaster,
                    e =>
                {
                    LastReset = DateTime.Now;

                    e.Mobile.SendMessage("Rate over Time reset!");
                });

                CommandSystem.Register(
                    "GetROTInfo",
                    AccessLevel.GameMaster,
                    e =>
                {
                    foreach (var kvp in ROTTable)
                    {
                        Console.WriteLine("Player: {0}", kvp.Key.Name);

                        var stats = 0;

                        if (StatsTable.ContainsKey(kvp.Key))
                        {
                            stats = StatsTable[kvp.Key];
                        }

                        Console.WriteLine("Stats gained today: {0} of {1}", stats, StatsPerDay.ToString());

                        Utility.PushColor(ConsoleColor.Magenta);

                        foreach (var kvp2 in kvp.Value)
                        {
                            var pergain = MinutesPerGain(kvp.Key, kvp.Key.Skills[kvp2.Key]);
                            var last    = kvp2.Value;
                            var next    = last.AddMinutes(pergain);

                            var nextg = next < DateTime.Now
                                    ? "now"
                                    : "in " + ((int)(next - DateTime.Now).TotalMinutes).ToString() + " minutes";

                            Console.WriteLine(
                                "   {0}: last gained {1}, can gain {2} (every {3} minutes)",
                                kvp2.Key.ToString(),
                                last.ToShortTimeString(),
                                nextg,
                                pergain.ToString());
                        }

                        Utility.PopColor();
                    }

                    Console.WriteLine("---");
                    Console.WriteLine(
                        "Next Reset: {0} minutes",
                        ((LastReset + TimeSpan.FromHours(24) - DateTime.Now)).TotalMinutes.ToString());
                });

                Utility.PushColor(ConsoleColor.Red);
                Console.Write("Initializing Siege Perilous Shard...");

                var tick = Core.TickCount;

                var toReset = new List <XmlSpawner>();

                foreach (var item in World.Items.Values.OfType <XmlSpawner>().Where(sp => sp.Map == Map.Trammel && sp.Running))
                {
                    toReset.Add(item);
                }

                foreach (var item in toReset)
                {
                    item.DoReset = true;
                }

                Console.WriteLine("Reset {1} trammel spawners in {0} milliseconds!", Core.TickCount - tick, toReset.Count);
                Utility.PopColor();

                ColUtility.Free(toReset);

                EventSink.ContainerDroppedTo += OnDropped;
            }
        }