| 
   | 
   | 
  
 
    | 
    | 
    | 
  
 
    | 
   | 
    | 
  
 
    | 
   | 
    | 
  
 
    | 
   | 
    | 
  
 
   | 
  
	
		
   
   
      | Development::Feature Requests Post suggestions/feature requests here. | 
    
    
   
   
   
   
   
   
   
   
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				09-13-2010, 07:04 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Fire Beetle 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2010 
					
					
					
						Posts: 9
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Have you tried raising the Character:MaxExpLevel rule? The hard coded maximum of 127 is still in the code, and with the current formula, level 90 takes 2,185,403,900 exp, well within the range of the variable it's stored in.  
 
If there is still any interest or need to go over 111 or so, it would need to be stored in a 64bit int, or the formula would have to be scaled down. The noted issue with LevelUpdate_Struct isn't an issue, the exp value sent to the client is a value 0-330, not the real exp value. The client displays exp in increments of 0.33% and doesn't care how it's calculated server side. 
		
	
		
		
		
		
		
		
		
		
		
		
						  
				
				Last edited by Vanicae; 09-13-2010 at 07:21 PM..
				Reason: Slightly wrong math
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				09-19-2010, 04:43 AM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Mar 2009 
					Location: Umm 
					
					
						Posts: 1,492
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		i would love to have lev 200 
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				09-19-2010, 04:13 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2008 
					Location: Tennessee 
					
					
						Posts: 668
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		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));
	}
  
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-24-2010, 01:40 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Mar 2009 
					Location: Umm 
					
					
						Posts: 1,492
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		I have a proposition: 
 
If variable size cannot be changed to a larger one, I would propose a work around: 
-we add a table to DB called XP_curve 
-in this table we have 3 columns: Level, XP_needed, XP_per_NPC 
 
so for example: Level (2), XP_needed (5000), XP_per_NPC (500) 
 
what this means, is that Lev 2 takes 5000 XP to achieve, and level 2 mob gives 500 XP. 
 
This way, I can scale down entire table, lowering Xp need per level, and xp per npc lev, in order to fit MORE levels into XP variable so it doesn't roll over (why use 5000 and 500, when you can do 50 and 5?) 
 
This will also allow LIVE-like servers to stay with live-true XP curve, while custom server can fine-tune their XP curve, and smooth out hell levels, or in fact add more of them, anyway they like 
 
You could also create such things, as 0 XP per specific level npcs, using this table, if needed and so on. 
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-24-2010, 07:29 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2008 
					Location: Tennessee 
					
					
						Posts: 668
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		ChaosSlayerZ, some of what you are talking about is already possible to do. Changing the xp needed per level and the amount of exp an npc gives out is easy to achieve without adding new fields. Simply changing the modifiers in the source accomplishes that task. I can already level to 253 by experience. Maintaining a live like exp curve is possible but will take lots and lots of tuning of one of the modifiers.  
 
I have read several times on these forums that some of the server administrators have already accomplished leveling to 100 and beyond. Exactly how they did it on their servers is unknown but I have already posted how I achieved that task. My method was not flawless but it does work. 
 
However I do agree that it would be alot easier if it were possible to control those changes in the database. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-24-2010, 08:00 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Mar 2009 
					Location: Umm 
					
					
						Posts: 1,492
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		yeah that the problem - doing your own source changes puts a tremendous overhead on server maintenance. 
and every time you want to stay up to date with Emu source improvements, you have redo all these changes manually and hope you don't break something.
 
Not to mention my one extra table, allows fine tuning of XP curve on the fly, without the need to ever touch the source and screw something up, given our primary devs would be willing to implement this feature    
My C coding skills are not at the level where I would feel comfortable, of running my own source, hence I am totally dependent on official Emu devs    
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				10-26-2010, 04:59 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2009 
					Location: Milky Way 
					
					
						Posts: 539
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		Nobody is going to add that table to the official source though as nobody would want to adjust exp levels on the fly as you suggest. Why? because screwing with the exp curve means all existing chars get messed up, either losing levels on death or losing levels when you ding, etc. Many things get messed up for existing chars when you change the exp curve. 
Blackdragon posted a workaround for what you need and if you want you can adjust those levels as you see fit. Secrets has also posted his source on how he got to level 65k. 
 
