Ir para conteúdo
  • Cadastre-se

(Resolvido)Preciso colocar um cooldown nessa spell.


Ir para solução Resolvido por Jazz,

Posts Recomendados

Galera, tentei de toda forma colocar cooldown nessa spell e não consegui, em spells mais comuns sem addevent consegui.

Se alguém puder adicionar um cooldown nela pra mim ficaria muito grato!

Uso tfs 1.0

Spoiler

local combat = Combat()
local time_between_hits = 0.3 --seconds

combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 32)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)

function onGetFormulaValues(player, skill, attack, factor)
    local distSkill =
    player:getEffectiveSkillLevel(SKILL_DISTANCE)
    local min = (player:getLevel() / 5) + (distSkill * attack * 0.25) + 80
    local max = (player:getLevel() / 5) + (distSkill * attack * 0.45) + 121
    return -min, -max
end
combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
   combat:execute(creature, var)
  addEvent(function()  combat:execute(creature, var) end, time_between_hits * 1000)
  return true
end

 

@edit

só depois de ter postado percebi que cliquei na área errada, desculpe o erro.

Editado por Thensus Warrior
Área errada (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local storageCoolDown = 6547, -- Valor da Storage,
local storageTime = 5, -- Tempo em Segundos
local time_between_hits = 0.3 --seconds

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 32)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)

function onCastSpell(creature, var)
    local player = Player(creature:getId())
  
    if player:getStorageValue(storageCoolDown) < os.time() then
        player:setStorageValue(storageCoolDown, os.time() + storageTime * 1000)
        combat:execute(creature, var)

        addEvent(function()
            combat:execute(creature, var)
        end, time_between_hits * 1000)
    else
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Você deve aguardar no mínimo " .. storageTime .. " segundos antes de utilizar esse feitiço.")
        return false
    end

    return true
end


@Thensus Warrior,
Tenta ai, estou meio enferrujado com os.time e storage, eu nem testei antes de te enviar... Eu acho que vai funcionar, se não funcionar me avise que eu volto. 

Link para o post
Compartilhar em outros sites
31 minutos atrás, Jazz disse:

local storageCoolDown = 6547, -- Valor da Storage,
local storageTime = 5, -- Tempo em Segundos
local time_between_hits = 0.3 --seconds

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 32)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)

function onCastSpell(creature, var)
    local player = Player(creature:getId())
  
    if player:getStorageValue(storageCoolDown) < os.time() then
        player:setStorageValue(storageCoolDown, os.time() + storageTime * 1000)
        combat:execute(creature, var)

        addEvent(function()
            combat:execute(creature, var)
        end, time_between_hits * 1000)
    else
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Você deve aguardar no mínimo " .. storageTime .. " segundos antes de utilizar esse feitiço.")
        return false
    end

    return true
end


@Thensus Warrior,
Tenta ai, estou meio enferrujado com os.time e storage, eu nem testei antes de te enviar... Eu acho que vai funcionar, se não funcionar me avise que eu volto. 

Fala mano, deu esse erro na distro e a spell não saiu.
Ps; só corrigindo meu tfs não é 1.0, é 1.2 , errei no tópico kkk

Citar

[Warning - Event::checkScript] Can not load script: scripts/attack/double shot.lua data/spells/scripts/attack/double shot.lua:2: unexpected symbol near 'local'

 

Link para o post
Compartilhar em outros sites
  • Solução
local storageCoolDown = 6547 -- Valor da Storage,
local storageTime = 5 -- Tempo em Segundos
local time_between_hits = 0.3 --seconds

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 32)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)

function onCastSpell(creature, var)
    local player = Player(creature:getId())
  
    if player:getStorageValue(storageCoolDown) < os.time() then
        player:setStorageValue(storageCoolDown, os.time() + storageTime * 1000)
        combat:execute(creature, var)

        addEvent(function()
            combat:execute(creature, var)
        end, time_between_hits * 1000)
    else
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Você deve aguardar no mínimo " .. storageTime .. " segundos antes de utilizar esse feitiço.")
        return false
    end

    return true
end



Tenta agora, acho que vai, foi mal a demora kkk
 

Link para o post
Compartilhar em outros sites
22 minutos atrás, Jazz disse:

local storageCoolDown = 6547 -- Valor da Storage,
local storageTime = 5 -- Tempo em Segundos
local time_between_hits = 0.3 --seconds

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, 32)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)

