All pastes #25448 Raw Edit

Untitled

public text v1 · immutable
#25448 ·published 2005-10-14 01:25 UTC
rendered paste body
// Basic Herald system
// Basic on DOL script : XMLWebUIGenerator.cs
// Modded my Fooljam and Tobz
// Date : October 14, 2005
// Official support website : http://www.daocworld.net

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_RealmTitle = "NA";
			private string m_RealmRank = "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 RealmTitle
			{
				get { return m_RealmTitle; }
				set { m_RealmTitle = value; }
			}

			[DataElement(AllowDbNull=true)]
			public string RealmRankTitle
			{
				get { return m_RealmRank; }
				set { m_RealmRank = 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",
				},
			};


protected static readonly long[] REALMPOINTS_FOR_LEVEL =
		{
			0,			// 1L1
			1,			// 1L1
			25,			// 1L2
			125,		// 1L3
			350,		// 1L4
			750,		// 1L5
			1375,		// 1L6
			2275,		// 1L7
			3500,		// 1L8
			5100,		// 1L9
			7125,		// 2L0
			9625,		// 2L1
			12650,		// 2L2
			16250,		// 2L3
			20475,		// 2L4
			25375,		// 2L5
			31000,		// 2L6
			37400,		// 2L7
			44625,		// 2L8
			52725,		// 2L9
			61750,		// 3L0
			71750,		// 3L1
			82775,		// 3L2
			94875,		// 3L3
			108100,		// 3L4
			122500,		// 3L5
			138125,		// 3L6
			155025,		// 3L7
			173250,		// 3L8
			192850,		// 3L9
			213875,		// 4L0
			236375,		// 4L1
			260400,		// 4L2
			286000,		// 4L3
			313225,		// 4L4
			342125,		// 4L5
			372750,		// 4L6
			405150,		// 4L7
			439375,		// 4L8
			475475,		// 4L9
			513500,		// 5L0
			553500,		// 5L1
			595525,		// 5L2
			639625,		// 5L3
			685850,		// 5L4
			734250,		// 5L5
			784875,		// 5L6
			837775,		// 5L7
			893000,		// 5L8
			950600,		// 5L9
			1010625,	// 6L0
			1073125,	// 6L1
			1138150,	// 6L2
			1205750,	// 6L3
			1275975,	// 6L4
			1348875,	// 6L5
			1424500,	// 6L6
			1502900,	// 6L7
			1584125,	// 6L8
			1668225,	// 6L9
			1755250,	// 7L0
			1845250,	// 7L1
			1938275,	// 7L2
			2034375,	// 7L3
			2133600,	// 7L4
			2236000,	// 7L5
			2341625,	// 7L6
			2450525,	// 7L7
			2562750,	// 7L8
			2678350,	// 7L9
			2797375,	// 8L0
			2919875,	// 8L1
			3045900,	// 8L2
			3175500,	// 8L3
			3308725,	// 8L4
			3445625,	// 8L5
			3586250,	// 8L6
			3730650,	// 8L7
			3878875,	// 8L8
			4030975,	// 8L9
			4187000,	// 9L0
			4347000,	// 9L1
			4511025,	// 9L2
			4679125,	// 9L3
			4851350,	// 9L4
			5027750,	// 9L5
			5208375,	// 9L6
			5393275,	// 9L7
			5582500,	// 9L8
			5776100,	// 9L9
			5974125,	// 10L0
			6176625,	// 10L1
			6383650,	// 10L2
			6595250,	// 10L3
			6811475,	// 10L4
			7032375,	// 10L5
			7258000,	// 10L6
			7488400,	// 10L7
			7723625,	// 10L8
			7963725,	// 10L9
			8208750,	// 11L0
			9111713,    // 11L1
			10114001,   // 11L2
			11226541,   // 11L3
			12461460,   // 11L4
			13832221,   // 11L5
			15353765,   // 11L6
			17042680,   // 11L7
			18917374,   // 11L8
			20998286,   // 11L9
			23308097    // 12L0
		};

	public static string CalculateRealmLevelFromRPs(long realmPoints)
	{
		if (realmPoints == 0)
			return 0;

		int i = REALMPOINTS_FOR_LEVEL.Length - 1;
		for (; i > 0; i--)
		{
			if (REALMPOINTS_FOR_LEVEL[i] <= realmPoints)
				break;
		}

		if (i > 111)
			return 111;
		return i;
	}

	public static string GetRealmTitle(long realmPoints, int realm)
	{
		if (realm >= REALM_RANK_NAMES.Length)
			return "unknown realm";

		string[] rankNames = REALM_RANK_NAMES[realm];

		int rank = CalculateRealmLevelFromRPs(realmPoints) / 10;

		if (rank >= rankNames.Length)
			rank = rankNames.Length - 1;

		return rankNames[rank];
	}

	public static string GetRealmRankTitle(long realmPoints)
	{
		int rank = CalculateRealmLevelFromRPs(realmPoints);

		int firstPart = rank / 10;

		int secondPart = rank - (firstPart * 10);

		return firstPart.ToString() + "L" + secondPart.ToString();
	}

		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 = GlobalConstants.RealmToName((eRealm)plr.Realm);
					pi.RealmPoints =  plr.RealmPoints.ToString();
					pi.RealmTitle = GetRealmTitle(plr.RealmPoints, plr.Realm);
					pi.RealmRankTitle = GetRealmRankTitle(plr.RealmPoints);
					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()
		{
			//Fooljam : Add comments to "Generate();" function if you don't want the Herald files be generated when server starts
			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...");
		}

	}
}