Ir para conteúdo

getPlayerMaxSkill(cid, skillid) e getPlayerMaxMagLevel(cid)


Oneshot

Posts Recomendados

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

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 por Skyen
Link para o comentário
Compartilhar em outros sites

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 por Oneshot
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...