Ir para conteúdo
  • Cadastre-se

(Resolvido)SCRIPT COM DELAY NO MAGICEFFECT (HELP)


Ir para solução Resolvido por Jeanfersonsp,

Posts Recomendados

Qual servidor ou website você utiliza como base? 

8.60

 

 

 

Rapaziada, eu preciso de um SCRIPT que eu consiga colocar Delay no Magic Effect da Skill.
Exemplo: Caso eu queira usar um Efeito Igual para uma Skill só, porém que eles saiam em tempos diferentes.

 

Tentei de algumas formas, só que não funcionou.. se alguém puder ajudar com o Script, ficaria grato!

 

 

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

vc n especificou onde iria sair o segundo efeito, entao fiz de dois modos.

 

 

function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

 

addEvent(targetEffect, 2000, cid, 169, {0,0})


function cidEffect(cid, effect, ajust) -- efeito sai em min
if isCreature(cid) then
local t_Pos = getCreaturePosition(cid)
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

addEvent(cidEffect, 2000, cid, 169, {0,0})

Editado por Jeanfersonsp (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Agora, Jeanfersonsp disse:

vc n especificou onde iria sair o segundo efeito, entao fiz de dois modos.

 

 

function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

 

addEvent(targetEffect, 2000, cid, 169, {0,0})


function cidEffect(cid, effect, ajust) -- efeito sai em min
if isCreature(cid) then
local t_Pos = getCreaturePosition(cid)
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

addEvent(cidEffect, 2000, cid, 169, {0,0})

Jean agradeço desde já, pela atenção. Comecei a pouco tempo mexer com scripts, então teria como você completar?

OBS: Quero que o EFEITO 419 saia 2x na mesma skill, porém o primeiro um pouco a esquerda no caso (x+1) e o segundo um pouco a direita (x+2)

OBS²: Não sei se esse é o SCRIPT certo para isso, mas se não for, e você puder colocar ficaria grato!

OBS³: O efeito deve sair no TARGET
 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -130.2, 1, -140.2, 1)

function onCastSpell(cid, var)
local waittime = 2 -- Tempo de exhaustion
local storage = 120033

if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
doSendMagicEffect(position1, 419) - Efeito que quero o delay
exhaustion.set(cid, storage, waittime)
return doCombat(cid, combat, var)
end

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -130.2, 1, -140.2, 1)


function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

local delay = 1000 -- tempo para o segundo efeito,  em milésimos

function onCastSpell(cid, var)
local waittime = 2 -- Tempo de exhaustion
local storage = 120033

if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end
targetEffect(cid, 419, {1,0})
addEvent(targetEffect, delay, cid, 419, {2,0})
exhaustion.set(cid, storage, waittime)
return doCombat(cid, combat, var)
end

Link para o post
Compartilhar em outros sites
Agora, Jeanfersonsp disse:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -130.2, 1, -140.2, 1)


function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

local delay = 1000 -- tempo para o segundo efeito,  em milésimos

function onCastSpell(cid, var)
local waittime = 2 -- Tempo de exhaustion
local storage = 120033

if exhaustion.check(cid, storage) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")
return false
end
targetEffect(cid, 419, {1,0})
addEvent(targetEffect, delay, cid, 419, {2,0})
exhaustion.set(cid, storage, waittime)
return doCombat(cid, combat, var)
end

Jean, e se eu fosse criar 7 Efeitos, como seria? Porque ai tem que colocar position2\DoSendMagicEffect1 não é?

Link para o post
Compartilhar em outros sites
1 minuto atrás, raphadoidera disse:

Jean, e se eu fosse criar 7 Efeitos, como seria? Porque ai tem que colocar position2\DoSendMagicEffect1 não é?

 

Repete esta linha

addEvent(targetEffect, 1000, cid, 419, {2,0})

 

--addEvent(targetEffect, 1000(TEMPO EM MILÉSIMOS PARA EFEITO), cid, 419(NUMERO DO EFEITO), {2,0}(AJUSTAR X E Y))

Link para o post
Compartilhar em outros sites
Agora, Jeanfersonsp disse:

 

Repete esta linha

