local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Workspace = game:GetService("Workspace") local lp = game:GetService("Players").LocalPlayer local Camera = Workspace.CurrentCamera local BulletHandler = require(ReplicatedStorage.ModuleScripts.GunModules.BulletHandler) local function getClosestToCrosshair() local closestDist = math.huge local closestPlayer = nil local mousePos = Camera.ViewportSize / 2 for _, player in pairs(game:GetService("Players"):GetPlayers()) do if player ~= lp and player.Character and player.Character:FindFirstChild("Head") and player.Character:FindFirstChild("Humanoid") then if player.Character.Humanoid.Health > 0 then local screenPos, onScreen = Camera:WorldToViewportPoint(player.Character.Head.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude if dist < closestDist then closestDist = dist closestPlayer = player end end end end end return closestPlayer end local oldFire = BulletHandler.Fire BulletHandler.Fire = function(arg1) if not (arg1 and arg1.Misc) then return oldFire(arg1) end local target = getClosestToCrosshair() if target and target.Character and target.Character:FindFirstChild("Head") then local headPos = target.Character.Head.Position arg1.Direction = (headPos - arg1.Origin).Unit if arg1.Misc then arg1.Misc.CamCFrame = CFrame.new(arg1.Origin, headPos) end end oldFire(arg1) end