Hello, I'm trying to make a multiplayer handler (Server Script) that keeps track of the numbers of players in the game (Max is 4) By assigning them a value that is stored in an array and removed from said array when they leave. However, I seem to be having trouble thus far... The goal is to remove the initial player value from the array when a player leaves, then when a player is joining, detect where the player should go in the array. Here is my code:
local plrCount = {}
local plrsToHave = 4
game.Players.PlayerAdded:Connect(function(plr)
local char = plr.Character or plr.CharacterAdded:Wait()
local playerV = Instance.new("NumberValue")
playerV.Name = "playerV"
playerV.Parent = plr
counter = counter + 1
playerV.Value = counter
table.insert(plrCount, playerV.Value)
notify:FireAllClients("Waiting for " .. plrsToHave - #plrCount .. " more players.", 10) -- fire to prompt client telling everyone how many players have to join for the game to start
local playerV = plr:FindFirstChild("playerV")
if counter > 4 then
for i, player in pairs(Players:GetChildren()) do
local pV = player:WaitForChild("playerV")
if pV.Value == playerV.Value then
table.remove(plrCount, playerV.Value)
local total = (#plrCount + 1)*(#plrCount + 2)/2
local sum = 0
for i,v in pairs(plrCount) do
sum = sum + v
end
local missing = total - sum
playerV.Value = missing
table.insert(plrCount, missing) -- re instert player
end
end
end
if #plrCount == plrsToHave then
gameDidStart()
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
counter = 0
local playerV = plr:FindFirstChild("playerV")
table.remove(plrCount, playerV.Value)
end)
Any suggestions or comments on how to fix this would really help!
