using System; using System.IO; using System.Timers; using System.Diagnostics; using Server; using HelperTools; namespace Server.XMLScripts { public class XMLStatusWriter : Timer { /// /// timer interval(Milliseconds) 1000ms = 1 second /// private static double _time = 200000; private string path = Path.GetFullPath("C:/Apache2/htdocs/WoWServer/"); private string honorpath = Path.GetFullPath("C:/Apache2/htdocs/WoWServer/"); public XMLStatusWriter() : base( XMLStatusWriter._time ) { base.Elapsed += new ElapsedEventHandler(OnTick); base.Start(); } private void OnTick(object sender, ElapsedEventArgs e) { Stats(); } public void Stats() { using (StreamWriter writer1 = GetWriter(path, "status.xml")) { writer1.WriteLine(""); writer1.WriteLine(""); foreach ( Character c in World.allConnectedChars ) { writer1.WriteLine(""); writer1.WriteLine("" + c.Name + ""); writer1.WriteLine("" + c.Race.ToString() + ""); writer1.WriteLine("" + c.Gender + ""); writer1.WriteLine("" + c.Classe + ""); writer1.WriteLine("" + c.Level + ""); writer1.WriteLine("" + c.ZoneId.ToString() + ""); writer1.WriteLine("" + c.MapId + ""); //writer1.WriteLine("" + c.Ping + ""); writer1.WriteLine(""); } writer1.Write(""); } using (StreamWriter writer1 = GetWriter(path, "sstatus.xml")) { writer1.WriteLine(""); writer1.WriteLine(""); writer1.WriteLine("" + World.ServerName + ""); writer1.WriteLine("" + World.ServerIP + ""); writer1.WriteLine("" + World.Version + ""); writer1.WriteLine("" + World.startingTime + ""); writer1.WriteLine("" + World.allConnectedChars.Count.ToString() + ""); writer1.WriteLine("" + World.allMobiles.Count.ToString() + ""); writer1.WriteLine("" + World.allGameObjects.Count.ToString() + ""); writer1.WriteLine("" + World.allAccounts.Count.ToString() + ""); writer1.WriteLine(""); } using (StreamWriter writer1 = GetWriter(path, "honor.xml")) { writer1.WriteLine(""); writer1.WriteLine(""); foreach ( Character c in World.allConnectedChars ) { writer1.WriteLine(""); writer1.WriteLine("" + c.Name + ""); writer1.WriteLine("" + c.Race.ToString() + ""); writer1.WriteLine("" + c.Honor.HonorToday + ""); writer1.WriteLine("" + c.Honor.HonorableKillsToday + ""); writer1.WriteLine("" + c.Honor.DishonorableKillsToday + ""); writer1.WriteLine("" + c.Honor.HonorableKillsYesterday + ""); writer1.WriteLine("" + c.Honor.HonorYesterday + ""); writer1.WriteLine("" + c.Honor.HonorableKillsThisWeek + ""); writer1.WriteLine("" + c.Honor.HonorThisWeek + ""); writer1.WriteLine("" + c.Honor.HonorableKillsLastWeek + ""); writer1.WriteLine("" + c.Honor.HonorLastWeek + ""); writer1.WriteLine("" + c.Honor.Standing + ""); writer1.WriteLine("" + c.Honor.HonorableKillsLifeTime + ""); writer1.WriteLine("" + c.Honor.DishonorableKillsLifeTime + ""); writer1.WriteLine("" + c.Honor.ProgressHonorBar + ""); writer1.WriteLine("" + c.Honor.Rank + ""); writer1.WriteLine("" + c.Honor.HigherstRank + ""); writer1.WriteLine(""); } writer1.WriteLine(""); } Console.WriteLine("-==[]==--"); Console.WriteLine("-->>> [honor.xml UPDATED] <<<--"); foreach ( Character c in World.allConnectedChars ) { c.SendMessage( "[" + TextColor.Set( TextColors.Red, "status.xml UPDATED" ) + "] " ); c.SendMessage( "-->" + TextColor.Set( TextColors.Red, "honor.xml UPDATED" ) + "<" ); } } private StreamWriter GetWriter(string root, string name) { return new StreamWriter(root + name); } } } XMLWriter.cs Code: using System; using System.Threading; using Server; namespace Server.XMLScripts { /// /// Starts timed XML writers /// public class XMLWriters : IInitialize { #region Static Declarations public static XMLStatusWriter statuswriter; #endregion #region Initialize public static void Initialize() { AutoResetEvent asyncOpIsDone = new AutoResetEvent(false); ThreadPool.QueueUserWorkItem(new WaitCallback(StartXMLWriters), asyncOpIsDone); } #endregion private static void StartXMLWriters(object state) { if( statuswriter == null) { statuswriter = new XMLStatusWriter(); statuswriter.Stats(); } } } }