I am trying to make a player list GUI that shows a list of buttons and in each button is a player that is in the server. However, when a player is kicked or leaves the game, their button is not removed, despite the script recognizing that a player has been removed. What am I doing wrong?
Server:
playerAdded = game.ReplicatedStorage.PlayerAdded
playerRemoved = game.ReplicatedStorage.PlayerRemoved
game.Players.PlayerAdded:Connect(function(player)
playerAdded:FireAllClients(player)
print("Player Added")
end)
game.Players.PlayerRemoving:Connect(function(player)
playerRemoved:FireAllClients(player)
print("Player Removed")
end)
Client:
playerAdded = game.ReplicatedStorage.PlayerAdded
playerRemoved = game.ReplicatedStorage.PlayerRemoved
y = 0.178
frame = game.Players.LocalPlayer:WaitForChild("PlayerGui"):WaitForChild("AskAdmin").Players
children = frame.Buttons:GetChildren()
buttonSize = UDim2.new(1, 0, 0.178, 0)
local list
local function button(name, xPos, yPos, parent, textColor, backgroundColor)
local button = Instance.new("TextButton")
button.Parent = parent
button.Text = name
button.Position = UDim2.new(xPos, 0, yPos, 0)
button.TextScaled = true
button.Name = name
button.Size = buttonSize
button.BackgroundColor3 = backgroundColor
return button
end
local function destroyAll(list)
for i = 1, #list do
list[i]:Destroy()
end
end
local function createList(player)
destroyAll(frame.Buttons:GetChildren())
y = 0.178
frame.CanvasSize = UDim2.new(0, 0, 0, 0)
wait(0.5)
list = game.Players:GetPlayers()
for i = 1, #list do
button(list[i].Name, 0, y, frame.Buttons, Color3.fromRGB(0, 0, 0), Color3.fromRGB(255, 255, 255))
y = y + 0.178
frame.CanvasSize = UDim2.new(0, 0, y, 0)
end
end
playerAdded.OnClientEvent:Connect(createList)
playerRemoved.OnClientEvent:Connect(createList)
