
KeylessUniversal

-- FULL Silly GUI with ESP (boxes) + Aimbot (hard lock, centered circle) + Player tab
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local Workspace = workspace
local OUTLINE_COLOR = Color3.fromRGB(255,150,150)
local TITLE_COLOR = Color3.fromRGB(140,10,10)
local BG_COLOR = Color3.fromRGB(30,30,30)
local BUTTON_COLOR = Color3.fromRGB(60,10,10)
-- newFrameGui: titlebar + body. Minimize hides ONLY the body (all children inside)
local function newFrameGui(titleText, height)
local gui = Instance.new("ScreenGui"); gui.Name = ("Silly_%s_GUI"):format(titleText:gsub("%s","")); gui.ResetOnSpawn = false; gui.Parent = PlayerGui
local frame = Instance.new("Frame", gui); frame.AnchorPoint = Vector2.new(.5, .5); frame.Position = UDim2.new(.5, 0, .5, 0); frame.Size = UDim2.new(0, 280, 0, height or 200); frame.BackgroundColor3 = BG_COLOR; frame.BorderSizePixel = 0
local stroke = Instance.new("UIStroke", frame); stroke.Color = OUTLINE_COLOR; stroke.Thickness = 3; Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local titleBar = Instance.new("Frame", frame); titleBar.Name = "TitleBar"; titleBar.Size = UDim2.new(1, 0, 0, 34); titleBar.BackgroundColor3 = TITLE_COLOR
local title = Instance.new("TextLabel", titleBar); title.AnchorPoint = Vector2.new(.5, .5); title.Position = UDim2.new(.5, 0, .5, 0); title.Size = UDim2.new(.7, 0, .9, 0)
title.BackgroundTransparency = 1; title.Text = titleText; title.Font = Enum.Font.GothamBold; title.TextSize = 16; title.TextColor3 = Color3.fromRGB(255,255,255)
local close = Instance.new("TextButton", titleBar); close.Name = "MinimizeBtn"; close.AnchorPoint = Vector2.new(1, .5); close.Position = UDim2.new(1, -8, 0.5, 0); close.Size = UDim2.new(0, 26, 0, 26)
close.BackgroundColor3 = Color3.fromRGB(40,10,10); close.Text = "-" ; close.Font = Enum.Font.GothamBold; close.TextSize = 16; close.TextColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", close).CornerRadius = UDim.new(0, 6);
-- Body frame where all content goes (buttons, sliders, etc)
local body = Instance.new("Frame", frame); body.Name = "Body"; body.Size = UDim2.new(1, 0, 1, -34); body.Position = UDim2.new(0, 0, 0, 34); body.BackgroundTransparency = 1
local list = Instance.new("UIListLayout", body); list.Padding = UDim.new(0, 10); list.HorizontalAlignment = Enum.HorizontalAlignment.Center; list.VerticalAlignment = Enum.VerticalAlignment.Top
-- Minimize / Maximize: only affects this frame's body
local minimized = false
local fullSize = frame.Size
close.MouseButton1Click:Connect(function()
if not minimized then
fullSize = frame.Size
frame.Size = UDim2.new(fullSize.X.Scale, fullSize.X.Offset, 0, titleBar.Size.Y.Offset)
body.Visible = false
close.Text = "+"
minimized = true
else
frame.Size = fullSize
body.Visible = true
close.Text = "-"
minimized = false
end
end)
-- Dragging logic (title bar draggable even when minimized)
do
local dragging = false; local dragInput, dragStart, startPos
local function update(input)
local delta = input.Position - dragStart
local view = Workspace.CurrentCamera and Workspace.CurrentCamera.ViewportSize or Vector2.new(1920,1080)
frame.Position = UDim2.new(math.clamp(startPos.X.Scale + delta.X / view.X, 0, 1), startPos.X.Offset + delta.X, math.clamp(startPos.Y.Scale + delta.Y / view.Y, 0, 1), startPos.Y.Offset + delta.Y)
end
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true; dragStart = input.Position; startPos = frame.Position; dragInput = input
input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
end
end)
titleBar.InputChanged:Connect(function(input) if input == dragInput and dragging and input.Position then update(input) end end)
UIS.TouchMoved:Connect(function(t) if dragging and dragInput and dragInput.UserInputType == Enum.UserInputType.Touch then update(t) end end)
UIS.InputChanged:Connect(function(input) if input == dragInput and dragging and input.Position then update(input) end end)
end
local function makeBtn(name, text, cb)
local b = Instance.new("TextButton", body); b.Name = name; b.Size = UDim2.new(0, 220, 0, 36); b.BackgroundColor3 = BUTTON_COLOR; b.Text = text; b.Font = Enum.Font.GothamSemibold; b.TextSize = 18; b.TextColor3 = Color3.fromRGB(255,255,255)
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
if cb then b.MouseButton1Click:Connect(cb) end
return b
end
return { gui = gui, frame = frame, body = body, makeBtn = makeBtn }
end
-- createESPGui with red boxes (dynamic sizing) -------------------------------
local function createESPGui()
local o = newFrameGui("ESP", 200)
local state = { esp = false, ignoreTeam = false, boxes = {}, boxConns = {} }
local function shouldShow(plr)
if not plr or plr == LocalPlayer then return false end
if not plr.Character or not plr.Character.Parent then return false end
if state.ignoreTeam and plr.Team == LocalPlayer.Team then return false end
return state.esp
end
local function getPrimaryPart(plrChar)
if not plrChar then return nil end
return plrChar:FindFirstChild("HumanoidRootPart") or plrChar:FindFirstChild("UpperTorso") or plrChar:FindFirstChild("Torso") or plrChar.PrimaryPart
end
local function ensureBox(plr)
if not plr or not plr.Character then return end
local id = plr.UserId
if state.boxes[id] and state.boxes[id].Parent then return end
local root = getPrimaryPart(plr.Character)
if not root then return end
-- compute a model extents size (falls back to root.Size)
local success, extents = pcall(function() return plr.Character:GetExtentsSize() end)
if not success or not extents then extents = root.Size end
local box = Instance.new("BoxHandleAdornment")
box.Name = "ESP_Box_" .. tostring(id)
box.Adornee = root
box.Size = extents
box.Transparency = 0.4
box.Color = BrickColor.new("Bright red")
box.AlwaysOnTop = true
box.ZIndex = 10
-- Parenting to Workspace allows client-side visibility; keep separate folder for cleanup
box.Parent = Workspace
-- dynamic update connection
local conn = RunService.Heartbeat:Connect(function()
if not box or not box.Parent or not plr.Character or not plr.Character.Parent then
return
end
-- update adornee in case character's primary part changed
local newRoot = getPrimaryPart(plr.Character)
if newRoot and box.Adornee ~= newRoot then
box.Adornee = newRoot
end
-- update size to match model extents (handles scaling/pose)
local ok, newExt = pcall(function() return plr.Character:GetExtentsSize() end)
if ok and newExt then
box.Size = newExt
else
local rsz = box.Adornee and box.Adornee.Size or Vector3.new(2,5,1)
box.Size = rsz
end
end)
state.boxes[id] = box
state.boxConns[id] = conn
end
local function removeBox(plr)
if not plr then return end
local id = plr.UserId
if state.boxConns[id] then
pcall(function() state.boxConns[id]:Disconnect() end)
state.boxConns[id] = nil
end
if state.boxes[id] then
pcall(function() state.boxes[id]:Destroy() end)
state.boxes[id] = nil
end
end
local function updateAll()
for _, plr in ipairs(Players:GetPlayers()) do
if shouldShow(plr) then
ensureBox(plr)
else
removeBox(plr)
end
end
end
o.makeBtn("IgnoreTeamBtn", "Ignore Team: OFF", function()
state.ignoreTeam = not state.ignoreTeam
o.body.IgnoreTeamBtn.Text = "Ignore Team: " .. (state.ignoreTeam and "ON" or "OFF")
updateAll()
end)
o.makeBtn("ESPBtn", "ESP: OFF", function()
state.esp = not state.esp
o.body.ESPBtn.Text = "ESP: " .. (state.esp and "ON" or "OFF")
updateAll()
end)
-- auto-refresh while GUI exists
spawn(function()
while o.gui and o.gui.Parent do
wait(5)
if state.esp then updateAll() end
end
end)
Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function()
wait(0.05)
if o.gui and o.gui.Parent and shouldShow(plr) then
ensureBox(plr)
end
end)
end)
Players.PlayerRemoving:Connect(function(plr)
removeBox(plr)
end)
o.gui.Destroying:Connect(function()
for k,conn in pairs(state.boxConns) do
if conn then pcall(function() conn:Disconnect() end) end
state.boxConns[k] = nil
end
for k,box in pairs(state.boxes) do
if box and box.Parent then pcall(function() box:Destroy() end) end
state.boxes[k] = nil
end
end)
return o.gui
end
-- createAimbotGui with centered circle --------------------------------------
local function createAimbotGui()
local o = newFrameGui("Aimbot", 300)
local state = { circleSize = 150, ignoreTeam = false, ignoreWalls = false, aimbotOn = false }
local visGui = Instance.new("ScreenGui", PlayerGui); visGui.Name = "Silly_AimbotCircle"; visGui.ResetOnSpawn = false
local circle = Instance.new("Frame", visGui); circle.AnchorPoint = Vector2.new(.5, .5); circle.Position = UDim2.new(0.5, 0, 0.5, 0)
circle.Size = UDim2.new(0, state.circleSize, 0, state.circleSize); circle.BackgroundTransparency = 1
local circleStroke = Instance.new("UIStroke", circle); circleStroke.Color = Color3.fromRGB(255,0,0); circleStroke.Thickness = 2
local circleCorner = Instance.new("UICorner", circle); circleCorner.CornerRadius = UDim.new(0, state.circleSize/2)
local lbl = Instance.new("TextLabel", o.body); lbl.Text = "Circle Size: " .. state.circleSize; lbl.Size = UDim2.new(0, 220, 0, 18); lbl.BackgroundTransparency = 1; lbl.TextColor3 = Color3.fromRGB(255,255,255); lbl.Font = Enum.Font.GothamSemibold; lbl.TextSize = 14
local track = Instance.new("Frame", o.body); track.Size = UDim2.new(0, 220, 0, 16); track.BackgroundColor3 = Color3.fromRGB(50,50,50); Instance.new("UICorner", track).CornerRadius = UDim.new(0, 6)
local fill = Instance.new("Frame", track); fill.Size = UDim2.new((state.circleSize-30) / (600-30), 0, 1, 0); fill.BackgroundColor3 = Color3.fromRGB(140,10,10); Instance.new("UICorner", fill).CornerRadius = UDim.new(0, 6)
local knob = Instance.new("TextButton", track); knob.Size = UDim2.new(0, 18, 0, 18); knob.AnchorPoint = Vector2.new(.5, .5); knob.Position = UDim2.new((state.circleSize-30) / (600-30), 0, .5, 0); knob.BackgroundColor3 = Color3.fromRGB(200,50,50); knob.Text = ""; Instance.new("UICorner", knob).CornerRadius = UDim.new(0, 9)
local minSize, maxSize = 30, 600
local function setSizeFromX(x)
if not track:IsDescendantOf(game) then return end
local pos = track.AbsolutePosition.X; local size = track.AbsoluteSize.X if size <= 0 then return end
local ratio = math.clamp((x - pos) / size, 0, 1)
state.circleSize = math.floor(minSize + (maxSize - minSize) * ratio)
lbl.Text = "Circle Size: " .. state.circleSize
fill.Size = UDim2.new(ratio, 0, 1, 0); knob.Position = UDim2.new(ratio, 0, .5, 0)
circle.Size = UDim2.new(0, state.circleSize, 0, state.circleSize); circleCorner.CornerRadius = UDim.new(0, state.circleSize / 2)
end
local function beginDrag(input)
if not input or not input.Position then return end
setSizeFromX(input.Position.X)
local moveConn; moveConn = UIS.InputChanged:Connect(function(i) if (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) and i.Position then setSizeFromX(i.Position.X) end end)
input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then if moveConn then moveConn:Disconnect() end end end)
end
knob.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then beginDrag(i) end end)
track.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then beginDrag(i) end end)
o.makeBtn("IgnoreTeamBtn", "Ignore Team: OFF", function() state.ignoreTeam = not state.ignoreTeam; o.body.IgnoreTeamBtn.Text = "Ignore Team: " .. (state.ignoreTeam and "ON" or "OFF") end)
o.makeBtn("IgnoreWallsBtn", "Ignore Walls: OFF", function() state.ignoreWalls = not state.ignoreWalls; o.body.IgnoreWallsBtn.Text = "Ignore Walls: " .. (state.ignoreWalls and "ON" or "OFF") end)
local function visibleThrough(head, char)
if not state.ignoreWalls then return true end
local cam = Workspace.CurrentCamera if not cam then return true end
local rp = RaycastParams.new(); rp.FilterDescendantsInstances = { LocalPlayer.Character }; rp.FilterType = Enum.RaycastFilterType.Blacklist; rp.IgnoreWater = true
local dir = (head.Position - cam.CFrame.Position)
local r = Workspace:Raycast(cam.CFrame.Position, dir, rp)
if not r then return true end
if r.Instance and char and r.Instance:IsDescendantOf(char) then return true end
return false
end
local function getTarget()
local cam = Workspace.CurrentCamera; if not cam then return nil end
local cx, cy = cam.ViewportSize.X/2, cam.ViewportSize.Y/2
local best, bestDist = nil, math.huge
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character and plr.Character.Parent then
if state.ignoreTeam and plr.Team == LocalPlayer.Team then
else
local head = plr.Character:FindFirstChild("Head")
if head then
local pos, on = cam:WorldToViewportPoint(head.Position)
if on and visibleThrough(head, plr.Character) then
local dx, posy = pos.X - cx, pos.Y - cy
local dist = math.sqrt(dx*dx + posy*posy)
if dist <= state.circleSize/2 and dist < bestDist then best, bestDist = head, dist end
end
end
end
end
end
return best
end
local aimbotConn
aimbotConn = RunService.RenderStepped:Connect(function()
pcall(function() circle.Position = UDim2.new(0.5, 0, 0.5, 0) end)
if not state.aimbotOn then return end
local cam = Workspace.CurrentCamera; if not cam then return end
local t = getTarget()
if t then cam.CFrame = CFrame.new(cam.CFrame.Position, t.Position) end
end)
o.makeBtn("AimbotBtn", "Aimbot: OFF", function() state.aimbotOn = not state.aimbotOn; o.body.AimbotBtn.Text = "Aimbot: " .. (state.aimbotOn and "ON" or "OFF") end)
o.gui.Destroying:Connect(function() if aimbotConn then aimbotConn:Disconnect() aimbotConn = nil end; if visGui and visGui.Parent then visGui:Destroy() end end)
return o.gui
end
-- createPlayerGui: walkspeed, jumppower, infinite jump, noclip ----------------
local function createPlayerGui()
local o = newFrameGui("Player", 300)
local state = { ws = 16, jp = 50, inf = false, noclip = false }
local nocConn; local saved = {}
local function applyChar(c)
if not c then return end
local h = c:FindFirstChildOfClass("Humanoid")
if h then pcall(function() h.WalkSpeed = state.ws; h.JumpPower = state.jp end) end
if state.noclip then for _, p in pairs(c:GetDescendants()) do if p:IsA("BasePart") then saved[p] = p.CanCollide; p.CanCollide = false end end end
end
Players.LocalPlayer.CharacterAdded:Connect(function(ch) wait(0.05); applyChar(ch); if state.noclip then if nocConn then nocConn:Disconnect() end; nocConn = RunService.Heartbeat:Connect(function() local ch2 = LocalPlayer.Character; if not ch2 then return end; for _, pp in pairs(ch2:GetDescendants()) do if pp:IsA("BasePart") then if saved[pp] == nil then saved[pp] = pp.CanCollide end; pp.CanCollide = false end end end) end end)
local function makeSlider(labelText, minV, maxV, default, onChange)
local lbl = Instance.new("TextLabel", o.body); lbl.Text = labelText .. ": " .. tostring(default); lbl.Size = UDim2.new(0,220,0,18); lbl.BackgroundTransparency = 1; lbl.TextColor3 = Color3.fromRGB(255,255,255); lbl.Font = Enum.Font.GothamSemibold; lbl.TextSize = 14
local track = Instance.new("Frame", o.body); track.Size = UDim2.new(0,220,0,16); track.BackgroundColor3 = Color3.fromRGB(50,50,50); Instance.new("UICorner", track).CornerRadius = UDim.new(0,6)
local fill = Instance.new("Frame", track); fill.Size = UDim2.new((default - minV)/(maxV - minV), 0, 1, 0); fill.BackgroundColor3 = Color3.fromRGB(140,10,10); Instance.new("UICorner", fill).CornerRadius = UDim.new(0,6)
local knob = Instance.new("TextButton", track); knob.Size = UDim2.new(0,18,0,18); knob.AnchorPoint = Vector2.new(.5, .5); knob.Position = UDim2.new((default - minV)/(maxV - minV), 0, .5, 0); knob.BackgroundColor3 = Color3.fromRGB(200,50,50); knob.Text = ""; Instance.new("UICorner", knob).CornerRadius = UDim.new(0,9)
local function setFromX(x)
if not track:IsDescendantOf(game) then return end
local pos = track.AbsolutePosition.X; local size = track.AbsoluteSize.X; if size <= 0 then return end
local r = math.clamp((x - pos)/size, 0, 1); local val = math.floor(minV + r*(maxV - minV))
lbl.Text = labelText .. ": " .. tostring(val); fill.Size = UDim2.new(r, 0, 1, 0); knob.Position = UDim2.new(r, 0, .5, 0); onChange(val)
end
local function b(input) if not input or not input.Position then return end; setFromX(input.Position.X); local mv; mv = UIS.InputChanged:Connect(function(i) if (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) and i.Position then setFromX(i.Position.X) end end); input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then if mv then mv:Disconnect() end end end) end
knob.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then b(i) end end)
track.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then b(i) end end)
return lbl, track, knob
end
state.ws = 16; makeSlider("WalkSpeed", 16, 500, state.ws, function(v) state.ws = v; if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then pcall(function() LocalPlayer.Character:FindFirstChildOfClass("Humanoid").WalkSpeed = v end) end end)
state.jp = 50; makeSlider("JumpPower", 50, 500, state.jp, function(v) state.jp = v; if LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid") then pcall(function() LocalPlayer.Character:FindFirstChildOfClass("Humanoid").JumpPower = v end) end end)
o.makeBtn("InfJumpBtn", "Infinite Jump: OFF", function() state.inf = not state.inf; o.body.InfJumpBtn.Text = "Infinite Jump: " .. (state.inf and "ON" or "OFF") end)
local jr = UIS.JumpRequest:Connect(function() if state.inf and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid"); if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end)
local function enableNoclip() local ch = LocalPlayer.Character; if not ch then return end; saved = {}; for _, p in pairs(ch:GetDescendants()) do if p:IsA("BasePart") then saved[p] = p.CanCollide; p.CanCollide = false end end; if nocConn then nocConn:Disconnect() end; nocConn = RunService.Heartbeat:Connect(function() local ch2 = LocalPlayer.Character; if not ch2 then return end; for _, pp in pairs(ch2:GetDescendants()) do if pp:IsA("BasePart") then if saved[pp] == nil then saved[pp] = pp.CanCollide end; pp.CanCollide = false end end end) end
local function disableNoclip() if nocConn then nocConn:Disconnect(); nocConn = nil end; for p, v in pairs(saved) do if p and p.Parent then pcall(function() p.CanCollide = v end) end end; saved = {} end
o.makeBtn("NoclipBtn", "Noclip: OFF", function() state.noclip = not state.noclip; o.body.NoclipBtn.Text = "Noclip: " .. (state.noclip and "ON" or "OFF"); if state.noclip then enableNoclip() else disableNoclip() end end)
o.gui.Destroying:Connect(function() if jr then jr:Disconnect() end; disableNoclip() end)
if LocalPlayer.Character then applyChar(LocalPlayer.Character) end
return o.gui
end
-- Main GUI ------------------------------------------------------------------
local main = newFrameGui("silly's aimbot", 200)
main.makeBtn("ESP", "ESP", function() createESPGui() end)
main.makeBtn("Aimbot", "Aimbot", function() createAimbotGui() end)
main.makeBtn("Player", "Player", function() createPlayerGui() end)
print("[Silly GUI] Loaded.")No comments yet for this script.



