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("");
//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("");
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();
}
}
}
}