Ir para conteúdo

Posts Recomendados

Postado

salve rapaziada, estou fazendo uma quest no meu OT que é necessário faze-la durante 10 dias consecutivos, porém caso o player perca um dia, a storage da quest reseta.
Já tenho esses scripts prontos de 2 formas: global event que checa a storage de todos os player online no momento e caso ja tenha passado 24h ele tira a storage do player que está entre os 10 dias de quest.
E também tenho um creatureScript de onLogin() que quando o player loga, ele entra num loop de verificação a cada 60s

minha duvida: globalEvents vai checar todos os players online de uma só vez e fazer as alterações necessarias, isso pode lagar a distro, ou até mesmo crashar?
o creatureScript vai entrar num loop até o player deslogar, isso numa média de 250 pessoa são diversas verificações em momentos diferentes, pode acabar lagando ou crashando?

meu OT possui uma media de 300 pessoas online.

Script globalEvents é esse:


function onThink(interval, lastExecution)
    local players = {}
    local timer = os.time()
    for _, pid in pairs (getPlayersOnline()) do
        local storage = getPlayerStorageValue(pid, 1231234)
        if getPlayerStorageValue(pid,888251) > 0 and getPlayerStorageValue(pid,888251) <= 9 then
            if storage - timer <= 1  then
                table.insert(players, pid)
            end
        end
    end

    
    if #players > 0 then
        for i = 1, #players do
            doPlayerSendTextMessage(players[i],22,"seu dano voltou ao normal por vc nao ter feito a quest!")
            setPlayerStorageValue(players[i],888251,0)
        end
    end
return true
end

Script do Creature é esse:
local storage = getPlayerStorageValue(cid,1231234)
        function checkStorage(cid) local timer = os.time()
               if not isPlayer(cid) then return true end
               if getPlayerStorageValue(cid,888251) > 0 and getPlayerStorageValue(cid, 888251) <= 9 then
                       if storage - timer <= 1 then
                               setPlayerStorageValue(cid,888251,0)
                       end
             end
             addEvent(function()
                        checkStorage(cid)
              end, 60000)
end
function onLogin(cid)
        checkStorage(cid)
return true
end
function onLogout(cid)
       stopEvent(checkStorage[cid])
return true
end


caso os códigos nao estejam legiveis me avisem como arrumar em .lua pf

se quiserem usar os códigos podem usar a vontade kkkkkkk

Postado

Este tópico foi movido para a seção de Suporte Otserv.

o creaturescript de onlogin seria o melhor nesse caso, aliás, me diz uma Coisa, porque verificar a cada 10 segundos, minutos, ou horas se a quest é diária? dá pra deixar somente o evento de login com algumas verificações 

Postado

tipo assim @So volto tarde preciso verificar pelo menos a cada 10 minutos, porque a quest é diária porém o portal abre 19h e fecha 19:03h, ai quem não entrar tem que perder a storage após passar 24h de ter clicado no baú, e não da pra fazer uma verificação diaria, pq se o cara logar após a quest ele n vai perder a storage, então eu precisaria de algo que a cada 10 minutos pelo menos verifique os players pra pode tirar essa storage se eles perderem a quest

 

Postado
6 horas atrás, FeeTads disse:

tipo assim @So volto tarde preciso verificar pelo menos a cada 10 minutos, porque a quest é diária porém o portal abre 19h e fecha 19:03h, ai quem não entrar tem que perder a storage após passar 24h de ter clicado no baú, e não da pra fazer uma verificação diaria, pq se o cara logar após a quest ele n vai perder a storage, então eu precisaria de algo que a cada 10 minutos pelo menos verifique os players pra pode tirar essa storage se eles perderem a quest

 

saquei mais ou menos, mas se for pelo que deu para entender, utilizar um globalevent será a melhor opção mesmo, só um adendo:

vc está verificando se apenas os players online estão com tal valor de storage, se um player entrar durante o interval de 1 globalevent pro outro e clicar no bau durante esse meio tempo, eles vao ter perdido o dia, porém mesmo assim vão ter pego o baú

Postado

aaah fraguei então, o global event vai ficar só checando se tem a storage e como a storage do bau eh os.time() de 24h vai ficar certinho então, vlw meu mano +rep <3

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo