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; } } } /// /// Holds all realm rank names /// public static readonly string[][] REALM_RANK_NAMES = { new string[] { "realm0" }, // alb new string[] { "Guardian", "Warder", "Myrmidon", "Gryphon Knight", "Eagle Knight", "Phoenix Knight", "Alerion Knight", "Unicorn Knight", "Lion Knight", "Dragon Knight", }, // Mid new string[] { "Skiltvakten", "Isen Vakten", "Flammen Vakten", "Elding Vakten", "Stormur Vakten", "Isen Herra", "Flammen Herra", "Elding Herra", "Stormur Herra", "Einherjar", }, // Hib new string[] { "Savant", "Cosantoir", "Brehon", "Grove Protector", "Raven Ardent", "Silver Hand", "Thunderer", "Gilded Spear", "Tiarna", "Emerald Ridere", }, }; /// /// Gets player realm rank name /// /* public string RealmTitle { get { if(Realm >= REALM_RANK_NAMES.Length) return "unknown realm"; string[] rankNames = REALM_RANK_NAMES[Realm]; int rank = m_realmLevel / 10; if(rank >= rankNames.Length) rank = rankNames.Length - 1; return rankNames[rank]; } } */ 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; //int realm=plr.Realm; //int rank=plr.rankNames; 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 = GlobalConstants.RealmToName((eRealm)plr.Realm); pi.RealmPoints = plr.RealmPoints.ToString(); //plr.realmtitle=ranknames[rank]; 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() { //Fooljam : Uncomment if you want the Herald be generated when you shut down the server as well. //Generate(); if (log.IsInfoEnabled) log.Info("Herald generation done..."); } } }