Então, fazer um sistema de colisão de magias não tem muito segredo. O omega acertou ao dizer que as magias são executadas instantaneamente, mas errou ao dizer que não tem como verificar se o alvo planeja usar a magia também.
Eu fiz baseado na magia Flame Strike, do Tibia.
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1)
function onCastSpell(cid, var)
doCreatureSetStorage(cid, 87600, 1)
addEvent(function()
local target = variantToNumber(var)
if isPlayer(target) then
local fromPosition, toPosition = getCreaturePosition(cid), getCreaturePosition(target)
if getCreatureStorage(target, 87600) == 1 and getCreatureTarget(target) == cid then
doCreatureSetStorage(cid, 87600, 2)
doCreatureSetStorage(target, 87600, 2)
local midPosition = {
x = (fromPosition.x > toPosition.x and (fromPosition.x - ((fromPosition.x - toPosition.x) * 0.5)) or (toPosition.x - ((toPosition.x - fromPosition.x) * 0.5))),
y = (fromPosition.y > toPosition.y and (fromPosition.y - ((fromPosition.y - toPosition.y) * 0.5)) or (toPosition.y - ((toPosition.y - fromPosition.y) * 0.5))),
z = fromPosition.z,
}
doSendDistanceShoot(fromPosition, midPosition, CONST_ANI_FIRE)
doSendDistanceShoot(toPosition, midPosition, CONST_ANI_FIRE)
doSendMagicEffect(midPosition, CONST_ME_FIREAREA)
end
end
if getCreatureStorage(cid, 87600) < 2 then
doCreatureSetStorage(cid, 87600, -1)
doCombat(cid, combat, var)
end
end, 15)
end
Abraços ![]()












info
Grupo: Campones
Registrado: 26/09/12
Posts: 41
Reputação: +2
Muito Obrigado Omega por criar as 2 scripts que eu precisava, desculpe a demora para responder.... Valeew!