using System; using System.Reflection; using System.IO; using DOL.Database; using DOL.Database.Attributes; using DOL.Database.Connection; using DOL.Events; using DOL.GS.PacketHandler; using log4net; namespace DOL.GS.Scripts { public class HeraldDBGenerator { /// /// Defines a logger for this class. /// private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); [ScriptLoadedEvent] public static void OnScriptLoaded(DOLEvent e, object sender, EventArgs args) { Start(); } [ScriptUnloadedEvent] public static void OnScriptUnloaded(DOLEvent e, object sender, EventArgs args) { Stop(); } [DataTable(TableName="Herald")] public class Herald : DataObject { private string m_name = "NA"; private string m_lastName = "NA"; private string m_guild = "NA"; private string m_race = "NA"; private string m_class = "NA"; private int m_lvl = 0; private string m_realm = "NA"; private string m_realmPts = "NA"; private string m_lastPlayed = "NA"; private static bool m_autoSave = true; public override bool AutoSave { get { return m_autoSave; } set { m_autoSave = value; } } [DataElement(AllowDbNull=true)] public string Name { get { return m_name; } set { m_name = value; } } [DataElement(AllowDbNull=true)] public string LastName { get { return m_lastName; } set { m_lastName = value; } } [DataElement(AllowDbNull=true)] public string Guild { get { return m_guild; } set { m_guild = value; } } [DataElement(AllowDbNull=true)] public string Race { get { return m_race; } set { m_race = value; } } [DataElement(AllowDbNull=true)] public string Class { get { return m_class; } set { m_class = value; } } [DataElement(AllowDbNull=true)] public string Realm { get { return m_realm; } set { m_realm = value; } } [DataElement(AllowDbNull=true)] public int Level { get { return m_lvl; } set { m_lvl = value; } } [DataElement(AllowDbNull=true)] public string RealmPoints { get { return m_realmPts; } set { m_realmPts = value; } } [DataElement(AllowDbNull=true)] public string LastPlayed { get { return m_lastPlayed; } set { m_lastPlayed = value; } } } public static void Generate() { try { DataConnection con = new DataConnection(ConnectionType.DATABASE_XML, "."+Path.DirectorySeparatorChar+"herald"); ObjectDatabase db = new ObjectDatabase(con); db.RegisterDataObject(typeof (Herald)); Character[] allChars = (Character[])GameServer.Database.SelectAllObjects(typeof(Character)); foreach(Character singleChar in allChars) { Herald pi = new Herald(); Character plr = singleChar; pi.Name = plr.Name; pi.LastName = plr.LastName; pi.Class = ((eCharacterClass) plr.Class).ToString(); pi.Race = ((eRace) plr.Race).ToString(); pi.Guild = plr.GuildName; pi.Level = plr.Level; pi.Realm = ((eRealm) plr.Realm).ToString(); pi.RealmPoints = plr.RealmPoints.ToString(); pi.LastPlayed = plr.LastPlayed.ToString(); db.AddNewObject(pi); } db.WriteDatabaseTables(); con = null; db = null; if (log.IsInfoEnabled) log.Info("Herald Generation initialized"); } catch (Exception e) { if (log.IsErrorEnabled) log.Error("Herald Generation: ", e); } } public static void Start() { Generate(); if (log.IsInfoEnabled) log.Info("Herald generation done..."); } public static void Stop() { //Generate(); if (log.IsInfoEnabled) log.Info("Herald generation done..."); } } }