Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 12/23/23 em todas áreas

  1. vou fazer algo melhor do que simplesmente te dar a resposta, vou te ensinar como fazer isso pra qualquer spell que vc queira; Primeiramente vc tem que extrair as informações que você tem na sua spell, isso significa essas 3 coisinhas aqui (pro seu caso): TIPO DE DAMAGE:local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) EFEITO:setCombatParam(combat, COMBAT_PARAM_EFFECT, 30) AREA:arr = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}, } local area = createCombatArea(arr) --------- COM ESSAS INFORMAÇÕES, VAMOS COMEÇAR NOSSO CÓDIGO ------ Agora vá em data/lib/constant.lua e vc primeiramente irá procurar uma tabela parecida com essa daqui: Se você olhar o último item dessa tabela podemos ver COMBAT_DEATHDAMAGE = 2048 agora olhando praquela primeira informação que nós temos "tipo de damage" iremos ver que esse COMBAT_DEATHDAMAGE também está presente: Certo, agora precisamos definir nosso efeito.. os efeitos ficam convenientemente no mesmo arquivo constant.lua, vimos ali no seu código que vc usa o efeito de número 30 Certo, a área iremos usar a mesma.. agora vamos ao chamado "CORE" do script, também conhecido como corpo ou escopo principal, vou utilizar um aqui que ja foi criado pensando em spells que utilizem skills/mana/vida para tirar dano: Certo, agora vamos por partes: Por enquanto tudo que sabemos é que o "EFEITO" é 30, o "TIPO DE DAMAGE" é o 2048 e a "AREA DA SPELL" é igual aquela área desenhada. Substituindo oque a gente sabe fica assim: Perceba que a única coisa que falta na nossa função são as fórmulas.. Você pode literalmente definir QUALQUER coisa como fórmula, se eu colocar apenas 50 ali no min e no max minha magia sempre vai tirar 50. Se eu colocar 50 no min e 100 no max ela sempre vai tirar algo entre esses dois números... mas nós não queremos que a magia hite um numero constante, nós queremos que ela dependa da skill da pessoa, do nível dela, do ml. Do contrário, ela ia ser extremamente podre pois não possui uma evolução junto com o player. "tá lobo, mas como vou saber que fórmula usar?" Essa é uma pergunta muito delicada, temos sempre que considerar os casos extremos, se uma magia pode ser usada no nv 10 por exemplo, e a formula dela é level * ml temos que checar os dois casos abaixo: - Caso 1 Player nivel 10, ml 1 irá arrancar 10 de life na magia.. parece justo - Caso 2 Player nivel 300, ml 90 irá arrancar 27.000 de life na magia.. não parece tão justo hahaha Existe uma dica que o próprio tibia nos dá de como montar fórmulas justas, que é usar constantes de proporcionalidade. "Meu deus, Lobo, que caralhas é isso?" bem, o nome é bem mais complicado do que a coisa em si. Finalizando as fórmulas, temos min = (150 + (skill /2)) e max = (200 + (3 * (skill/2))) Tá, mas como ensinar pro nosso script oque é "skill" e que ela representa o fist fighting? bem, é nessa hr que olhamos pra aquele pequeno espaço no script dizendo "SKILLS QUE SERÃO USADAS". Ali você deve criar uma variável skill que irá ler a skill do player, através da função getPlayerSkillLevel(cid, "código da skill") "Mas como eu sei o código da skill?", muito simples meu caro.. lembra que eu falei pra você ir em data/lib/constant? Esse documento tem todas as informações que você precisa pra fazer qualquer código, e é justamente nele que iremos procurar qual é o código da skill fist. Depois de uma rápida procura eu me deparei com esta tabela> e nela podemos ver que o código para a skill fist é 0. Declaro ali naquele espaço do script local fist = getPlayerSkillLevel(cid, 0) e a partir de agora no lugar de skill nas minhas fórmulas eu só escreverei fist e o server irá entender o que eu quero. O script final fica: Aquele factor que eu coloquei é uma coisinha (fator de correção de erro) que é sempre bom colocar pois nem sempre as formulas na prática tiram oque elas tiram na teoria, o dano varia de acordo com o combat que nós escolhemos e as vezes é bom adicionar esse factor para podermos ajustar a fórmula mais facilmente. Espero que não tenha preguiça de ler tudo, se você entender como isso funciona garanto que conseguirá fazer magias que se baseiam em somas de skills e criar fórmulas ultra realistas para magias não só baseadas em skills como baseadas em cap, mana, vida, velocidade e qualquer outra coisa que você conseguir pensar..
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...