Description
Sometimes in Arsenal, you just want something simple that helps you play better without too many extra options. This keyless Glitch Systems script is made for that purpose. It is open source, which means anyone can check it, learn from it, or even improve it.
The script is created by the developer and shared for everyone to use. It gives you useful features like ESP to see players and speed to move faster in the game. It is easy to use and great for players who want a clean and simple boost.
Features
ESP
Speed
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 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 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!