local function ClosestPlayer()
    local Target
    local MaxDistance = math.huge
    for i,v in pairs(game.Players.GetPlayers(game.Players)) do
        if v.Character then 
            if v.Character.FindFirstChild(v.Character, 'Humanoid') and v.Character.Humanoid.Health >= 1 and v.Team ~= game.Players.LocalPlayer.Team then
                local Magnitude = (game.Players.LocalPlayer.Character.HumanoidRootPart.Position - v.Character.HumanoidRootPart.Position).Magnitude
                if Magnitude < MaxDistance then
                    MaxDistance = Magnitude
                    Target = v
                end
            end
        end
    end
    return Target
end

local mt = getrawmetatable(game)
local old = mt.__namecall
setreadonly(mt, false)
mt.__namecall = newcclosure(function(remote, ...)
    local args = {...}
    local method = getnamecallmethod()
    if remote.Name == 'Fire' and tostring(method) == 'FireServer' then
        args[1] = ClosestPlayer().Character.Head.Position
        args[9] = ClosestPlayer().Character.Head
        return remote.FireServer(remote, unpack(args))
    end
    return old(remote, ...)
end)
setreadonly(mt, true)