local roundLength = 60 local intermissionLength = 20 local inRound = game.ReplicatedStorage.InRound local teams = game:GetService('Teams') local status = game.ReplicatedStorage.Status local blueSpawn = game.Workspace.Map.BlueSpawn local redSpawn = game.Workspace.Map.RedSpawn local lobbySpawn = game.Workspace.Lobby.LobbySpawn local redWin = game.ReplicatedStorage.RedWin local blueWin = game.ReplicatedStorage.BlueWin local respawnTowers = game.Workspace:WaitForChild('RespawnTowers') game:GetService('Players').PlayerAdded:Connect(function(plr) plr.CharacterAdded:Connect(function(character) character:WaitForChild('Humanoid').Died:Connect(function() plr.Team = teams['Lobby'] end) end) end) inRound.Changed:Connect(function() wait(1) if inRound.Value == true then for _, plr in pairs(game.Players:GetChildren()) do local char = plr.Character if plr.Team == teams['Red'] then char.HumanoidRootPart.CFrame = redSpawn.CFrame elseif plr.Team == teams['Blue'] then char.HumanoidRootPart.CFrame = blueSpawn.CFrame end end elseif inRound.Value == false then for _, plr in pairs(game.Players:GetPlayers()) do local char = plr.Character plr.Team = teams['Lobby'] char.HumanoidRootPart.CFrame = lobbySpawn.CFrame end end end) function initWin(i) local redAlive = 0 local blueAlive = 0 for _, plr in pairs(game.Players:GetPlayers()) do if plr.Team == teams['Red'] then redAlive += 1 redName = plr.Name elseif plr.Team == teams['Blue'] then blueAlive += 1 blueName = plr.Name end end if (blueAlive == 0 and redAlive == 0) then status.Value = 'Tie!' game.ReplicatedStorage.Tie.Value = true wait(i) elseif blueAlive == 0 then status.Value = redName .. ' has won!' for _, plr in pairs(game.Players:GetPlayers()) do if plr.Team == teams['Red'] then plr.leaderstats.Wins.Value += 1 plr.leaderstats.Suffering.Value += 200 redWin.Value = true end end wait(i) elseif redAlive == 0 then status.Value = blueName .. ' has won!' for _, plr in pairs(game.Players:GetPlayers()) do if plr.Team == teams['Blue'] then plr.leaderstats.Wins.Value += 1 plr.leaderstats.Suffering.Value += 200 blueWin.Value = true end end wait(i) else return end end local function roundTimer() while wait() do --if #game.Players:GetPlayers() > 1 then for i = intermissionLength, 1, -1 do status.Value = 'Intermission: ' .. i .. ' seconds left' inRound.Value = false if i == intermissionLength/2 then local bluePlayer = game.Player:GetPlayers()[math.random() * #teams.Lobby:GetPlayers()] bluePlayer.Team = teams['Blue'] local redPlayer = game.Players:GetPlayers()[math.random() * #teams.Lobby:GetPlayers()] redPlayer.Team = teams['Red'] end wait(1) end for i = roundLength, 1, -1 do status.Value = 'Game:' .. i .. ' seconds left' inRound.Value = true initWin(10) if string.find(status.Value, '!') then respawnTowers:Fire() break end end --else --status.Value = 'Not enough players to start the game!' --end end end spawn(roundTimer)
I am making a round-based game. This script works in studio, but not in game. All of my other scripts work, but this is the main script and controls the main function of the game. I'm also not getting any errors from the output. FilteringEnabled is not the issue because I've tried setting it to false and it still doesn't work. Any help would be appreciated.