Ir para conteúdo
  • Cadastre-se

(Resolvido)addEvent em CastSpell


Ir para solução Resolvido por Rusherzin,

Posts Recomendados

Preciso que a função do addEvent(doCombat, 0, cid, combat, var)

Funcione em function onCastSpell(cid, var) dessa Spell Porque não é por não é via combat é via function onCastSpell(cid, var)

Spoiler

local config = {
mana = 0,
seconds = 0,
storage = 111313,
semMana = "Você não tem mana suficiente.",
msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",
}

local area = createCombatArea(AREA_CIRCLE2X2)

function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
for x = 1, 40 do
    addEvent(furyAttackTarget,250*x+500,cid,target,{x = getCreaturePosition(target).x + math.random(-1,1), y = getCreaturePosition(target).y + math.random(-1,1), z = getCreaturePosition(target).z})
end
end
function furyAttackTarget(cid,target,pos)
if isCreature(cid) == TRUE and isCreature(target) == TRUE then
   doSendDistanceShoot({x = getCreaturePosition(target).x - math.random(4,6), y = getCreaturePosition(target).y - 5, z = getCreaturePosition(target).z},pos,3)
   doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-200,36)
   doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-500,36)
end
end

 

function onCastSpell(cid, var)
  if getPlayerStorageValue(cid, config.storage) == -1 then
    setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)
  end
  if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then
    doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))
    return true
  end
  if getPlayerMana(cid) >= config.mana then
    doPlayerAddMana(cid, -config.mana)
    setPlayerStorageValue(cid, config.storage, os.time())
    addEvent(doCombat, 0, cid, combat, var)
  else
    doPlayerSendCancel(cid, config.semMana)
              doSendMagicEffect(getPlayerPosition(cid),2)
  end
  return true
  end

@Rusherzin

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

TRABALHOS

 

 

[iTEM.XML] Ancient Helmt dar HP e Duration: http://www.tibiaking.com/forum/topic/35010-itemxml-helmet-dar-vida-e-duration/

 

[CreatureScripts] OwNeD ao character morrerhttp://www.tibiaking.com/forum/topic/35733-creaturescripta-owned-quando-morrer/

 

Link para o post
Compartilhar em outros sites

Não entendi o que tu quer fazer, pode explicar melhor?

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

com essa parte a script não funciona se eu acrescento no onCastSpell da script acho pq ela não e por Combat

 

function onCastSpell(cid, var)
  if getPlayerStorageValue(cid, config.storage) == -1 then
    setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)
  end
  if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then
    doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))
    return true
  end
  if getPlayerMana(cid) >= config.mana then
    doPlayerAddMana(cid, -config.mana)
    setPlayerStorageValue(cid, config.storage, os.time())
    addEvent(doCombat, 0, cid, combat, var)
  else
    doPlayerSendCancel(cid, config.semMana)
              doSendMagicEffect(getPlayerPosition(cid),2)
  end
  return true
  end

TRABALHOS

 

 

[iTEM.XML] Ancient Helmt dar HP e Duration: http://www.tibiaking.com/forum/topic/35010-itemxml-helmet-dar-vida-e-duration/

 

[CreatureScripts] OwNeD ao character morrerhttp://www.tibiaking.com/forum/topic/35733-creaturescripta-owned-quando-morrer/

 

Link para o post
Compartilhar em outros sites

@Ribeiro Foda o que você quer fazer ? Você quer adiconar um addEvent, ou seja, você quer um time pra executar algo.

Não está funcionando, porquê você ta colocando pro addEvent retorna o combat, sem ter o combat, isso da nem pra questionar. "Como usar algo, que não existe ?". 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Entao, pode arrumar a script para funcionar a parte ali, pq o erro que n le deve ser essa parte 

TRABALHOS

 

 

[iTEM.XML] Ancient Helmt dar HP e Duration: http://www.tibiaking.com/forum/topic/35010-itemxml-helmet-dar-vida-e-duration/

 

[CreatureScripts] OwNeD ao character morrerhttp://www.tibiaking.com/forum/topic/35733-creaturescripta-owned-quando-morrer/

 

Link para o post
Compartilhar em outros sites

@Ribeiro Foda da sim, se eu soubesse qual callback é o verdadeiro, tem 2x onCastSpell, qual é o verdadeiro, da script ?

De forma resumida, o que esse script faz ? O que você quer que ele faça ?

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

O 1 onCastSpell é o verdadeiro. Onde ta o 2 é errado, so tirar a linha do onCastSpell e deixar a partir do ifGetPlayerStorageValue.(cid, config.storage).

Eu fiz a spell pra funcionar pra cair uma chuva de fogo do Ar e dar dano, so que essa script onde ta o onCastSpell 2 previne que o player consiga spamar ela, só de tanto em tanto seconds (esquece no config que o Seconds ta = 0 pq tava testando) ai ele tambem faz a contagem se o player tenta usar do tanto tempo que falta. Eu ja uso na minhas spell esse script da contagem, mas elas são por Combat, esse esta direto na onCastSpell entao n sei configurar quando é assim.

 

