-- [[ 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=6aca99563fd7d42e682415e7"))() end) end) --[[rscripts:analytics:end]] --[[ SA Hub - Scharfschuetzen-Arena Aim nur wenn sichtbar | Auto Shot | Team-Check | NPC 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 DELAYS = { 0.12, 0.22, 0.35, 0.55 } local CFG = { aim = true, hold = true, auto = true, team = true, npc = false, wall = true, esp = true, smooth = true, fovIdx = 3, delayIdx = 2, } local ST = { on = true, menu = true, holding = false, marks = {}, target = "-", lastShot = 0 } 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 + Auto Shot | 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, 400) 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 bAuto = mk("[AN] Auto Shot") local bDelay = mk("Shot 0.22s") 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(bAuto, CFG.auto, "Auto Shot") bDelay.Text = "Shot " .. DELAYS[CFG.delayIdx] .. "s" bDelay.TextColor3 = Color3.fromRGB(180, 220, 255) 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 shoot() local did = false pcall(function() if mouse1click then mouse1click() did = true end end) if did then return end pcall(function() if mouse1press and mouse1release then mouse1press() task.delay(0.04, function() pcall(mouse1release) end) did = true end end) if did then return end pcall(function() local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 0, true, game, 0) task.delay(0.04, function() pcall(function() vim:SendMouseButtonEvent(0, 0, 0, false, game, 0) end) end) end) 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) bAuto.MouseButton1Click:Connect(function() CFG.auto = not CFG.auto paint() end) bDelay.MouseButton1Click:Connect(function() CFG.delayIdx = CFG.delayIdx % #DELAYS + 1 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() elseif inp.KeyCode == Enum.KeyCode.B and not gp then CFG.auto = not CFG.auto 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.45) else cam.CFrame = goal end end ST.target = (tgt.npc and "NPC " or "") .. tgt.name dot.BackgroundColor3 = Color3.fromRGB(80, 255, 120) if CFG.auto then local now = os.clock() if now - ST.lastShot >= DELAYS[CFG.delayIdx] then ST.lastShot = now shoot() end end 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 | Shot %s | Team %s | NPC %s", ST.target, CFG.auto and "AN" or "AUS", CFG.team and "AN" or "AUS", CFG.npc and "AN" or "AUS") end status.Text = "SA | " .. (wantAim and "ZIELT+SHOT" or "warte RMB") .. " | B = Auto Shot" end) pcall(function() game:GetService("StarterGui"):SetCore("SendNotification", { Title = "SA Hub", Text = "RMB zielen und schiessen, nur wenn sichtbar.", Duration = 6, }) end) print("[SA] ready") end) if not ok then warn("[SA] ERROR", err) print("[SA] ERROR", err) end