addEvent(targetEffect, 1000, cid, 419, {2,0})

 

--addEvent(targetEffect, 1000(TEMPO EM MILÉSIMOS PARA EFEITO), cid, 419(NUMERO DO EFEITO), {2,0}(AJUSTAR X E Y))

Te explicar, no meu Script mesmo colocando certinho e mudando o X,Y o efeito ainda sai no mesmo lugar tlg? Eu quero que o mesmo efeito saia, mas em lugares diferentes e tempos diferentes 

SCRIPTING ATUAL:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -130.2, 1, -140.2, 1)


function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x, y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

local delay = 1000 -- tempo para o segundo efeito,  em milésimos

function onCastSpell(cid, var)
local waittime = 2 -- Tempo de exhaustion
local storage = 120033

if exhaustion.check(cid, storage) then
return false
end
targetEffect(cid, 419, {1,0})
addEvent(targetEffect, 300, cid, 419, {2,0})
addEvent(targetEffect, 500, cid, 419, {3,0})
addEvent(targetEffect, 700, cid, 419, {4,0})
exhaustion.set(cid, storage, waittime)
return doCombat(cid, combat, var)
end

 

Exemplo:
Na primeira imagem, ta saindo da forma que eu quero e na segunda ta da forma errada.

EfeitoDelay.png

EfeitoDelayErrado.png

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
11 minutos atrás, raphadoidera disse:

Te explicar, no meu Script mesmo colocando certinho e mudando o X,Y o efeito ainda sai no mesmo lugar tlg? Eu quero que o mesmo efeito saia, mas em lugares diferentes e tempos diferentes 

SCRIPTING ATUAL:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -130.2, 1, -140.2, 1)


function targetEffect(cid, effect, ajust) -- efeito sai no target
if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
local t_Pos = getCreaturePosition(getCreatureTarget(cid))
doSendMagicEffect({x= t_Pos.x, y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)
end
end

local delay = 1000 -- tempo para o segundo efeito,  em milésimos

function onCastSpell(cid, var)
local waittime = 2 -- Tempo de exhaustion
local storage = 120033

if exhaustion.check(cid, storage) then
return false
end
targetEffect(cid, 419, {1,0})
addEvent(targetEffect, 300, cid, 419, {2,0})
addEvent(targetEffect, 500, cid, 419, {3,0})
addEvent(targetEffect, 700, cid, 419, {4,0})
exhaustion.set(cid, storage, waittime)
return doCombat(cid, combat, var)
end

 

Exemplo:
Na primeira imagem, ta saindo da forma que eu quero e na segunda ta da forma errada.

EfeitoDelay.png

EfeitoDelayErrado.png

 

troca > doSendMagicEffect({x= t_Pos.x, y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)

por > doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)

Editado por Jeanfersonsp (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Agora, Fabi Marzan disse:

Assim oq?

 

 

oq.gif.db1a5e52f9285627cf9b42d4be936a64.gif

Isso, porém a magia precisa dar DANO somente 1 Vez

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Testa assim

Kaguya.lua

Citar

                                ----------BY----------------
                                  -----FABIAN MARZAN------
                                 ---SCRIPTS FOR JUTSUS---
                                ----------------------------
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 215)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.0, -4300, -1.0, -6500)

local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end


