Ir para conteúdo
  • Cadastre-se

(Resolvido)Colocando cooldown na magia


Ir para solução Resolvido por Snowsz,

Posts Recomendados

o titulo jah dis tudo entao aqui a spells.

local tempo = 30


local effect = {175}

local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function magicEffect10(tempo2,tempo3,cid)
if (isCreature(cid)) then
if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
for i=1, #effect do
local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)
end
end
end
end

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
doCombat(cid, combat, var)
tempo2 = 0
while (tempo2 ~= (tempo*1000)) do
addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
tempo2 = tempo2 + 300
end

setPlayerStorageValue(cid, 102053,1)
else
doPlayerSendCancel(cid, "O magia está sendo usado!.")
end
end

 

pra que n sabe o cooldown é um tempo para pode usa a magia novamente, muito gente manda coloca na tag da spells. mas so que na tag n avisa quando tempo falta pra pode usa a magia novamente. e tb queria quem ajuda-se explica-se como coloca pra min pode coloca nas outras spells.

Editado por Admnwso (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

depois de

function onCastSpell(cid, var)

Adiciona

if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, 20)
else
doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
return false
end

23006 é a storage, para cada spell mude ela.

20 é o tempo em segundos que vai ficar exaust.

 

Depois disso, pule uma linha e tudo certo.

Link para o post
Compartilhar em outros sites

N funcionou, coloquei assim:

local tempo = 30


local effect = {175}

local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function magicEffect10(tempo2,tempo3,cid)
if (isCreature(cid)) then
if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
for i=1, #effect do
local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)
end
end
end
end

function onCastSpell(cid, var)
if exhaustion.check(cid, 2300100) == false then
exhaustion.set(cid, 2300100, 4000)
else
doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 2300100).."]")
return false
end
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
doCombat(cid, combat, var)
tempo2 = 0
while (tempo2 ~= (tempo*1000)) do
addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
tempo2 = tempo2 + 300
end

setPlayerStorageValue(cid, 102053,1)
else
doPlayerSendCancel(cid, "nao pode usar essa magia!.")
end
end

Link para o post
Compartilhar em outros sites
local tempo = 30
local effect = {175}
local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)
function magicEffect10(tempo2,tempo3,cid)
if (isCreature(cid)) then
if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
for i=1, #effect do
local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect[i])
end
end
end
end
function onCastSpell(cid, var)
local cooldown = 60 --Tempo de cooldown
if getPlayerStorageValue(cid, 102055) >= 1 then
doPlayerSendCancel(cid, "You're exhausted.")
return false
end
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
doCombat(cid, combat, var)
addEvent(function () setPlayerStorageValue(cid, 102055, 1) end, os.clock()+cooldown)
tempo2 = 0
while (tempo2 ~= (tempo*1000)) do
addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
tempo2 = tempo2 + 300
end
setPlayerStorageValue(cid, 102053,1)
else
doPlayerSendCancel(cid, "O magia está sendo usada!.")
end
end
Editado por Vinicius Xxgamexx (veja o histórico de edições)

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

aparece You're exhausted

mas o jutsu ainda usa logo apois.

Link para o post
Compartilhar em outros sites

Editado...  ^^

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

Cara obrigado pow ajuda em tudo. mas agr n quer usa a magia aparace You're exhausted e n usa magia.

Link para o post
Compartilhar em outros sites

Edite o tempo do cooldown... ps: em segundos no caso eu coloquei 60 segundos (1 minuto)

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

o jutsu n esta funcionando,  so aparece You're exhausted acho que tem algo errado.

 

Obs: esperei 2 minutos

