Ir para conteúdo
  • Cadastre-se

(Resolvido)Editar o dano das magias


Ir para solução Resolvido por Mathias Kenfi,

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

TFS 0.3.6 REV11

 

Qual o motivo deste tópico? 

Estou tentando converter os danos do meu antigo servidor 8.10 (evolutions) para um novo 8.60 (tfs 0.3.6) porem não entendo a formula de dano usado em ambos, principalmente no TFS.

Percebe-se que no script há 4 dígitos, eu não faço ideia oque eles significam.

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

Spell que estou tentando converter do meu servidor 8.10 (exevo gran mas frigo) ( depende menos do magic level e mais do level e no geral tira bem mais dano principalmente em niveis mais elevados)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 42)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.0, -150, -1.6, -150)

arr = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end
 

Spell que veio com o meu tfs (8.60) (Tem um dano médio fixo, o level e o magic level quase não fazem efeito no dano)

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 6, 12)

local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)

function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

 

No meu atual tanto setAttackFormula como setCombatFormula funcionam, porém se eu copiar os valores do meu antigo para o novo, a magia simplesmente fica muito fraca.

Tentei procurar nas sources do TFS como setCombatFormula ou setAttackFormula funcionam e não encontrei as formulas em nenhum lugar.

 

Como eu faço essa conversão?

 

 

 

Edit: procurando nas sources encontrei um comentario que pode ser util, porém não consegui entende-lo: 

 

setCombatFormula(combat, type, mina, minb, maxa, maxb[, minl, maxl[, minm, maxm[, minc[, maxc]]]])

 

 

Editado por Serpente (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, mglvl, min, lvl, max)

 

Para facilitar, se você colocar assim: 

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, mglvl, min, lvl, max

 

Ele irá causar 100% do seu Level + uns quebrados do seu Magic Level. As outras fórmulas eu não sei como funciona, mas são valores muito quebrados e nunca são exatos, tanto que mesmo nessa formula, para checar o Level Atual de forma correta, teria que ser um numero tipo 4.2222123, então eu recomendo você usar o onGetFormulaValues(cid, level, maglevel)

 

function onGetFormulaValues(cid, level, maglevel)

return -(level + maglevel), -(level + maglevel)

end

setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

 

Neste caso ele irá retornar seu Level+MagicLevel.

Você também pode com SKILL V

 

function onGetFormulaValues(cid, level, skill)

return -(level + skill), -(level + skill)

end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

 

 

 

 

 

 

Link para o post
Compartilhar em outros sites

Obrigado @Joaovettor essa duas funções que você enviou me ajudaram muito, com elas sou capaz de estimar o dano do meu antigo servidor usando essas funções

 

Agora estou tentando decifrar a formula usada pelo meu servidor antigo, fiz algumas medições usando a magia e anotando o dano e cheguei ao seguinte resultado

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2.0, -150, -1.6, -150)

 

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -X, -Y, -Z, -H)

 

X e Z são variaveis multiplicadoras que adicionam dano de acordo com o level e o magic level (ambas as variaveis agem de maneira igual, porém existem as 2 para existir uma variação de dano) A cada 1X descobri que o dano será +2*level e +3*mglevel o mesmo vale para o Z.

As variaveis Y e H servem como dano minimo que irá ser somado a variação (dano X e Z), existem as duas para variar o dano minimo (se os 2 valores forem iguais não há variação).

 

No exemplo que enviei convertendo pra outra função ficará:

return -(150 + (3.2*level + 4.8*maglevel)), -(150+ (4*level + 6*maglevel))

Fiz essas contas com números redondos, por isso é uma aproximação, mais com essa formula ficou bem perto do meu antigo 8.10 os danos.

 

 

Editado por Serpente (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

os parâmetros da formula são os seguintes

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, MinA, MinB, MaxA, MaxB)

o dano baseado em magic level segue a seguinte formula

MinDmg = (Level + ML * 4) * MinA + MinB
MaxDmg = (Level + ML * 4) * MaxA + MaxB

lembrando que os valores tem que ser todos negativos para dar dano

setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -900, -3.2, -1100)

 

já a formula de dano baseada em skill fica assim

setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, -900, 3.2, -1100)

dano minimo = MinB

dano máximo sem arma equipada = MaxB

dano máximo com arma equipada

MaxDmg = ((2 * (WeaponAttack * (WeaponSkill + 5.8) / 25 + (level - 1) / 10)) / Stance) * MaxA + MaxB

A instância de combate divide seu ataque por

1 se tiver em modo ofenssivo

1.2 se tiver em modo balanceado

2 se tiver em modo defensivo

 

no caso de skills, o valor de MinA é irrelevante, porem o valor de MaxA DEVE ser positivo, caso contrario ao multiplicar o dano por um valor negativo ele inverteria o sinal

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo