Jump to content

Consumo de CPU


Recommended Posts

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 by MainSCR
Link to comment
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
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/

 

  • Like 1
Link to comment
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

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 by MaligNos
  • Like 1
Link to comment
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...