I made this hoping I will be able to track the speed of players but it always shows 0m/s
-- Create a new screen GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SpeedTracker"
screenGui.Parent = game.Players.LocalPlayer.PlayerGui
-- Create a frame to hold the player speed labels
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundTransparency = 1
frame.Parent = screenGui
-- Create a label for each player
for _, player in pairs(game.Players:GetPlayers()) do
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0, 100, 0, 20)
label.BackgroundTransparency = 1
label.Text = player.Name .. ": 0 m/s"
label.Parent = frame
end
-- Update the player speed labels every frame
game:GetService("RunService").RenderStepped:Connect(function()
for _, player in pairs(game.Players:GetPlayers()) do
local label = frame:FindFirstChild(player.Name)
if label then
label.Text = player.Name .. ": " .. player.Character.Humanoid.WalkSpeed .. " m/s"
end
end
end)

7 comments
You are not setting the TextLabel's name to the player's name.
wdym? would love If you can help more, thanks
try .Stepped instead of .RenderStepped if the loop itself isn't running. Also make sure to position the labels accordingly. This should be a localscript
when adding .stepped, the script just doesn't work. the whole thing breaks
On line 24, you are using the FindFirstChild method to find a child with the player's name. Since you are not setting the TextLabel's name to the player's name, the method is returning nil so it will not update the text.
To change the name of the TextLabel, just do 'label.Name = player.Name', after line 14.
thank youuuu