Ir para conteúdo
  • 0

Magia com dois efeitos saindo no mesmo lugar em tempos diferentes


Icaro Simoes

Pergunta

TFS 1.3

 

Bom dia a todos, eu criei uma spell para monstro que no momento que o spell é ativado, solta um efeito em área que não causa dano e 2 segundos depois, solta outro efeito e este efeito causa dano. Porém estou com um problema, se o monstro usa o spell (aparece o primeiro efeito) e o monstro anda, o segundo efeito sai em outro lugar. Gostaria de fazer o segundo efeito, sair no mesmo lugar do primeiro efeito independentemente do monstro andar ou não. (Imagens no final do tópico)

 

Spoiler

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, 5)
setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 2, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1}}))


-- Areas/Combat for 2000ms
local combat20_Brush_2 = createCombatObject()
setCombatParam(combat20_Brush_2, COMBAT_PARAM_EFFECT, 26)
setCombatParam(combat20_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat20_Brush_2,createCombatArea({{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 2, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush_2(cid, level, maglevel)
    return (50)*-1,(150)*-1 
end
setCombatCallback(combat20_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")

-- =============== CORE FUNCTIONS ===============
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,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)
    addEvent(RunPart,2000,combat20_Brush_2,cid,var)
    return true
end

 

Outro problema que estou tendo com a magia é o erro que aparece na distro:

 

Spoiler

Lua Script Error: [Spell Interface]
data/spells/scripts/monster/dragon_breath.lua:onCastSpell
LuaScriptInterface::luaAddEvent(). Argument #4 is unsafe
stack traceback:
        [C]: in function 'addEvent'
        data/spells/scripts/monster/dragon_breath.lua:53: in function <data/spells/scripts/monster/dragon_breath.lua:50>

 

(Imagem 1) - Primeiro efeito sendo lançado imediatamente quando o monstro ataca

1533977743_1efeito.thumb.png.f41f88417a8e31caef5a810da5cf4f34.png

(Imagem 2) - O monstro andou e o segundo efeito saiu em outra posição.

496886053_2efeito.thumb.png.6ce68877f9c2c924e6f6d0096c56a675.png

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Tem algumas coisas estranhas no seu script, primeiramente, na função:

function getDmg_Brush_2(cid, level, maglevel)
    return (50) * -1, (150) * -1 
end 

Por que está passando parâmetros na função se você nem os usa ou retorna? 

 

E na função RunPart(c, cid, var, dirList, dirEmitPos), você passa 5 parâmetros, porém, quando você chama a função RunPart na função onCastSpell e no addEvent, você só passa três parâmetros:

RunPart(combat0_Brush, cid, var)
addEvent(RunPart, 2000, combat20_Brush_2, cid, var)

E sobre o que disse em relação ao efeito sair em outro lugar quando o summon se movimenta, isso é porque, a spell está saindo baseado no posição que pega da criatura:

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 27/08/2020 em 12:03, Yan18 disse:

Tem algumas coisas estranhas no seu script, primeiramente, na função:


function getDmg_Brush_2(cid, level, maglevel)
    return (50) * -1, (150) * -1 
end 

Por que está passando parâmetros na função se você nem os usa ou retorna? 

 

E na função RunPart(c, cid, var, dirList, dirEmitPos), você passa 5 parâmetros, porém, quando você chama a função RunPart na função onCastSpell e no addEvent, você só passa três parâmetros:


RunPart(combat0_Brush, cid, var)
addEvent(RunPart, 2000, combat20_Brush_2, cid, var)

E sobre o que disse em relação ao efeito sair em outro lugar quando o summon se movimenta, isso é porque, a spell está saindo baseado no posição que pega da criatura:

 

Eu usei um programa que faz magia na versão 8.6 pra criar essa magia, por isso tem essas inconsistências. Não manjo nada da parte de function do script.

 

Como eu alteraria para o efeito não sair baseado na posição da criatura? No caso repetir o sqm do efeito anterior? Poderia me explicar?

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...