Aimbot + Esp + Misc
Key Required

Aimbot + Esp + Misc

[🔥NEW SNIPER] Sniper Arenatorjones111torjones111 1.8K views 7.5K executesUpdated Oct 5, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•1000 lines (39103 chars)
-- [[ Rscripts Risk Notice ]]
-- This script is not verified by rscripts.net. Deal with caution.
--
-- Stay safe:
--   • Never log in on unofficial Roblox sites or lookalike domains.
--   • Real Roblox links use roblox.com (check the .com ending).
--   • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End Rscripts Risk Notice ]]

--[[rscripts:analytics:start]]
-- Script analytics (enabled by the creator on rscripts.net).
-- Runs in its own thread and cannot affect the script below.
task.spawn(function()
	pcall(function()
		loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ac03b796e2e250543b27a8a"))()
	end)
end)
--[[rscripts:analytics:end]]

-- ============================================================
--  Sniper Arena Toolkit — ESP + Aimbot + Misc
-- ============================================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local WS = game:GetService("Workspace")
local LP = Players.LocalPlayer
local Cam = WS.CurrentCamera

local function getGuiParent()
    local ok, cg = pcall(function() return game:GetService("CoreGui") end)
    if ok and cg then return cg end
    return LP:WaitForChild("PlayerGui")
end

-- THEME
local Theme = {
    Bg=Color3.fromRGB(22,22,30), PanelBg=Color3.fromRGB(32,32,44),
    RowBg=Color3.fromRGB(42,42,56), RowHover=Color3.fromRGB(58,58,78),
    Accent=Color3.fromRGB(120,130,255), AccentDim=Color3.fromRGB(70,80,180),
    Text=Color3.fromRGB(230,230,240), TextDim=Color3.fromRGB(160,165,180),
    Green=Color3.fromRGB(90,200,120), Red=Color3.fromRGB(220,70,70),
    Yellow=Color3.fromRGB(240,200,80),
}

local Connections = {}
local Killed = false
local function track(c) table.insert(Connections, c); return c end
local function kill()
    if Killed then return end
    Killed = true
    for _, c in ipairs(Connections) do pcall(function() c:Disconnect() end) end
    pcall(function() RunService:UnbindFromRenderStep("SniperCombatCam") end)
    pcall(function() RunService:UnbindFromRenderStep("SniperMisc") end)
    local p = getGuiParent()
    for _, g in ipairs(p:GetChildren()) do
        if g.Name == "SniperToolkit" or g.Name == "SniperESP"
        or g.Name == "SniperFOV" then
            g:Destroy()
        end
    end
    pcall(function()
        UIS.ModalEnabled = false
        UIS.MouseIconEnabled = true
        UIS.MouseBehavior = Enum.MouseBehavior.Default
    end)
    print("[Sniper] Terminated.")
end
_G.__SniperKill = kill

-- CONFIG
local Config = {
    ESP = {
        Enabled = true, NPCs = true, Players = true,
        Box = true, Name = true, Distance = true, Health = true,
        MaxDist = 3000,
        NPCColor = Color3.fromRGB(255, 170, 60),
        EnemyColor = Color3.fromRGB(255, 70, 70),
        TeamColor = Color3.fromRGB(80, 220, 130),
    },
    Aimbot = {
        Enabled = false, FOV = 250, Smoothness = 0.25,
        TeamCheck = true, ShowFOV = true,
        TargetPart = "Head",
        WallCheck = false,
    },
    Misc = {
        WalkSpeed = {Enabled = false, Value = 100},
        JumpPower = {Enabled = false, Value = 100},
        Flight = {Enabled = false, Speed = 80},
        NoClip = false,
    },
    UI = { ToggleKey = Enum.KeyCode.RightShift, FreeMouse = true },
}

-- HELPERS
local function getRoot()
    local c = LP.Character
    return c and c:FindFirstChild("HumanoidRootPart")
end
local function localPos()
    local r = getRoot()
    return r and r.Position or nil
end
local function viewportCenter()
    local vp = Cam and Cam.ViewportSize or Vector2.new(1920,1080)
    return Vector2.new(vp.X*0.5, vp.Y*0.5)
end

-- NPC SCANNER
local NPCContainer = nil
local function getNPCContainer()
    if NPCContainer and NPCContainer.Parent then return NPCContainer end
    local hl = WS:FindFirstChild("Highlight")
    if hl then
        local en = hl:FindFirstChild("Enemy")
        if en then
            local hh = en:FindFirstChild("HighlightHolder")
            if hh then NPCContainer = hh; return hh end
        end
    end
    return nil
end
local function resolveChar(inst)
    if not inst then return nil end
    if inst:IsA("Highlight") then
        local ad = inst.Adornee
        if not ad then return nil end
        if ad:IsA("Model") then return ad end
        if ad:IsA("BasePart") then return ad:FindFirstAncestorOfClass("Model") end
        return nil
    end
    if inst:IsA("Model") then
        if inst:FindFirstChildOfClass("Humanoid") then return inst end
        return nil
    end
    if inst:IsA("BasePart") then
        return inst:FindFirstAncestorOfClass("Model")
    end
    return nil
end
local function scanNPCs()
    local list = {}
    local container = getNPCContainer()
    if not container then return list end
    local seen = {}
    local function tryAdd(char)
        if not char or seen[char] then return end
        seen[char] = true
        local hum = char:FindFirstChildOfClass("Humanoid")
        local head = char:FindFirstChild("Head")
        local root = char:FindFirstChild("HumanoidRootPart")
            or char:FindFirstChild("UpperTorso") or char.PrimaryPart
        if hum and head and root then
            table.insert(list, {
                Character=char, Humanoid=hum, Head=head, Root=root,
                IsNPC=true, Label="NPC",
            })
        end
    end
    for _, d in ipairs(container:GetDescendants()) do tryAdd(resolveChar(d)) end
    for _, c in ipairs(container:GetChildren()) do tryAdd(resolveChar(c)) end
    return list
end
local function scanPlayers()
    local list = {}
    for _, plr in ipairs(Players:GetPlayers()) do
        if plr ~= LP then
            local char = plr.Character
            if char then
                local hum = char:FindFirstChildOfClass("Humanoid")
                local head = char:FindFirstChild("Head")
                local root = char:FindFirstChild("HumanoidRootPart")
                if hum and head and root and hum.Health > 0 then
                    table.insert(list, {
                        Character=char, Humanoid=hum, Head=head, Root=root,
                        Player=plr, IsNPC=false, Label=plr.Name, Team=plr.Team,
                    })
                end
            end
        end
    end
    return list
end
local function scanAll()
    local list = {}
    for _, t in ipairs(scanNPCs()) do table.insert(list, t) end
    for _, t in ipairs(scanPlayers()) do table.insert(list, t) end
    return list
end

-- WALL CHECK
local function hasLineOfSight(fromPos, toPos, target)
    local params = RaycastParams.new()
    params.FilterType = Enum.RaycastFilterType.Exclude
    params.IgnoreWater = true
    local ignore = {}
    if LP.Character then table.insert(ignore, LP.Character) end
    if target and target.Character then table.insert(ignore, target.Character) end
    params.FilterDescendantsInstances = ignore
    local result = WS:Raycast(fromPos, toPos - fromPos, params)
    return result == nil
end

-- ESP
local ESPGui = Instance.new("ScreenGui")
ESPGui.Name = "SniperESP"
ESPGui.ResetOnSpawn = false
ESPGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ESPGui.IgnoreGuiInset = true
ESPGui.DisplayOrder = 998
ESPGui.Parent = getGuiParent()

local espDrawings = {}
local function createESP()
    local d = {}
    d.hl = Instance.new("Highlight")
    d.hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    d.hl.FillTransparency = 0.55
    d.hl.OutlineTransparency = 0
    d.hl.Enabled = false
    d.hl.Parent = ESPGui

    d.box = Instance.new("Frame")
    d.box.BackgroundTransparency = 1
    d.box.BorderSizePixel = 0
    d.box.Visible = false
    d.box.Parent = ESPGui
    local st = Instance.new("UIStroke")
    st.Thickness = 1.5
    st.Color = Color3.fromRGB(255,255,255)
    st.Parent = d.box
    d.stroke = st

    d.name = Instance.new("TextLabel")
    d.name.BackgroundTransparency = 1
    d.name.TextColor3 = Color3.fromRGB(255,255,255)
    d.name.TextStrokeTransparency = 0
    d.name.Font = Enum.Font.GothamBold
    d.name.TextSize = 13
    d.name.Visible = false
    d.name.Parent = ESPGui

    d.dist = Instance.new("TextLabel")
    d.dist.BackgroundTransparency = 1
    d.dist.TextColor3 = Color3.fromRGB(220,220,220)
    d.dist.TextStrokeTransparency = 0
    d.dist.Font = Enum.Font.Gotham
    d.dist.TextSize = 11
    d.dist.Visible = false
    d.dist.Parent = ESPGui

    d.hpBg = Instance.new("Frame")
    d.hpBg.BackgroundColor3 = Color3.fromRGB(30,30,30)
    d.hpBg.BorderSizePixel = 0
    d.hpBg.Visible = false
    d.hpBg.Parent = ESPGui

    d.hpFill = Instance.new("Frame")
    d.hpFill.BackgroundColor3 = Color3.fromRGB(90,220,90)
    d.hpFill.BorderSizePixel = 0
    d.hpFill.Visible = false
    d.hpFill.Parent = ESPGui

    return d
end
local function hideESP(d)
    d.hl.Enabled = false
    d.box.Visible = false
    d.name.Visible = false
    d.dist.Visible = false
    d.hpBg.Visible = false
    d.hpFill.Visible = false
end
local function getESP(char)
    local d = espDrawings[char]
    if not d then d = createESP(); espDrawings[char] = d end
    return d
