
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local StarterGui = game:GetService("StarterGui")
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
local Camera = workspace.CurrentCamera
-- Constants
local NORMAL_WALKSPEED = 16
local NORMAL_GRAVITY = workspace.Gravity
-- Variables for states
local flying = false
local flySpeed = 100
local flyBodyVelocity = nil
local flyBodyGyro = nil
local espEnabled = false
local espHighlights = {}
local noclipEnabled = false
local noclipConnection = nil
local humpEnabled = false
local humpTarget = nil
local humpAnimConnection = nil
local humpFollowConnection = nil
local glitchEnabled = false
local glitchConnection = nil
local glitchTargets = {}
local distanceEspEnabled = false
local distanceEspLabels = {}
local gravityChanged = false
-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "GHOST_UIHub"
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
-- Notification on load
StarterGui:SetCore("SendNotification", {
Title = "GHOST UI Hub";
Text = "Made by camreng1234 on scriptblox";
Duration = 5;
})
-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 280, 0, 400)
mainFrame.Position = UDim2.new(1, -290, 0, 10) -- Top right with 10px margin
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
mainFrame.BorderSizePixel = 0
mainFrame.BackgroundTransparency = 0.15
mainFrame.Parent = screenGui
mainFrame.ClipsDescendants = true
mainFrame.Active = true
-- UI Corner rounding
local uicorner = Instance.new("UICorner")
uicorner.CornerRadius = UDim.new(0, 8)
uicorner.Parent = mainFrame
-- Title
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, 0, 0, 30)
title.BackgroundTransparency = 1
title.Text = "GHOST"
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Parent = mainFrame
-- Scrolling frame for buttons
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Name = "ScrollFrame"
scrollFrame.Size = UDim2.new(1, 0, 1, -30)
scrollFrame.Position = UDim2.new(0, 0, 0, 30)
scrollFrame.BackgroundTransparency = 1
scrollFrame.ScrollBarThickness = 6
scrollFrame.Parent = mainFrame
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Parent = scrollFrame
uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder
uiListLayout.Padding = UDim.new(0, 6)
local uiPadding = Instance.new("UIPadding")
uiPadding.Parent = scrollFrame
uiPadding.PaddingTop = UDim.new(0, 6)
uiPadding.PaddingLeft = UDim.new(0, 6)
uiPadding.PaddingRight = UDim.new(0, 6)
uiPadding.PaddingBottom = UDim.new(0, 6)
-- Dragging functionality for mainFrame
do
local dragging = false
local dragInput, dragStart, startPos
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
mainFrame.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
local newPos = UDim2.new(
math.clamp(startPos.X.Scale, 0, 1),
math.clamp(startPos.X.Offset + delta.X, 0, workspace.CurrentCamera.ViewportSize.X - mainFrame.AbsoluteSize.X),
math.clamp(startPos.Y.Scale, 0, 1),
math.clamp(startPos.Y.Offset + delta.Y, 0, workspace.CurrentCamera.ViewportSize.Y - mainFrame.AbsoluteSize.Y)
)
mainFrame.Position = newPos
end
end)
end
-- Helper function to create buttons
local function createButton(text)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 30)
btn.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
btn.BorderSizePixel = 0
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 18
btn.Text = text
btn.AutoButtonColor = true
btn.Name = text:gsub("%s", "") -- Remove spaces for name
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btn
return btn
end
-- Helper function to create textboxes
local function createTextbox(placeholder)
local tb = Instance.new("TextBox")
tb.Size = UDim2.new(1, 0, 0, 25)
tb.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
tb.BorderSizePixel = 0
tb.TextColor3 = Color3.fromRGB(255, 255, 255)
tb.Font = Enum.Font.Gotham
tb.TextSize = 16
tb.PlaceholderText = placeholder
tb.ClearTextOnFocus = false
tb.Name = placeholder:gsub("%s", "") .. "Textbox"
local tbCorner = Instance.new("UICorner")
tbCorner.CornerRadius = UDim.new(0, 6)
tbCorner.Parent = tb
return tb
end
-- ========== BUTTONS AND TEXTBOXES ==========
-- 1. FLY
local btnFly = createButton("FLY")
btnFly.Parent = scrollFrame
-- 2. UNFLY
local btnUnFly = createButton("UNFLY")
btnUnFly.Parent = scrollFrame
-- 3. ESP
local btnESP = createButton("ESP")
btnESP.Parent = scrollFrame
-- 4. UN ESP
local btnUnESP = createButton("UN ESP")
btnUnESP.Parent = scrollFrame
-- 5. NOCLIP
local btnNoclip = createButton("NOCLIP")
btnNoclip.Parent = scrollFrame
-- 6. UN NOCLIP
local btnUnNoclip = createButton("UN NOCLIP")
btnUnNoclip.Parent = scrollFrame
-- 7. WALK SPEED
local btnWalkSpeed = createButton("WALK SPEED")
btnWalkSpeed.Parent = scrollFrame
-- 8. UN WALK SPEED
local btnUnWalkSpeed = createButton("UN WALK SPEED")
btnUnWalkSpeed.Parent = scrollFrame
-- 9. TELEPORT + textbox
local btnTeleport = createButton("TELEPORT")
btnTeleport.Parent = scrollFrame
local tbTeleport = createTextbox("Player name or first 3 letters")
tbTeleport.Parent = scrollFrame
-- 10. GLITCH
local btnGlitch = createButton("GLITCH")
btnGlitch.Parent = scrollFrame
-- 11. UN GLITCH
local btnUnGlitch = createButton("UN GLITCH")
btnUnGlitch.Parent = scrollFrame
-- 12. HUMP + textbox
local btnHump = createButton("HUMP")
btnHump.Parent = scrollFrame
local tbHump = createTextbox("Player name or first 3 letters")
tbHump.Parent = scrollFrame
-- 13. UN HUMP
local btnUnHump = createButton("UN HUMP")
btnUnHump.Parent = scrollFrame
-- 14. DISTANCE ESP
local btnDistanceESP = createButton("DISTANCE ESP")
btnDistanceESP.Parent = scrollFrame
-- 15. UN DISTANCE ESP
local btnUnDistanceESP = createButton("UN DISTANCE ESP")
btnUnDistanceESP.Parent = scrollFrame
-- 16. GRAVITY CHANGER + textbox
local btnGravityChanger = createButton("GRAVITY CHANGER")
btnGravityChanger.Parent = scrollFrame
local tbGravityChanger = createTextbox("0-100")
tbGravityChanger.Parent = scrollFrame
-- 17. RESET GRAVITY
local btnResetGravity = createButton("RESET GRAVITY")
btnResetGravity.Parent = scrollFrame
-- Update canvas size on layout change
uiListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10)
end)
-- ========== FUNCTIONALITY ==========
-- FLY implementation
local function startFly()
if flying then return end
flying = true
-- Create BodyVelocity and BodyGyro for smooth flying
flyBodyVelocity = Instance.new("BodyVelocity")
flyBodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
flyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
flyBodyVelocity.Parent = HumanoidRootPart
flyBodyGyro = Instance.new("BodyGyro")
flyBodyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
flyBodyGyro.CFrame = HumanoidRootPart.CFrame
flyBodyGyro.Parent = HumanoidRootPart
-- Disable Humanoid's platform stand to allow flying
Humanoid.PlatformStand = false
-- Fly control variables
local speed = flySpeed
local moveDirection = Vector3.new(0, 0, 0)
local function updateFly()
if not flying then return end
local cameraCFrame = Camera.CFrame
local moveVec = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then
moveVec = moveVec + cameraCFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then
moveVec = moveVec - cameraCFrame.LookVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then
moveVec = moveVec - cameraCFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then
moveVec = moveVec + cameraCFrame.RightVector
end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
moveVec = moveVec + Vector3.new(0, 1, 0)
end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) or UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then
moveVec = moveVec - Vector3.new(0, 1, 0)
end
moveVec = moveVec.Unit * speed
if moveVec ~= moveVec then -- NaN check
moveVec = Vector3.new(0, 0, 0)
end
flyBodyVelocity.Velocity = moveVec
flyBodyGyro.CFrame = Camera.CFrame
end
-- Connect to RenderStepped for smooth flying
flyConnection = RunService.RenderStepped:Connect(updateFly)
end
local function stopFly()
if not flying then return end
flying = false
if flyBodyVelocity then
flyBodyVelocity:Destroy()
flyBodyVelocity = nil
end
if flyBodyGyro then
flyBodyGyro:Destroy()
flyBodyGyro = nil
end
if flyConnection then
flyConnection:Disconnect()
flyConnection = nil
end
Humanoid.PlatformStand = false
end
-- ESP implementation
local function enableESP()
if espEnabled then return end
espEnabled = true
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
local highlight = Instance.new("Highlight")
highlight.Adornee = plr.Character
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.Parent = plr.Character
espHighlights[plr] = highlight
end
end
-- Connect to player added and character added to add highlights dynamically
espConnection = Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function(char)
if espEnabled and plr ~= LocalPlayer then
wait(0.1)
if char and char:FindFirstChild("HumanoidRootPart") then
local highlight = Instance.new("Highlight")
highlight.Adornee = char
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
highlight.Parent = char
espHighlights[plr] = highlight
end
end
end)
end)
-- Rainbow color update loop
espRainbowConnection = RunService.RenderStepped:Connect(function()
if not espEnabled then return end
local time = tick()
for plr, highlight in pairs(espHighlights) do
local hue = (time * 60) % 360
local color = Color3.fromHSV(hue / 360, 1, 1)
highlight.FillColor = color
highlight.OutlineColor = color
end
end)
end
local function disableESP()
if not espEnabled then return end
espEnabled = false
for plr, highlight in pairs(espHighlights) do
if highlight and highlight.Parent then
highlight:Destroy()
end
end
espHighlights = {}
if espConnection then
espConnection:Disconnect()
espConnection = nil
end
if espRainbowConnection then
espRainbowConnection:Disconnect()
espRainbowConnection = nil
end
end
-- NOCLIP implementation
local function enableNoclip()
if noclipEnabled then return end
noclipEnabled = true
noclipConnection = RunService.Stepped:Connect(function()
if Character then
for _, part in pairs(Character:GetChildren()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
end)
end
local function disableNoclip()
if not noclipEnabled then return end
noclipEnabled = false
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
if Character then
for _, part in pairs(Character:GetChildren()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
end
-- WALK SPEED implementation
local function setWalkSpeed(speed)
if Humanoid then
Humanoid.WalkSpeed = speed
end
end
-- TELEPORT implementation
local function teleportToPlayer(nameOrPrefix)
if not nameOrPrefix or nameOrPrefix == "" then return end
local targetPlayer = nil
local lowerInput = nameOrPrefix:lower()
for _, plr in pairs(Players:GetPlayers()) do
if plr.Name:lower():sub(1, #lowerInput) == lowerInput or (plr.DisplayName and plr.DisplayName:lower():sub(1, #lowerInput) == lowerInput) then
targetPlayer = plr
break
end
end
if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
HumanoidRootPart.CFrame = targetPlayer.Character.HumanoidRootPart.CFrame + Vector3.new(0, 3, 0)
end
end
-- GLITCH implementation (head and neck only)
local function startGlitch()
if glitchEnabled then return end
glitchEnabled = true
local function glitchPlayer(plr)
if not plr.Character then return end
local head = plr.Character:FindFirstChild("Head")
local humanoid = plr.Character:FindFirstChildOfClass("Humanoid")
if not head or not humanoid then return end
local neck = nil
for _, joint in pairs(head:GetJoints()) do
if joint.Name == "Neck" then
neck = joint
break
end
end
if not neck then
-- Try to find neck via HumanoidRootPart and Head CFrame difference
neck = humanoid:FindFirstChild("Neck")
end
if glitchTargets[plr] then return end -- Already glitching
local originalC0 = nil
if neck and neck:IsA("Motor6D") then
originalC0 = neck.C0
end
local glitching = true
local conn
conn = RunService.Heartbeat:Connect(function()
if not glitchEnabled or not plr.Character or not head or not neck or not neck:IsDescendantOf(plr.Character) then
conn:Disconnect()
if neck and originalC0 then
neck.C0 = originalC0
end
glitchTargets[plr] = nil
return
end
local t = tick() * 20
local offsetY = math.sin(t) * 2
head.CFrame = head.CFrame * CFrame.new(0, offsetY, 0)
if neck and neck:IsA("Motor6D") and originalC0 then
neck.C0 = originalC0 * CFrame.new(0, offsetY, 0)
end
end)
glitchTargets[plr] = conn
end
for _, plr in pairs(Players:GetPlayers()) do
glitchPlayer(plr)
end
Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function()
if glitchEnabled then
wait(0.1)
glitchPlayer(plr)
end
end)
end)
end
local function stopGlitch()
if not glitchEnabled then return end
glitchEnabled = false
for plr, conn in pairs(glitchTargets) do
if conn then
conn:Disconnect()
end
if plr.Character then
local head = plr.Character:FindFirstChild("Head")
local humanoid = plr.Character:FindFirstChildOfClass("Humanoid")
local neck = nil
if head and humanoid then
for _, joint in pairs(head:GetJoints()) do
if joint.Name == "Neck" then
neck = joint
break
end
end
if neck and neck:IsA("Motor6D") then
neck.C0 = neck.C0 -- Reset to current to avoid weirdness
end
end
end
end
glitchTargets = {}
end
-- HUMP implementation
local function startHump(targetName)
if humpEnabled then return end
if not targetName or targetName == "" then return end
local targetPlayer = nil
local lowerInput = targetName:lower()
for _, plr in pairs(Players:GetPlayers()) do
if plr.Name:lower():sub(1, #lowerInput) == lowerInput or (plr.DisplayName and plr.DisplayName:lower():sub(1, #lowerInput) == lowerInput) then
targetPlayer = plr
break
end
end
if not targetPlayer or not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then return end
humpEnabled = true
humpTarget = targetPlayer
-- Animation: move back and forth fast behind target, facing them, on ground
local function humpStep()
if not humpEnabled or not humpTarget or not humpTarget.Character or not humpTarget.Character:FindFirstChild("HumanoidRootPart") then
return
end
local targetHRP = humpTarget.Character.HumanoidRootPart
local targetCF = targetHRP.CFrame
local behindOffset = -3 -- studs behind
local heightOffset = -3 -- on ground (approximate)
local directionToTarget = (targetCF.Position - HumanoidRootPart.Position).Unit
local desiredPos = targetCF * CFrame.new(0, heightOffset, behindOffset)
-- Face the target
local lookAt = CFrame.new(desiredPos.Position, targetCF.Position)
-- Oscillate back and forth fast
local oscillate = math.sin(tick() * 30) * 1.5
local offset = lookAt.LookVector * oscillate
local finalPos = desiredPos.Position + offset
HumanoidRootPart.CFrame = CFrame.new(finalPos, targetCF.Position)
end
humpAnimConnection = RunService.Heartbeat:Connect(function()
if not humpEnabled then return end
if not humpTarget or not humpTarget.Character or not humpTarget.Character:FindFirstChild("HumanoidRootPart") then
humpEnabled = false
if humpAnimConnection then
humpAnimConnection:Disconnect()
humpAnimConnection = nil
end
return
end
humpStep()
end)
end
local function stopHump()
if not humpEnabled then return end
humpEnabled = false
if humpAnimConnection then
humpAnimConnection:Disconnect()
humpAnimConnection = nil
end
humpTarget = nil
end
-- DISTANCE ESP implementation
local function enableDistanceESP()
if distanceEspEnabled then return end
distanceEspEnabled = true
local function createDistanceLabel(plr)
if plr == LocalPlayer then return end
if distanceEspLabels[plr] then return end
local billboard = Instance.new("BillboardGui")
billboard.Name = "DistanceESP"
billboard.Adornee = nil
billboard.Size = UDim2.new(0, 100, 0, 30)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.AlwaysOnTop = true
billboard.Parent = screenGui
local textLabel = Instance.new("TextLabel")
textLabel.BackgroundTransparency = 1
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.Font = Enum.Font.GothamBold
textLabel.TextSize = 18
textLabel.TextStrokeTransparency = 0
textLabel.Parent = billboard
distanceEspLabels[plr] = {Billboard = billboard, Label = textLabel}
end
for _, plr in pairs(Players:GetPlayers()) do
createDistanceLabel(plr)
end
Players.PlayerAdded:Connect(function(plr)
createDistanceLabel(plr)
end)
distanceEspConnection = RunService.RenderStepped:Connect(function()
if not distanceEspEnabled then return end
for plr, data in pairs(distanceEspLabels) do
if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
data.Billboard.Adornee = plr.Character.HumanoidRootPart
local dist = (HumanoidRootPart.Position - plr.Character.HumanoidRootPart.Position).Magnitude
data.Label.Text = string.format("%s: %.1f studs", plr.Name, dist)
else
data.Billboard.Adornee = nil
data.Label.Text = ""
end
end
end)
end
local function disableDistanceESP()
if not distanceEspEnabled then return end
distanceEspEnabled = false
if distanceEspConnection then
distanceEspConnection:Disconnect()
distanceEspConnection = nil
end
for _, data in pairs(distanceEspLabels) do
if data.Billboard then
data.Billboard:Destroy()
end
end
distanceEspLabels = {}
end
-- GRAVITY CHANGER implementation
local function setGravity(value)
value = tonumber(value)
if not value then return end
if value < 0 then value = 0 end
if value > 100 then value = 100 end
workspace.Gravity = value
gravityChanged = true
end
local function resetGravity()
workspace.Gravity = NORMAL_GRAVITY
gravityChanged = false
end
-- ========== BUTTON CONNECTIONS ==========
btnFly.MouseButton1Click:Connect(function()
startFly()
end)
btnUnFly.MouseButton1Click:Connect(function()
stopFly()
end)
btnESP.MouseButton1Click:Connect(function()
enableESP()
end)
btnUnESP.MouseButton1Click:Connect(function()
disableESP()
end)
btnNoclip.MouseButton1Click:Connect(function()
enableNoclip()
end)
btnUnNoclip.MouseButton1Click:Connect(function()
disableNoclip()
end)
btnWalkSpeed.MouseButton1Click:Connect(function()
setWalkSpeed(100)
end)
btnUnWalkSpeed.MouseButton1Click:Connect(function()
setWalkSpeed(NORMAL_WALKSPEED)
end)
btnTeleport.MouseButton1Click:Connect(function()
teleportToPlayer(tbTeleport.Text)
end)
btnGlitch.MouseButton1Click:Connect(function()
startGlitch()
end)
btnUnGlitch.MouseButton1Click:Connect(function()
stopGlitch()
end)
btnHump.MouseButton1Click:Connect(function()
startHump(tbHump.Text)
end)
btnUnHump.MouseButton1Click:Connect(function()
stopHump()
end)
btnDistanceESP.MouseButton1Click:Connect(function()
enableDistanceESP()
end)
btnUnDistanceESP.MouseButton1Click:Connect(function()
disableDistanceESP()
end)
btnGravityChanger.MouseButton1Click:Connect(function()
setGravity(tbGravityChanger.Text)
end)
btnResetGravity.MouseButton1Click:Connect(function()
resetGravity()
end)
-- Cleanup on character respawn
LocalPlayer.CharacterAdded:Connect(function(char)
Character = char
Humanoid = char:WaitForChild("Humanoid")
HumanoidRootPart = char:WaitForChild("HumanoidRootPart")
-- Reset walk speed and gravity on respawn
setWalkSpeed(NORMAL_WALKSPEED)
resetGravity()
-- Stop fly, noclip, hump, glitch on respawn
stopFly()
disableNoclip()
stopHump()
stopGlitch()
disableESP()
disableDistanceESP()
end)
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


MY FIRST TIME