Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I make a multi-player handler script?

Asked by 3 years ago

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!

Answer this question