end
local function updateESP()
    if not Cam then Cam = WS.CurrentCamera end
    if not Cam then return end
    if not Config.ESP.Enabled then
        for _, d in pairs(espDrawings) do hideESP(d) end
        return
    end
    local lPos = localPos()
    if not lPos then
        for _, d in pairs(espDrawings) do hideESP(d) end
        return
    end
    local seen = {}
    for _, t in ipairs(scanAll()) do
        if (t.IsNPC and Config.ESP.NPCs)
        or (not t.IsNPC and Config.ESP.Players) then
            seen[t.Character] = true
            local d = getESP(t.Character)
            local dist = (t.Root.Position - lPos).Magnitude
            if dist <= Config.ESP.MaxDist then
                local top = t.Head.Position + Vector3.new(0, 0.6, 0)
                local bot = t.Root.Position - Vector3.new(0, 3, 0)
                local ts, on1 = Cam:WorldToViewportPoint(top)
                local bs, on2 = Cam:WorldToViewportPoint(bot)
                if on1 and on2 and ts.Z > 0 and bs.Z > 0 then
                    local h = math.abs(bs.Y - ts.Y)
                    local w = math.max(h * 0.55, 12)
                    local x = ts.X - w * 0.5
                    local y = ts.Y
                    local col
                    if t.IsNPC then
                        col = Config.ESP.NPCColor
                    elseif t.Player and LP.Team and t.Team
                    and t.Team == LP.Team then
                        col = Config.ESP.TeamColor
                    else
                        col = Config.ESP.EnemyColor
                    end
                    d.hl.Adornee = t.Character
                    d.hl.FillColor = col
                    d.hl.OutlineColor = Color3.fromRGB(255,255,255)
                    d.hl.Enabled = true
                    d.box.Visible = Config.ESP.Box
                    d.box.Position = UDim2.fromOffset(x, y)
                    d.box.Size = UDim2.fromOffset(w, h)
                    d.stroke.Color = col
                    d.name.Visible = Config.ESP.Name
                    d.name.Text = t.IsNPC and "NPC" or t.Label
                    d.name.TextColor3 = col
                    d.name.Position = UDim2.fromOffset(ts.X - 100, y - 18)
                    d.name.Size = UDim2.fromOffset(200, 14)
                    d.name.TextXAlignment = Enum.TextXAlignment.Center
                    d.dist.Visible = Config.ESP.Distance
                    d.dist.Text = string.format("[%dm]", math.floor(dist))
                    d.dist.Position = UDim2.fromOffset(ts.X - 100, y + h + 2)
                    d.dist.Size = UDim2.fromOffset(200, 12)
                    d.dist.TextXAlignment = Enum.TextXAlignment.Center
                    if Config.ESP.Health and t.Humanoid then
                        local hp = math.clamp(
                            t.Humanoid.Health / math.max(t.Humanoid.MaxHealth, 1),
                            0, 1)
                        d.hpBg.Visible = true
                        d.hpBg.Position = UDim2.fromOffset(x - 6, y)
                        d.hpBg.Size = UDim2.fromOffset(3, h)
                        d.hpFill.Visible = true
                        d.hpFill.Position = UDim2.fromOffset(x - 6, y + h * (1 - hp))
                        d.hpFill.Size = UDim2.fromOffset(3, h * hp)
                        d.hpFill.BackgroundColor3 = Color3.fromRGB(
                            math.floor(255*(1-hp)), math.floor(255*hp), 0)
                    else
                        d.hpBg.Visible = false
                        d.hpFill.Visible = false
                    end
                else hideESP(d) end
            else hideESP(d) end
        end
    end
    for char, d in pairs(espDrawings) do
        if not seen[char] or not char.Parent then
            hideESP(d)
            if not char.Parent then
                for _, part in pairs(d) do
                    if typeof(part) == "Instance" then
                        pcall(function() part:Destroy() end)
                    end
                end
                espDrawings[char] = nil
            end
        end
    end
end

-- AIMBOT
local function aimCameraAt(target, part, smoothness)
    if not target or not part then return false end
    local cam = WS.CurrentCamera
    if not cam then return false end
    local goal = CFrame.new(cam.CFrame.Position, part.Position)
    cam.CFrame = cam.CFrame:Lerp(goal, smoothness)
    return true
end

local function findBestTarget()
    if not Cam then Cam = WS.CurrentCamera end
    local center = viewportCenter()
    local best, bestD = nil, math.huge
    local lPos = localPos()
    if not lPos then return nil end
    local camPos = Cam.CFrame.Position
    for _, t in ipairs(scanAll()) do
        if t.IsNPC or not (LP.Team and t.Team and t.Team == LP.Team) then
            local part = Config.Aimbot.TargetPart == "Head" and t.Head or t.Root
            local sp, on = Cam:WorldToViewportPoint(part.Position)
            if on and sp.Z > 0 then
                local d = (Vector2.new(sp.X, sp.Y) - center).Magnitude
                if d <= Config.Aimbot.FOV and d < bestD then
                    -- Wall check: cast a ray from the camera to the target part
                    local pass = true
                    if Config.Aimbot.WallCheck then
                        pass = hasLineOfSight(camPos, part.Position, t)
                    end
                    if pass then
                        bestD = d; best = t
                    end
                end
            end
        end
    end
    return best
end

