-- Roblox Studio Admin Test Panel
-- Fly + Noclip + White ESP with Name + Studs
-- LocalScript only
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local player = Players.LocalPlayer
local flying = false
local noclip = false
local espEnabled = false
local flySpeed = 80
local minSpeed = 20
local maxSpeed = 250
local keys = {}
local flyVelocity = nil
local flyGyro = nil
local espObjects = {}
-- UI
local gui = Instance.new("ScreenGui")
gui.Name = "AdminTestingPanel"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 270, 0, 245)
frame.Position = UDim2.new(0, 30, 0, 120)
frame.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
frame.BorderSizePixel = 0
frame.Parent = gui
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 35)
title.BackgroundTransparency = 1
title.Text = "Admin Test Panel"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 16
title.Parent = frame
local function makeButton(text, y)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -20, 0, 36)
btn.Position = UDim2.new(0, 10, 0, y)
btn.BackgroundColor3 = Color3.fromRGB(38, 38, 45)
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.Gotham
btn.TextSize = 14
btn.Text = text
btn.BorderSizePixel = 0
btn.Parent = frame
return btn
end
local flyBtn = makeButton("Fly: OFF", 45)
local noclipBtn = makeButton("Noclip: OFF", 87)
local espBtn = makeButton("ESP: OFF", 129)
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, -20, 0, 24)
speedLabel.Position = UDim2.new(0, 10, 0, 172)
speedLabel.BackgroundTransparency = 1
speedLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
speedLabel.Font = Enum.Font.Gotham
speedLabel.TextSize = 13
speedLabel.Text = "Fly Speed: " .. flySpeed
speedLabel.Parent = frame
local sliderBack = Instance.new("Frame")
sliderBack.Size = UDim2.new(1, -20, 0, 8)
sliderBack.Position = UDim2.new(0, 10, 0, 205)
sliderBack.BackgroundColor3 = Color3.fromRGB(55, 55, 65)
sliderBack.BorderSizePixel = 0
sliderBack.Parent = frame
local sliderFill = Instance.new("Frame")
sliderFill.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
sliderFill.BorderSizePixel = 0
sliderFill.Parent = sliderBack
local sliderKnob = Instance.new("TextButton")
sliderKnob.Size = UDim2.new(0, 16, 0, 16)
sliderKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
sliderKnob.Text = ""
sliderKnob.BorderSizePixel = 0
sliderKnob.Parent = sliderBack
local draggingSlider = false
local function updateSliderVisual()
local percent = math.clamp((flySpeed - minSpeed) / (maxSpeed - minSpeed), 0, 1)
sliderFill.Size = UDim2.new(percent, 0, 1, 0)
sliderKnob.Position = UDim2.new(percent, -8, 0.5, -8)
speedLabel.Text = "Fly Speed: " .. flySpeed
end
local function updateSliderFromMouse()
local mouseX = UIS:GetMouseLocation().X
local startX = sliderBack.AbsolutePosition.X
local width = sliderBack.AbsoluteSize.X
local percent = math.clamp((mouseX - startX) / width, 0, 1)
flySpeed = math.floor(minSpeed + ((maxSpeed - minSpeed) * percent))
updateSliderVisual()
end
updateSliderVisual()
sliderKnob.MouseButton1Down:Connect(function()
draggingSlider = true
end)
sliderBack.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = true
updateSliderFromMouse()
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
draggingSlider = false
end
end)
-- Character helpers
local function getChar()
return player.Character
end
local function getRoot()
local char = getChar()
if not char then return nil end
return char:FindFirstChild("HumanoidRootPart")
end
local function getHumanoid()
local char = getChar()
if not char then return nil end
return char:FindFirstChildOfClass("Humanoid")
end
-- Fly
local function startFly()
local root = getRoot()
local hum = getHumanoid()
if not root or not hum then return end
if flyVelocity then flyVelocity:Destroy() end
if flyGyro then flyGyro:Destroy() end
hum.PlatformStand = true
flyVelocity = Instance.new("BodyVelocity")
flyVelocity.Name = "AdminFlyVelocity"
flyVelocity.MaxForce = Vector3.new(1000000, 1000000, 1000000)
flyVelocity.Velocity = Vector3.zero
flyVelocity.Parent = root
flyGyro = Instance.new("BodyGyro")
flyGyro.Name = "AdminFlyGyro"
flyGyro.MaxTorque = Vector3.new(1000000, 1000000, 1000000)
flyGyro.P = 9000
flyGyro.CFrame = root.CFrame
flyGyro.Parent = root
end
local function stopFly()
local hum = getHumanoid()
local root = getRoot()
if hum then
hum.PlatformStand = false
end
if root then
root.AssemblyLinearVelocity = Vector3.zero
root.AssemblyAngularVelocity = Vector3.zero
end
if flyVelocity then
flyVelocity:Destroy()
flyVelocity = nil
end
if flyGyro then
flyGyro:Destroy()
flyGyro = nil
end
end
flyBtn.MouseButton1Click:Connect(function()
flying = not flying
flyBtn.Text = flying and "Fly: ON" or "Fly: OFF"
if flying then
startFly()
else
stopFly()
end
end)
-- Noclip
noclipBtn.MouseButton1Click:Connect(function()
noclip = not noclip
noclipBtn.Text = noclip and "Noclip: ON" or "Noclip: OFF"
end)
-- ESP
local function removeESP(plr)
local data = espObjects[plr]
if not data then return end
if data.Highlight then
data.Highlight:Destroy()
end
if data.Billboard then
data.Billboard:Destroy()
end
espObjects[plr] = nil
end
local function clearESP()
for plr in pairs(espObjects) do
removeESP(plr)
end
end
local function addESP(plr)
if plr == player then return end
if espObjects[plr] then return end
local char = plr.Character
if not char then return end
local root = char:FindFirstChild("HumanoidRootPart")
if not root then return end
local highlight = Instance.new("Highlight")
highlight.Name = "WhitePlayerESP"
highlight.Adornee = char
highlight.FillColor = Color3.fromRGB(255, 255, 255)
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.FillTransparency = 0.85
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = gui
local billboard = Instance.new("BillboardGui")
billboard.Name = "WhitePlayerESPInfo"
billboard.Adornee = root
billboard.Size = UDim2.new(0, 220, 0, 45)
billboard.StudsOffset = Vector3.new(0, 3.5, 0)
billboard.AlwaysOnTop = true
billboard.Parent = gui
local text = Instance.new("TextLabel")
text.Name = "Info"
text.Size = UDim2.new(1, 0, 1, 0)
text.BackgroundTransparency = 1
text.TextColor3 = Color3.fromRGB(255, 255, 255)
text.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
text.TextStrokeTransparency = 0
text.Font = Enum.Font.GothamBold
text.TextSize = 13
text.Text = plr.Name .. " | Loading..."
text.Parent = billboard
espObjects[plr] = {
Highlight = highlight,
Billboard = billboard,
Text = text,
Root = root,
}
end
espBtn.MouseButton1Click:Connect(function()
espEnabled = not espEnabled
espBtn.Text = espEnabled and "ESP: ON" or "ESP: OFF"
if not espEnabled then
clearESP()
end
end)
-- Input
UIS.InputBegan:Connect(function(input, typing)
if typing then return end
keys[input.KeyCode] = true
end)
UIS.InputEnded:Connect(function(input)
keys[input.KeyCode] = false
end)
-- Main loop
RunService.Stepped:Connect(function()
if not noclip then return end
local char = getChar()
if not char then return end
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end)
RunService.RenderStepped:Connect(function()
if draggingSlider then
updateSliderFromMouse()
end
if flying then
local cam = workspace.CurrentCamera
if not flyVelocity or not flyGyro then
startFly()
end
if cam and flyVelocity and flyGyro then
local move = Vector3.zero
if keys[Enum.KeyCode.W] then
move += cam.CFrame.LookVector
end
if keys[Enum.KeyCode.S] then
move -= cam.CFrame.LookVector
end
if keys[Enum.KeyCode.A] then
move -= cam.CFrame.RightVector
end
if keys[Enum.KeyCode.D] then
move += cam.CFrame.RightVector
end
if keys[Enum.KeyCode.Space] then
move += Vector3.new(0, 1, 0)
end
if keys[Enum.KeyCode.LeftControl] then
move -= Vector3.new(0, 1, 0)
end
if move.Magnitude > 0 then
flyVelocity.Velocity = move.Unit * flySpeed
else
flyVelocity.Velocity = Vector3.zero
end
flyGyro.CFrame = cam.CFrame
end
end
if espEnabled then
local myRoot = getRoot()
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= player then
local char = plr.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if not char or not root then
removeESP(plr)
else
if not espObjects[plr] then
addESP(plr)
end
local data = espObjects[plr]
if data and data.Text and myRoot and root then
local studs = math.floor((myRoot.Position - root.Position).Magnitude)
data.Text.Text = plr.Name .. " | " .. studs .. " studs"
elseif data and data.Text then
data.Text.Text = plr.Name .. " | Loading..."
end
end
end
end
end
end)
-- Player handling
Players.PlayerRemoving:Connect(function(plr)
removeESP(plr)
end)
local function setupPlayer(plr)
if plr == player then return end
plr.CharacterAdded:Connect(function()
removeESP(plr)
task.wait(0.5)
if espEnabled then
addESP(plr)
end
end)
plr.CharacterRemoving:Connect(function()
removeESP(plr)
end)
end
for _, plr in ipairs(Players:GetPlayers()) do
setupPlayer(plr)
end
Players.PlayerAdded:Connect(setupPlayer)
player.CharacterAdded:Connect(function()
flying = false
noclip = false
flyBtn.Text = "Fly: OFF"
noclipBtn.Text = "Noclip: OFF"
stopFly()
end)
To embed this project on your website, copy the following code and paste it into your website's HTML: