xLosT
Member
necessary to put the level limit is 250 in player.cpp
my server is not up level is war not have stage
my server is not up level is war not have stage
function onAdvance(cid, skill, oldLevel, newLevel)
if skill ~= SKILL__LEVEL then
return true
end
if newLevel >= 251 then
doPlayerAddLevel(cid, -1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Max level is 250!')
end
return true
end
<event type="advance" name="maxlvl" event="script" value="maxlvl.lua"/>
function onAdvance(cid, skill, oldLevel, newLevel)
if skill ~= SKILL__LEVEL then
return true
end
if newLevel >= 250 then
doPlayerSetExtraExpRate(cid, 0.0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You are now the limit level.')
end
return true
end
He said its a pvp-enforced so I dont tihnk doPlayerSetExtraExpRate(cid, 0.0) would work since it work only when killing monsters.."doPlayerAddLevel(cid, -1)" wont work. IT will mess up your level.
Try this:
LUA:function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL then return true end if newLevel >= 250 then doPlayerSetExtraExpRate(cid, 0.0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You are now the limit level.') end return true end
function onAdvance(cid, skill, oldLevel, newLevel)
if skill ~= SKILL__LEVEL then
return true
end
if newLevel > 250 then
return false and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You are now the limit level.')
end
return true
end
He said its a pvp-enforced so I dont tihnk doPlayerSetExtraExpRate(cid, 0.0) would work since it work only when killing monsters..
You can try:
LUA:function onAdvance(cid, skill, oldLevel, newLevel) if skill ~= SKILL__LEVEL then return true end if newLevel > 250 then return false and doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You are now the limit level.') end return true end
I'm not sure it will work.
I saw something that can be also
//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();
g_game.changeSpeed(this, 0);
g_game.addCreatureHealth(this);
if(party)
party->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();
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;
}
void Player::onBlockHit(BlockType_t)
{
if(shieldBlockCount > 0)
{
--shieldBlockCount;
if(hasShield())
addSkillAdvance(SKILL_SHIELD, 1);
}
}
void Player::onAttackedCreatureBlockHit(Creature* target, BlockType_t blockType)
{
Creature::onAttackedCreatureBlockHit(target, blockType);
lastAttackBlockType = blockType;
switch(blockType)
{
case BLOCK_NONE:
{
addAttackSkillPoint = true;
bloodHitCount = 30;
shieldBlockCount = 30;
break;
}
case BLOCK_DEFENSE:
case BLOCK_ARMOR:
{