Spell verdadeira:

Spoiler

local config = {
mana = 0,
seconds = 0,
storage = 111313,
semMana = "Você não tem mana suficiente.",
msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",
}

local area = createCombatArea(AREA_CIRCLE2X2)

function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
for x = 1, 40 do
    addEvent(furyAttackTarget,250*x+500,cid,target,{x = getCreaturePosition(target).x + math.random(-1,1), y = getCreaturePosition(target).y + math.random(-1,1), z = getCreaturePosition(target).z})
end
end
function furyAttackTarget(cid,target,pos)
if isCreature(cid) == TRUE and isCreature(target) == TRUE then
   doSendDistanceShoot({x = getCreaturePosition(target).x - math.random(4,6), y = getCreaturePosition(target).y - 5, z = getCreaturePosition(target).z},pos,3)
   doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-200,36)
   doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-500,36)
end
end

 

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

TRABALHOS

 

 

[iTEM.XML] Ancient Helmt dar HP e Duration: http://www.tibiaking.com/forum/topic/35010-itemxml-helmet-dar-vida-e-duration/

 

[CreatureScripts] OwNeD ao character morrerhttp://www.tibiaking.com/forum/topic/35733-creaturescripta-owned-quando-morrer/

 

Link para o post
Compartilhar em outros sites
  • Solução

Não tenho certeza se entendi exatamente o que tu querias que eu fizesse, mas... tenta dessa forma:
 

local config = {
mana = 0,
seconds = 0,
storage = 111313,
semMana = "Você não tem mana suficiente.",
msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",
}

local area = createCombatArea(AREA_CIRCLE2X2)

function onCastSpell(cid, var)
    local target = getCreatureTarget(cid)

    if(isCreature(target) == 0) then
        return true
    end

    if getPlayerStorageValue(cid, config.storage) == -1 then
        setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)
    end
    
    if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then
        doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))
        return true
    end
  
    if getPlayerMana(cid) >= config.mana then
        doPlayerAddMana(cid, -config.mana)
        setPlayerStorageValue(cid, config.storage, os.time())
            for x = 1, 40 do
                addEvent(furyAttackTarget,250*x+500,cid,target,{x = getCreaturePosition(target).x + math.random(-1,1), y = getCreaturePosition(target).y + math.random(-1,1), z = getCreaturePosition(target).z})
            end
    else
    	doPlayerSendCancel(cid, config.semMana)
        doSendMagicEffect(getPlayerPosition(cid),2)
  end
  return true
end

function furyAttackTarget(cid,target,pos)
    if isCreature(cid) == TRUE and isCreature(target) == TRUE then
        doSendDistanceShoot({x = getCreaturePosition(target).x - math.random(4,6), y = getCreaturePosition(target).y - 5, z = getCreaturePosition(target).z},pos,3)
        doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-200,36)
        doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-500,36)
    end
end

 

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites
17 horas atrás, Rusherzin disse:

Não tenho certeza se entendi exatamente o que tu querias que eu fizesse, mas... tenta dessa forma:
 


local config = {
mana = 0,
seconds = 0,
storage = 111313,
semMana = "Você não tem mana suficiente.",
msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",
}

local area = createCombatArea(AREA_CIRCLE2X2)

function onCastSpell(cid, var)
    local target = getCreatureTarget(cid)

    if(isCreature(target) == 0) then
        return true
    end

    if getPlayerStorageValue(cid, config.storage) == -1 then
        setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)
    end
    
    if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then
        doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))
        return true
    end
  
    if getPlayerMana(cid) >= config.mana then
        doPlayerAddMana(cid, -config.mana)
        setPlayerStorageValue(cid, config.storage, os.time())
            for x = 1, 40 do
                addEvent(furyAttackTarget,250*x+500,cid,target,{x = getCreaturePosition(target).x + math.random(-1,1), y = getCreaturePosition(target).y + math.random(-1,1), z = getCreaturePosition(target).z})
            end
    else
    	doPlayerSendCancel(cid, config.semMana)
        doSendMagicEffect(getPlayerPosition(cid),2)
  end
  return true
end

function furyAttackTarget(cid,target,pos)
    if isCreature(cid) == TRUE and isCreature(target) == TRUE then
        doSendDistanceShoot({x = getCreaturePosition(target).x - math.random(4,6), y = getCreaturePosition(target).y - 5, z = getCreaturePosition(target).z},pos,3)
        doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-200,36)
        doAreaCombatHealth(cid,COMBAT_FIREDAMAGE,pos,area,-1,-500,36)
    end
end

 

 

PERFEITO CARA ! REP+

Só uma coisa, tem como a spell cair no local que voce citar as palavras invez de precisar de target pra ela ficar caindo onde está com target?

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

TRABALHOS

 

 

[iTEM.XML] Ancient Helmt dar HP e Duration: http://www.tibiaking.com/forum/topic/35010-itemxml-helmet-dar-vida-e-duration/

 

[CreatureScripts] OwNeD ao character morrerhttp://www.tibiaking.com/forum/topic/35733-creaturescripta-owned-quando-morrer/

 

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