I tried to make a minigame intermission script but it isn't working, my script is down below.
--// Variables local MapStorage = workspace.MapStorage local IntermissionTime = 15 local Players = game.Players:GetChildren() local Status = game.ReplicatedStorage.StatusValue.Value local RoundInProgress = false --// Intermission while wait(1) do if not RoundInProgress and #Players > 2 then for i = IntermissionTime, 0, -1 do Status = "Intermission: ".. i end elseif not RoundInProgress and #Players < 2 then Status = "2 or more players are required to start" end end
I also have a script in the gui which sets the text to the status value, that is working fine so I narrowed this script down to the problem.
First of all, your status variable needs to be the instance of the StringValue
itself and not the value because you need to change the value later on. Second, you should add a wait()
around line thirteen where the script is counting down the intermission. Third, your script needs a way to break out of the for
loop just in case a player leaves while the game is counting down. Finally, the script should probably be able to break out of the while
loop as well when the game starts. This would make the script look like this:
--// Variables local MapStorage = workspace.MapStorage local IntermissionTime = 15 local Players = game.Players:GetChildren() local Status = game.ReplicatedStorage.StatusValue local RoundInProgress = false --// Intermission while wait(1) do if not RoundInProgress and #Players > 2 then local startRound = false for i = IntermissionTime, 0, -1 do if #Players < 2 then break end Status.Value = "Intermission: ".. i wait(1) if i == 0 then startRound = true end end if startRound then break end elseif not RoundInProgress and #Players < 2 then Status.Value = "2 or more players are required to start" end end