rendered paste bodyusing 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
{
/// <summary>
/// Defines a logger for this class.
/// </summary>
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; }
}
}
/// <summary>
/// Holds all realm rank names
/// </summary>
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",
},
};
/// <summary>
/// Gets player realm rank name
/// </summary>
/*
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...");
}
}
}