All pastes #25436 Raw Edit

Something

public text v1 · immutable
#25436 ·published 2005-10-14 00:14 UTC
rendered paste body
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
	{
		/// <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...");
		}

	}
}