-- 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.")