local function updateAimbot()
    if not Config.Aimbot.Enabled then return end
    if not UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end
    if UIS:GetFocusedTextBox() then return end
    local target = findBestTarget()
    if not target then return end
    local part = Config.Aimbot.TargetPart == "Head" and target.Head or target.Root
    aimCameraAt(target, part, Config.Aimbot.Smoothness)
end

-- FOV circle
local fovGui = Instance.new("ScreenGui")
fovGui.Name = "SniperFOV"
fovGui.ResetOnSpawn = false
fovGui.IgnoreGuiInset = true
fovGui.DisplayOrder = 999
fovGui.Parent = getGuiParent()

local fovCircle = Instance.new("Frame")
fovCircle.BackgroundTransparency = 1
fovCircle.AnchorPoint = Vector2.new(0.5, 0.5)
fovCircle.Visible = false
fovCircle.Parent = fovGui
local fovCorner = Instance.new("UICorner")
fovCorner.CornerRadius = UDim.new(1, 0)
fovCorner.Parent = fovCircle
local fovStroke = Instance.new("UIStroke")
fovStroke.Thickness = 1.5
fovStroke.Color = Theme.Accent
fovStroke.Parent = fovCircle

local function updateFOVCircle()
    local vp = Cam and Cam.ViewportSize or Vector2.new(1920,1080)
    fovCircle.Visible = Config.Aimbot.Enabled and Config.Aimbot.ShowFOV
    if fovCircle.Visible then
        local d = Config.Aimbot.FOV * 2
        fovCircle.Position = UDim2.fromOffset(vp.X/2, vp.Y/2)
        fovCircle.Size = UDim2.fromOffset(d, d)
    end
end

-- MISC (flight state)
local FlightBV = nil
local function flightStart()
    local char = LP.Character
    if not char then return end
    local hrp = char:FindFirstChild("HumanoidRootPart")
    local hum = char:FindFirstChildOfClass("Humanoid")
    if not hrp or not hum then return end
    hum.PlatformStand = true
    if not FlightBV or FlightBV.Parent ~= hrp then
        if FlightBV then FlightBV:Destroy() end
        FlightBV = Instance.new("BodyVelocity")
        FlightBV.MaxForce = Vector3.new(1e5, 1e5, 1e5)
        FlightBV.Velocity = Vector3.zero
        FlightBV.P = 1000
        FlightBV.Parent = hrp
    end
end
local function flightStop()
    if FlightBV then FlightBV:Destroy(); FlightBV = nil end
    local char = LP.Character
    if char then
        local hum = char:FindFirstChildOfClass("Humanoid")
        if hum then hum.PlatformStand = false end
    end
end

local function updateMisc()
    local char = LP.Character
    if not char then return end
    local hum = char:FindFirstChildOfClass("Humanoid")
    local hrp = char:FindFirstChild("HumanoidRootPart")
    if not hum then return end

    -- WalkSpeed
    if Config.Misc.WalkSpeed.Enabled then
        hum.WalkSpeed = Config.Misc.WalkSpeed.Value
    end

    -- JumpPower
    if Config.Misc.JumpPower.Enabled then
        hum.UseJumpPower = true
        hum.JumpPower = Config.Misc.JumpPower.Value
    end

    -- NoClip
    if Config.Misc.NoClip then
        for _, p in ipairs(char:GetDescendants()) do
            if p:IsA("BasePart") and p.CanCollide then
                p.CanCollide = false
            end
        end
    end

    -- Flight
    if Config.Misc.Flight.Enabled then
        if not FlightBV or not hrp then
            flightStart()
        end
        if FlightBV and hrp then
            local cam = WS.CurrentCamera
            if cam then
                local move = Vector3.zero
                local speed = Config.Misc.Flight.Speed
                if UIS:IsKeyDown(Enum.KeyCode.W) then move = move + cam.CFrame.LookVector end
                if UIS:IsKeyDown(Enum.KeyCode.S) then move = move - cam.CFrame.LookVector end
                if UIS:IsKeyDown(Enum.KeyCode.A) then move = move - cam.CFrame.RightVector end
                if UIS:IsKeyDown(Enum.KeyCode.D) then move = move + cam.CFrame.RightVector end
                if UIS:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0,1,0) end
                if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then move = move - Vector3.new(0,1,0) end
                if move.Magnitude > 0 then move = move.Unit * speed end
                FlightBV.Velocity = move
            end
        end
    else
        if FlightBV then flightStop() end
    end
end

-- GUI
local guiParent = getGuiParent()
for _, g in ipairs(guiParent:GetChildren()) do
    if g.Name == "SniperToolkit" then g:Destroy() end
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SniperToolkit"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.DisplayOrder = 1000
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent = guiParent

local function newFrame(parent, props, cn)
    local inst = Instance.new(cn or "Frame")
    for k, v in pairs(props) do inst[k] = v end
    inst.Parent = parent
    return inst
end

