Jump to content

(Resolvido)Preciso colocar um cooldown nessa spell.


Go to solution Solved by Jazz,

Recommended Posts

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.

Edited by Thensus Warrior
Área errada (see edit history)
Link to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

  • Solution
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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By allanzinh
      Alguem me ajuda como errumar ese Erro ? jah fiz de tudo mais não ocnsegui
       
      [10/09/2014 18:50:20] [Error - Spell Interface]
      [10/09/2014 18:50:20] data/spells/scripts/ps/Leech Seed.lua:onCastSpell
      [10/09/2014 18:50:20] Description:
      [10/09/2014 18:50:20] (luaGetPlayerSlotItem) Player not found
       
      só da ese Erro quando o pokemon selvagen usa ese atk . Agradeço des de ja
       
    • By Sir Drops
      Olá galera do TK, queria saber se alguém poderia solucionar minha dúvida.
       
       
      Criei a Seguinte spell
       
      Ela aparece mas não da DANO algum... 
    • By Sr.McAdams
      Olá, gostaria que me ajudassem em uma spell se possivel,

      Gostaria de uma spell que um determinado effect ( DISTANCE) saísse de um determinado ponto X da tela , e fosse em direção ao target.

      Ex:Como uma bola de fogo estivesse caindo do "céu" no target. (o efeito que irá sair, será um efeito Distance \x )
       
      https://www.youtube.com/watch?v=kvAoijsI3vg
      Como a spell do video, porém q saia apenas 1 efeito no target, e não varios!
       
      Agradeço   
       
       
       
       
       
    • By safdo
      Seguinte, no meu server eu uso runas infinitas, todas são infinitas... Com exceção de uma, a Destroy Field, já procurei em todos os lugares e não achei uma solução. Existe algum jeito de deixa-la infinita? (PS: é meu primeiro tópico se estiver errado mova por favor)
                 Esse é o script dela:
      function onUse(cid, item, frompos, item2, topos) fieldpos = topos fieldpos.stackpos = 254 fielditem = getThingfromPos(fieldpos) if getPlayerMagLevel(cid) >= 3 then if fielditem.itemid > 0 and fielditem.itemid ~= 1497 and fielditem.itemid ~= 1498 then doSendMagicEffect(topos,2) doRemoveItem(fielditem.uid,1) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end else doSendMagicEffect(frompos,2) return 0 end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You don't have the required magic level to use that rune.") end return 1 end
    • By Loldinis
      Pessoal, to querendo fazer o exori antigo, do 7.x, que custava 75% da mana do knight
      Mas quero por ele no 8.6

      alguém sabe como faço isso?
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo