Currently I have a screengui with a timer that counts down from 15. I'm not too worried about making the whole thing repeat itself infinitely yet, I'm just trying to get it work once.
intermissiontime = 15 local repStorage = game:GetService("ReplicatedStorage") local remEvent = repStorage:WaitForChild("IntermissionComplete") for i = 15,0, -1 do wait(1) script.Parent.Text = i if i < 1 then remEvent:FireServer() script.Parent.Text = "Game in progress." end end
Now this works fine, timer stops, text changes and the event fires, loading the map, but since this is inside StarterGui, it creates this script for everybody each time they join, meaning that this script repeats each time a player joins, and hence the event fires, loading another map on top of the current one.
How can I alter the screengui for everybody's client without having to have the localscript within their startergui?
You could create a sort of debounce so it only fires once, perhaps like this
local maploaded = false local repStorage = game:GetService("ReplicatedStorage") local remEvent = repStorage:WaitForChild("IntermissionComplete") remEvent.OnServerEvent:Connect(function() if maploaded == false then maploaded = true --load map end end)
Sorry if part of my code doesn't work, I'm on mobile so I can't test it, but this should