local function initToolkit()
    local Window = newFrame(ScreenGui, {
        Size=UDim2.new(0, 440, 0, 520),
        Position=UDim2.new(0.5, -220, 0.5, -260),
        BackgroundColor3=Theme.Bg, BorderSizePixel=0,
        Active=true, Draggable=true, ZIndex=1,
    })
    newFrame(Window, {CornerRadius=UDim.new(0,12)}, "UICorner")
    newFrame(Window, {Color=Theme.Accent, Thickness=2}, "UIStroke")

    newFrame(Window, {
        Size=UDim2.new(1,-50,0,30), Position=UDim2.new(0,14,0,6),
        BackgroundTransparency=1, Text="Sniper Arena Toolkit",
        TextColor3=Theme.Accent, Font=Enum.Font.GothamBold, TextSize=16,
        TextXAlignment=Enum.TextXAlignment.Left, ZIndex=5,
    }, "TextLabel")

    local CloseBtn = newFrame(Window, {
        Size=UDim2.new(0,26,0,26), Position=UDim2.new(1,-34,0,8),
        BackgroundColor3=Theme.Red, BorderSizePixel=0, Text="X",
        TextColor3=Color3.fromRGB(255,255,255),
        Font=Enum.Font.GothamBold, TextSize=14, ZIndex=50,
    }, "TextButton")
    newFrame(CloseBtn, {CornerRadius=UDim.new(0,6)}, "UICorner")
    CloseBtn.MouseButton1Down:Connect(function() kill() end)

    local TabBar = newFrame(Window, {
        Size=UDim2.new(1,-20,0,30), Position=UDim2.new(0,10,0,40),
        BackgroundColor3=Theme.PanelBg, BorderSizePixel=0, ZIndex=2,
    })
    newFrame(TabBar, {CornerRadius=UDim.new(0,6)}, "UICorner")
    newFrame(TabBar, {
        Padding=UDim.new(0,2), SortOrder=Enum.SortOrder.LayoutOrder,
        FillDirection=Enum.FillDirection.Horizontal,
        HorizontalAlignment=Enum.HorizontalAlignment.Center,
        VerticalAlignment=Enum.VerticalAlignment.Center,
    }, "UIListLayout")

    local Content = newFrame(Window, {
        Size=UDim2.new(1,-20,1,-130), Position=UDim2.new(0,10,0,76),
        BackgroundTransparency=1, ZIndex=2,
    })

    local tabs = {}
    local function createTab(name)
        local btn = newFrame(TabBar, {
            Size=UDim2.new(1/4,-2,1,-6), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0, Text=name, TextColor3=Theme.TextDim,
            Font=Enum.Font.GothamBold, TextSize=11,
            AutoButtonColor=false, ZIndex=3,
        }, "TextButton")
        newFrame(btn, {CornerRadius=UDim.new(0,5)}, "UICorner")
        local scroll = newFrame(Content, {
            Size=UDim2.new(1,0,1,0), BackgroundTransparency=1,
            CanvasSize=UDim2.new(0,0,0,0),
            AutomaticCanvasSize=Enum.AutomaticSize.Y,
            ScrollBarThickness=5, Visible=false,
        }, "ScrollingFrame")
        newFrame(scroll, {Padding=UDim.new(0,6),
            SortOrder=Enum.SortOrder.LayoutOrder}, "UIListLayout")
        local function activate()
            for _, t in pairs(tabs) do
                t.Scroll.Visible = false
                t.Button.BackgroundColor3 = Theme.RowBg
                t.Button.TextColor3 = Theme.TextDim
            end
            scroll.Visible = true
            btn.BackgroundColor3 = Theme.Accent
            btn.TextColor3 = Color3.fromRGB(20,20,30)
        end
        btn.MouseButton1Click:Connect(activate)
        tabs[name] = {Button=btn, Scroll=scroll, Activate=activate}
        return tabs[name]
    end

    local function createSection(parent, title)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,0),
            AutomaticSize=Enum.AutomaticSize.Y,
            BackgroundColor3=Theme.PanelBg, BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            PaddingTop=UDim.new(0,6), PaddingBottom=UDim.new(0,6),
            PaddingLeft=UDim.new(0,6), PaddingRight=UDim.new(0,6),
        }, "UIPadding")
        newFrame(f, {Padding=UDim.new(0,6),
            SortOrder=Enum.SortOrder.LayoutOrder}, "UIListLayout")
        newFrame(f, {
            Size=UDim2.new(1,0,0,22), BackgroundTransparency=1,
            Text=title, TextColor3=Theme.Accent,
            Font=Enum.Font.GothamBold, TextSize=13,
            TextXAlignment=Enum.TextXAlignment.Left, LayoutOrder=0,
        }, "TextLabel")
        return f
    end

    local function createToggle(parent, props)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,32), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            Size=UDim2.new(0.6,0,1,0), Position=UDim2.new(0,10,0,0),
            BackgroundTransparency=1, Text=props.Name,
            TextColor3=Theme.Text, Font=Enum.Font.Gotham, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Left,
        }, "TextLabel")
        local bg = newFrame(f, {
            Size=UDim2.new(0,40,0,20), Position=UDim2.new(1,-50,0.5,-10),
            BackgroundColor3=Theme.RowBg, BorderSizePixel=0,
        })
        newFrame(bg, {CornerRadius=UDim.new(0,10)}, "UICorner")
        local handle = newFrame(bg, {
            Size=UDim2.new(0,16,0,16), Position=UDim2.new(0,2,0.5,-8),
            BackgroundColor3=Color3.fromRGB(255,255,255), BorderSizePixel=0,
        })
        newFrame(handle, {CornerRadius=UDim.new(1,0)}, "UICorner")
        local on = props.Default or false
        local function upd(s)
            on = s
            handle.Position = UDim2.new(0, s and 22 or 2, 0.5, -8)
            bg.BackgroundColor3 = s and Theme.Accent or Theme.RowBg
            if props.OnChange then props.OnChange(s) end
        end
        bg.InputBegan:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.MouseButton1
            or input.UserInputType == Enum.UserInputType.Touch then
                upd(not on)
            end
        end)
        upd(on)
        return f
    end

    local function createSlider(parent, props)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,38), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            Size=UDim2.new(0.4,-10,1,0), Position=UDim2.new(0,10,0,0),
            BackgroundTransparency=1, Text=props.Name,
            TextColor3=Theme.Text, Font=Enum.Font.Gotham, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Left,
        }, "TextLabel")
        local vLbl = newFrame(f, {
            Size=UDim2.new(0.2,-10,1,0), Position=UDim2.new(0.8,0,0,0),
            BackgroundTransparency=1,
            Text=string.format("%.0f", props.Default),
            TextColor3=Theme.Accent, Font=Enum.Font.GothamBold, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Right,
        }, "TextLabel")
        local bg = newFrame(f, {
            Size=UDim2.new(0.35,-10,0,6), Position=UDim2.new(0.45,0,0.5,-3),
            BackgroundColor3=Theme.PanelBg, BorderSizePixel=0,
        })
        newFrame(bg, {CornerRadius=UDim.new(0,3)}, "UICorner")
        local r0 = (props.Default - props.Min) / (props.Max - props.Min)
        local fill = newFrame(bg, {
            Size=UDim2.new(r0,0,1,0), BackgroundColor3=Theme.Accent,
            BorderSizePixel=0,
        })
        newFrame(fill, {CornerRadius=UDim.new(0,3)}, "UICorner")
        local handle = newFrame(bg, {
            Size=UDim2.new(0,12,0,12), Position=UDim2.new(r0,-6,0.5,-6),
            BackgroundColor3=Color3.fromRGB(255,255,255), BorderSizePixel=0,
        })
        newFrame(handle, {CornerRadius=UDim.new(1,0)}, "UICorner")
        local drag, sX, sV = false, 0, props.Default
        local curV = props.Default
        handle.InputBegan:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.MouseButton1
            or input.UserInputType == Enum.UserInputType.Touch then
                drag = true; sX = input.Position.X; sV = curV
            end
        end)
        handle.InputEnded:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.MouseButton1
            or input.UserInputType == Enum.UserInputType.Touch then drag = false end
        end)
        track(UIS.InputChanged:Connect(function(input)
            if not drag then return end
            if input.UserInputType ~= Enum.UserInputType.MouseMovement
            and input.UserInputType ~= Enum.UserInputType.Touch then return end
            local rng = bg.AbsoluteSize.X
            if rng <= 0 then return end
            local nv = math.clamp(
                sV + (input.Position.X - sX)/rng*(props.Max-props.Min),
                props.Min, props.Max)
            curV = nv
            local ratio = (nv - props.Min)/(props.Max - props.Min)
            fill.Size = UDim2.new(ratio,0,1,0)
            handle.Position = UDim2.new(ratio,-6,0.5,-6)
            vLbl.Text = string.format("%.0f", nv)
            if props.OnChange then props.OnChange(nv) end
        end))
        return f
    end

    local function createCycler(parent, props)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,32), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            Size=UDim2.new(0.5,0,1,0), Position=UDim2.new(0,10,0,0),
            BackgroundTransparency=1, Text=props.Name,
            TextColor3=Theme.Text, Font=Enum.Font.Gotham, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Left,
        }, "TextLabel")
        local btn = newFrame(f, {
            Size=UDim2.new(0.4,-10,0,22), Position=UDim2.new(0.6,0,0.5,-11),
            BackgroundColor3=Theme.AccentDim, BorderSizePixel=0,
            Text=props.Default, TextColor3=Color3.fromRGB(255,255,255),
            Font=Enum.Font.GothamBold, TextSize=12, AutoButtonColor=true,
        }, "TextButton")
        newFrame(btn, {CornerRadius=UDim.new(0,5)}, "UICorner")
        local idx = 1
        for i, v in ipairs(props.Options) do
            if v == props.Default then idx = i break end
        end
        btn.MouseButton1Click:Connect(function()
            idx = idx % #props.Options + 1
            local v = props.Options[idx]
            btn.Text = v
            if props.OnChange then props.OnChange(v) end
        end)
        return f
    end

    local function createKeybind(parent, props)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,32), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            Size=UDim2.new(0.5,0,1,0), Position=UDim2.new(0,10,0,0),
            BackgroundTransparency=1, Text=props.Name,
            TextColor3=Theme.Text, Font=Enum.Font.Gotham, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Left,
        }, "TextLabel")
        local btn = newFrame(f, {
            Size=UDim2.new(0.4,-10,0,22), Position=UDim2.new(0.6,0,0.5,-11),
            BackgroundColor3=Theme.AccentDim, BorderSizePixel=0,
            Text=props.Default.Name, TextColor3=Color3.fromRGB(255,255,255),
            Font=Enum.Font.GothamBold, TextSize=12, AutoButtonColor=true,
        }, "TextButton")
        newFrame(btn, {CornerRadius=UDim.new(0,5)}, "UICorner")
        local listening = false
        btn.MouseButton1Click:Connect(function()
            listening = true
            btn.Text = "press a key..."
            btn.BackgroundColor3 = Theme.Accent
        end)
        track(UIS.InputBegan:Connect(function(input)
            if not listening then return end
            if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
            listening = false
            btn.BackgroundColor3 = Theme.AccentDim
            if input.KeyCode == Enum.KeyCode.Escape then
                btn.Text = props.Default.Name; return
            end
            props.Default = input.KeyCode
            btn.Text = input.KeyCode.Name
            if props.OnChange then props.OnChange(input.KeyCode) end
        end))
        return f
    end

    local function createCheckbox(parent, props)
        local f = newFrame(parent, {
            Size=UDim2.new(1,0,0,32), BackgroundColor3=Theme.RowBg,
            BorderSizePixel=0,
        })
        newFrame(f, {CornerRadius=UDim.new(0,6)}, "UICorner")
        newFrame(f, {
            Size=UDim2.new(0.7,0,1,0), Position=UDim2.new(0,10,0,0),
            BackgroundTransparency=1, Text=props.Name,
            TextColor3=Theme.Text, Font=Enum.Font.Gotham, TextSize=12,
            TextXAlignment=Enum.TextXAlignment.Left,
        }, "TextLabel")
        local box = newFrame(f, {
            Size=UDim2.new(0,20,0,20), Position=UDim2.new(1,-30,0.5,-10),
            BackgroundColor3=Theme.RowBg, BorderSizePixel=0,
            Text="", TextTransparency=1,
        }, "TextButton")
        newFrame(box, {CornerRadius=UDim.new(0,4)}, "UICorner")
        local stroke = newFrame(box,
            {Color=Theme.TextDim, Thickness=1.5}, "UIStroke")
        local check = newFrame(box, {
            Size=UDim2.new(1,0,1,0), BackgroundTransparency=1,
            Text="✓", TextColor3=Color3.fromRGB(20,20,30),
            Font=Enum.Font.GothamBold, TextSize=14, Visible=false,
        }, "TextLabel")
        local checked = props.Default or false
        local function upd(s)
            checked = s
            check.Visible = s
            box.BackgroundColor3 = s and Theme.Accent or Theme.RowBg
            stroke.Color = s and Theme.Accent or Theme.TextDim
            if props.OnChange then props.OnChange(s) end
        end
        box.MouseButton1Click:Connect(function() upd(not checked) end)
        upd(checked)
        return f
    end

    -- Visual
    local VisualTab = createTab("Visual")
    local espSec = createSection(VisualTab.Scroll, "ESP")
    createToggle(espSec, {Name="Enable ESP", Default=true,
        OnChange=function(v) Config.ESP.Enabled = v end})
    createToggle(espSec, {Name="Show NPCs", Default=true,
        OnChange=function(v) Config.ESP.NPCs = v end})
    createToggle(espSec, {Name="Show Players", Default=true,
        OnChange=function(v) Config.ESP.Players = v end})
    createToggle(espSec, {Name="Box", Default=true,
        OnChange=function(v) Config.ESP.Box = v end})
    createToggle(espSec, {Name="Name", Default=true,
        OnChange=function(v) Config.ESP.Name = v end})
    createToggle(espSec, {Name="Distance", Default=true,
        OnChange=function(v) Config.ESP.Distance = v end})
    createToggle(espSec, {Name="Health Bar", Default=true,
        OnChange=function(v) Config.ESP.Health = v end})
    createSlider(espSec, {Name="Max Distance", Min=100, Max=5000,
        Default=3000, OnChange=function(v) Config.ESP.MaxDist = v end})

    -- Aimbot
    local CombatTab = createTab("Aimbot")
    local aimSec = createSection(CombatTab.Scroll, "Aimbot (hold RMB)")
    createToggle(aimSec, {Name="Enable Aimbot", Default=false,
        OnChange=function(v) Config.Aimbot.Enabled = v end})
    createSlider(aimSec, {Name="FOV", Min=20, Max=800, Default=250,
        OnChange=function(v) Config.Aimbot.FOV = v end})
    createSlider(aimSec, {Name="Smoothness (x100)", Min=5, Max=100, Default=25,
        OnChange=function(v) Config.Aimbot.Smoothness = v / 100 end})
    createCycler(aimSec, {Name="Target Part",
        Options={"Head","HumanoidRootPart"}, Default="Head",
        OnChange=function(v) Config.Aimbot.TargetPart = v end})
    createToggle(aimSec, {Name="Team Check", Default=true,
        OnChange=function(v) Config.Aimbot.TeamCheck = v end})
    createToggle(aimSec, {Name="Wall Check", Default=false,
        OnChange=function(v) Config.Aimbot.WallCheck = v end})
    createToggle(aimSec, {Name="Show FOV Circle", Default=true,
        OnChange=function(v) Config.Aimbot.ShowFOV = v end})

    -- Misc
    local MiscTab = createTab("Misc")
    local moveSec = createSection(MiscTab.Scroll, "Movement")
    createToggle(moveSec, {Name="Custom WalkSpeed", Default=false,
        OnChange=function(v) Config.Misc.WalkSpeed.Enabled = v end})
    createSlider(moveSec, {Name="WalkSpeed", Min=16, Max=500, Default=100,
        OnChange=function(v) Config.Misc.WalkSpeed.Value = v end})
    createToggle(moveSec, {Name="Custom JumpPower", Default=false,
        OnChange=function(v) Config.Misc.JumpPower.Enabled = v end})
    createSlider(moveSec, {Name="JumpPower", Min=50, Max=500, Default=100,
        OnChange=function(v) Config.Misc.JumpPower.Value = v end})
    createToggle(moveSec, {Name="NoClip", Default=false,
        OnChange=function(v) Config.Misc.NoClip = v end})

    local flySec = createSection(MiscTab.Scroll, "Flight")
    createToggle(flySec, {Name="Enable Flight", Default=false,
        OnChange=function(v) Config.Misc.Flight.Enabled = v end})
    createSlider(flySec, {Name="Flight Speed", Min=10, Max=500, Default=80,
        OnChange=function(v) Config.Misc.Flight.Speed = v end})
    newFrame(flySec, {
        Size=UDim2.new(1,0,0,32), BackgroundTransparency=1,
        Text="WASD to move  •  Space to rise\nLeft-Ctrl to descend",
        TextColor3=Theme.TextDim, Font=Enum.Font.Gotham, TextSize=10,
        TextWrapped=true, TextXAlignment=Enum.TextXAlignment.Left,
        TextYAlignment=Enum.TextYAlignment.Top,
    }, "TextLabel")

    -- Settings
    local SetTab = createTab("Settings")
    local kbSec = createSection(SetTab.Scroll, "Keybinds")
    createKeybind(kbSec, {Name="Menu Toggle", Default=Config.UI.ToggleKey,
        OnChange=function(k) Config.UI.ToggleKey = k end})
    local mouseSec = createSection(SetTab.Scroll, "Mouse")
    createCheckbox(mouseSec, {Name="Free Mouse While Open",
        Default=true, OnChange=function(v) Config.UI.FreeMouse = v end})

    VisualTab.Activate()

    -- LOOPS
    track(RunService.RenderStepped:Connect(function()
        if Killed then return end
        updateESP()
        updateFOVCircle()
    end))

    pcall(function() RunService:UnbindFromRenderStep("SniperCombatCam") end)
    track(RunService:BindToRenderStep("SniperCombatCam",
        Enum.RenderPriority.Camera.Value + 5, function()
            if Killed then return end
            updateAimbot()
        end))

    pcall(function() RunService:UnbindFromRenderStep("SniperMisc") end)
    track(RunService:BindToRenderStep("SniperMisc",
        Enum.RenderPriority.Character.Value + 1, function()
            if Killed then return end
            updateMisc()
        end))

    -- Menu
    local menuOpen = true
    local function applyMouseMode()
        if Killed then return end
        if menuOpen and Config.UI.FreeMouse then
            UIS.ModalEnabled = true
            UIS.MouseIconEnabled = true
            UIS.MouseBehavior = Enum.MouseBehavior.Default
        else
            UIS.ModalEnabled = false
            UIS.MouseIconEnabled = false
            UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
        end
    end
    track(UIS.InputBegan:Connect(function(input)
        if Killed then return end
        if input.KeyCode ~= Config.UI.ToggleKey then return end
        if UIS:GetFocusedTextBox() then return end
        menuOpen = not menuOpen
        ScreenGui.Enabled = menuOpen
        applyMouseMode()
    end))
    track(RunService:BindToRenderStep("SniperMouseGuard",
        Enum.RenderPriority.Camera.Value + 1, function()
            if Killed or not menuOpen or not Config.UI.FreeMouse then return end
            UIS.ModalEnabled = true
            UIS.MouseIconEnabled = true
            if UIS.MouseBehavior ~= Enum.MouseBehavior.Default then
                UIS.MouseBehavior = Enum.MouseBehavior.Default
            end
        end))
    applyMouseMode()
end

initToolkit()

print("[Sniper] Loaded.")
print("  Toggle: " .. Config.UI.ToggleKey.Name)
print("  NPC container: " ..
    (getNPCContainer() and "found" or "NOT found — check path"))

Features & Information

IF MOUSE IS TWEAKING YOU HAVE TO CLOSE THE GUI OR UNTOGGLE THE CHECKBOX IN SETTINGS Aimbot Esp Flight (risky) Speed(risky) lmk if there are any issues/games you want me to make scripts for
#sniper arena#aimbot#esp#fps#open source

Community Comments (1)

voltexvoltexOct 11, 2026

not liking this code dawg

More Scripts for [🔥NEW SNIPER] Sniper Arena