Editado por Admnwso (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Reinicia o servidor e utiliza a spell de novo, só para eu verificar uma coisa...  -.-

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

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

Ainda continua do msm jeito que eu falei ai em cima

Logo após:

 

function onCastSpell(cid, var)

Adicione:

 

    if getPlayerStorageValue(cid, cooldownStorage) > os.time() then
        doPlayerSendCancel(cid, "You are exhausted.")
        return true
    else
        setPlayerStorageValue(cid, cooldownStorage, (os.time()+cooldownSeconds))
    end

E no começo to arquivo, no começo mesmo, de dois enter, e atrás dos dois enter, adicione isso:

 

local cooldownSeconds = 5
local cooldownStorage = 6541

Nisso /\, você configura o tempo de cooldown que a spell irá dar: 5 segundos que está configurado. E a storage do cooldown, caso queira um cooldown diferente para cada magia, mude o cooldownStorage para outro valor sempre para cada magia.

 

Não testei:

 

local cooldownSeconds = 5
local cooldownStorage = 6541

local tempo = 30
local effect = {175}

local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function magicEffect10(tempo2,tempo3,cid)
    if (isCreature(cid)) then
        if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
            for i=1, #effect do
                local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
                doSendMagicEffect(position, effect[i])
            end
        end
    end
end

function onCastSpell(cid, var)
    if getPlayerStorageValue(cid, cooldownStorage) > os.time() then
        doPlayerSendCancel(cid, "You are exhausted.")
        return true
    else
        setPlayerStorageValue(cid, cooldownStorage, (os.time()+cooldownSeconds))
    end
    if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
        doCombat(cid, combat, var)
        tempo2 = 0
        while (tempo2 ~= (tempo*1000)) do
            addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
            tempo2 = tempo2 + 300
        end
        
        setPlayerStorageValue(cid, 102053,1)
    else
        doPlayerSendCancel(cid, "A magia está sendo usada!")
    end
end
                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

tenta ai, nao mude nada, só tente assim

local tempo = 30


local effect = {175}

local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function magicEffect10(tempo2,tempo3,cid)
if (isCreature(cid)) then
if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
for i=1, #effect do
local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)
end
end
end
end

function onCastSpell(cid, var)

if exhaustion.check(cid, 23006) == false then
exhaustion.set(cid, 23006, 20)
else
doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
return false
end

 

if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
doCombat(cid, combat, var)
tempo2 = 0
while (tempo2 ~= (tempo*1000)) do
addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
tempo2 = tempo2 + 300
end

setPlayerStorageValue(cid, 102053,1)
else
doPlayerSendCancel(cid, "O magia está sendo usado!.")
end
end

Editado por Duuhzera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

o do amigo Snowsz funcionou so queria coloca a mensagem pra fica aparecendo. " falta 24 segundos " falta 10 segundos " faltam 1 segundos ". desse modo.

 

REp Por os 3, Vlw

 

-- Editr --

 

eu coloquei contagem na mensagem do coldown.

local cooldownSeconds = 60


local cooldownStorage = 65412

local tempo = 30
local effect = {175}

local health = 1000
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_REGENERATION)
setConditionParam(condition, CONDITION_PARAM_SUBID, 1)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health)
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000)
setCombatCondition(combat, condition)

function magicEffect10(tempo2,tempo3,cid)
if (isCreature(cid)) then
if getPlayerStorageValue(cid, 102053) > 0 and getCreatureCondition(cid, CONDITION_REGENERATION, 1) then
for i=1, #effect do
local position = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
doSendMagicEffect(position, effect)
end
end
end
end

function onCastSpell(cid, var)
if getPlayerStorageValue(cid, cooldownStorage) > os.time() then
doPlayerSendCancel(cid, "Você tem que espera "..(cooldownSeconds - (os.time() - getPlayerStorageValue(cid, cooldownStorage))).." seconds, Para pode usa o magia novamente")
return true
else
setPlayerStorageValue(cid, cooldownStorage, (os.time()+cooldownSeconds))
end
if getPlayerStorageValue(cid, 102053) ~= 1 or getCreatureCondition(cid, CONDITION_REGENERATION, 1) == false then
doCombat(cid, combat, var)
tempo2 = 0
while (tempo2 ~= (tempo*1000)) do
addEvent(magicEffect10, tempo2, tempo2, tempo*1000, cid)
tempo2 = tempo2 + 300
end

setPlayerStorageValue(cid, 102053,1)
else
doPlayerSendCancel(cid, "A magia está sendo usada!")
end
end

 

mas so que começa do 120 e terminar no 60. eu queria que começa-se no 60 e termina-se no 0.

Editado por Admnwso (veja o histórico de edições)
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