-
What do you want to achieve?
For each person to be added to teams properly (specified percentages can be found in Percentages -
What is the issue?
It only seems to be working for 1 person, then it just doesn’t work at all. It says that it no longer needs to assign a player to any team, which is already incorrect. -
What solutions have you tried so far?
I tried rewriting it, and encountered the same issue.
function RoundSystem.MinusPercentage(number, percentage)
local firstnum = percentage / 100
local secondnum = 1 - firstnum
local thirdnum = secondnum * number
return math.round(thirdnum)
end
function RoundSystem.SetTeams()
local Percentages = {
Infected = 50,
ClassD = 35,
Foundation = 15,
}
local PlayerService = game:GetService("Players")
local TeamsService = game:GetService("Teams")
local PlayersTable = PlayerService:GetPlayers()
local Players = {}
for i, value in ipairs(PlayersTable) do
Players[value] = value
end
local AmountOfPlayers = #PlayersTable
local Teams = TeamsService:GetTeams()
local AmountOfTeams = #Teams
local UnassignedPlayers = {}
local TeamNumbers = {}
for i, value in pairs(Percentages) do
table.insert(TeamNumbers, {Name = i, PlayersNeeded = AmountOfPlayers - RoundSystem.MinusPercentage(AmountOfPlayers, value) })
end
UnassignedPlayers = Players
for i, value in pairs(UnassignedPlayers) do
print(i, value)
for i2, value2 in ipairs(TeamNumbers) do
print(value2.Name)
if value2.PlayersNeeded == 0 then print("No players needed!") continue end
for i3, value3 in ipairs(Teams) do
if value3:GetAttribute("InternalName") == value2.Name then
value.Team = value3
value.Character:PivotTo(value3.Spawns:GetChildren()[math.random(1, #value3.Spawns:GetChildren())].Value.CFrame)
end
end
UnassignedPlayers[i] = nil
value2.PlayersNeeded -= 1
end
end
end