-- [ laseredby productions ] --
--   {hc}     --   - -- --      --
local   Players = game:GetService("Players")
local   UserInput = game:GetService("UserInputService")
local   RunService = game:GetService("RunService")
local   ReplicatedStorage = game:GetService("ReplicatedStorage")
local   LocalPlayer = Players.LocalPlayer
local   Mouse = LocalPlayer:GetMouse()
local   Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local   MainEvent = ReplicatedStorage:FindFirstChild("MainEvent")
local ForceHit = {
    Enabled = true,
    BlankShots = false,
    HitPart = "Head",
    Keybind = Enum.KeyCode.C,
    FOV = {
        Visible = true,
        Transparency = 1,
        Thickness = 1,
        Radius = 400,
        Color = Color3.fromRGB(0, 255, 0)
    }
}
local Fov = Drawing.new("Circle")
Fov.Color = ForceHit.FOV.Color
Fov.Thickness = ForceHit.FOV.Thickness
Fov.Filled = false
Fov.Transparency = ForceHit.FOV.Transparency
Fov.Radius = ForceHit.FOV.Radius
local Highlight = Instance.new("Highlight")
Highlight.Parent = game.CoreGui
Highlight.FillColor = Color3.fromRGB(0, 255, 0)
Highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
Highlight.FillTransparency = 0.5
Highlight.OutlineTransparency = 0
Highlight.Enabled = false
local function GetClosestPlayer()
    local ClosestDistance, ClosestPart, ClosestCharacter = nil, nil, nil
    local MousePosition = UserInput:GetMouseLocation()
    for _, Player in next, Players:GetPlayers() do
        if Player ~= LocalPlayer and Player.Character then
            local Character = Player.Character
            local HitPart = Character:FindFirstChild(ForceHit.HitPart)
            local Humanoid = Character:FindFirstChild("Humanoid")
            local ForceField = Character:FindFirstChildOfClass("ForceField")
            if HitPart and Humanoid and Humanoid.Health > 0 and not ForceField then
                local ScreenPosition, Visible =
workspace.CurrentCamera:WorldToScreenPoint(HitPart.Position)
                if Visible then
                    local Distance = (MousePosition - Vector2.new(ScreenPosition.X,
ScreenPosition.Y)).Magnitude
                    if Distance <= ForceHit.FOV.Radius and (not ClosestDistance or
Distance < ClosestDistance) then
                        ClosestDistance, ClosestPart, ClosestCharacter = Distance,
HitPart, Character
                    end
                end
            end
        end
    end
    return ClosestPart, ClosestCharacter
