Ir para conteúdo

Featured Replies

  • Respostas 18
  • Visualizações 4.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Sim, pois voce ta limitando o ml maximo pra quando o requerimento for maior que 200 ._. (nem sei com oainda chegou a ml 86) Faz assim if(currReqMana > currReqMana * 2)  É matematicamente impossiv

  • Tenta diminuir a maglevel de quem ja atingiu o limite e/ou diminuir a mana spent(mana gasta) deles

Postado

Ah, pensei que estava usando um server vazio para testar.
Sobre o caso acima, me mande a parte final do relatorio do dbug pra eu ver o que pode ser


Bom fiz uma edição diferente, fazendo a condição da ml maxima ser so se o requerimento da mana pro prox nivel for maior que  um numero muito, mas muito alto.

Coloquei tambem para que se o atual requerimento de mana pra upar for maior que o do proximo(o do magic lv157 nao existe, então seria)
Eu mudei pra que continuasse o mesmo requerimento.
(Se quiser que aumente mais, coloque tipo amount = CurrReqMana*1.3(aumentar 30% no requerimento de mana a cada magic lv))

Aqui vai..

{
if(!amount)
return;




uint64_t currReqMana = vocation->getReqMana(magLevel), nextReqMana = vocation->getReqMana(magLevel + 1);
if(currReqMana > 99999999999999999999999999999999999) //player has reached max magic level
return;




if(useMultiplier)
amount = uint64_t((double)amount * rates[SKILL__MAGLEVEL] * g_config.getDouble(ConfigManager::RATE_MAGIC));




bool advance = false;
while(manaSpent + amount >= nextReqMana)
{
amount -= nextReqMana - manaSpent;
manaSpent = 0;
magLevel++;




char advMsg[50];
sprintf(advMsg, "You advanced to magic level %d.", magLevel);
sendTextMessage(MSG_EVENT_ADVANCE, advMsg);




advance = true;
CreatureEventList advanceEvents = getCreatureEvents(CREATURE_EVENT_ADVANCE);
for(CreatureEventList::iterator it = advanceEvents.begin(); it != advanceEvents.end(); ++it)
(*it)->executeAdvance(this, SKILL__MAGLEVEL, (magLevel - 1), magLevel);




currReqMana = nextReqMana;
nextReqMana = vocation->getReqMana(magLevel + 1);
if(currReqMana >= nextReqMana)
{
amount = currReqMana;
}
}




if(amount)
manaSpent += amount;




uint32_t newPercent = Player::getPercentLevel(manaSpent, nextReqMana);
if(magLevelPercent != newPercent)
{
magLevelPercent = newPercent;
sendStats();
}
else if(advance)
sendStats();
}


Se não der certo, onde tem

{
amount = currReqMana;
}
coloque 
{
amount = currReqMana;
break;
}

(eu tirei por acreditar que o break tivesse fazendo o magic level apos atingir aquela condição virasse o nivel máximo.)

Editado por Danves (veja o histórico de edições)



 tumblr_mwfeg45FIV1qk4cb3o4_500.gif

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo