local proge = (0) would cause a syntax error. No idea why you need this variable anyways.
The while true do is redundant in the PlayerAdded loop, it will consume a lot of memory. if p == 1 will always be false, and “NO” will be printed every 10 seconds.
The math behind UDim2.new(proge/100 doesn’t make sense. It will always be 0/100, which doesn’t give the correct size, ever.
Try this instead,
local bar = script.Parent.Parent.pp -- change the frame name...
local function updatebar()
bar.Size = UDim2.new(#game.Players:GetPlayers() / game.Players.MaxPlayers,0,0.1,0)
end
updatebar()
game.Players.PlayerAdded:Connect(updatebar)
game.Players.PlayerRemoving:Connect(updatebar)