Postado Janeiro 20, 2022 3 anos 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 Janeiro 20, 2022 3 anos 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 Janeiro 20, 2022 3 anos 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 Janeiro 21, 2022 3 anos 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 Janeiro 22, 2022 3 anos Autor 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
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.