Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

I made a Day/Night script and for some reason it didn't work! why?

So I made this Day/Night script:

function Timer()
	wait(0.1)
	game.Lighting.TimeOfDay = TimeOfDay + 2
end
while wait(0.1)do
	Timer()
end

This didn't work! can someone tell me why?

2 answers

You haven't defined TimeOfDay (used on the right side of the = in line 3).

Lua won't guess what you mean. You have to be explicit and unambiguous:

game.Lighting.TimeOfDay = game.Lighting.TimeOfDay + 2;

However according to the Wiki article on TimeOfDay, says TimeOfDay is a string (text), which means you cannot add 2 to it.

If we look at the wiki article on Lighting, we can see there is a number GetMinutesAfterMidnight() method and a SetMinutesAfterMidnight(number minutes) method. We have to use those instead:

game.Lighting:SetMinutesAfterMidnight(
	game.Lighting:GetMinutesAfterMidnight() + 2
)



The wait(0.1) on line 2 of your snippet is probably frivolous. You already have a wait on line 5. If you want the interval to be ever 0.2 seconds, you should just edit the one in the while loop to use that amount.

TimeOfDay is set in this form: num:num:num. For this reason, you cannot add 2. Second of all, you would do game.Lighting.TimeOfDay = game.Lighting.TimeOfDay + 2, not game.Lighting.TimeOfDay = TimeOfDay + 2because you're saying to add 2 from the original time. This is the correct way to do it:

speed = 1
sec = 0
mins = 0
hour = 0
while true do
	game.Lighting.TimeOfDay = ""..hour..":"..mins..":"..sec..""
	sec = sec + (5*speed)
	if sec >= 60 then
		sec = 0
		mins = mins+1
	end
	if mins >= 60 then
		mins = 0
		hour = hour + 1
	end
	if hour >= 24 then
		hour = 0
	end
	wait(0.05)
end

This basically adds one second to the time every 0.05 seconds. I hope this helped!

This discussion is preserved as it was. New answers, comments, and votes are closed.