Why is it not printing when my value matches the one stated?

I am trying to get the script to output ‘move’ when the timer reaches 9

It will not output ‘move’ when the timer reaches 9, no errors are present

I have tried to use solutions in other forums and none have worked.

This is my script:

function start()
	for count = 10 , 0 , -1 do
		timer.Value = count
		print(count)	
		wait(1)
	end
	
	timer:GetPropertyChangedSignal("Value"):Connect(function()
		if timer.Value == 9 then
			print("move")			
		end
	end)
end

and try using .changed that would be better.

and put the connection before the count loop

The main error here is that you are looking for changes after the timer finishes, therefore receiving no change signal. To fix this, simply put the PropertyChangedSignal function outside of the start function. (I recommend above it)

This basically worked but instead of putting it outside the function I just put it above the for loop, thank you!

timer.Changed:Connect(function(newTime)
	if newTime == 9 then
		--Do code.
	end
end)

Use the Changed event/signal by the way.