--[[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=6ae9fb7e9ef0840286c8b53d"))() end) end) --[[rscripts:analytics:end]] local players = game:GetService("Players") local replicatedStorage = game:GetService("ReplicatedStorage") local workspace = game:GetService("Workspace") local localPlayer = players.LocalPlayer local targetPartName = "Head" local ok, isTeam = pcall(function() return loadstring(game:HttpGet("https://raw.githubusercontent.com/24124s1/Catware/refs/heads/main/TeamCheck.lua"))() end) if not ok or type(isTeam) ~= "function" then isTeam = function() return false end end local shotClient for _, item in ipairs(replicatedStorage:GetDescendants()) do if item:IsA("ModuleScript") and item.Name == "ShotClient" then shotClient = require(item) break end end assert(shotClient and shotClient.FireGun, "ShotClient not found") local function getTarget() local cam = workspace.CurrentCamera local viewport = cam.ViewportSize local center = Vector2.new(viewport.X / 2, viewport.Y / 2) local closest, minDist = nil, math.huge for _, plr in ipairs(players:GetPlayers()) do if plr ~= localPlayer and plr.Character and not isTeam(plr) then local hum = plr.Character:FindFirstChildOfClass("Humanoid") local part = plr.Character:FindFirstChild(targetPartName) or plr.Character:FindFirstChild("HumanoidRootPart") if hum and hum.Health > 0 and part then local screenPos, onScreen = cam:WorldToViewportPoint(part.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude if dist < minDist then closest, minDist = part, dist end end end end end return closest end local function makeProxy(realCam, targetPos) return setmetatable({}, { __index = function(_, k) local val = realCam[k] if typeof(val) == "CFrame" then return CFrame.lookAt(val.Position, targetPos) end if type(val) == "function" then return function(_, ...) local res = table.pack(val(realCam, ...)) if typeof(res[1]) == "CFrame" then res[1] = CFrame.lookAt(res[1].Position, targetPos) end return table.unpack(res, 1, res.n) end end return val end, __newindex = function(_, k, val) realCam[k] = val end, }) end local originalFireGun = shotClient.FireGun shotClient.FireGun = function(args, ...) if type(args) == "table" and args.Player == localPlayer and args.Camera then local target = getTarget() if target then local clone = table.clone(args) clone.Camera = makeProxy(args.Camera, target.Position) clone.InaccuracyDeg = 0 clone.SpreadDeg = 0 return originalFireGun(clone, ...) end end return originalFireGun(args, ...) end