Amigo, tem 2 jeitos de fazer: um que fica mais uniforme, a animação é sempre a mesma e outro que é exatamente igual o evento /x 18 (que mand aleatoriamente).
Vou colocar os 2 aqui e vc usa o que gostar mais:
1. Uniforme
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(cid, level, Skill)
min = -(Skill * 6 + level * 1.5) * 1
max = -(Skill * 6 + level * 1.5) * 1.2
return min, max
end
combat_arr = {
{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,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,},
{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,},
}
local combat_area = createCombatArea(combat_arr)
setCombatArea(combat, combat_area)
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
effect(getCreaturePosition(cid))
return doCombat(cid, combat, var)
end
2. Igual /x (o código do loop utilizado pode ser encontrado também la em talkactions.
Bom é isso. Vi que você fez algumas coisas que não precisavam na hora de adicionar o callback da sua formula e na propria formula, se quiser dar uma lida no tutorial que fiz sobre formulas e callbacks para entender melhor, fica o link:
http://www.xtibia.com/forum/topic/238759-tutorial-formulas-e-callbacks-das-spells-entendendo-melhor/
Abraços, comente se funcionou como desejava.








info
Grupo: Campones
Registrado: 15/10/11
Posts: 60
Reputação: +18
Char no Tibia: Foi Del :/
Ta estranho, olha só o tamanho da área da magia, e quando o player usa, não aparece animação nenhuma, só da o dano sem a animação, OBS é uma magia de área tipo um exevo gran mas flam, porém a ideia dessa magia é um monte de assassin stars saírem do corpo do usuário e se espalharem pela área, para vcs terem uma noção exata do que quero que aconteça é spo pegar o God do server de vocês e escrever o comando /x 18 vcs notarão que sairá um monte de assassins dele, ESSA É A IDEIA DESSA MAGIA,mas isso não está acontecendo, alguém por favor pode me ajudar a desvendar esse mistério??? REP+
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_REDSTAR) function onGetFormulaValues(cid, level, Skill, factor) damage_min = (Skill * 6 + level * 1.5) * 1 damage_max = (Skill * 6 + level * 1.5) * 1.2 return - math.max(damage_min, damage_max), - math.min(damage_min, damage_max) end combat_arr = { {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,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {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,}, } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) endDica uma coisa que talvez funcione é criar um evento por fora que gere a animação, pois o dano já funciona certo, só a animação que não aparece, pessoal me ajudem se puder to precisando muito desse script
REP+
Editado Janeiro 13 por Totonho18