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); } } }
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; } }