|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::Feature Requests Post suggestions/feature requests here. |
07-08-2009, 08:41 PM
|
|
Demi-God
|
|
Join Date: May 2007
Location: b
Posts: 1,447
|
|
Ability to level past 89ish?
I noticed recently that if you try and get past a level around level 89, you cannot go past level 89, or so. Is there a way to fix this?
I'm guessing it would be in exp.cpp and features.h, but... I am not sure.
I would love to see the ability to level to 254 (which is the max before you have spell issues) added into the source. (in b4 why are you having characters level that high?)
|
07-08-2009, 09:08 PM
|
|
Demi-God
|
|
Join Date: Mar 2009
Location: Umm
Posts: 1,492
|
|
I absolutly, 500%, support this notion!
I don't know about 254 (yet) but I have allready laid out content progression up till lev 150 =)
|
07-09-2009, 03:10 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
I don't recall there being a limit in the source other than level 254. Though, there may be a define set for it that sets it to 127. As far as I know, there is nothing restricting levels below 127 atm. I can #level to 254 just fine. I assume you are referring to leveling via experience? Which client are you using, Titanium or SoF? Are you sure you have both the MaxLevel and MaxExpLevel rules set to allow you to go above those levels?
Why are you needing to level that high??? JK, I am betting it is Raid Addicts related :P
|
07-09-2009, 04:20 AM
|
|
Demi-God
|
|
Join Date: May 2007
Location: b
Posts: 1,447
|
|
Quote:
Originally Posted by trevius
I don't recall there being a limit in the source other than level 254. Though, there may be a define set for it that sets it to 127. As far as I know, there is nothing restricting levels below 127 atm. I can #level to 254 just fine. I assume you are referring to leveling via experience? Which client are you using, Titanium or SoF? Are you sure you have both the MaxLevel and MaxExpLevel rules set to allow you to go above those levels?
Why are you needing to level that high??? JK, I am betting it is Raid Addicts related :P
|
It's via experience and I think it is directly related to the experience formula in features.h, i'll see what I can do about it.
And no, it's not related to raid addicts for a change. It's a secret project!
|
07-09-2009, 11:06 AM
|
Discordant
|
|
Join Date: Apr 2004
Location: 127.0.0.1
Posts: 402
|
|
Code:
#define HARD_LEVEL_CAP 127
The definition EXP_FORMULA is not preventing you from exceeding level 89.
|
07-09-2009, 07:14 PM
|
|
Demi-God
|
|
Join Date: May 2007
Location: b
Posts: 1,447
|
|
Quote:
Originally Posted by Yeormom
Code:
#define HARD_LEVEL_CAP 127
The definition EXP_FORMULA is not preventing you from exceeding level 89.
|
That variable isn't used anymore in source, AFAIK. The only time I saw it used was in SKILL_CAPS, and I think it was removed recently.
|
11-22-2009, 02:28 PM
|
Sarnak
|
|
Join Date: Feb 2006
Posts: 62
|
|
That's a good option, but it would also cause current servers to change their config (oh no!!1).
Theoretically couldn't you just make this a "long long" type and therefore 64bits long allowing for over 18 000 000 000 000 000 000 or level 181,211 (given other restrictions allow)?
P.S.- This is just an observation from a novice, but isn't level^3*3.1*1000 additional CPU cycles, rather than 3100*level^3, no decimal and less operations?
|
11-22-2009, 04:23 PM
|
|
Demi-God
|
|
Join Date: Mar 2009
Location: Umm
Posts: 1,492
|
|
what ever it takes- I just need my lev 255 =)
|
11-22-2009, 09:49 PM
|
|
Demi-God
|
|
Join Date: May 2007
Location: b
Posts: 1,447
|
|
Quote:
Originally Posted by ChaosSlayerZ
what ever it takes- I just need my lev 255 =)
|
Level 255 is a bad idea. If you make level 255, players can use spells regardless of class.
ChaosSlayer, why not check out the exp code from the x5 diff?
|
11-26-2009, 02:28 AM
|
Sarnak
|
|
Join Date: Feb 2006
Posts: 62
|
|
Secrets and I worked on this a bit tonight. It looks possible, with the exception of one area:
Code:
struct LevelUpdate_Struct
{
/*00*/ uint32 level; // New level
/*04*/ uint32 level_old; // Old level
/*08*/ uint32 exp; // Current Experience
};
Looks like it sends the xp to the client :( I am compiling the server as we speak to see if it will work with changing that as well to a long long. If this does not work, I will also try not sending the exp variable in the packets to the client, I think this may cause you to have to zone to update the level, but hey can't hurt to try (heck if it works I might have done something productive for once!).
|
11-26-2009, 03:01 AM
|
|
Demi-God
|
|
Join Date: Mar 2009
Location: Umm
Posts: 1,492
|
|
Guys- if you can get this to work- I will named npcs after you!!!
I can even make you Raid bosses! =)
|
09-13-2010, 09:06 AM
|
Hill Giant
|
|
Join Date: Mar 2010
Posts: 236
|
|
So has this gone anywhere. I know akkadius has a way to get to atleast 90 on his server. I plan on asking him how its done. I would like level 100 on mine if possible for the time being.
|
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: 654
|
|
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));
}
|
|
|
|
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 11:12 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|