function Spelltest(cid) ---AQUI VC TROCA DO EFEITO
    if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
        local position = {x=getThingPosition(getCreatureTarget(cid)).x-1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
        doSendMagicEffect(position, 149)
    end
end
function Spelltest2(cid)
    if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
        local position = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
        doSendMagicEffect(position, 149)
    end
end
function Spelltest3(cid)
    if isCreature(cid) and isCreature(getCreatureTarget(cid)) then
        local position = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
        doSendMagicEffect(position, 149)
    end
end

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 1 -- não mecha
if exhaustion.check(cid, storage) then
   doPlayerSendCancel(cid, "Usted esta cansado.")
doSendMagicEffect(getCreaturePosition(cid), 2)
    return false
end
local parameters = {cid = cid, var = var, combat1 = combat1 , combat2 = combat2 , combat3 = combat3}
for i = 1, 1 do
    addEvent(function()
        if isCreature(cid) then
            addEvent(Spelltest,100,cid) ---PRA USSAR EFEITO (E UM ADDEVENT, PRA CRIAR OUTRO EFEITO VC TEM Q CRIAR OUTRO COM OUTRO NOME)
            addEvent(Spelltest2,300,cid)----EJEMPLO (addEvent(Spelltest4,500,cid)
            addEvent(Spelltest3,500,cid)
        end
    end, 1 + ((i-1) * 650))
end
for i = 1, 1 do
    addEvent(function()
        if isCreature(cid) then
        addEvent(onCastSpell1, 100, parameters) ----TEMPO (100) E DELAY (1 milisegundo)
        
        end
    end, 1 + ((i-1) * 650))
end
exhaustion.set(cid, storage, waittime)
return true
end

 

Link para o post
Compartilhar em outros sites
Agora, Fabi Marzan disse:

Consegui, muito obrigado!

Agora, Jeanfersonsp disse:

 

troca > doSendMagicEffect({x= t_Pos.x, y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)

por > doSendMagicEffect({x= t_Pos.x+ajust[1], y = t_Pos.y+ajust[2], z = t_Pos.z}, effect)

Obrigado pela ajuda Jean!

Agora, Fabi Marzan disse:

Fabio, você teria um SCRIPT em que posso movimentar X,Y de uma DISTANCE EFFECT?

Quero colocar pra sair Efeitos Missle iguais ao mesmo tempo, porém em posições diferentes.

 

Exemplo:

 

EfeitosDistance.png

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_TEAL)
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.5, -15400, -1.5, -16500)


arr1 = {
	{3}
}

local area1 = createCombatArea(arr1)
setCombatArea(combat1, area1)


local function onCastSpell1(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell2(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell3(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell4(parameters)
    return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var)
end

function onCastSpell(cid, var)
local waittime = 3 -- Tempo de exhaustion
local storage = 3

if exhaustion.check(cid, storage) then
doPlayerSendCancel(cid, "Usted esta cansado.")
doSendMagicEffect(getCreaturePosition(cid), 2)
return false
end
local parameters = { cid = cid, var = var}
local target = getCreatureTarget(cid)  -- efeito no alvo
local pos = getCreaturePosition(target)
local poz = getCreaturePosition(cid) -- effeito no caster
addEvent(onCastSpell1, 150, parameters)
addEvent(doSendDistanceShoot, 100, {x = pos.x+4, y = pos.y, z = pos.z}, pos, 25)
addEvent(doSendMagicEffect, 50, {x = pos.x+5, y = pos.y+1, z = pos.z}, 737)
addEvent(doSendMagicEffect, 150, {x = pos.x+3, y = pos.y+2, z = pos.z}, 903)
addEvent(onCastSpell2, 600, parameters)
addEvent(doSendDistanceShoot, 550, {x = pos.x-3, y = pos.y, z = pos.z}, pos, 25)
addEvent(doSendMagicEffect, 500, {x = pos.x-4, y = pos.y+1, z = pos.z}, 737)
addEvent(doSendMagicEffect, 600, {x = pos.x+3, y = pos.y+2, z = pos.z}, 903)
addEvent(onCastSpell3, 1050, parameters)
addEvent(doSendDistanceShoot, 950, {x = pos.x+4, y = pos.y, z = pos.z}, pos, 25)
addEvent(doSendMagicEffect, 900, {x = pos.x+5, y = pos.y+1, z = pos.z}, 737)
addEvent(doSendMagicEffect, 1050, {x = pos.x+3, y = pos.y+2, z = pos.z}, 903)
addEvent(onCastSpell4, 1500, parameters)
addEvent(doSendDistanceShoot, 1450, {x = pos.x-3, y = pos.y, z = pos.z}, pos, 25)
addEvent(doSendMagicEffect, 1400, {x = pos.x-4, y = pos.y+1, z = pos.z}, 737)
addEvent(doSendMagicEffect, 1500, {x = pos.x+3, y = pos.y+2, z = pos.z}, 903)
exhaustion.set(cid, storage, waittime)
return TRUE
end 

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo