Boa noite galera, tudo bem?
Venho compartilhar com vocês hoje um sisteminha que desenvolvi para as magias do tipo "shoot'. Foi feito inicialmente para funcionar com magias que usam a posição do mouse como referência e adaptei para cipclientes poderem usar em runas e magias de tiro.
O funcionamento do sistema é simples: Ao usar uma runa ou castar uma magia "shoot" com esse sistema criaturas e objetos no caminho irão interferir na trajetória, isto é, receberão o combate no lugar do alvo inicial.
Ilustrativo:
Bom, vamos ao que interessa.
Vá em data/lib/ e crie um novo arquivo chamado spellsLib.lua (pode-se utilizar também o arquivo spells.lua contido em data/spells/lib).
Dentro dele inclua as seguintes funções:
IsWalkable (by Nord)
GetPositionsAround (by Skulls)
CheckInterceptions (by Skulls)
SetSpellTarget (by Skulls)
Feito isso, está tudo configurado. Basta agora adicionar às magias que você queira.
Abra o .lua da magia, por exemplo death strike.lua.
Lá você terá, entre outras coisas, a função onCastSpell como abaixo:
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Substitua isso por:
local range = 5
function onCastSpell(cid, var)
if getCreatureTarget(cid) == 0 then
doPlayerSendCancel(cid, "Please choose a target.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return false
end
if getDistanceBetween(getPlayerPosition(cid), getCreaturePosition(getCreatureTarget(cid))) > range then
doPlayerSendCancel(cid, "Target is not reachable.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
return false
endreturn doCombat(cid, combat, setSpellTarget(cid, var)) end
Retire qualquer tag que esteja relacionada a target (needtarget, casterTargetOrDirection, etc)
Pronto, a sua magia "Exori Mort" será parada por criaturas ou obstáculos (qualquer item que não seja móvel).
Bom é isso, espero que gostem.
Queria agradecer ao @@nightwolf e ao @Caronte pelas ajudas tentando entender alguns parâmetros e me dando algumas luzes. Ao @@nightwolf, ainda, um agradecimento especial pela maravilhosa lib dele *-*.
Abraços,
Um exemplo de magia que utiliza esse sistema: http://www.xtibia.com/forum/topic/239460-exori-grab-vis/
@@Daniel, na verdade move pra mim pra Downloads Spells, acho que seria mais correto.