local Camera = game:GetService("Workspace").CurrentCamera; local BallisticsHandler = require(game:GetService("ReplicatedStorage").Dependencies.BallisticsHandler); local PlayerModule = require(game:GetService("ReplicatedFirst").PlayerModule); local CharacterHandler = PlayerModule.CharacterHandler; local function ClosestTarget(Range: number) local ClosestPart, ClosestDistance = nil, Range; for _, Player in (CharacterHandler.Capsules) do local Character = CharacterHandler:GetCharacterFromCapsule(Player); if (not Character) then continue; end if (Character.Player.Team.Name == PlayerModule.Character.CurrentCharacter.Team) then continue; end local Head = Character.Model.Human.Head; local ScreenPosition, OnScreen = Camera:WorldToViewportPoint(Head.Position); if (not OnScreen) then continue; end local Distance = (Vector2.new(ScreenPosition.X, ScreenPosition.Y) - Camera.ViewportSize / 2).Magnitude; if (Distance < ClosestDistance) then ClosestDistance = Distance; ClosestPart = Head; end end return ClosestPart; end local Old; Old = hookfunction(BallisticsHandler.Fire, function(self, Origin, Direction, Stats, Replicated, IgnoreList, Seed1, Seed2, ServerTime) local Closest = ClosestTarget(1000); if (Closest) then Direction = (Closest.Position - Origin).Unit; end return Old(self, Origin, Direction, Stats, Replicated, IgnoreList, Seed1, Seed2, ServerTime); end)