local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local BulletController = require(ReplicatedStorage.Modules.Client.Controllers.BulletController)
local originalDischarge = BulletController.Discharge
local function getClosestHeadToCursor(maxFov)
local closestTarget = nil
local shortestDist = maxFov or math.huge
local mousePos = UserInputService:GetMouseLocation()
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local head = player.Character:FindFirstChild("Head")
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if head and humanoid and humanoid.Health > 0 then
local screenPos, onScreen = Camera:WorldToViewportPoint(head.Position)
if onScreen then
local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude
if dist < shortestDist then
shortestDist = dist
closestTarget = head
end
end
end
end
end
return closestTarget
end
BulletController.Discharge = function(self, weaponId, origin, direction, trailOrigin, ...)
local targetHead = getClosestHeadToCursor(550)
if targetHead then
direction = (targetHead.Position - origin).Unit
end
return originalDischarge(self, weaponId, origin, direction, trailOrigin, ...)
end
Comments
No comments yet
Be the first to share your thoughts!