main Posted May 5, 2019 Share Posted May 5, 2019 (edited) Olá pessoal, então, fiz este código para verificar dia e hora real. Em questão de otimização e consumo de cpu, será que essa é a melhor forma de fazer isso? function checkTime() local theDay = getRealDay() if theDay == "Segunda-feira" or theDay == "Terca-feira" or theDay == "Quarta-feira" or theDay == "Quinta-feira" or theDay == "Sexta-feira" then local theTime = getTimeServer() if theTime == "17:08:00" then triggerClientEvent("onPlayerGetText", root, "BOT: Teste") end end end setTimer(checkTime, 1000, 0) local dias = {"Domingo","Segunda-feira","Terca-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sabado"} function getRealDay() local time = getRealTime() return dias[tonumber(time.weekday)+1] end function getTimeServer() local time = getRealTime() local hours = time.hour local minutes = time.minute local seconds = time.second if hours < 10 then hours = "0"..hours end if minutes < 10 then minutes = "0"..minutes end if seconds < 10 then seconds = "0"..seconds end return hours..":"..minutes..":"..seconds end Edited May 5, 2019 by MainSCR Link to comment
Jonas^ Posted May 5, 2019 Share Posted May 5, 2019 Você esta usando client-side? se for client-side acho que não, eu aumentaria o tempo ali do timer colocaria uns 10 segundos. 1 Link to comment
DNL291 Posted May 5, 2019 Share Posted May 5, 2019 Esse trigger no getRootElement num timer aí que é o problema. De preferência faça o script no lado cliente, como disse o Jonas. 1 Link to comment
main Posted May 6, 2019 Author Share Posted May 6, 2019 4 hours ago, Jonas^ said: Você esta usando client-side? se for client-side acho que não, eu aumentaria o tempo ali do timer colocaria uns 10 segundos. Entendi, estava server-side mas mudei, obrigado. 2 hours ago, DNL291 said: Esse trigger no getRootElement num timer aí que é o problema. De preferência faça o script no lado cliente, como disse o Jonas. No client-side retornaria a hora do client né? Link to comment
[M]ister Posted May 6, 2019 Share Posted May 6, 2019 37 minutes ago, MainSCR said: No client-side retornaria a hora do client né? Exato! Você quer executar uma ação quando for x horas ? Caso sim, mantenha o código no lado servidor, mas ao invés de ficar verificando a hora todo instante, basta calcular os milissegundos que possuem do momento que ativar o script até a hora/dia desejado, ai só criar o setTimer com tal valor. Talvez ajude: https://forum.multitheftauto.com/topic/76253-usando-timestamp/ 1 Link to comment
main Posted May 6, 2019 Author Share Posted May 6, 2019 31 minutes ago, MaligNos said: Exato! Você quer executar uma ação quando for x horas ? Caso sim, mantenha o código no lado servidor, mas ao invés de ficar verificando a hora todo instante, basta calcular os milissegundos que possuem do momento que ativar o script até a hora/dia desejado, ai só criar o setTimer com tal valor. Talvez ajude: https://forum.multitheftauto.com/topic/76253-usando-timestamp/ Mas daí, seria de segunda a sexta como foi feita a verificação e horários definidos, eu teria que alterar o cálculo todo dia? Link to comment
[M]ister Posted May 6, 2019 Share Posted May 6, 2019 (edited) Então executará em outros horários além daquele 17:08 ? É possível também, mas creio que a codificação não será tão trivial quanto para apenas um horário definido. Pensando rapidamente aqui, eu criaria uma tabela com tais horários, percorreria e obteria o getTimestamp* para cada um deles, e com isso faria o cálculo dos milissegundos para criar os setTimers (cada um para um horário). *O trabalho seria verificar se o horário que você ativou o script já é maior, menor ou igual à tais horários definidos, e talvez até precisar verificar quantos dias possui no mês, se o ano é bissexto, para poder mandar valores válidos ao getTimestamp. Caso não queira trabalho, aumente o tempo do seu setTimer de 1000ms, para 60000ms, mas apenas se a verificação dos horários não envolver segundos. Edited May 6, 2019 by MaligNos 1 Link to comment
main Posted May 6, 2019 Author Share Posted May 6, 2019 1 hour ago, MaligNos said: Então executará em outros horários além daquele 17:08 ? É possível também, mas creio que a codificação não será tão trivial quanto para apenas um horário definido. Pensando rapidamente aqui, eu criaria uma tabela com tais horários, percorreria e obteria o getTimestamp* para cada um deles, e com isso faria o cálculo dos milissegundos para criar os setTimers (cada um para um horário). *O trabalho seria verificar se o horário que você ativou o script já é maior, menor ou igual à tais horários definidos, e talvez até precisar verificar quantos dias possui no mês, se o ano é bissexto, para poder mandar valores válidos ao getTimestamp. Caso não queira trabalho, aumente o tempo do seu setTimer de 1000ms, para 60000ms, mas apenas se a verificação dos horários não envolver segundos. Entendi, vou ver o que eu consigo fazer, obrigado pela ajuda! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now