Ir para conteúdo

getPlayerMaxSkill(cid, skillid) e getPlayerMaxMagLevel(cid)


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
https://xtibia.com/forum/topic/203996-getplayermaxskillcid-skillid-e-getplayermaxmaglevelcid/
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 Visitante

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
  • Quem Está Navegando   0 membros estão online

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