Postado Agosto 7, 2020 4 anos 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 Agosto 11, 2020 4 anos por Thensus Warrior Área errada (veja o histórico de edições)
Postado Agosto 13, 2020 4 anos 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 Agosto 13, 2020 4 anos 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 Agosto 14, 2020 4 anos 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 Agosto 14, 2020 4 anos 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.