Oneshot 732 Postado Janeiro 10, 2013 Share Postado Janeiro 10, 2013 Bom, eu estava dando uma olhada nas sources, tentando entender porque cada classe tinha um nível máximo de skill e magic level específicos. Então desenvolvi essas duas funções, que retornam esses tais níveis máximos, para skills e para maglevel. function getPlayerMaxSkill(cid, skillid) local skill_level = getPlayerSkillLevel(cid, skillid) while true do local x = getPlayerRequiredSkillTries(cid, skillid, skill_level) local y = getPlayerRequiredSkillTries(cid, skillid, (skill_level + 1)) if x > y then break end skill_level = skill_level + 1 end return skill_level end function getPlayerMaxMagLevel(cid) local maglevel = getPlayerMagLevel(cid, true) while true do local x = getPlayerRequiredMana(cid, maglevel) local y = getPlayerRequiredMana(cid, (maglevel + 1)) if x > y then break end maglevel = maglevel + 1 end return maglevel end Creio eu que elas não possuem utilidade nenhuma, são apenas funções teóricas que criei para entender como funciona o avanço de skills e magic level para cada vocação. Link para o comentário Compartilhar em outros sites More sharing options...
Skyen 64 Postado Janeiro 11, 2013 Share Postado Janeiro 11, 2013 (editado) Que eu saiba, o intervalo teórico de spells e magic level é de 0 à 255 (inteiro sem sinal de 8 bits). Não sei se na prática isso fica diferente, mas creio que todas as classes deveriam ter o mesmo limite (limite de um uint8)... Quais valores sua função retornou para as classes padrões do Tibia? Editado Janeiro 11, 2013 por Skyen Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Janeiro 11, 2013 Autor Share Postado Janeiro 11, 2013 (editado) Então, Raposa, lá no cliente do Tibia, realmente os valores são variáveis em uint8. É por isso mesmo que as skills "quebram", quando passam de 255, ou seja, quando um jogador tivesse skill 256, o cliente mostraria nível 0 na skill. Nas sources do maldito TFS, não sei se é o mesmo para o Open Tibia original, o sistema já é bem diferente. A experiência de uma skill, também chamada de skill tries, é declarada como uma variável uint64 e o nível da skill uma variável uint32. O mesmo ocorre para magic level. Esse limite de skill acontece porque chega uma hora que a fórmula de skill tries necessárias passa o valor máximo de uint64, reiniciando do 0, é nessa hora que o sistema entende que já não é possível mais avançar tal skill. Estes são os valores máximos para as vocações padrões, sem modificações nos multiplicadores do vocations.xml Sorcerer fist fighting = 110 club fighting = 69 sword fighting = 69 axe fighting = 69 distance fighting = 70 shielding = 109 fishing = 445 magic level = 389 Druid fist fighting = 110 club fighting = 79 sword fighting = 79 axe fighting = 79 distance fighting = 80 shielding = 109 fishing = 445 magic level = 389 Paladin fist fighting = 232 club fighting = 232 sword fighting = 232 axe fighting = 232 distance fighting = 440 shielding = 428 fishing = 445 magic level = 110 Knight fist fighting = 435 club fighting = 435 sword fighting = 435 axe fighting = 435 distance fighting = 132 shielding = 428 fishing = 445 magic level = 34 Os multiplicadores de skill ou o manaMultiplier são inversamente proporcionais ao nível máximo que uma vocação pode atingir. Se você diminuir o multiplicador, o nível máximo aumenta e vice-versa. Editado Janeiro 11, 2013 por Oneshot Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados