Ir para conteúdo

Featured Replies

Postado

.• TFS 1.2

Script: Spell / Lua Function

Original death strike:

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

function onGetFormulaValues(player, level, magicLevel)
local min = (level / 5) + (magicLevel * 1.4) + 8
local max = (level / 5) + (magicLevel * 2.2) + 14
return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end
  • Eu preciso que o exori mort seja lançado no solo em que o alvo está, não instantaneamente no alvo, então se o alvo se mover da posição lançada, será possível evitar o hit.
    Os ataques exori mort enviam um tiro à distância e um efeito mágico com dmg diretamente no alvo.

    Preciso enviar um tiro à distância e o efeito no TILE que o alvo está, não diretamente no alvo. Então eu preciso de um delay por distância apenas no efeito de animação, NÃO NO DISTANCE SHOOT:

    example.thumb.png.f143e9a08874629d910de412735f4d63.png

    1 sqm: if distance between target is = 1 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 0 miliseconds (instant)
    2 sqm: if distance between target is = 2 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 60 miliseconds
    3 sqm: if distance between target is = 3 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 120 miliseconds
    4 sqm: só vou replicar
     

Essa é a função getDistanceBetween que tenho, só não sei como colocar e se irá funcionar usando ela:

function getDistanceBetween(pos1, pos2)
    local xDif = math.abs(pos1.x - pos2.x)
    local yDif = math.abs(pos1.y - pos2.y)

    local posDif = math.max(xDif, yDif)
    if (pos1.z ~= pos2.z) then
        posDif = (posDif + 9 + 6)
    end
    return posDif
end


Basicamente:

  • Se o target está 1 sqm do player: return event1 (combat1, delay:0 [insta])
  • Se o target está 2 sqm do player: return event2 (combat2, delay:+60)
  • Se o target está 3 sqm do player: return event3 (combat3, delay:+120)
     

Então se quiser mudar o dano e a área ou tipo pela distância também será possível.
Obrigado desde já!

 

Editado por orosama (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.1k

Informação Importante

Confirmação de Termo