Ir para conteúdo
  • Cadastre-se

(Resolvido)Storage resetar todo dia 07:00h


Ir para solução Resolvido por zipter98,

Posts Recomendados

Bom dia, estou fazendo um NPC daily quest, porém preciso que uma storage reset todo dia 7 horas da manhã.

Fiz um pequeno global event:

function onTimer()
    db.executeQuery('INSERT IGNORE INTO `player_storage` SELECT `id`, 130090, 0 FROM `players` WHERE `online` = 0 ON DUPLICATE KEY UPDATE `value` = 0') 
end

Ela reseta normal, mais ai vem a dúvida, e se o server tiver off 7:00h? caso ocorra um crash por exemplo, existe alguma outra maneira?

Editado por lorenzo2014 (veja o histórico de edições)

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

caso server esteja fechado não ira executar o globalevents amigo.

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

Sei disso @klipstyle, queria saber na verdade se há outra opção.

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

Eu axo que essa funçao "onStartup() " do globalevents deve Fazer isso:

function onStartup()



db.executeQuery('INSERT IGNORE INTO `player_storage` SELECT `id`, 130090, 0 FROM `players` WHERE `online` = 0 ON DUPLICATE KEY UPDATE `value` = 0')


return true
end

<globalevent name="serverstart" type="start" event="script" value="start.lua"/>

 

- Deve ser Isso pois eu verifiquei aqui no Meu Serv Test e dentro tinha Coisas do Golden Arena , Caso o Servidor Seja Crashado ou  algo do Tipo e quando ao iniciar vai acontecer isso:

endGoldenArena(true)

 

- Finalizar o Golden Arena!

Editado por Nextbr (veja o histórico de edições)

 

 

Link para o post
Compartilhar em outros sites

Next, dessa forma, toda vez que o server cair, ai vai remover a storage, ai player vai poder fazer  a daily quest novamente.

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

Next, dessa forma, toda vez que o server cair, ai vai remover a storage, ai player vai poder fazer  a daily quest novamente.

Não estou entendendo o que realmente você quer...

Só sei que já conseguiu fazer que toda 7hr resete a storage.

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

Consegui, mas e se o server tiver off 7h? ai não resetaria a storage.

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

se o Servidor cair é por que causou Crash Correto? e se durante essa daily quest nao salvar o server e cair? nao tem como para aonde estava Pelo Motivo obvio, So se voce colocar um doPlayerSave(cid) a cada Ponto de Storage da Task 


 

 

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

Você pode colocar, como valor da storage, a diferença de segundos entre o horário atual e o horário designado (7h, nesse caso). Assim, não haveriam problemas como este.

Exemplo:

function timeDiff(from, to)
    local ret = {}
    local t1 = from:explode(":")
    local t2 = to:explode(":")
    for i = 3, 1, -1 do
        t1[i] = tonumber(t1[i])
        t2[i] = tonumber(t2[i])
        if t2[i] > t1[i] then
            ret[i] = t2[i] - t1[i] - (ret[i] and 1 or 0) 
        elseif t1[i] > t2[i] then
            local value = i ~= 1 and 60 or 24
            ret[i] = value - t1[i] + t2[i] - (ret[i] and 1 or 0)
            ret[i - 1] = true
        else
            ret[i] = ret[i] and 1 or 0
        end
    end
    return ret
end
local diff = timeDiff(os.date("%X"), "07:00:00")
setPlayerStorageValue(cid, 9292, os.time() + diff[1] * 60 * 60 + diff[2] * 60 + diff[3])
Para checagens:
if getPlayerStorageValue(cid, 9292) > os.time() then
    --não deu 7h ainda
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Para entender zipter98, quando der 7 horas da manhã se o server estiver off, ele irá resetar a storage qdo ele ligar?

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

No método que apresentei não é necessário aplicar um reset no valor da storage. 

os.time() retorna quantos segundos se passaram desde o dia 1º de Janeiro de 1970, às 00:00:00. Somando a diferença de segundos entre o horário atual e o horário designado (como já mencionado, 7 horas da manhã) com o os.time() atual, temos como valor resultante a quantidade de segundos passados desde aquela data que mencionei até a próxima 7h.

Comparando o valor da storage com o os.time() atual, podemos concluir informações como:

  • storage > os.time() = ainda não deu 7h
  • storage < os.time() = já passou das 7h

Logo, não importa se o servidor estará ou não offline.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

mas é para qndo servidor ligar? ai usa onStart ou se for para resetar é mais simples...

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

zipter98

Eu não conhecia a função, perfeito!

 

Vodkart Obrigado.

Editado por lorenzo2014 (veja o histórico de edições)

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

function onTimer()
local storage = 130090
for _, pid in ipairs(getPlayersOnline()) do
setPlayerStorageValue(pid, storage, -1) -- reset storage from players online
end
db.executeQuery("DELETE FROM `player_storage` WHERE `key` = "..storage) -- reset player offline
return true
end
Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart, perfeito!

@Zypter98, não conhecia essa função, perfeita. Obrigado.

Editado por lorenzo2014 (veja o histórico de edições)

                                                                                               1zcn2mb.jpg

 

                                                                                                                       Danera Global Server

                                                                                                                       Versão: 10.77 - 10.79

                                                                                                                       Sem Items VIP

                                                                                                                       Venha se divertir

Link para o post
Compartilhar em outros sites

só usar

 

if timeDiff(os.date("%X"), "07:00:00") then
...
end

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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