function onCastSpell(creature, var)
    local player = Player(creature:getId())
  
    if player:getStorageValue(storageCoolDown) < os.time() then
        player:setStorageValue(storageCoolDown, os.time() + storageTime * 1000)
        combat:execute(creature, var)

        addEvent(function()
            combat:execute(creature, var)
        end, time_between_hits * 1000)
    else
        player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Você deve aguardar no mínimo " .. storageTime .. " segundos antes de utilizar esse feitiço.")
        return false
    end

    return true
end



Tenta agora, acho que vai, foi mal a demora kkk
 

Você está se propondo a me ajudar, como pode pedir desculpas? kkk
Agora deu certo, só tive que modificar essa parte e adicionar a formula de dano na spell haha, do jeito que estava o cooldown estava ficando muito alto ( creio eu q multiplicando 5*1000 e somando tudo segundos )

player:setStorageValue(storageCoolDown, os.time() + storageTime * 1)

Muito obrigado! Preciso urgente aprender mais de scripting pra resolver coisas simples assim.

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.

  • Conteúdo Similar

    • Por Kazuya9629
      como eu fasso pro charmander usa spell Ember ea outfit dele mudar por alguns segundos
       
      base poke jornadas 
    • Por Jedian
      Olá galera, aqui eu denovo com outro post, que espero que seja útil pra vocês.
      Pois é, eu só posto spells, mas é que o resto, praticamente não tem o que inventar, sim, tem, mas o que está exatamente ao alcance de um scripter, nem fácil demais, nem impossível pra ele, é praticamente inexistente, por isso é difícil pra nós, scripters, na minha opinião, demonstrar exatamente o potencial de cada um, e em spells, cada um faz do seu jeito, ficando ruim ou não, é perfeita pra cada um que a faz, estou pensando muito em outros sistemas pra vocês, sério, mas tá difícil.
      Mudando de assunto, vamos a magia, pensei nela esfregando pedras a ideia seria uma magia que faz uma espada "costurar em linha reta"(como o nome diz) para frente do personagem de acordo com o tipo de arma usada, aí, se houver um target, ela vai até ele e dá "costuradas" conforme a distância que percorreu até chegar nele, quanto mais perto, mais "costuradas" e vice-versa.
      Vamos instalar:
      em data/spells/scripts copie um arquivo e cole-o, renomeie para algum nome, apague todo o conteúdo e cole isso dentro:



      <instant name="Sewing Straight" words="sewing straight" lvl="35" mana="0" prem="0" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="nome.lua"></instant>
      edite o nome do arquivo e ajeite conforme as preferências.
      Pronto, está instalado, nenhuma foto, pois não dá pra ter uma ideia muito boa com elas :S testem e critiquem aí.
    • Por Sociopata
      Abra data\spells\scripts cria um arquivo com nome earthquake.lua e cole isso \/


      local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STONES) setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.9, 0, 1.0, 0) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 34) setCombatParam(combat1, COMBAT_PARAM_USECHARGES, TRUE) setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 0.9, 0, 1.0, 0) local area1 = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat1, area1) function onCastSpell(cid, var) doCombat(cid, combat1, var) return doCombat(cid, combat, var) end em data /spells.xml cole isso \/ <instant name="earthquake" words="exori beam" lvl="33" mana="450" prem="0" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="earthquake.lua"> <vocation id="4"/>
    • Por Linus
      Tag spells.XML(configure a gosto, use o mesmo para todos os scripts acima) :
      <instant name="NAME" words="NAME" lvl="1" mana="1" prem="0" aggressive="1" selftarget="0" exhaustion="1" group="attack" groupcooldown="1" needlearn="0" script="ARQUIVO.lua"> <vocation name="VOCATION NAME"/> </instant>  Para adicionar a spell, só ir em data/spells/scripts criar um arquivo .lua para o script e adicionálo e dps ir em spells.XML colocando a tag, configurada de acordo com a spell em questão.
       
       
       
       
      Créditos Printer.
       
       
       
    • Por Tricoder
      Descrição
      Estilo utito tempo, adiciona 10x mais magic levels durante 30 segundos. Para alterar, modifique essa parte:
      setConditionParam(condition2, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition2, CONDITION_PARAM_STAT_MAGICLEVEL, 10) Modifique as vocações na tag também.
       
      Script
      data/spells/scripts/utitomana.lua
      local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition2 = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition2, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition2, CONDITION_PARAM_STAT_MAGICLEVEL, 10) setCombatCondition(combat, condition2) function onCastSpell(cid, var) local ret = LUA_ERROR if(doCombat(cid, combat, var) == LUA_NO_ERROR) then ret = LUA_NO_ERROR end return ret end data/spells/spells.xml 
      <instant name="Utito Mana" words="utito tempo mana" lvl="60" mana="450" prem="1" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="utitomana.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Créditos: Acubens
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo