Postado Junho 2, 2016 8 anos Olá galera, estou batendo em uma tecla a algum tempo.. Bem.. uma breve explicação do "bug". Digamos que um jogador seja mago(nao importa sua vocation), e ele tenha os atributos seguintes: 100 de ML 20 de Shield Se eu criar um item custom, e colocar para este item dar 20 de ML e remover 20 de Shield, o jogador ficará bugado, ele não vai conseguir usar spells. Por que? Bem, como pudi notar nas sources, na checagem em spells.cpp tem uma condição onde ela verifica se a skill do personagem é menor ou igual a 10(o minimo dado pelo tibia). for(int16_t i = SKILL_FIRST; i <= SKILL_LAST; ++i) { if((int32_t)player->getSkill((skills_t)i, SKILL_LEVEL) < skills[i]) { player->sendCancelMessage(RET_NOTENOUGHSKILL); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } } Então se um jogador usar uma spell, a mesma não vai sair, vai dar a mensagem, "sorry, not possible.". Isso acontece bem nessa parte em spells.cpp Porem o correto não seria mexer nesta parte, e sim em conditions.cpp Pois a condição deveria ter um LIMITE para remover pontos de atributos. Enfim, não sou bom com explicações.. mas minha ideia é colocar um LIMITE de 10 pontos nas skills. Ou seja, se algum atributo for dado para o jogador, e ter alguma modificação no valor de suas skills, sempre checar e ver se vai ser menor que 10, se for menor que 10, o atributo colocado será o valor 10, sendo assim, este bug não vai mais acontecer. Editado Junho 2, 2016 8 anos por Milbradt (veja o histórico de edições)
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.