Run it
Copy the script and paste it into your executor.
Players = :()
Workspace = :()
RunService = :()
LocalPlayer = Players.LocalPlayer
Mouse = LocalPlayer:()
FONT = .Font.SourceSans
MAX_PLAYERS = Players.MaxPlayers
(n)
rounded = .(n)
.(n - rounded) <
(rounded)
.(, n)
(n)
.(, n)
(n)
(.(, .(n)))
(n)
.(, n)
(adornee, size, offset)
gui = .()
gui.Name =
gui.Size = size
gui.StudsOffset = offset
gui.AlwaysOnTop =
gui.LightInfluence =
gui.MaxDistance =
gui.Adornee = adornee
gui.Parent = adornee.Parent
label = .()
label.Size = .(, )
label.BackgroundTransparency =
label.BorderSizePixel =
label.TextScaled =
label.Font = FONT
label.TextSize =
label.TextColor3 = .(, , )
label.TextStrokeTransparency =
label.Parent = gui
gui, label
(humanoid, rootPart)
humanoid.Health <=
state = humanoid:()
grounded = humanoid.FloorMaterial ~= .Material.Air
velocity = rootPart.AssemblyLinearVelocity
yVelocity = velocity.Y
horizontalVelocity = .(velocity.X, , velocity.Z).Magnitude
moveMagnitude = humanoid.MoveDirection.Magnitude
humanoid.Sit
state == .HumanoidStateType.Seated
humanoid.PlatformStand
state == .HumanoidStateType.Swimming
state == .HumanoidStateType.Climbing
state == .HumanoidStateType.Ragdoll
state == .HumanoidStateType.FallingDown
state == .HumanoidStateType.GettingUp
state == .HumanoidStateType.Jumping
state == .HumanoidStateType.Landed
state == .HumanoidStateType.Freefall
grounded
moveMagnitude < horizontalVelocity < .(yVelocity) <
yVelocity >
state == .HumanoidStateType.Running state == .HumanoidStateType.RunningNoPhysics
grounded
moveMagnitude < horizontalVelocity < .(yVelocity) <
yVelocity >
state == .HumanoidStateType.Physics
state == .HumanoidStateType.Dead
state.Name
()
ok, ping = (()
LocalPlayer:()
)
ok (ping) ==
ping *
()
totalPlayers = #Players:()
friendCount =
_, otherPlayer (Players:())
otherPlayer ~= LocalPlayer
ok, isFriend = (()
otherPlayer:(LocalPlayer.UserId)
)
ok isFriend
friendCount +=
currentPlayers = .(totalPlayers - friendCount, )
friendCount >
.. (currentPlayers) .. .. (friendCount) .. .. (MAX_PLAYERS)
.. (currentPlayers) .. .. (MAX_PLAYERS)
(labels, hidden, alpha)
textTransparency = hidden alpha
strokeTransparency = hidden .(alpha + , , )
_, label (labels)
label.TextTransparency = textTransparency
label.TextStrokeTransparency = strokeTransparency
(character)
humanoid = character:()
rootPart = character:()
torso = character:() character:() rootPart
speedGui, speedLabel = (torso, .(, , , ), .(-, , ))
jumpGui, jumpLabel = (torso, .(, , , ), .(, , ))
stateGui, stateLabel = (torso, .(, , , ), .(-, , ))
playersGui, playersLabel = (torso, .(, , , ), .(, , ))
pingGui, pingLabel = (torso, .(, , , ), .(-, -, ))
fpsGui, fpsLabel = (torso, .(, , , ), .(, -, ))
alive =
hidden =
speedSample =
fpsValue =
fpsFrames =
fpsElapsed =
connections = {}
()
_, connection (connections)
connection.Connected
connection:()
()
speedGui speedGui:()
jumpGui jumpGui:()
stateGui stateGui:()
playersGui playersGui:()
pingGui pingGui:()
fpsGui fpsGui:()
()
alive
alive =
()
()
.(connections, humanoid.Died:(stop))
.(connections, Mouse.Button1Down:(()
alive humanoid.Health <= character.Parent
Mouse.Target == torso
hidden = hidden
))
.(()
previousPosition = rootPart.Position
alive humanoid.Health > character.Parent
currentPosition = rootPart.Position
speedSample = (currentPosition - previousPosition).Magnitude
previousPosition = currentPosition
.()
)
.(connections, RunService.RenderStepped:((dt)
alive
character.Parent humanoid.Health <=
()
camera = Workspace.CurrentCamera
camera
fpsFrames +=
fpsElapsed += dt
fpsElapsed >=
fpsValue = fpsFrames / fpsElapsed
fpsFrames =
fpsElapsed =
state = (humanoid, rootPart)
pingMs = ()
currentPos = rootPart.Position
distanceAlpha = .(((camera.CFrame.Position - currentPos).Magnitude - ) / , , )
speedLabel.Text = .. (humanoid.WalkSpeed) .. .. (speedSample) ..
jumpLabel.Text = .. (humanoid.UseJumpPower humanoid.JumpPower humanoid.JumpHeight) .. .. (Workspace.Gravity) ..
stateLabel.Text = .. state
playersLabel.Text = ()
pingLabel.Text = .. (pingMs) ..
fpsLabel.Text = .. (fpsValue)
({
speedLabel,
jumpLabel,
stateLabel,
playersLabel,
pingLabel,
fpsLabel,
}, hidden, distanceAlpha)
))
LocalPlayer.CharacterAdded:(attachStats)
LocalPlayer.Character
(LocalPlayer.Character)
Update: Recoded Client-side Roblox stat overlay system attached to the player character. Features: 1. Real-time floating stat display using BillboardGui labels attached around the torso 2. Live movement speed tracking - Displays current WalkSpeed - Displays real movement speed sampled from position delta every second 3. Jump and gravity monitor - Displays current JumpPower or JumpHeight - Displays live Workspace gravity value 4. Advanced humanoid state detection - Detects: - Idle - Running - Jumping - Freefall - Swimming - Climbing - Ragdoll - Sitting / Seated - Physics - FallingDown - GettingUp - Dead - Uses grounded checks, velocity checks, and humanoid states for more accurate detection 5. Player counter system - Displays: - Current non-friend players - Friends in server - Server max player capacity - Format: - Player: current+friends/max 6. Friend detection support - Detects friends currently inside the server 7. Live ping monitor - Uses GetNetworkPing() - Converts ping into milliseconds 8. Live FPS counter - Updates every second - Displays FPS with 1

Universal