Arsenal Script Keyless (Glitch Systems) | Esp, Speed, Etc.

Arsenal Script Keyless (Glitch Systems) | Esp, Speed, Etc.

Arsenal 6 days ago
21 views
Arsenal Script Keyless (Glitch Systems) | Esp, Speed, Etc. Keyless
DeltaDev
Play Game Game Link

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)

Comments (0)

No comments yet. Be the first!