
Key RequiredUniversal

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



not liking this code dawg