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.
