I have been working on a team balance script that balances money. (e.g two players have 15 cash and the third player has 40 cash, hence the two players will be on one team while the third player would be on another team.)
I had an idea where it would change every time a player was leaving or joining. So I came up with something sorta like this: (it is in a ModuleScript under ServerScriptService)
It has no errors, just doesn't accomplish what I need to fully do. Sometimes there's a team unbalance where a team would have 100 cash and the other team would have 5 cash.
Heres how it would work: a tolerancy would be created by adding up everyone's cash then dividing it by two (cause of two teams) So whatever cash is added beyond tolerancy it would put that player on the other team.
If you have any questions you can ask anytime
function module:ATeamBalance() --Variables local players = game.Players:GetPlayers() local total = 0 local tolerancy local grade = 1 local starterPlayer = players[1] local starterCash = starterPlayer:WaitForChild("leaderstats").Money.Value --One player scenario if #players == 1 then return ("cannot balance team if no people") end --Finding total cash players have for i,v in pairs(players) do total = total + v:WaitForChild("leaderstats").Money.Value end --Finding the cash teams must go up to. tolerancy = math.floor(total / 2) --If starter cash is bigger than tolerancy while starterCash > tolerancy do grade = grade + 1 starterPlayer = players[grade] starterCash = starterPlayer:WaitForChild("leaderstats").Money.Value wait() end if #players >= 2 then for i,v in pairs(players) do if starterPlayer ~= v and starterCash <= tolerancy then --assinging survivors if they have less cash then tolerancy. if v:WaitForChild("leaderstats").Money.Value <= tolerancy then -- If the current one has cash less than tolerancy starterCash = starterCash + v:WaitForChild("leaderstats").Money.Value v.Team = game.Teams.Team1 starterPlayer.Team = game.Teams.Team1 elseif v:WaitForChild("leaderstats").Money.Value >= tolerancy then --starterCash = v.leaderstats.Money.Value v.Team = game.Teams.Team2 end elseif starterCash > tolerancy then starterCash = 0 v.Team = game.Teams.Team2 end end end end