-- [[ 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=6aa6f97f72e26874f5e63485"))() end) end) --[[rscripts:analytics:end]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local RS = game:GetService("ReplicatedStorage") local Gun = require(RS.Modules.Client.Controllers.GunController) local me = Players.LocalPlayer local on = true local fov = 120 local maxDist = 2000 local wallbang = false local tgt local tgtPart local inBullet = 0 local pov pcall(function() pov = require(RS.Modules.Client.CameraPOV) end) local circle = Drawing.new("Circle") circle.Filled = false circle.Thickness = 1 circle.Color = Color3.new(1, 1, 1) circle.NumSides = 48 local function eye() if pov and pov.GetEyePosition then return pov.GetEyePosition() end local cam = workspace.CurrentCamera if cam then return cam.CFrame.Position end end local function muzzle() local cf = Gun.GetMuzzleWorldCFrame and Gun:GetMuzzleWorldCFrame() if cf then return cf.Position end return eye() end if hookfunction then local BC = require(RS.Modules.Client.Controllers.BulletController) local SU = require(RS.Modules.Shared.SpreadUtil) local oldDischarge = hookfunction(BC.Discharge, function(self, weapon, eyePos, fireDir, muzzleCf, ...) if on and Gun.FireHeld and tgt then local from = muzzleCf and muzzleCf.Position or eyePos or muzzle() fireDir = (tgt - from).Unit inBullet += 1 local out = { oldDischarge(self, weapon, eyePos, fireDir, muzzleCf, ...) } inBullet -= 1 return table.unpack(out) end return oldDischarge(self, weapon, eyePos, fireDir, muzzleCf, ...) end) local oldSpread = hookfunction(SU.RandomConeDirection, function(dir, ...) if on and Gun.FireHeld and tgt then return dir end return oldSpread(dir, ...) end) if wallbang then local oldRay = hookfunction(workspace.Raycast, function(origin, dir, ...) if inBullet > 0 and on and Gun.FireHeld and tgtPart then local delta = tgt - origin local dist = delta.Magnitude if dist > 0.01 and dist <= maxDist and dir.Magnitude > 0.001 then if dir.Unit:Dot(delta.Unit) >= 0.25 then return { Instance = tgtPart, Position = tgt, Normal = -delta.Unit, Distance = dist, Material = tgtPart.Material, } end end end return oldRay(origin, dir, ...) end) end end RunService.PreRender:Connect(function() tgt = nil tgtPart = nil if not on then circle.Visible = false return end local cam = workspace.CurrentCamera if not cam then return end local mid = cam.ViewportSize / 2 circle.Position = mid circle.Radius = fov circle.Visible = true local eyePos = eye() if not eyePos then return end local mercs = workspace:FindFirstChild("MercPlayers") local closest local closestPx = fov for _, plr in Players:GetPlayers() do if plr ~= me then local folder = mercs and mercs:FindFirstChild("MercHitboxes_" .. plr.Name) if folder and folder:GetAttribute("Dead") ~= true then local head = folder:FindFirstChild("Head") if not head then for _, p in folder:GetDescendants() do if p:IsA("BasePart") and p.Name == "Head" then head = p break end end end if head and (head.Position - eyePos).Magnitude <= maxDist then local scr, vis = cam:WorldToViewportPoint(head.Position) if vis and scr.Z > 0 then local px = (Vector2.new(scr.X, scr.Y) - mid).Magnitude if px < closestPx then closestPx = px closest = head end end end end end end if closest then tgtPart = closest tgt = closest.Position + Vector3.new(0, closest.Size.Y * 0.15, 0) end end)