View Single Post
  #15  
Old 09-19-2010, 04:13 PM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 656
Default

Well I was still testing this but I was able to max out at level 253 via experience before hitting a wall.


Required sql
Code:
update rule_values set rule_value = 239765 where rule_name = 'AA:ExpPerPoint';
update rule_values set rule_value = 254 where rule_name =  'Character:MaxLevel';
update rule_values set rule_value = 254 where rule_name =  ' Character:MaxExpLevel';

This part is optional as it just mantains an exp scaling similar to what exists in the default peq database.

zone/exp.cpp
Code:
	void Client::AddEXP(int32 in_add_exp, int8 conlevel, bool resexp) {

	int32 add_exp = in_add_exp;

	if(!resexp && (XPRate != 0))
-		add_exp = static_cast<int32>(in_add_exp * (static_cast<float>(XPRate) / 100.0f));
+		add_exp = static_cast<int32>(in_add_exp * (static_cast<float>(XPRate) / 10000.0f));
	
	if (m_epp.perAA<0 || m_epp.perAA>100)
		m_epp.perAA=0;	// stop exploit with sanity check
	
	int32 add_aaxp;
	if(resexp) {
		add_aaxp = 0;
	} else {

		//figure out how much of this goes to AAs
		add_aaxp = add_exp * m_epp.perAA / 100;
		//take that amount away from regular exp
		add_exp -= add_aaxp;


zone/exp.cpp
Code:
	//check_level represents the level we should be when we have
	//this ammount of exp (once these loops complete)
	int16 check_level = GetLevel()+1;
	//see if we gained any levels
	while (set_exp >= GetEXPForLevel(check_level)) {
		check_level++;
-		if (check_level > 127) {	//hard level cap
+		if (check_level > 254) {	//hard level cap
-			check_level = 127;
+			check_level = 254;
			break;
		}
	}


zone/exp.cpp
Code:
	// Note: The client calculates exp separately, we cant change this function
	// Add: You can set the values you want now, client will be always sync :) - Merkur
	uint32 Client::GetEXPForLevel(int16 check_level)
	{

	int16 check_levelm1 = check_level-1;
	float mod;
	if (check_level < 31)
		mod = 1.0;
	else if (check_level < 36)
		mod = 1.1;
	else if (check_level < 41)
		mod = 1.2;
	else if (check_level < 46)
		mod = 1.3;
	else if (check_level < 52)
		mod = 1.4;
	else if (check_level < 53)
		mod = 1.5;
	else if (check_level < 54)
		mod = 1.6;
	else if (check_level < 55)
		mod = 1.7;
	else if (check_level < 56)
		mod = 1.9;
	else if (check_level < 57)
		mod = 2.1;
	else if (check_level < 58)
		mod = 2.3;
	else if (check_level < 59)
		mod = 2.5;
	else if (check_level < 60)
		mod = 2.7;
	else if (check_level < 61)
		mod = 3.0;
	else
		mod = 3.1;
	
	float base = (check_levelm1)*(check_levelm1)*(check_levelm1);

-	mod *= 1000;
+	mod *= 10;
	
	return(uint32(base * mod));
	}
Reply With Quote