-- [[ 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 ]] local Players = game:GetService("Players") local ws = workspace local RS = game:GetService("ReplicatedStorage") local UIS = game:GetService("UserInputService") local Run = game:GetService("RunService") local lp = Players.LocalPlayer local cam = ws.CurrentCamera ws:GetPropertyChangedSignal("CurrentCamera"):Connect(function() cam = ws.CurrentCamera end) local rp = RaycastParams.new() rp.FilterType = Enum.RaycastFilterType.Exclude rp.IgnoreWater = true local ignore = { cam, nil, nil } local function alive(ch) local h = ch and ch:FindFirstChildOfClass("Humanoid") return h and h.Health > 0 and ch:FindFirstChild("HumanoidRootPart") end local function visible(part, ch) local from = cam.CFrame.Position ignore[2], ignore[3] = lp.Character, ch rp.FilterDescendantsInstances = ignore local hit = ws:Raycast(from, part.Position - from, rp) return not hit or hit.Instance:IsDescendantOf(ch) end local Aim = {} Aim.__index = Aim function Aim.new(o) o = o or {} return setmetatable({ bone = o.TargetPart or "Head", fov = o.FOV or 180, chance = o.HitChance or 100, pred = o.Prediction ~= false, wall = o.WallCheck ~= false, team = o.TeamCheck or false, drawFov= o.DrawFOV ~= false, col = o.FOVColor or Color3.fromRGB(0, 200, 255), on = false, }, Aim) end function Aim:target() if not self.on then return end local mouse = UIS:GetMouseLocation() local best, bestDist = nil, self.fov for _, p in ipairs(Players:GetPlayers()) do local ch = p.Character if p ~= lp and ch and alive(ch) and not (self.team and p.Team and p.Team == lp.Team) then local part = ch:FindFirstChild(self.bone) or ch:FindFirstChild("Head") if part then local sp, on = cam:WorldToViewportPoint(part.Position) if on and sp.Z > 0 then local d = (Vector2.new(sp.X, sp.Y) - mouse).Magnitude if d <= bestDist and (not self.wall or visible(part, ch)) then bestDist, best = d, part end end end end end return best end function Aim:lead(part, from, vel) local pos = part.Position if self.pred then local v = part.AssemblyLinearVelocity or Vector3.zero pos = pos + v * ((pos - from).Magnitude / math.max(vel or 3500, 100)) end return pos end function Aim:start() if self.on then return end self.on = true pcall(function() local m = RS:FindFirstChild("TS") local proj = m and require(m.modules.projectile.projectileModule) if proj then if proj.applySpread then proj.applySpread = function(d) return d end end if proj.computeSpread then proj.computeSpread = function(d) return d end end end end) pcall(function() local ts = lp:FindFirstChild("PlayerScripts") and lp.PlayerScripts:FindFirstChild("TS") if not ts then return end local fw = ts:FindFirstChild("components") and ts.components:FindFirstChild("firearm") and require(ts.components.firearm.clientFirearmTool) local Tool = fw and (fw.ClientFirearmTool or fw) if Tool then local old = Tool.getAimDirection Tool.getAimDirection = function(self2, ...) if self.on and math.random(100) <= self.chance then local part = self:target() if part then local org = (self2.getOrigin and self2:getOrigin()) or cam.CFrame.Position local vel = (self2.tool and self2.tool:GetAttribute("BulletVelocity")) or 3500 return (self:lead(part, org, vel) - org).Unit end end return old(self2, ...) end end local pc = ts:FindFirstChild("controllers") and require(ts.controllers.projectileController) local Proj = pc and (pc.ProjectileController or pc) if Proj then local old = Proj.fireProjectile Proj.fireProjectile = function(self2, gun, org, dir, ...) if self.on and math.random(100) <= self.chance then local part = self:target() if part then local vel = (gun and gun:GetAttribute("BulletVelocity")) or 3500 dir = (self:lead(part, org, vel) - org).Unit end end return old(self2, gun, org, dir, ...) end end end) if Drawing and Drawing.new then local c = Drawing.new("Circle") c.Thickness, c.NumSides, c.Filled, c.Transparency = 1.5, 64, false, 1 self.circle = c end self.conn = Run.RenderStepped:Connect(function() local c = self.circle if not c then return end if self.on and self.drawFov then c.Position, c.Radius, c.Color, c.Visible = UIS:GetMouseLocation(), self.fov, self.col, true else c.Visible = false end end) end function Aim:stop() self.on = false if self.conn then self.conn:Disconnect() self.conn = nil end if self.circle then self.circle.Visible = false end end function Aim:destroy() self:stop() if self.circle then pcall(function() self.circle:Remove() end) self.circle = nil end end local session = Aim.new({ TargetPart = "Head", FOV = 180, HitChance = 100 }) session:start() return Aim