You can see people who wanted this change bad enough to learn the very basics of coding(look at what blackdragon posted, its not advanced enterprise level C++ coding, its basic 'if-then' statements, anybody can understand that), if you wanted this change on your server then it wouldn't be an issue for you to spend a few hours of your time to learn how to do it. Which is alot more effective than putting in your sig to get somebody else to do all the work for you and posting for over a year hoping somebody notices. 
 
	Quote: 
	
	
		| 
			
				doing your own source changes puts a tremendous overhead on server maintenance.
			
		 | 
	 
	 
 As somebody who freely admits to not being knowledgeable enough to change his source code, Im curious how you can be knowledgeable enough to know how much effort is involved in keeping custom source updated(its not hard at all).  
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-26-2010, 05:26 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2008 
					Location: Tennessee 
					
					
						Posts: 668
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  Caryatis
					 
				 
				 Secrets has also posted his source on how he got to level 65k.  
			
		 | 
	 
	 
 Where was that posted at? That could give me an answer to one of the problems I encountered changing the source to go to level 254.  
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-26-2010, 05:30 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2009 
					Location: Milky Way 
					
					
						Posts: 539
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-26-2010, 05:40 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Dec 2008 
					Location: Tennessee 
					
					
						Posts: 668
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		Thanks Caryatis.  
 
That confirmed what I already thought was occuring with maxlevel, check_level and there variable types. Now to scour over the rest to find that dern update that was causing the other problem. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
 
    | 
   | 
    | 
  
 
	
		
		
		
			
			 
			
				10-27-2010, 01:00 AM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: Mar 2009 
					Location: Umm 
					
					
						Posts: 1,492
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
				 
				
			 
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  Caryatis
					 
				 
				Nobody is going to add that table to the official source though as nobody would want to adjust exp levels on the fly as you suggest. Why? because screwing with the exp curve means all existing chars get messed up, either losing levels on death or losing levels when you ding, etc. Many things get messed up for existing chars when you change the exp curve. 
			
		 | 
	 
	 
 not unless you starting off a fresh a server with no chars
 
	Quote: 
	
	
		| 
			
				You can see people who wanted this change bad enough to learn the very basics of coding(look at what blackdragon posted, its not advanced enterprise level C++ coding, its basic 'if-then' statements, anybody can understand that), if you wanted this change on your server then it wouldn't be an issue for you to spend a few hours of your time to learn how to do it. Which is alot more effective than putting in your sig to get somebody else to do all the work for you and posting for over a year hoping somebody notices. 
			
		 | 
	 
	 
 This is a problem in Emu coding which wasn't addressed back in day cause no one cared for going over lev 70 at the time. Now, with all the catching up with SoF and SoD, the live cap has hit level 90, and you WILL have to change the code in order to catch up. 
But if devs would have thought about planning one little variable like 5 years ago - we would not have this problem today. 
So yeah, I do hope SOMEONE, from official devs, will finally notice this.
 
	Quote: 
	
	
		| 
			
				As somebody who freely admits to not being knowledgeable enough to change his source code, Im curious how you can be knowledgeable enough to know how much effort is involved in keeping custom source updated(its not hard at all).
			
		 | 
	 
	 
 while i do not work C code myself (oh I know C, I just choose never to mess with custom changes outside of official code), at THF  we have lots of custom coding which makes its hard to keep up to date with official updates, and Lilu, our boss, as already pulling his hair out over this. So, trust me, I know what I talking about =P  
		
	
		
		
		
		
		
		
			
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-27-2010, 06:54 AM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2007 
					Location: b 
					
					
						Posts: 1,449
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		If I was a custom server starting fresh with the knowledge I know today, I would completely change the exp code. Why? 
 
