Okay im trying to make a round script that shows the time left in a GUI. The problem im having is either it only shows up for the first player to join or the time of every GUI is different. I think the reason for this is because it goes through the loop and counts down from 45 before it runs through the loop again. I've been trying for weeks to fix this and have literally gotten no where. Can anyone please tell me how to fix these problems? Thanks!
I've narrowed the script down to the part im having problems with:
function Intermission()
for i,v in pairs(game.Players:GetPlayers) do
v.PlayerGui.ScreenGui.Frame.Visible = true
for i= 45,1 -1 do
v.PlayerGui.ScreenGui.Frame.TextLabel.Text = i
end
end
end

4 comments
No coroutines.
Can you explain that?
Coroutines let you run functions "at the same time" (there're nuances). A lot of people suggest them to solve problems like this, but they are very rarely the correct answer, because they can make code very complicated very quickly (and there's usually better solutions).
Sorry, my mind went to coroutines as the answer but I realize there's a better solution. Disreguard my statement about coroutines.