Ir para conteúdo
  • 0

Problema Com O Magic Effect No Target


gcdmaster

Pergunta

estou com um problema grande aqui.

 

estou criando uma spell com target.. O problema é que o effect que estou usando no player alvo é um effect com tamanho 3x3...

 

e pra ele aparecer certinho em cima do player alvo, eu tenho que por ele em um sqm na diagonal de baixo do player, exemplo:

 

{0, 0, 0},

{0, 2, 0}, (o numero 2 representa onde o player alvo está)

{0, 0, 1} (o numero 1 representa onde o magic effect deve estar pra aparecer em cima do player)

(se a animação for onde o numero 1 esta, o efeito 3x3 vai cubrir toda essa area)

 

o problema é que nao consigo um jeito de fixar o magic effect sempre naquele local.

 

O local onde o magic effect aparece sempre varia dependendo do local de onde o player está atirando no target.

 

o script da minha spell está ae:

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 105)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 43)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, -30, 1, -40)
setCombatArea(combat,createCombatArea({{0, 0, 0},
		{0, 2, 0},
		{0, 0, 1}}))

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_NONE)
setCombatParam(combat1, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat1,createCombatArea({{1, 1, 1},
	  {1, 3, 1},
	  {1, 1, 1}}))
setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 1, -30, 1, -40)
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
 doCombat(cid, c, var)
 if (dirList ~= nil) then -- Emit distance effects
  local i = 2;
  while (i < #dirList) do
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
i = i + 2
  end
 end
end
end
function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
RunPart(combat,cid,var)
RunPart(combat1,cid,var)
return true
end

 

o combat 1 ali, é uma area sem nenhum magic effect para dar dano em volta do player, onde o efeito de tamanho 3x3 do combat 0 aparece.

 

alguem ae sabe algum jeito de resolver esse problema e poderia me ajudar?

 

OBS: estou usando TFS 0.3.6pl1 (8.54)

 

----------------------------------------------------------------- edit ---------------------------------

 

botei uma imagem abaixo pra vcs poderem entender melhor a situação, a primeira imagem seria o modo correto, mais a animação muda de lugar conforme a posição de quem usa a spell

2rz6uzr.jpg

Editado por gcdmaster
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat0_Brush, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat0_Brush, COMBAT_PARAM_BLOCKSHIELD, true)
setCombatArea(combat0_Brush,createCombatArea({{1, 0},
{0, 2}}))
setCombatFormula(combat0_Brush, COMBAT_FORMULA_LEVELMAGIC, -1, 30, -1, 40)local combat0_Brush_2 = createCombatObject()
setCombatParam(combat0_Brush_2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat0_Brush_2, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat0_Brush_2, COMBAT_PARAM_BLOCKSHIELD, true)
setCombatArea(combat0_Brush_2,createCombatArea({{0, 1, 1},
{1, 3, 1},
{1, 1, 1}}))
setCombatFormula(combat0_Brush_2, COMBAT_FORMULA_LEVELMAGIC, -1, 30, -1, 40)
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
 doCombat(cid, c, var)
 if (dirList ~= nil) then -- Emit distance effects
  local i = 2;
  while (i < #dirList) do
   doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
   i = i + 2
  end 
 end
end
end
function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
RunPart(combat0_Brush,cid,var)
RunPart(combat0_Brush_2,cid,var)
return true
end

Para o efeito sair correto, modifique apenas esta linha:

setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD)

 

 

Te ajudei? REP+

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...