1) The exp code only gives support up to level 90 without rollover past deaths. 
2) The exp code factors in NPC con too much. 
3) It's based on exp count, not number of kills. 
4) 2 and 3. 
 
Why number of kills? It's pretty simple: 
 
1) smaller numbers 
2) less exponential growth to leave room for valid integers 
3) it's not a float 
4) easily tracked 
 
You can do this one of two ways: 
1) Extended profile 
2) Gut the exp code and use perl 
 
This leaves us with these results: 
1) Level support up to 65535 (minus spells being scribeable below 250, but that can be fixed on the server) 
2) Completely custom exp formula 
 
 
I suggest 1. Good luck. 
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-27-2010, 03:14 PM
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Dragon 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2009 
					Location: Milky Way 
					
					
						Posts: 539
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
	Quote: 
	
	
		| 
			
				Not to mention my one extra table, allows fine tuning of XP curve on the fly
			
		 | 
	 
	 
 !=
 
	Quote: 
	
	
		| 
			
				not unless you starting off a fresh a server with no chars
			
		 | 
	 
	 
 If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else).  
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-27-2010, 07:13 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2007 
					Location: b 
					
					
						Posts: 1,449
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		
	Quote: 
	
	
		
			
				
					Originally Posted by  Caryatis
					 
				 
				If you are setting up a fresh server, then just edit the source. Considering that HoT client isn't supported at all, its not like a rush to make it so that level 90 is supported(and if/when the HoT client push comes, that will be one of the things that gets changed, although since we are only 1 level short of 90, would be easy to just alter the mod for level 90 so that it stays within the limits, as opposed to doing anything else). 
			
		 | 
	 
	 
 Even if you are working on an existing server...
 
changing it so when you log in, checking the level, setting the exp to getexpforlevel(level) then storing a boolean so that you know you logged in since you updated the server (in the extended player profile (m_epp)) *then* calculating experience afterwards would be the ideal goal. It would reset some progress into the level that they had, though, but you could tweak the entire exp formula this way.  
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
 
    | 
   | 
    | 
  
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
		
		
			
			 
			
				10-27-2010, 07:28 PM
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Demi-God 
				
				
				
			 | 
			  | 
			
				
				
					Join Date: May 2007 
					Location: b 
					
					
						Posts: 1,449
					 
					
					
					
					     
				 
				
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
			
			
			 
			
		
		
		
		To further back my idea, 
	Code: 
	Index: common/extprofile.h
===================================================================
--- common/extprofile.h	(revision 1709)
+++ common/extprofile.h	(working copy)
@@ -46,6 +46,7 @@
 	
 	uint32				aa_effects;
 	uint32				perAA;		//% of exp going to AAs
+	bool				expchange;
 };
 
 #pragma pack()
Index: zone/client_packet.cpp
===================================================================
--- zone/client_packet.cpp	(revision 1709)
+++ zone/client_packet.cpp	(working copy)
@@ -8586,6 +8586,13 @@
 	}
 
 
+	if(!m_epp.expchange)
+	{
+	SetEXP(GetEXPForLevel(GetLevel()), GetAAXP(), false);
+	m_epp.expchange = true;
+	}
+
+
 	////////////////////////////////////////////////////////////
 	// Task Packets
 	LoadClientTaskState();
 Change EXP Formula, Add in code, ????, profit!  
		
	
		
		
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Posting Rules
	 | 
 
	
		
		You may not post new threads 
		You may not post replies 
		You may not post attachments 
		You may not edit your posts 
		 
		
		
		
		
		HTML code is Off 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
All times are GMT -4. The time now is 08:59 PM. 
 
		 
	 
 
 
     | 
     | 
    
   
      | 
     | 
      | 
    
   
     | 
      | 
     | 
    
   
       | 
      | 
       | 
     
    
    
  | 
   |