Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

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)

Resolvido por Jazz

Ir para solução
  • Respostas 6
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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, C

  • 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, COM

  • Fico feliz por ajudar, o motivo de ser 1000 é que eu pensei que era milisegundos, fazia mais de ano que eu não mexia com a biblioteca os.time de Lua ?

Postado
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. 

Postado
  • Autor
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'

 

Postado
  • 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
 

Postado
  • Autor
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.

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo