EvilSkillz
Back
Hello Guys
My Request is how to make levels more than 717217
as you know when player get level 717217
he can't get more experience
so i want to know how can i edit source to make levels unlimited or at least come to 2 millions
my order is to the programmers
and who are experts on C++
Hope i can find help..
i tried to fix it since 10 days but i can't and fail a alot
but i think error is here
- - - Updated - - -
Bump
- - - Updated - - -
Bumb
My Request is how to make levels more than 717217
as you know when player get level 717217
he can't get more experience
so i want to know how can i edit source to make levels unlimited or at least come to 2 millions
my order is to the programmers
and who are experts on C++
Hope i can find help..
i tried to fix it since 10 days but i can't and fail a alot
but i think error is here
Code:
void Player::addExperience(uint64_t exp)
{
uint32_t prevLevel = level;
uint64_t nextLevelExp = Player::getExpForLevel(level + 1);
if(Player::getExpForLevel(level) > nextLevelExp)
{
//player has reached max level
levelPercent = 0;
sendStats();
return;
}
experience += exp;
while(experience >= nextLevelExp)
{
healthMax += vocation->getGain(GAIN_HEALTH);
health += vocation->getGain(GAIN_HEALTH);
manaMax += vocation->getGain(GAIN_MANA);
mana += vocation->getGain(GAIN_MANA);
capacity += vocation->getGainCap();
++level;
nextLevelExp = Player::getExpForLevel(level + 1);
if(Player::getExpForLevel(level) > nextLevelExp) //player has reached max level
break;
}
if(prevLevel != level)
{
updateBaseSpeed();
setBaseSpeed(getBaseSpeed());
g_game.changeSpeed(this, 0);
g_game.addCreatureHealth(this);
if(getParty())
getParty()->updateSharedExperience();
char advMsg[60];
sprintf(advMsg, "You advanced from Level %d to Level %d.", prevLevel, level);
sendTextMessage(MSG_EVENT_ADVANCE, advMsg);
CreatureEventList advanceEvents = getCreatureEvents(CREATURE_EVENT_ADVANCE);
for(CreatureEventList::iterator it = advanceEvents.begin(); it != advanceEvents.end(); ++it)
(*it)->executeAdvance(this, SKILL__LEVEL, prevLevel, level);
}
uint64_t currLevelExp = Player::getExpForLevel(level);
nextLevelExp = Player::getExpForLevel(level + 1);
levelPercent = 0;
if(nextLevelExp > currLevelExp)
levelPercent = Player::getPercentLevel(experience - currLevelExp, nextLevelExp - currLevelExp);
sendStats();
}
void Player::removeExperience(uint64_t exp, bool updateStats/* = true*/)
{
uint32_t prevLevel = level;
experience -= std::min(exp, experience);
while(level > 1 && experience < Player::getExpForLevel(level))
{
level--;
healthMax = std::max((int32_t)0, (healthMax - (int32_t)vocation->getGain(GAIN_HEALTH)));
manaMax = std::max((int32_t)0, (manaMax - (int32_t)vocation->getGain(GAIN_MANA)));
capacity = std::max((double)0, (capacity - (double)vocation->getGainCap()));
}
if(prevLevel != level)
{
if(updateStats)
{
updateBaseSpeed();
setBaseSpeed(getBaseSpeed());
g_game.changeSpeed(this, 0);
g_game.addCreatureHealth(this);
}
char advMsg[90];
sprintf(advMsg, "You were downgraded from Level %d to Level %d.", prevLevel, level);
sendTextMessage(MSG_EVENT_ADVANCE, advMsg);
}
uint64_t currLevelExp = Player::getExpForLevel(level);
uint64_t nextLevelExp = Player::getExpForLevel(level + 1);
if(nextLevelExp > currLevelExp)
levelPercent = Player::getPercentLevel(experience - currLevelExp, nextLevelExp - currLevelExp);
else
levelPercent = 0;
if(updateStats)
sendStats();
}
uint32_t Player::getPercentLevel(uint64_t count, uint64_t nextLevelCount)
{
if(nextLevelCount > 0)
return std::min((uint32_t)100, std::max((uint32_t)0, uint32_t(count * 100 / nextLevelCount)));
return 0;
}
- - - Updated - - -
Bump
- - - Updated - - -
Bumb