Description
I decided to make this project open source just for the sake of sharing it with others and allowing anyone interested to explore, learn from, or improve it. I’m not exactly sure why, I just thought it would be a good idea. Anyway, the important thing is that this script was created entirely by me.
Features
Script
-- hi this is an open source give credit if you want to... if you do ill be happy local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local StarterGui = game:GetService("StarterGui") local VIM = game:GetService("VirtualInputManager") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera local Mouse = LocalPlayer:GetMouse() local function getChar() return LocalPlayer.Character end local function getHRP() local c = getChar(); return c and c:FindFirstChild("HumanoidRootPart") end local function getHum() local c = getChar(); return c and c:FindFirstChildOfClass("Humanoid") end local function hasLOS(origin, target) -- true = clear line of sight (no wall blocking) local dir = target - origin local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude local ex = {} for _, p in ipairs(Players:GetPlayers()) do if p.Character then table.insert(ex, p.Character) end end rp.FilterDescendantsInstances = ex return Workspace:Raycast(origin, dir.Unit * dir.Magnitude, rp) == nil end local function worldToViewport(pos) local vp, onScreen = Camera:WorldToViewportPoint(pos) return Vector2.new(vp.X, vp.Y), onScreen, vp.Z end local flags = { fly = false, noclip = false, shootWalls = false, triggerbot = false, esp = false, espNames = true, espBoxes = true, espHealth = true, espTracers = true, espDistance = true, espWallCheck = false, aimbot = false, aimbotHead = true, aimbotSmooth = true, teamCheck = true, -- skip teammates in aimbot/triggerbot hitbox = false, -- expand enemy hitboxes speed = false, infJump = false, killAura = false, antiAfk = false, godMode = false, } local FLY_SPEED = 60 local SPEED_MULT = 1.5 local AIMBOT_FOV = 120 -- pixels radius local AIMBOT_SMOOTH= 0.5 -- lerp factor (lower = smoother) local KILLAURA_R = 15 -- stud radius local HITBOX_SIZE = 10 -- studs — expands HumanoidRootPart on all axes local function isEnemy(p) if p == LocalPlayer then return false end if flags.teamCheck then local myTeam = LocalPlayer.Team local theirTeam = p.Team if myTeam and theirTeam then return myTeam ~= theirTeam end end return true end local hitboxOriginals = {} -- [player] = original HRP Size local function applyHitbox(p) if not isEnemy(p) then return end local char = p.Character; if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart"); if not hrp then return end if not hitboxOriginals[p] then hitboxOriginals[p] = hrp.Size -- save original end hrp.Size = Vector3.new(HITBOX_SIZE, HITBOX_SIZE, HITBOX_SIZE) -- Keep it invisible so it doesn't look weird hrp.Transparency = 1 end local function restoreHitbox(p) local orig = hitboxOriginals[p]; if not orig then return end local char = p.Character; if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart"); if not hrp then return end hrp.Size = orig hitboxOriginals[p] = nil end local function enableHitbox() for _, p in ipairs(Players:GetPlayers()) do applyHitbox(p) end end local function disableHitbox() for _, p in ipairs(Players:GetPlayers()) do restoreHitbox(p) end hitboxOriginals = {} end -- Continuously apply hitbox to new characters (respawns, new players) RunService.Heartbeat:Connect(function() if not flags.hitbox then return end for _, p in ipairs(Players:GetPlayers()) do if not isEnemy(p) then continue end local char = p.Character; if not char then continue end local hrp = char:FindFirstChild("HumanoidRootPart"); if not hrp then continue end -- Re-apply if the size got reset (e.g. after respawn) if hrp.Size.X < HITBOX_SIZE then applyHitbox(p) end end end) -- Restore on player removal Players.PlayerRemoving:Connect(function(p) hitboxOriginals[p] = nil end) local flyBV, flyBG local function enableFly() local hrp = getHRP(); if not hrp then return end flyBG = Instance.new("BodyGyro") flyBG.MaxTorque = Vector3.new(9e9,9e9,9e9); flyBG.P = 9e4 flyBG.CFrame = hrp.CFrame; flyBG.Parent = hrp flyBV = Instance.new("BodyVelocity") flyBV.Velocity = Vector3.zero flyBV.MaxForce = Vector3.new(9e9,9e9,9e9); flyBV.Parent = hrp end local function disableFly() if flyBV then flyBV:Destroy(); flyBV = nil end if flyBG then flyBG:Destroy(); flyBG = nil end end RunService.Heartbeat:Connect(function() if not flags.fly then return end local hrp = getHRP(); if not hrp or not flyBV or not flyBG then return end local v = Vector3.zero local ui = UserInputService if ui:IsKeyDown(Enum.KeyCode.W) then v = v + Camera.CFrame.LookVector end if ui:IsKeyDown(Enum.KeyCode.S) then v = v - Camera.CFrame.LookVector end if ui:IsKeyDown(Enum.KeyCode.A) then v = v - Camera.CFrame.RightVector end if ui:IsKeyDown(Enum.KeyCode.D) then v = v + Camera.CFrame.RightVector end if ui:IsKeyDown(Enum.KeyCode.Space) then v = v + Vector3.yAxis end if ui:IsKeyDown(Enum.KeyCode.LeftShift) then v = v - Vector3.yAxis end flyBV.Velocity = v * FLY_SPEED flyBG.CFrame = Camera.CFrame end) RunService.Stepped:Connect(function() if not flags.noclip then return end local c = getChar(); if not c then return end for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end) local shootWallConn local function enableShootWall() if shootWallConn then return end shootWallConn = RunService.Heartbeat:Connect(function() if not flags.shootWalls then return end local t = Mouse.Target if not t or not t:IsA("BasePart") then return end local inChar = false for _, p in ipairs(Players:GetPlayers()) do if p.Character and t:IsDescendantOf(p.Character) then inChar = true; break end end if inChar then return end local orig = t.CanCollide; t.CanCollide = false task.defer(function() if t and t.Parent then t.CanCollide = orig end end) end) end local function disableShootWall() if shootWallConn then shootWallConn:Disconnect(); shootWallConn = nil end end local triggerbotConn -- Cast a ray from the centre of the screen (where the aimbot points) -- Returns (enemyCharacter, hitPart) or (nil, nil) local function getEnemyAtCrosshair() local vp = Camera.ViewportSize local unitRay = Camera:ScreenPointToRay(vp.X / 2, vp.Y / 2) local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude local exclude = {} local myChar = getChar() if myChar then table.insert(exclude, myChar) end rp.FilterDescendantsInstances = exclude local result = workspace:Raycast(unitRay.Origin, unitRay.Direction * 1000, rp) if not result then return nil, nil end local hitPart = result.Instance for _, p in ipairs(Players:GetPlayers()) do if not isEnemy(p) then continue end local char = p.Character; if not char then continue end if not hitPart:IsDescendantOf(char) then continue end local hum = char:FindFirstChildOfClass("Humanoid") if hum and hum.Health > 0 then return char, hitPart end end return nil, nil end local function triggerFireTool(enemyChar, hitPart) local char = getChar(); if not char then return end local tool = char:FindFirstChildOfClass("Tool"); if not tool then return end local hitPos = hitPart and hitPart.Position or Mouse.Hit.Position local hitNormal = Vector3.new(0, 1, 0) -- Fire every RemoteEvent in the entire tool tree for _, obj in ipairs(tool:GetDescendants()) do if not obj:IsA("RemoteEvent") then continue end pcall(function() obj:FireServer(hitPos, hitPart, hitNormal) end) pcall(function() obj:FireServer(hitPos, hitPart) end) pcall(function() obj:FireServer(hitPos) end) pcall(function() obj:FireServer(Mouse.Hit, hitPart) end) pcall(function() obj:FireServer(Mouse.Hit) end) end -- Named remotes: Arsenal uses "RE", Rivals uses "Shoot"/"FireWeapon" for _, name in ipairs({"RE","Fire","Shoot","FireWeapon","ShootEvent", "RemoteEvent","BulletEvent","HitEvent","Attack"}) do local r = tool:FindFirstChild(name) if r and r:IsA("RemoteEvent") then pcall(function() r:FireServer(hitPos, hitPart, hitNormal) end) pcall(function() r:FireServer(hitPos, hitPart) end) pcall(function() r:FireServer(hitPos) end) end end -- LMB click for click-activated / melee tools pcall(function() VIM:SendMouseButtonEvent(Mouse.X, Mouse.Y, 0, true, game, 1) VIM:SendMouseButtonEvent(Mouse.X, Mouse.Y, 0, false, game, 1) end) end local function enableTriggerbot() if triggerbotConn then return end triggerbotConn = RunService.Heartbeat:Connect(function() if not flags.triggerbot then return end -- Instant — no throttle, fires every Heartbeat (~60/sec) local enemyChar, hitPart = getEnemyAtCrosshair() if not enemyChar then return end triggerFireTool(enemyChar, hitPart) end) end local function disableTriggerbot() if triggerbotConn then triggerbotConn:Disconnect(); triggerbotConn = nil end end -- ════════════════════════════════════════════════════════════════ -- ESP (Boxes • Names • Health bars • Tracers • Distance) -- ════════════════════════════════════════════════════════════════ local espFolder = Instance.new("Folder") espFolder.Name = "ESP_Drawings" espFolder.Parent = LocalPlayer.PlayerGui -- just a holder, drawings are Drawing objects local espObjects = {} -- [player] = { box, nameLabel, healthBg, healthBar, tracer, distLabel, topLine, bottomLine, leftLine, rightLine } local ESP_COLOR = Color3.fromRGB(255, 60, 60) local ESP_FRIEND = Color3.fromRGB(60, 200, 255) local TRACER_COLOR = Color3.fromRGB(255, 220, 50) local function rgb(c) return {c.R, c.G, c.B} end -- unused but handy local function newDrawing(type_, props) local d = Drawing.new(type_) for k, v in pairs(props) do d[k] = v end return d end local function removeESPForPlayer(p) local objs = espObjects[p] if not objs then return end for _, d in pairs(objs) do if typeof(d) == "table" then for _, dd in pairs(d) do pcall(function() dd:Remove() end) end else pcall(function() d:Remove() end) end end espObjects[p] = nil end local function createESPForPlayer(p) if p == LocalPlayer then return end removeESPForPlayer(p) local c = ESP_COLOR local objs = {} -- Box (4 lines) objs.boxLines = {} for i = 1, 4 do objs.boxLines[i] = newDrawing("Line", {Visible=false, Color=c, Thickness=1.5, Transparency=1, ZIndex=5}) end -- Corner box accent lines (small corners only) objs.cornerLines = {} for i = 1, 8 do objs.cornerLines[i] = newDrawing("Line", {Visible=false, Color=Color3.fromRGB(255,255,255), Thickness=2, Transparency=1, ZIndex=6}) end -- Name label objs.nameLabel = newDrawing("Text", { Visible=false, Color=Color3.fromRGB(255,255,255), Size=13, Font=Drawing.Fonts.UI, Outline=true, OutlineColor=Color3.fromRGB(0,0,0), Center=true, ZIndex=7 }) -- Distance label objs.distLabel = newDrawing("Text", { Visible=false, Color=Color3.fromRGB(200,200,200), Size=11, Font=Drawing.Fonts.UI, Outline=true, OutlineColor=Color3.fromRGB(0,0,0), Center=true, ZIndex=7 }) -- Health bar background objs.healthBg = newDrawing("Line", {Visible=false, Color=Color3.fromRGB(0,0,0), Thickness=4, Transparency=1, ZIndex=4}) -- Health bar fill objs.healthBar = newDrawing("Line", {Visible=false, Color=Color3.fromRGB(50,210,80), Thickness=3, Transparency=1, ZIndex=5}) -- Tracer objs.tracer = newDrawing("Line", {Visible=false, Color=TRACER_COLOR, Thickness=1, Transparency=0.7, ZIndex=3}) espObjects[p] = objs end local function updateESP() if not flags.esp then for p, objs in pairs(espObjects) do for _, v in pairs(objs) do if typeof(v) == "table" then for _, d in pairs(v) do pcall(function() d.Visible = false end) end else pcall(function() v.Visible = false end) end end end return end local vp = Camera.ViewportSize local tracerOrigin = Vector2.new(vp.X / 2, vp.Y) -- bottom center for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end if not espObjects[p] then createESPForPlayer(p) end local objs = espObjects[p] local char = p.Character local hrp = char and char:FindFirstChild("HumanoidRootPart") local hum = char and char:FindFirstChildOfClass("Humanoid") if not hrp or not hum or hum.Health <= 0 then for _, v in pairs(objs) do if typeof(v) == "table" then for _, d in pairs(v) do pcall(function() d.Visible = false end) end else pcall(function() v.Visible = false end) end end continue end -- Wall check (optional) local myHRP = getHRP() if flags.espWallCheck and myHRP then if not hasLOS(myHRP.Position, hrp.Position) then for _, v in pairs(objs) do if typeof(v) == "table" then for _, d in pairs(v) do pcall(function() d.Visible = false end) end else pcall(function() v.Visible = false end) end end continue end end -- Get head and feet positions local head = char:FindFirstChild("Head") local headPos = head and head.Position or (hrp.Position + Vector3.new(0, 2.5, 0)) local feetPos = hrp.Position - Vector3.new(0, 2.8, 0) local topScreen, topOn, topZ = worldToViewport(headPos + Vector3.new(0, 0.4, 0)) local bottomScreen, bottomOn, _ = worldToViewport(feetPos) local _, centerOn, centerZ = worldToViewport(hrp.Position) local visible = topOn or bottomOn if not visible or topZ < 0 then for _, v in pairs(objs) do if typeof(v) == "table" then for _, d in pairs(v) do pcall(function() d.Visible = false end) end else pcall(function() v.Visible = false end) end end continue end local height = math.abs(topScreen.Y - bottomScreen.Y) local width = height * 0.5 local cx = topScreen.X local L = cx - width / 2 local R = cx + width / 2 local T = topScreen.Y local B = bottomScreen.Y -- Distance local dist = myHRP and math.floor((myHRP.Position - hrp.Position).Magnitude) or 0 -- Health ratio local hp = hum.Health local maxHp = hum.MaxHealth local hpRatio = maxHp > 0 and math.clamp(hp / maxHp, 0, 1) or 0 local hpColor = Color3.fromRGB( math.floor(255 * (1 - hpRatio)), math.floor(255 * hpRatio), 40 ) -- ── BOX ── if flags.espBoxes then local bl = objs.boxLines -- top, bottom, left, right bl[1].From = Vector2.new(L, T); bl[1].To = Vector2.new(R, T); bl[1].Visible = true; bl[1].Color = ESP_COLOR bl[2].From = Vector2.new(L, B); bl[2].To = Vector2.new(R, B); bl[2].Visible = true; bl[2].Color = ESP_COLOR bl[3].From = Vector2.new(L, T); bl[3].To = Vector2.new(L, B); bl[3].Visible = true; bl[3].Color = ESP_COLOR bl[4].From = Vector2.new(R, T); bl[4].To = Vector2.new(R, B); bl[4].Visible = true; bl[4].Color = ESP_COLOR -- Corner accents (white corners overlaid) local cw = width * 0.28 local ch = height * 0.18 local cl = objs.cornerLines -- top-left H, V cl[1].From=Vector2.new(L,T); cl[1].To=Vector2.new(L+cw,T); cl[1].Visible=true cl[2].From=Vector2.new(L,T); cl[2].To=Vector2.new(L,T+ch); cl[2].Visible=true -- top-right H, V cl[3].From=Vector2.new(R,T); cl[3].To=Vector2.new(R-cw,T); cl[3].Visible=true cl[4].From=Vector2.new(R,T); cl[4].To=Vector2.new(R,T+ch); cl[4].Visible=true -- bottom-left H, V cl[5].From=Vector2.new(L,B); cl[5].To=Vector2.new(L+cw,B); cl[5].Visible=true cl[6].From=Vector2.new(L,B); cl[6].To=Vector2.new(L,B-ch); cl[6].Visible=true -- bottom-right H, V cl[7].From=Vector2.new(R,B); cl[7].To=Vector2.new(R-cw,B); cl[7].Visible=true cl[8].From=Vector2.new(R,B); cl[8].To=Vector2.new(R,B-ch); cl[8].Visible=true else for _, l in ipairs(objs.boxLines) do l.Visible = false end for _, l in ipairs(objs.cornerLines) do l.Visible = false end end -- ── NAME ── if flags.espNames then objs.nameLabel.Text = p.DisplayName objs.nameLabel.Position = Vector2.new(cx, T - 16) objs.nameLabel.Visible = true else objs.nameLabel.Visible = false end -- ── DISTANCE ── if flags.espDistance then objs.distLabel.Text = dist .. "m" objs.distLabel.Position = Vector2.new(cx, B + 3) objs.distLabel.Visible = true else objs.distLabel.Visible = false end -- ── HEALTH BAR (left side) ── if flags.espHealth then local barX = L - 5 local barTop = T local barBot = B local fillTo = barBot - (barBot - barTop) * hpRatio objs.healthBg.From = Vector2.new(barX, barTop) objs.healthBg.To = Vector2.new(barX, barBot) objs.healthBg.Visible = true objs.healthBar.From = Vector2.new(barX, fillTo) objs.healthBar.To = Vector2.new(barX, barBot) objs.healthBar.Color = hpColor objs.healthBar.Visible = true else objs.healthBg.Visible = false objs.healthBar.Visible = false end -- ── TRACER ── if flags.espTracers then local centerScreen, _, _ = worldToViewport(hrp.Position) objs.tracer.From = tracerOrigin objs.tracer.To = centerScreen objs.tracer.Visible = true else objs.tracer.Visible = false end end end -- Cleanup ESP when player leaves Players.PlayerRemoving:Connect(function(p) removeESPForPlayer(p) end) -- Pre-create for existing players for _, p in ipairs(Players:GetPlayers()) do if p ~= LocalPlayer then createESPForPlayer(p) end end Players.PlayerAdded:Connect(function(p) task.wait(1) createESPForPlayer(p) end) local fovCircle = Drawing.new("Circle") fovCircle.Visible = false fovCircle.Color = Color3.fromRGB(255, 255, 255) fovCircle.Thickness = 2 fovCircle.NumSides = 64 fovCircle.Filled = false fovCircle.Transparency = 1 -- 1 = fully opaque in Drawing API (NOT 0) -- Shared rainbow hue for FOV circle (syncs with ESP) local aimbotHue = 0 local function getBestAimTarget() local mPos = UserInputService:GetMouseLocation() local myHRP = getHRP() local best, bestDist = nil, math.huge for _, p in ipairs(Players:GetPlayers()) do if p == LocalPlayer then continue end local char = p.Character; if not char then continue end local hum = char:FindFirstChildOfClass("Humanoid") if not hum or hum.Health <= 0 then continue end -- Use shared team/enemy check if not isEnemy(p) then continue end local aimPart = (flags.aimbotHead and char:FindFirstChild("Head")) or char:FindFirstChild("HumanoidRootPart") if not aimPart then continue end -- LOS check (only visible enemies) if myHRP and not hasLOS(myHRP.Position, aimPart.Position) then continue end -- Screen-space distance from mouse cursor (matches reference script logic) local vPos, onScreen = Camera:WorldToViewportPoint(aimPart.Position) if not onScreen or vPos.Z <= 0 then continue end local screenPos = Vector2.new(vPos.X, vPos.Y) local d = (screenPos - mPos).Magnitude if d < AIMBOT_FOV and d < bestDist then best = aimPart bestDist = d end end return best end local aimbotConn local function enableAimbot() if aimbotConn then return end aimbotConn = RunService.RenderStepped:Connect(function(dt) -- Rainbow FOV circle — follows mouse cursor exactly like reference aimbotHue = (aimbotHue + dt * 0.4) % 1 local rainbowColor = Color3.fromHSV(aimbotHue, 0.85, 1) local mPos = UserInputService:GetMouseLocation() fovCircle.Position = mPos fovCircle.Radius = AIMBOT_FOV fovCircle.Color = rainbowColor fovCircle.Visible = flags.aimbot if not flags.aimbot then return end local target = getBestAimTarget() if not target then return end -- CFrame.lookAt is the proven method from the Arsenal reference script. -- It locks the camera to look at the target continuously every frame, -- which is what makes the aimbot persistent (not just 1 second). local camPos = Camera.CFrame.Position local goalCF = CFrame.lookAt(camPos, target.Position) if flags.aimbotSmooth then -- Smooth lerp — 0.35 per frame feels natural, not snappy Camera.CFrame = Camera.CFrame:Lerp(goalCF, 0.35) else Camera.CFrame = goalCF end end) end local function disableAimbot() if aimbotConn then aimbotConn:Disconnect(); aimbotConn = nil end fovCircle.Visible = false end local defaultWalkSpeed = 16 RunService.Heartbeat:Connect(function() local hum = getHum(); if not hum then return end if flags.speed then hum.WalkSpeed = defaultWalkSpeed * SPEED_MULT else if hum.WalkSpeed ~= defaultWalkSpeed and not flags.fly then hum.WalkSpeed = defaultWalkSpeed end end end) UserInputService.JumpRequest:Connect(function() if not flags.infJump then return end local hum = getHum() if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end) local killAuraConn local killAuraCooldown = {} local function killAuraFireAllRemotes(tool, targetChar) if not tool then return end local eHRP = targetChar and targetChar:FindFirstChild("HumanoidRootPart") for _, obj in ipairs(tool:GetDescendants()) do if obj:IsA("RemoteEvent") then pcall(function() obj:FireServer(eHRP, 100) end) pcall(function() obj:FireServer(targetChar, 100) end) pcall(function() obj:FireServer(eHRP) end) pcall(function() obj:FireServer() end) end if obj:IsA("RemoteFunction") then pcall(function() obj:InvokeServer(eHRP, 100) end) end if obj:IsA("BindableEvent") then pcall(function() obj:Fire(eHRP) end) end end end local function enableKillAura() if killAuraConn then return end killAuraConn = RunService.Heartbeat:Connect(function() if not flags.killAura then return end local char = getChar(); if not char then return end local hrp = getHRP(); if not hrp then return end local tool = char:FindFirstChildOfClass("Tool") for _, p in ipairs(Players:GetPlayers()) do if not isEnemy(p) then continue end local eChar = p.Character; if not eChar then continue end local eHRP = eChar:FindFirstChild("HumanoidRootPart"); if not eHRP then continue end local eHum = eChar:FindFirstChildOfClass("Humanoid") if not eHum or eHum.Health KILLAURA_R then continue end local now = tick() if killAuraCooldown[p] and (now - killAuraCooldown[p]) < 0.12 then continue end killAuraCooldown[p] = now -- Snap camera toward enemy to ensure tool fires in their direction local prevCT = Camera.CameraType local prevCF = Camera.CFrame Camera.CameraType = Enum.CameraType.Scriptable Camera.CFrame = CFrame.new(Camera.CFrame.Position, eHRP.Position) -- Simulate real mouse click (activates any LocalScript-driven tool) pcall(function() VIM:SendMouseButtonEvent(Mouse.X, Mouse.Y, 0, true, game, 1) VIM:SendMouseButtonEvent(Mouse.X, Mouse.Y, 0, false, game, 1) end) -- Fire all remotes as backup for server-driven damage systems killAuraFireAllRemotes(tool, eChar) -- Restore camera next frame task.defer(function() pcall(function() Camera.CameraType = prevCT Camera.CFrame = prevCF end) end) end end) end local function disableKillAura() if killAuraConn then killAuraConn:Disconnect(); killAuraConn = nil end killAuraCooldown = {} end local antiAfkConn local function enableAntiAfk() if antiAfkConn then return end antiAfkConn = task.spawn(function() while flags.antiAfk do task.wait(110) if not flags.antiAfk then break end -- Simulate a jump to reset AFK timer local hum = getHum() if hum then hum.Jump = true end -- Also fire fake VirtualUser to be safe pcall(function() game:GetService("VirtualUser"):CaptureController() game:GetService("VirtualUser"):ClickButton2(Vector2.new()) end) end end) end local function disableAntiAfk() flags.antiAfk = false antiAfkConn = nil end RunService.Heartbeat:Connect(function() if not flags.godMode then return end local hum = getHum(); if not hum then return end if hum.Health < hum.MaxHealth then hum.Health = hum.MaxHealth end end) RunService.RenderStepped:Connect(updateESP) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "PremiumDashboard" ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.DisplayOrder = 999 local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 380, 0, 620) MainFrame.Position = UDim2.new(0.5, -190, 0.5, -310) MainFrame.BackgroundColor3 = Color3.fromRGB(13, 13, 18) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui MainFrame.ClipsDescendants = true Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 14) local MFStroke = Instance.new("UIStroke") MFStroke.Color = Color3.fromRGB(65, 100, 255) MFStroke.Thickness = 1.5 MFStroke.Transparency = 0.35 MFStroke.Parent = MainFrame local dragging, dragStart, startPos = false, nil, nil local function updateDrag(input) local d = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) end -- ─── HEADER ── local Header = Instance.new("Frame") Header.Size = UDim2.new(1, 0, 0, 54) Header.BackgroundColor3 = Color3.fromRGB(22, 22, 32) Header.BorderSizePixel = 0; Header.ZIndex = 2; Header.Parent = MainFrame Instance.new("UICorner", Header).CornerRadius = UDim.new(0, 14) local HCover = Instance.new("Frame") -- fills bottom round gap HCover.Size = UDim2.new(1, 0, 0, 14) HCover.Position = UDim2.new(0, 0, 1, -14) HCover.BackgroundColor3 = Header.BackgroundColor3 HCover.BorderSizePixel = 0; HCover.ZIndex = 2; HCover.Parent = Header local AccentBar = Instance.new("Frame") AccentBar.Size = UDim2.new(0, 64, 0, 3) AccentBar.Position = UDim2.new(0, 16, 1, -1) AccentBar.BackgroundColor3 = Color3.fromRGB(80, 120, 255) AccentBar.BorderSizePixel = 0; AccentBar.ZIndex = 3; AccentBar.Parent = Header Instance.new("UICorner", AccentBar).CornerRadius = UDim.new(1, 0) local DragIcon = Instance.new("TextLabel") DragIcon.Text = "⠿"; DragIcon.Size = UDim2.new(0, 22, 0, 54) DragIcon.Position = UDim2.new(1, -38, 0, 0); DragIcon.BackgroundTransparency = 1 DragIcon.TextColor3 = Color3.fromRGB(80, 85, 115); DragIcon.Font = Enum.Font.BuilderSansBold DragIcon.TextSize = 18; DragIcon.ZIndex = 3; DragIcon.Parent = Header local TitleLabel = Instance.new("TextLabel") TitleLabel.Text = "Glitch Systems"; TitleLabel.Size = UDim2.new(1, -50, 0, 28) TitleLabel.Position = UDim2.new(0, 16, 0, 8) TitleLabel.BackgroundTransparency = 1; TitleLabel.TextColor3 = Color3.fromRGB(235, 238, 255) TitleLabel.Font = Enum.Font.BuilderSansBold; TitleLabel.TextSize = 15 TitleLabel.TextXAlignment = Enum.TextXAlignment.Left; TitleLabel.ZIndex = 3; TitleLabel.Parent = Header local SubLabel = Instance.new("TextLabel") SubLabel.Text = "v4.0 • Full Feature Pack"; SubLabel.Size = UDim2.new(1, -50, 0, 14) SubLabel.Position = UDim2.new(0, 16, 0, 33) SubLabel.BackgroundTransparency = 1; SubLabel.TextColor3 = Color3.fromRGB(80, 90, 140) SubLabel.Font = Enum.Font.BuilderSans; SubLabel.TextSize = 11 SubLabel.TextXAlignment = Enum.TextXAlignment.Left; SubLabel.ZIndex = 3; SubLabel.Parent = Header Header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch 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) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateDrag(input) end end) -- ─── SECTION LABEL ── local SectionLbl = Instance.new("TextLabel") SectionLbl.Text = "SCRIPT LIST"; SectionLbl.Size = UDim2.new(1, -32, 0, 18) SectionLbl.Position = UDim2.new(0, 16, 0, 62) SectionLbl.BackgroundTransparency = 1; SectionLbl.TextColor3 = Color3.fromRGB(75, 115, 255) SectionLbl.Font = Enum.Font.BuilderSansBold; SectionLbl.TextSize = 11 SectionLbl.TextXAlignment = Enum.TextXAlignment.Left; SectionLbl.Parent = MainFrame -- ─── SCROLL FRAME ─ local ScrollFrame = Instance.new("ScrollingFrame") ScrollFrame.Size = UDim2.new(1, -32, 1, -118) ScrollFrame.Position = UDim2.new(0, 16, 0, 84) ScrollFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 26) ScrollFrame.BorderSizePixel = 0 ScrollFrame.ScrollBarThickness = 4 ScrollFrame.ScrollBarImageColor3 = Color3.fromRGB(80, 120, 255) ScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0) ScrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y ScrollFrame.ScrollingDirection = Enum.ScrollingDirection.Y ScrollFrame.Parent = MainFrame Instance.new("UICorner", ScrollFrame).CornerRadius = UDim.new(0, 10) local ListLayout = Instance.new("UIListLayout") ListLayout.SortOrder = Enum.SortOrder.LayoutOrder ListLayout.Padding = UDim.new(0, 5); ListLayout.Parent = ScrollFrame local LPad = Instance.new("UIPadding") LPad.PaddingTop = UDim.new(0, 7); LPad.PaddingBottom = UDim.new(0, 7) LPad.PaddingLeft = UDim.new(0, 7); LPad.PaddingRight = UDim.new(0, 7) LPad.Parent = ScrollFrame -- ─── STATUS BAR ─ local StatusBar = Instance.new("Frame") StatusBar.Size = UDim2.new(1, 0, 0, 30) StatusBar.Position = UDim2.new(0, 0, 1, -30) StatusBar.BackgroundColor3 = Color3.fromRGB(18, 18, 26) StatusBar.BorderSizePixel = 0; StatusBar.Parent = MainFrame local SDot = Instance.new("Frame") SDot.Size = UDim2.new(0, 8, 0, 8); SDot.Position = UDim2.new(0, 14, 0.5, -4) SDot.BackgroundColor3 = Color3.fromRGB(50, 210, 120); SDot.BorderSizePixel = 0; SDot.Parent = StatusBar Instance.new("UICorner", SDot).CornerRadius = UDim.new(1, 0) local StatusTxt = Instance.new("TextLabel") StatusTxt.Text = "Connected • Injected • v4.0" StatusTxt.Size = UDim2.new(1, -30, 1, 0); StatusTxt.Position = UDim2.new(0, 28, 0, 0) StatusTxt.BackgroundTransparency = 1; StatusTxt.TextColor3 = Color3.fromRGB(75, 90, 130) StatusTxt.Font = Enum.Font.BuilderSans; StatusTxt.TextSize = 11 StatusTxt.TextXAlignment = Enum.TextXAlignment.Left; StatusTxt.Parent = StatusBar task.spawn(function() while true do TweenService:Create(SDot, TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {BackgroundTransparency=0.65}):Play() task.wait(0.9) TweenService:Create(SDot, TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {BackgroundTransparency=0}):Play() task.wait(0.9) end end) local rowOrder = 0 local function nextOrder() rowOrder = rowOrder + 1; return rowOrder end local function makeDivider(text) local D = Instance.new("Frame") D.Size = UDim2.new(1, 0, 0, 26); D.BackgroundTransparency = 1 D.LayoutOrder = nextOrder(); D.Parent = ScrollFrame local Line = Instance.new("Frame") Line.Size = UDim2.new(1, -90, 0, 1); Line.Position = UDim2.new(0, 0, 0.5, 0) Line.BackgroundColor3 = Color3.fromRGB(35, 38, 60); Line.BorderSizePixel = 0; Line.Parent = D local Line2 = Instance.new("Frame") Line2.Size = UDim2.new(1, -90, 0, 1); Line2.Position = UDim2.new(1, 0, 0.5, 0) Line2.BackgroundColor3 = Color3.fromRGB(35, 38, 60); Line2.BorderSizePixel = 0 Line2.AnchorPoint = Vector2.new(1,0); Line2.Parent = D local Lbl = Instance.new("TextLabel") Lbl.Text = text; Lbl.Size = UDim2.new(0, 90, 1, 0); Lbl.Position = UDim2.new(0.5, -45, 0, 0) Lbl.BackgroundTransparency = 1; Lbl.TextColor3 = Color3.fromRGB(55, 65, 100) Lbl.Font = Enum.Font.BuilderSansBold; Lbl.TextSize = 10; Lbl.Parent = D end -- Toggle row — returns the toggle button so callers can watch it local function makeToggleRow(name, sub, tag, color, onEnable, onDisable) local Row = Instance.new("Frame") Row.Size = UDim2.new(1, 0, 0, 52); Row.BackgroundColor3 = Color3.fromRGB(24, 24, 35) Row.BorderSizePixel = 0; Row.LayoutOrder = nextOrder(); Row.Parent = ScrollFrame Instance.new("UICorner", Row).CornerRadius = UDim.new(0, 8) local Stripe = Instance.new("Frame") Stripe.Size = UDim2.new(0, 3, 0, 30); Stripe.Position = UDim2.new(0, 9, 0.5, -15) Stripe.BackgroundColor3 = color; Stripe.BorderSizePixel = 0; Stripe.Parent = Row Instance.new("UICorner", Stripe).CornerRadius = UDim.new(1, 0) local NL = Instance.new("TextLabel") NL.Text = name; NL.Size = UDim2.new(0, 162, 0, 20); NL.Position = UDim2.new(0, 21, 0.5, -19) NL.BackgroundTransparency = 1; NL.TextColor3 = Color3.fromRGB(215, 220, 255) NL.Font = Enum.Font.BuilderSansMedium; NL.TextSize = 13 NL.TextXAlignment = Enum.TextXAlignment.Left; NL.Parent = Row local SL = Instance.new("TextLabel") SL.Text = sub; SL.Size = UDim2.new(0, 162, 0, 14); SL.Position = UDim2.new(0, 21, 0.5, 3) SL.BackgroundTransparency = 1; SL.TextColor3 = Color3.fromRGB(60, 70, 105) SL.Font = Enum.Font.BuilderSans; SL.TextSize = 10 SL.TextXAlignment = Enum.TextXAlignment.Left; SL.Parent = Row local Tag = Instance.new("TextLabel") Tag.Text = tag; Tag.Size = UDim2.new(0, 64, 0, 18); Tag.Position = UDim2.new(1, -118, 0.5, -9) Tag.BackgroundColor3 = Color3.fromRGB(13, 13, 20); Tag.TextColor3 = color Tag.Font = Enum.Font.BuilderSansBold; Tag.TextSize = 9; Tag.BorderSizePixel = 0; Tag.Parent = Row Instance.new("UICorner", Tag).CornerRadius = UDim.new(1, 0) local isOn = false local Btn = Instance.new("TextButton") Btn.Text = "OFF"; Btn.Size = UDim2.new(0, 46, 0, 26); Btn.Position = UDim2.new(1, -52, 0.5, -13) Btn.BackgroundColor3 = Color3.fromRGB(38, 38, 55); Btn.TextColor3 = Color3.fromRGB(100, 105, 145) Btn.Font = Enum.Font.BuilderSansBold; Btn.TextSize = 10; Btn.BorderSizePixel = 0 Btn.AutoButtonColor = false; Btn.Parent = Row Instance.new("UICorner", Btn).CornerRadius = UDim.new(0, 6) Btn.MouseEnter:Connect(function() if not isOn then TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(55,55,75)}):Play() end end) Btn.MouseLeave:Connect(function() if not isOn then TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(38,38,55)}):Play() end end) Btn.MouseButton1Click:Connect(function() isOn = not isOn if isOn then Btn.Text = "ON" TweenService:Create(Btn, TweenInfo.new(0.18), {BackgroundColor3=color, TextColor3=Color3.fromRGB(255,255,255)}):Play() if onEnable then onEnable() end else Btn.Text = "OFF" TweenService:Create(Btn, TweenInfo.new(0.18), {BackgroundColor3=Color3.fromRGB(38,38,55), TextColor3=Color3.fromRGB(100,105,145)}):Play() if onDisable then onDisable() end end end) Row.MouseEnter:Connect(function() TweenService:Create(Row,TweenInfo.new(0.15),{BackgroundColor3=Color3.fromRGB(30,30,45)}):Play() end) Row.MouseLeave:Connect(function() TweenService:Create(Row,TweenInfo.new(0.15),{BackgroundColor3=Color3.fromRGB(24,24,35)}):Play() end) return Btn end -- Sub-option toggle (smaller, indented) local function makeSubToggle(name, flag, color) local Row = Instance.new("Frame") Row.Size = UDim2.new(1, -14, 0, 36); Row.BackgroundColor3 = Color3.fromRGB(20, 20, 30) Row.BorderSizePixel = 0; Row.LayoutOrder = nextOrder(); Row.Parent = ScrollFrame Instance.new("UICorner", Row).CornerRadius = UDim.new(0, 7) local Indent = Instance.new("Frame") Indent.Size = UDim2.new(0, 2, 0, 18); Indent.Position = UDim2.new(0, 12, 0.5, -9) Indent.BackgroundColor3 = color; Indent.BorderSizePixel = 0; Indent.Parent = Row Instance.new("UICorner", Indent).CornerRadius = UDim.new(1, 0) local NL = Instance.new("TextLabel") NL.Text = " └ " .. name; NL.Size = UDim2.new(1, -80, 1, 0); NL.Position = UDim2.new(0, 18, 0, 0) NL.BackgroundTransparency = 1; NL.TextColor3 = Color3.fromRGB(160, 165, 200) NL.Font = Enum.Font.BuilderSans; NL.TextSize = 12 NL.TextXAlignment = Enum.TextXAlignment.Left; NL.Parent = Row local isOn = flags[flag] local Btn = Instance.new("TextButton") Btn.Text = isOn and "ON" or "OFF" Btn.Size = UDim2.new(0, 40, 0, 22); Btn.Position = UDim2.new(1, -46, 0.5, -11) Btn.BackgroundColor3 = isOn and color or Color3.fromRGB(35,35,50) Btn.TextColor3 = isOn and Color3.fromRGB(255,255,255) or Color3.fromRGB(90,95,130) Btn.Font = Enum.Font.BuilderSansBold; Btn.TextSize = 9; Btn.BorderSizePixel = 0 Btn.AutoButtonColor = false; Btn.Parent = Row Instance.new("UICorner", Btn).CornerRadius = UDim.new(0, 5) Btn.MouseButton1Click:Connect(function() isOn = not isOn; flags[flag] = isOn if isOn then Btn.Text = "ON" TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3=color, TextColor3=Color3.fromRGB(255,255,255)}):Play() else Btn.Text = "OFF" TweenService:Create(Btn, TweenInfo.new(0.15), {BackgroundColor3=Color3.fromRGB(35,35,50), TextColor3=Color3.fromRGB(90,95,130)}):Play() end end) end -- ── MOVEMENT ───────────────────────────────────────────────── makeDivider("MOVEMENT") makeToggleRow("Fly", "W/A/S/D + Space / Shift", "MOVEMENT", Color3.fromRGB(80,130,255), function() flags.fly = true; enableFly() end, function() flags.fly = false; disableFly() end ) makeToggleRow("Noclip", "Phase through all geometry", "MOVEMENT", Color3.fromRGB(80,200,255), function() flags.noclip = true end, function() flags.noclip = false local c = getChar() if c then for _, p in ipairs(c:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = true end end end end ) makeToggleRow("Speed Boost", "x2.5 walk speed multiplier", "MOVEMENT", Color3.fromRGB(130,220,255), function() flags.speed = true end, function() flags.speed = false; local h=getHum(); if h then h.WalkSpeed=defaultWalkSpeed end end ) makeToggleRow("Infinite Jump", "Jump infinitely in the air", "MOVEMENT", Color3.fromRGB(160,140,255), function() flags.infJump = true end, function() flags.infJump = false end ) -- ── VISUAL ─────────────────────────────────────────────────── makeDivider("VISUAL / ESP") makeToggleRow("ESP", "Boxes • Names • HP • Tracers", "VISUAL", Color3.fromRGB(255,180,50), function() flags.esp = true end, function() flags.esp = false end ) -- ESP sub-options makeSubToggle("Show Names", "espNames", Color3.fromRGB(255,180,50)) makeSubToggle("Show Boxes", "espBoxes", Color3.fromRGB(255,180,50)) makeSubToggle("Show Health Bar", "espHealth", Color3.fromRGB(255,180,50)) makeSubToggle("Show Tracers", "espTracers", Color3.fromRGB(255,180,50)) makeSubToggle("Show Distance", "espDistance", Color3.fromRGB(255,180,50)) makeSubToggle("Wall Check", "espWallCheck", Color3.fromRGB(255,180,50)) -- ── COMBAT ──────────────────────────────────────────────────── makeDivider("COMBAT") makeToggleRow("Aimbot", "Always-on FOV lock • LOS check", "COMBAT", Color3.fromRGB(255,80,80), function() flags.aimbot = true; enableAimbot() end, function() flags.aimbot = false; disableAimbot() end ) makeSubToggle("Aim at Head (off = Torso)", "aimbotHead", Color3.fromRGB(255,80,80)) makeSubToggle("Smooth Aim", "aimbotSmooth", Color3.fromRGB(255,80,80)) makeSubToggle("Team Check (skip allies)", "teamCheck", Color3.fromRGB(255,80,80)) makeToggleRow("Triggerbot", "Auto-fire on target • no camera glitch", "COMBAT", Color3.fromRGB(255,100,60), function() flags.triggerbot = true; enableTriggerbot() end, function() flags.triggerbot = false; disableTriggerbot() end ) makeToggleRow("Hitbox Expander", "Grow enemy HRP to " .. HITBOX_SIZE .. " studs", "COMBAT", Color3.fromRGB(255,60,180), function() flags.hitbox = true; enableHitbox() end, function() flags.hitbox = false; disableHitbox() end ) makeToggleRow("Shoot Through Walls", "Bypass geometry collision", "COMBAT", Color3.fromRGB(255,145,40), function() flags.shootWalls = true; enableShootWall() end, function() flags.shootWalls = false; disableShootWall() end ) makeToggleRow("Kill Aura", "Instant kill in 15-stud radius", "COMBAT", Color3.fromRGB(220,50,50), function() flags.killAura = true; enableKillAura() end, function() flags.killAura = false; disableKillAura() end ) -- ── UTILITY ─────────────────────────────────────────────────── makeDivider("UTILITY") makeToggleRow("God Mode", "Restore health every frame", "UTILITY", Color3.fromRGB(50,220,130), function() flags.godMode = true end, function() flags.godMode = false end ) makeToggleRow("Anti-AFK", "Prevent auto-kick (2 min ping)", "UTILITY", Color3.fromRGB(160,100,255), function() flags.antiAfk = true; enableAntiAfk() end, function() disableAntiAfk() end ) makeToggleRow("Auto Farm", "Proximity farm loop", "UTILITY", Color3.fromRGB(80,200,120), nil, nil) makeToggleRow("Chest Collector", "Auto-open nearby chests", "UTILITY", Color3.fromRGB(255,200,50), nil, nil) MainFrame.Size = UDim2.new(0, 380, 0, 0) MainFrame.ClipsDescendants = true TweenService:Create(MainFrame, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Size = UDim2.new(0, 380, 0, 620)}):Play() --pls give me some credits atleast task.spawn(function() task.wait(0.6) pcall(function() StarterGui:SetCore("SendNotification", { Title = "Made By 🎀Buttershot🎀", Text = "Sub to me on YT", Duration = 5, }) end) end)
No comments yet. Be the first!