Ir para conteúdo

Featured Replies

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

Resolvido por luanluciano93

Ir para solução
  • Respostas 13
  • Visualizações 802
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • So volto tarde
    So volto tarde

    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 d

  • luanluciano93
    luanluciano93

    Olá Feetads, poderia explicar melhor como funcionará? talvez tenha uma forma mais fácil.   Até onde entendi é parecido com o atual daily reward do tibia global. Eu fiz algo parecido no meu serv

  • luanluciano93
    luanluciano93

    Algo assim  function ResetSystem:applyBonuses(pid) local bonus = self:getInfo(pid) if (bonus and bonus.damage_percent) then local storageTime = getPlayerStorageValue(pid, 1111) - os.time() i

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

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ú

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