end
RunService.RenderStepped:Connect(function()
    if ForceHit.Enabled then
        Fov.Visible = ForceHit.FOV.Visible
        Fov.Position = UserInput:GetMouseLocation()
        Fov.Radius = ForceHit.FOV.Radius
          local target, character = SelectedTarget or CachedClosestPlayer, nil
          if target and target.Parent then
               character = target.Parent
          end
          if character then
               Highlight.Adornee = character
               Highlight.Enabled = true
          else
               Highlight.Enabled = false
          end
    else
          Fov.Visible = false
          Highlight.Enabled = false
    end
end)
RunService.Heartbeat:Connect(function()
     if not ForceHit.Enabled then return end
     local ClosestPart, ClosestCharacter = GetClosestPlayer()
     CachedClosestPlayer = ClosestPart
end)
local OriginalNameCall
OriginalNameCall = hookmetamethod(game, "__namecall", function(Object, ...)
    local Arguments = {...}
    local NameCallMethod = getnamecallmethod()
    if not ForceHit.Enabled then
        return OriginalNameCall(Object, ...)
    end
    if NameCallMethod == "InvokeServer" and Object.Name == "MainFunction" and
#Arguments > 0 and Arguments[1] == "GunCheck" then
        return nil
    end
    if NameCallMethod == "FireServer" and Object.Name == "MainEvent" and #Arguments
> 0 and Arguments[1] == "Shoot" then
        local AimPart = SelectedTarget or CachedClosestPlayer
        if AimPart then
                if Arguments[2] and #Arguments[2] > 0 then
                    for _, Table in pairs(Arguments[2][1]) do
                        Table["Instance"] = AimPart
                    end
                    for _, Table in pairs(Arguments[2][2]) do
                        Table["thePart"] = AimPart
                        Table["theOffset"] = CFrame.new()
                    end
                end
                return OriginalNameCall(Object, unpack(Arguments))
          end
    end
    return OriginalNameCall(Object, ...)
end)
RunService.Heartbeat:Connect(function()
    if not ForceHit.BlankShots then return end
    local HasTool = false
    for _, item in pairs(LocalPlayer.Backpack:GetChildren()) do
        if item:IsA("Tool") then
            HasTool = true
            break
        end
    end
    if not HasTool then return end
    local AimPart = CachedClosestPlayer
    local AimChar = AimPart and AimPart.Parent
    if AimChar then
        local ForceField = AimChar:FindFirstChildOfClass("ForceField")
        if not ForceField then
            if AimPart and MainEvent then
                local args = {
                    "Shoot",
                    {
                        {
                             [1] = {
                                 ["Instance"] = AimPart,
                                 ["Normal"] = Vector3.new(0.9937344193458557,
0.10944880545139313, -0.022651424631476402),
                                 ["Position"] = Vector3.new(-141.78562927246094,
33.89368438720703, -365.6424865722656)
                             },
                             [2] = {
                                 ["Instance"] = AimPart,
                                 ["Normal"] = Vector3.new(0.9937344193458557,
0.10944880545139313, -0.022651424631476402),
                                 ["Position"] = Vector3.new(-141.78562927246094,
33.89368438720703, -365.6424865722656)
                             },
                             [3] = {
                                 ["Instance"] = AimPart,
                                 ["Normal"] = Vector3.new(0.9937343597412109,
0.10944879800081253, -0.022651422768831253),
                                 ["Position"] = AimPart.Position
                             },
                             [4] = {
                                 ["Instance"] = AimPart,
                                 ["Normal"] = Vector3.new(0.9937344193458557,
0.10944880545139313, -0.022651424631476402),
                                 ["Position"] = AimPart.Position
                             },
                             [5] = {
                                 ["Instance"] = AimPart,
                                 ["Normal"] = Vector3.new(0.9937344193458557,
0.10944880545139313, -0.022651424631476402),
                                 ["Position"] = Vector3.new(-141.79481506347656,
34.033607482910156, -365.369384765625)
                             }
                         },
                         {
                             [1] = {
                                 ["thePart"] = AimPart,
                                 ["theOffset"] = CFrame.new(0, 0, 0)
                             },
                             [2] = {
                                 ["thePart"] = AimPart,
                                 ["theOffset"] = CFrame.new(0, 0, 0)
                             },
                             [3] = {
                                 ["thePart"] = AimPart,
                                 ["theOffset"] = CFrame.new(0, 0, 0)
                             },
                             [4] = {
                                 ["thePart"] = AimPart,
                                 ["theOffset"] = CFrame.new(0, 0, 0)
                             },
                             [5] = {
                                 ["thePart"] = AimPart,
                                 ["theOffset"] = CFrame.new(0, 0, 0)
                             }
                         },
                         Players.LocalPlayer.Character.Head.Position,
                         Players.LocalPlayer.Character.Head.Position,
                         workspace:GetServerTimeNow()
                     }
                 }
                 MainEvent:FireServer(unpack(args))
             end
         end
     end
end)
UserInput.InputBegan:Connect(function(Input, GameProcessed)
     if not GameProcessed and Input.KeyCode == ForceHit.Keybind then
         ForceHit.Enabled = not ForceHit.Enabled
     end
end)