M
ScriptKeyless
SA Hub für [UPD] Scharfschützen-Arena (9D GAME CLUB)
[FPS] Sniper ArenaDesktop compatible
Description
Keyless. ScreenGui, Menü mit RightShift. • Aimbot nur wenn das Ziel sichtbar ist (Wand-Check) • Rechte Maustaste halten zum Zielen, weiches Zielen • Team-Check an, Taste Y schaltet ihn aus • NPCs extra, Taste N • ESP: Gegner rot, NPC gelb, Distanz + SICHT/WAND • FOV im Menü umschaltbar Kein Teleport. Kein Key-System.
GAME[FPS] Sniper Arena
UPDATEDOct 10, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. 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 BloxScripts 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=6aca99563fd7d42e682415e7"))()
end)
end)
--[[rscripts:analytics:end]]
--[[
SA Hub - Scharfschuetzen-Arena
Aim nur wenn sichtbar | Team-Check | NPC mit N
RightShift
]]
print("[SA] start")
local ok, err = pcall(function()
local env = _G
pcall(function()
env = getgenv()
end)
if type(env._sa_kill) == "function" then
pcall(env._sa_kill)
end
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local LP = Players.LocalPlayer
if not LP then
repeat
task.wait()
LP = Players.LocalPlayer
until LP
end
local FOVS = { 60, 110, 180, 280, 420 }
local CFG = {
aim = true, hold = true, team = true, npc = false,
wall = true, esp = true, smooth = true, fovIdx = 3,
}
local ST = { on = true, menu = true, holding = false, marks = {}, target = "-" }
local pg = LP:FindFirstChild("PlayerGui") or LP:WaitForChild("PlayerGui", 3)
local gui = Instance.new("ScreenGui")
gui.Name = "SAHub"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = pg or game:GetService("CoreGui")
print("[SA] gui", gui.Parent and gui.Parent.Name)
local function lab(y, s, c)
local t = Instance.new("TextLabel")
t.BackgroundTransparency = 1
t.Size = UDim2.new(0, 980, 0, 22)
t.Position = UDim2.new(0, 14, 0, y)
t.Text, t.TextColor3, t.TextSize = s, c, 16
t.Font = Enum.Font.GothamBold
t.TextXAlignment = Enum.TextXAlignment.Left
t.Parent = gui
return t
end
local status = lab(12, "SA Hub | RMB zielen | RightShift", Color3.fromRGB(120, 200, 255))
local line2 = lab(36, "Team AN | NPC AUS | nur Sicht", Color3.fromRGB(255, 220, 140))
local dot = Instance.new("Frame")
dot.Size = UDim2.new(0, 8, 0, 8)
dot.AnchorPoint = Vector2.new(0.5, 0.5)
dot.Position = UDim2.new(0.5, 0, 0.5, 0)
dot.BackgroundColor3 = Color3.fromRGB(255, 70, 70)
dot.BorderSizePixel = 0
dot.Parent = gui
Instance.new("UICorner", dot).CornerRadius = UDim.new(1, 0)
local panel = Instance.new("Frame")
panel.Size = UDim2.new(0, 280, 0, 340)
panel.Position = UDim2.new(0, 14, 0, 68)
panel.BackgroundColor3 = Color3.fromRGB(10, 16, 28)
panel.BorderSizePixel = 0
panel.Parent = gui
Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 8)
Instance.new("UIListLayout", panel).Padding = UDim.new(0, 4)
local pad = Instance.new("UIPadding", panel)
pad.PaddingTop = UDim.new(0, 8)
pad.PaddingLeft = UDim.new(0, 8)
pad.PaddingRight = UDim.new(0, 8)
local ON, OFF = Color3.fromRGB(80, 230, 120), Color3.fromRGB(255, 90, 90)
local function mk(txt, col)
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, 0, 0, 28)
b.BackgroundColor3 = Color3.fromRGB(20, 36, 58)
b.Text, b.TextColor3, b.TextSize = txt, col or Color3.fromRGB(180, 220, 255), 15
b.Font = Enum.Font.GothamBold
b.Parent = panel
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
return b
end
local bAim = mk("[AN] Aimbot")
local bHold = mk("[AN] Nur RMB halten")
local bTeam = mk("[AN] Team-Check")
local bNpc = mk("[AUS] Auch NPCs", OFF)
local bWall = mk("[AN] Nur wenn sichtbar")
local bEsp = mk("[AN] ESP")
local bSm = mk("[AN] Weich zielen")
local bFov = mk("FOV 180")
local bDump = mk("Dump F9")
local function tog(b, on, n)
b.Text = (on and "[AN] " or "[AUS] ") .. n
b.TextColor3 = on and ON or OFF
end
local function paint()
tog(bAim, CFG.aim, "Aimbot")
tog(bHold, CFG.hold, "Nur RMB halten")
tog(bTeam, CFG.team, "Team-Check")
tog(bNpc, CFG.npc, "Auch NPCs")
tog(bWall, CFG.wall, "Nur wenn sichtbar")
tog(bEsp, CFG.esp, "ESP")
tog(bSm, CFG.smooth, "Weich zielen")
bFov.Text = "FOV " .. FOVS[CFG.fovIdx]
bFov.TextColor3 = Color3.fromRGB(180, 220, 255)
end
paint()
local function low(s)
return string.lower(tostring(s or ""))
end
local function teamKey(plr)
if not plr then
return nil
end
if plr.Team then
return "team:" .. plr.Team.Name
end
local bits = {}
pcall(function()
if plr.Neutral == false and plr.TeamColor then
table.insert(bits, "color:" .. tostring(plr.TeamColor))
end
end)
local bags = { plr, plr.Character }
for _, bag in ipairs(bags) do
if bag then
local okA, attrs = pcall(function()
return bag:GetAttributes()
end)
if okA and attrs then
for k, v in pairs(attrs) do
local kk = low(k)
if kk:find("team", 1, true) or kk:find("squad", 1, true) or kk:find("side", 1, true) then
table.insert(bits, kk .. ":" .. tostring(v))
end
end
end
end
end
if #bits == 0 then
return nil
end
return table.concat(bits, "|")
end
local function sameTeam(plr)
if plr == LP then
return true
end
if not CFG.team then
return false
end
if LP.Team and plr.Team then
return LP.Team == plr.Team
end
local a, b = teamKey(LP), teamKey(plr)
if a and b then
return a == b
end
return false
end
local function aimPart(model)
if not model then
return nil
end
return model:FindFirstChild("Head")
or model:FindFirstChild("HumanoidRootPart")
or model:FindFirstChild("UpperTorso")
or model:FindFirstChild("Torso")
end
local function alive(model)
local h = model and model:FindFirstChildOfClass("Humanoid")
return h and h.Health > 0
end
local function canSee(part, model)
if not CFG.wall then
return true
end
local cam = workspace.CurrentCamera
if not cam or not part then
return false
end
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
local filter = {}
if LP.Character then
filter[1] = LP.Character
end
filter[#filter + 1] = cam
params.FilterDescendantsInstances = filter
params.IgnoreWater = true
local origin = cam.CFrame.Position
local delta = part.Position - origin
local hit = workspace:Raycast(origin, delta, params)
if not hit then
return true
end
if model and hit.Instance:IsDescendantOf(model) then
return true
end
return (hit.Position - part.Position).Magnitude < 3
end
local function onScreen(part, fov)
local cam = workspace.CurrentCamera
if not cam then
return false, 1e9
end
local v, vis = cam:WorldToViewportPoint(part.Position)
if not vis or v.Z < 0 then
return false, 1e9
end
local mid = cam.ViewportSize * 0.5
local dist = (Vector2.new(v.X, v.Y) - mid).Magnitude
return dist <= fov, dist
end
local function collect()
local list = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character and alive(plr.Character) and not sameTeam(plr) then
local p = aimPart(plr.Character)
if p then
list[#list + 1] = { model = plr.Character, part = p, name = plr.Name, npc = false }
end
end
end
if CFG.npc then
local n = 0
for _, d in ipairs(workspace:GetDescendants()) do
n = n + 1
if n > 8000 then
break
end
if d:IsA("Model") and d ~= LP.Character and alive(d) and not Players:GetPlayerFromCharacter(d) then
local p = aimPart(d)
if p then
list[#list + 1] = { model = d, part = p, name = d.Name, npc = true }
end
end
end
end
return list
end
local function bestTarget(list)
local fov = FOVS[CFG.fovIdx]
local best, bd = nil, 1e9
for _, e in ipairs(list) do
local okF, dist = onScreen(e.part, fov)
if okF and canSee(e.part, e.model) and dist < bd then
bd, best = dist, e
end
end
return best
end
local function dumpAll()
print("======== SA DUMP ========")
print("place", game.PlaceId, "myTeam", LP.Team and LP.Team.Name, teamKey(LP))
for _, plr in ipairs(Players:GetPlayers()) do
print(plr.Name, "team", plr.Team and plr.Team.Name, "key", teamKey(plr), "same", sameTeam(plr))
end
print("======== END ========")
line2.Text = "Dump F9 | mein Team " .. tostring(LP.Team and LP.Team.Name)
end
bAim.MouseButton1Click:Connect(function()
CFG.aim = not CFG.aim
paint()
end)
bHold.MouseButton1Click:Connect(function()
CFG.hold = not CFG.hold
paint()
end)
bTeam.MouseButton1Click:Connect(function()
CFG.team = not CFG.team
paint()
end)
bNpc.MouseButton1Click:Connect(function()
CFG.npc = not CFG.npc
paint()
end)
bWall.MouseButton1Click:Connect(function()
CFG.wall = not CFG.wall
paint()
end)
bEsp.MouseButton1Click:Connect(function()
CFG.esp = not CFG.esp
paint()
end)
bSm.MouseButton1Click:Connect(function()
CFG.smooth = not CFG.smooth
paint()
end)
bFov.MouseButton1Click:Connect(function()
CFG.fovIdx = CFG.fovIdx % #FOVS + 1
paint()
end)
bDump.MouseButton1Click:Connect(dumpAll)
UIS.InputBegan:Connect(function(inp, gp)
if not ST.on then
return
end
if inp.UserInputType == Enum.UserInputType.MouseButton2 then
ST.holding = true
elseif inp.KeyCode == Enum.KeyCode.RightShift then
ST.menu = not ST.menu
panel.Visible = ST.menu
elseif inp.KeyCode == Enum.KeyCode.N and not gp then
CFG.npc = not CFG.npc
paint()
elseif inp.KeyCode == Enum.KeyCode.Y and not gp then
CFG.team = not CFG.team
paint()
end
end)
UIS.InputEnded:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton2 then
ST.holding = false
end
end)
env._sa_kill = function()
ST.on = false
pcall(function()
gui:Destroy()
end)
end
local acc = 0
RunService.RenderStepped:Connect(function()
if not ST.on then
return
end
local list = collect()
local tgt = bestTarget(list)
local wantAim = CFG.aim and tgt and ((not CFG.hold) or ST.holding)
if wantAim then
local cam = workspace.CurrentCamera
if cam then
local goal = CFrame.new(cam.CFrame.Position, tgt.part.Position)
if CFG.smooth then
cam.CFrame = cam.CFrame:Lerp(goal, 0.35)
else
cam.CFrame = goal
end
end
ST.target = (tgt.npc and "NPC " or "") .. tgt.name
dot.BackgroundColor3 = Color3.fromRGB(80, 255, 120)
else
ST.target = "-"
dot.BackgroundColor3 = Color3.fromRGB(255, 70, 70)
end
acc = acc + 1
if acc % 8 == 0 then
for _, m in pairs(ST.marks) do
pcall(function()
m:Destroy()
end)
end
ST.marks = {}
if CFG.esp then
local myRoot = LP.Character and LP.Character:FindFirstChild("HumanoidRootPart")
for _, e in ipairs(list) do
if e.part and e.part.Parent then
local col = e.npc and Color3.fromRGB(255, 200, 60) or Color3.fromRGB(255, 60, 60)
local hl = Instance.new("Highlight")
hl.FillColor = col
hl.FillTransparency = 0.55
hl.OutlineColor = col
hl.Adornee = e.model
hl.Parent = e.model
ST.marks[hl] = hl
local bb = Instance.new("BillboardGui")
bb.Size = UDim2.new(0, 200, 0, 22)
bb.StudsOffset = Vector3.new(0, 2.6, 0)
bb.AlwaysOnTop = true
bb.Adornee = e.part
bb.Parent = e.part
local t = Instance.new("TextLabel", bb)
t.Size = UDim2.new(1, 0, 1, 0)
t.BackgroundTransparency = 1
local dist = myRoot and math.floor((e.part.Position - myRoot.Position).Magnitude) or 0
local see = canSee(e.part, e.model) and "SICHT" or "WAND"
t.Text = (e.npc and "NPC " or "") .. e.name .. " " .. dist .. "m " .. see
t.TextColor3 = col
t.TextStrokeTransparency = 0
t.TextSize = 14
t.Font = Enum.Font.GothamBold
ST.marks[bb] = bb
end
end
end
line2.Text = string.format("Ziel %s | Team %s | NPC %s | FOV %d", ST.target, CFG.team and "AN" or "AUS", CFG.npc and "AN" or "AUS", FOVS[CFG.fovIdx])
end
status.Text = "SA | " .. (wantAim and "ZIELT" or "warte RMB") .. " | N = NPCs Y = Team"
end)
pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "SA Hub",
Text = "RMB zielen. Nur sichtbar. N = NPCs. Y = Team.",
Duration = 6,
})
end)
print("[SA] ready")
end)
if not ok then
warn("[SA] ERROR", err)
print("[SA] ERROR", err)
endReview the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place