So in this script findwinner() isn't correct. I'd like the teams to already be there, and I'd like the teams not to remove, once the teams been found. I'd like it to just be a script that teams players, then respawns finds the winner, once everyone's on spectators it says who the winner is, and teams them back evenly into blue and red team. But I don't understand the cloning system. It'll just infinately keep cloning the teams. I'd like help please, thanks.
repeat wait(0)until game:FindFirstChild("Teams") local NumPlayers = 2 --Change this to the number of players needed local GameTime = 250 --5 minutes local A = game.Players local A1 = "This service is unavailable, please wait until 1 more player joins..." local A2 = "Welcome to the official meadows sfing game" local A4 = "5" local A3 = "The amount of players is successful, and the game will be starting in" .. A4 .. "Seconds.." local A5 = "Teaming players..." local A6 = "Blue team has won" local A7 = "Red team has won" local BlueTeam = game.Teams:WaitForChild("BlueTeam"):Clone() local RedTeam = game.Teams:WaitForChild("RedTeam"):Clone() local redplayers = 0 local blueplayers = 0 local M = Instance.new("Message",game.Workspace) local H = Instance.new("Hint",game.Workspace) local TimeForLoop = .5 --This will loop the script every .5 seconds local players = 0 local GameRun = false local GameOver = false local RegenTeams = false function fixTeams() local Blue = BlueTeam:Clone() Blue.Parent = game.Teams local Red = RedTeam:Clone() Red.Parent = game.Teams end function checkSpectators() spectators = 0 for _, player in pairs(game.Players:GetChildren()) do if player.TeamColor == game.Teams.Spectators.TeamColor then spectators = spectators + 1 if(spectators >= NumPlayers) then BlueTeam:remove() RedTeam:remove() wait(3) end end end end function findwinner() if GameOver then for _, player in pairs(game.Players:GetPlayers()) do if player.TeamColor == BlueTeam.TeamColor then players = blueplayers + 1 wait(5) if blueplayers == 0 then print("Blue team has lost") M.Text = A7 elseif player.TeamColor == RedTeam.TeamColor then players = redplayers + 1 if redplayers == 0 then print("Red team has lost") M.Text = A6 end end end end end end function RegenPlrs() for i,v in pairs(game.Players:GetPlayers())do if v and v.Character then v.Character:BreakJoints() end end end function StartGame() if GameRun then fixteams() RegenPlrs() checkspectators() findwinner() end end coroutine.resume(coroutine.create(function() while wait(TimeForLoop)do if not #A:GetPlayers() >= NumPlayers then M.Text = A1 else StartGame() M.Text = "" wait(1) M.Text = A2 wait(5) M.Text = A3 for z = 5, 0, -1 do M.Text = ""..z wait(1) end for i = GameTime, 0, -1 do H.Text = "Time left: "..i wait(1) end wait(2) M.Text = "Times up!" wait(2) M.Text = "Starting new round..." wait(2.5) end end end))
--You forgot or you don't know that, seting variables before loop makes them permanent and not 'overwriten' local BlueTeam = game.Teams["BlueTeam"]:Clone() -- :WaitForChild isnt needed here. local RedTeam = game.Teams["RedTeam"]:Clone() local NumPlayers = 2 --Change this to the number of players needed -- that's a big step for your game. repeat wait(0)until game:FindFirstChild("Teams") local GameTime = 250 --5 minutes local A = game:service('Players') local A1 = "This service is unavailable, please wait until 1 more player joins..." local A2 = "Welcome to the official meadows sfing game" local A4 = "5" local A3 = "The amount of players is successful, and the game will be starting in" .. A4 .. "Seconds.." local A5 = "Teaming players..." local A6 = "Blue team has won" local A7 = "Red team has won" local redplayers = 0 local blueplayers = 0 local M = Instance.new("Message",game.Workspace) local H = Instance.new("Hint",game.Workspace) local TimeForLoop = .5 --This will loop the script every .5 seconds local players = 0 local GameRun = false local GameOver = false local RegenTeams = false function fixTeams() local Blue = BlueTeam:Clone() Blue.Parent = game.Teams local Red = RedTeam:Clone() Red.Parent = game.Teams function checkSpectators() spectators = 0 for _, player in pairs(game:service('Players'):GetChildren()) do if player.TeamColor == game.Teams.Spectators.TeamColor then spectators = spectators + 1 end if(spectators >= NumPlayers) then game.Teams.BlueTeam:remove() game.Teams.RedTeam:remove() end wait(3) end end end function findwinner() if GameOver then for _, player in pairs(game.Players:GetPlayers()) do if player.TeamColor == BlueTeam.TeamColor then players = blueplayers + 1 wait(5) if blueplayers == 0 then print("Blue team has lost") M.Text = A7 elseif player.TeamColor == RedTeam.TeamColor then players = redplayers + 1 if redplayers == 0 then print("Red team has lost") M.Text = A6 end end end end end end function RegenPlrs() for i,v in pairs(game.Players:GetPlayers())do if v and v.Character then v.Character:BreakJoints() end end end function StartGame() if GameRun then fixteams() RegenPlrs() checkspectators() findwinner() end end coroutine.resume(coroutine.create(function() while wait(TimeForLoop)do if not #A:GetPlayers() >= NumPlayers then M.Text = A1 else StartGame() M.Text = "" wait(1) M.Text = A2 wait(5) M.Text = A3 for z = 5, 0, -1 do M.Text = ""..z wait(1) end for i = GameTime, 0, -1 do H.Text = "Time left: "..i wait(1) end wait(2) M.Text = "Times up!" wait(2) M.Text = "Starting new round..." wait(2.5) end end end))
Hope this helps! If not, tell output, Thanks, marcoantoniosantos3