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

Why isn't the time changing properly?

I'm helping my friend make a FNaF horror game, and I have the day/night cycle scripted, however, it doesn't work properly. Sure, it'll work in studio just fine, but when multiple players are on the game, the time will either be stuck at "12:00", or just be offset.

Here are the scripts I have.

Regular script in workspace

local remEvent = game.ReplicatedStorage:WaitForChild("changingtime")
local remEvent2 = game.ReplicatedStorage:WaitForChild("fixingtime")
wait(5) -- Waited 5 seconds for clients to pick it up
remEvent:FireAllClients()
remEvent2:FireAllClients()
wait()
script.Disabled = true

LocalScript in StarterGUI that handles the events

local remEvent2 = game.ReplicatedStorage:WaitForChild("fixingtime")

remEvent2.OnClientEvent:Connect(function()
	script.Parent.fixer.Disabled = false
	script.Parent.LocalScript.Disabled = false
end)

LocalScript in StarterGUI that plays the sound upon joining, (happens once i think)

print("Running time fixer.")
wait(0.2)
print("Fixed time. -2_MMZ")
game.Workspace.Sounds.FNAF6AM:Play()
game.Workspace.Sounds.Day:Play()
game.Workspace.Sounds.Day.Looped = true
script.Parent.Time2.Text = "Daytime"
script.Parent.Time.Text = "6:00 AM"

LocalScript in StarterGUI that handles the time and GUI text

	while wait(1) do
		game.Lighting.ClockTime += 0.02
		print("Changed time.")
		if game.Lighting.ClockTime == 0 then
			script.Parent.Time.Text = "12:00 AM"
			script.Parent.Time2.Text = "Nightshift"
			game.Workspace.Sounds.Night:Play()
			game.Workspace.Sounds.Night.Looped = true
			game.Workspace.Sounds.Day:Stop()
			game.Workspace.Sounds.Day.Looped = false
			game.Workspace.Sounds.hauntedSOULS:Stop()
		game.Workspace.Sounds.hauntedSOULS.Looped = false
		game.Workspace.DeezBuildingLights.Light17.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light18.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light19.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light20.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light21.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light22.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light23.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light24.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light25.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light26.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light27.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light28.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light29.SurfaceLight.Brightness = 0
		game.Workspace.DeezBuildingLights.Light30.SurfaceLight.Brightness = 0
		end

		if game.Lighting.ClockTime == 1 then
			script.Parent.Time.Text = "1:00 AM"
			script.Parent.Time2.Text = "Nightshift"
		end

		if game.Lighting.ClockTime == 2 then
			script.Parent.Time.Text = "2:00 AM"
			script.Parent.Time2.Text = "Nightshift"
		end

		if game.Lighting.ClockTime == 3 then
			script.Parent.Time.Text = "3:00 AM"
			script.Parent.Time2.Text = "Nightshift"
		end

		if game.Lighting.ClockTime == 4 then
			script.Parent.Time.Text = "4:00 AM"
			script.Parent.Time2.Text = "Nightshift"
		end

		if game.Lighting.ClockTime == 5 then
			script.Parent.Time.Text = "5:00 AM"
			script.Parent.Time2.Text = "Nightshift"
		end

		if game.Lighting.ClockTime == 6 then
			script.Parent.Time.Text = "6:00 AM"
			game.Workspace.Sounds.FNAF6AM:Play()
			script.Parent.Time2.Text = "Daytime"
			game.Workspace.Sounds.Night:Stop()
			game.Workspace.Sounds.Night.Looped = false
			game.Workspace.Sounds.Day:Play()
			game.Workspace.Sounds.Day.Looped = true
			game.Workspace.Sounds.hauntedSOULS:Stop()
		game.Workspace.Sounds.hauntedSOULS.Looped = false
		game.Workspace.DeezBuildingLights.Light17.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light18.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light19.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light20.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light21.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light22.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light23.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light24.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light25.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light26.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light27.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light28.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light29.SurfaceLight.Brightness = 2
		game.Workspace.DeezBuildingLights.Light30.SurfaceLight.Brightness = 2
		end

		if game.Lighting.ClockTime == 7 then
			script.Parent.Time.Text = "7:00 AM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 8 then
			script.Parent.Time.Text = "8:00 AM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 9 then
			script.Parent.Time.Text = "9:00 AM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 10 then
			script.Parent.Time.Text = "10:00 AM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 11 then
			script.Parent.Time.Text = "11:00 AM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 12 then
			script.Parent.Time.Text = "12:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 13 then
			script.Parent.Time.Text = "1:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 14 then
			script.Parent.Time.Text = "2:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end

		if game.Lighting.ClockTime == 15 then
			script.Parent.Time.Text = "3:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 16 then
			script.Parent.Time.Text = "4:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 17 then
			script.Parent.Time.Text = "5:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 18 then
			script.Parent.Time.Text = "6:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 19 then
			script.Parent.Time.Text = "7:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 20 then
			script.Parent.Time.Text = "8:00 PM"
			script.Parent.Time2.Text = "Daytime"
		end
		if game.Lighting.ClockTime == 21 then
			script.Parent.Time.Text = "9:00 PM"
			script.Parent.Time2.Text = "Closing Time"
			game.Workspace.Sounds.hauntedSOULS:Play()
			game.Workspace.Sounds.hauntedSOULS.Looped = true
			game.Workspace.Sounds.Day:Stop()
			game.Workspace.Sounds.Day.Looped = false
			game.Workspace.Sounds.Night:Stop()
		game.Workspace.Sounds.Night.Looped = false
		game.Workspace.DeezBuildingLights.Light17.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light18.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light19.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light20.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light21.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light22.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light23.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light24.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light25.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light26.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light27.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light28.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light29.SurfaceLight.Brightness = 0.1
		game.Workspace.DeezBuildingLights.Light30.SurfaceLight.Brightness = 0.1
		end
		if game.Lighting.ClockTime == 22 then
			script.Parent.Time.Text = "10:00 PM"
			script.Parent.Time2.Text = "Closing Time"
		end
		if game.Lighting.ClockTime == 23 then
			script.Parent.Time.Text = "11:00 PM"
			script.Parent.Time2.Text = "Closing Time"
		end
	end

I'm very confused, if anyone can help me with this, I would be super grateful! ANY working answer is appreciated!

3 comments

0

is it the clocktime or the label that doesn't work-

0

Both

0

o

1 answer

✓ Accepted answer

When I made a time system, I put a few int values in replicatedStorage. Use a server script to change it, then access the value from a local script. This means they will all be synced up and no one will be left out.

Also try changing the light levels from a server script, it is unnecessary to change it from everyone's local scripts

(in answer to your original question, I don't think you initiate the script for new players, so if someone has bad internet and it takes more than 5 seconds to load, they won't get the message to start the time)

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