THIS SCRIPT UPDATED FREE NO KEY FOR [FPS]
Key Required Patched

THIS SCRIPT UPDATED FREE NO KEY FOR [FPS]

[FPS] Flickjhonardtaclindojhonardtaclindo 8.9K views 468 executesUpdated Nov 12, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•277 lines (9323 chars)
-- CREATED BY: Jhonard - HEAD & BODY ONLY (NO LEG)
-- Ilagay sa: StarterPlayer > StarterPlayerScripts

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera
local player = Players.LocalPlayer

-- === VARIABLES ===
local Aimbot = { 
    Enabled = false, 
    WallCheck = true, 
    DeadCheck = true,
    TargetPart = "Head"  -- Default: Head
}
local FastReload = false
local FOV = { Size = 60, Show = true }
local ESP = { Enabled = false, Tracer = false, Distance = true }
local ESPObjects = {}

-- === PART SELECTOR (NO LEG) ===
local function GetTargetPart(char)
    if Aimbot.TargetPart == "Head" then
        return char:FindFirstChild("Head")
    elseif Aimbot.TargetPart == "Body" then
        return char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
    end
    return char:FindFirstChild("HumanoidRootPart")
end

-- === FOV CIRCLE ===
local FOVCircle = Drawing.new("Circle")
FOVCircle.Thickness = 2
FOVCircle.NumSides = 50
FOVCircle.Filled = false
FOVCircle.Color = Color3.new(1, 1, 1)
FOVCircle.Transparency = 1
FOVCircle.Visible = true

-- === ESP FUNCTIONS ===
local function CreateESP(plr)
    if ESPObjects[plr] then return end
    local box = Drawing.new("Square")
    box.Thickness = 2
    box.Filled = false
    box.Color = Color3.fromRGB(255, 0, 0)

    local line = Drawing.new("Line")
    line.Thickness = 1
    line.Color = Color3.fromRGB(0, 255, 255)

    local distText = Drawing.new("Text")
    distText.Size = 14
    distText.Color = Color3.fromRGB(255, 255, 0)
    distText.Center = true
    distText.Outline = true

    local partText = Drawing.new("Text")
    partText.Size = 14
    partText.Color = Color3.fromRGB(0, 255, 150)
    partText.Center = true
    partText.Outline = true

    ESPObjects[plr] = { Box = box, Line = line, Dist = distText, Part = partText }
end

local function RemoveESP(plr)
    if ESPObjects[plr] then
        for _, v in pairs(ESPObjects[plr]) do v:Remove() end
        ESPObjects[plr] = nil
    end
end

-- === GET TARGET ===
local function GetTarget()
    local center = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
    local closest = nil
    local bestDist = FOV.Size

    for _, p in ipairs(Players:GetPlayers()) do
        if p == player or not p.Character then continue end
        local char = p.Character
        local root = char:FindFirstChild("HumanoidRootPart")
        local hum = char:FindFirstChild("Humanoid")
        if not (root and hum and hum.Health > 0) then continue end
        if Aimbot.DeadCheck and hum.Health <= 0 then continue end

        local targetPart = GetTargetPart(char)
        if not targetPart then continue end

        local pos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
        if not onScreen then continue end
        local dist = (Vector2.new(pos.X, pos.Y) - center).Magnitude
        if dist > FOV.Size then continue end

        if Aimbot.WallCheck then
            local ray = Ray.new(Camera.CFrame.Position, targetPart.Position - Camera.CFrame.Position)
            local hit = workspace:FindPartOnRayWithIgnoreList(ray, {player.Character, char})
            if hit then continue end
        end

        if dist < bestDist then
            closest = p
            bestDist = dist
        end
    end
    return closest
end

-- === SHOOT & FAST RELOAD ===
local function FastReloadLoop()
    if FastReload and player.Character then
        local tool = player.Character:FindFirstChildOfClass("Tool")
        if tool and tool:FindFirstChild("Handle") then
            tool:Activate()
        end
    end
end

local function Shoot()
    local tool = player.Character and player.Character:FindFirstChildOfClass("Tool")
    if tool and tool:FindFirstChild("Handle") then
        tool:Activate()
    end
end

-- === MAIN LOOP ===
RunService.Heartbeat:Connect(function()
    FastReloadLoop()

    FOVCircle.Radius = FOV.Size
    FOVCircle.Position = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
    FOVCircle.Visible = FOV.Show

    if Aimbot.Enabled and player.Character then
        local target = GetTarget()
        if target and target.Character then
            local targetPart = GetTargetPart(target.Character)
            if targetPart then
                Camera.CFrame = CFrame.new(Camera.CFrame.Position, targetPart.Position)
                Shoot()
            end
        end
    end

    if ESP.Enabled or ESP.Tracer or ESP.Distance then
        for _, p in ipairs(Players:GetPlayers()) do
            if p == player or not p.Character then RemoveESP(p); continue end
            local char = p.Character
            local root = char:FindFirstChild("HumanoidRootPart")
            local hum = char:FindFirstChild("Humanoid")
            if not (root and hum and hum.Health > 0) then RemoveESP(p); continue end

            local pos, onScreen = Camera:WorldToViewportPoint(root.Position)
            if not onScreen then
                if ESPObjects[p] then
                    ESPObjects[p].Box.Visible = false
                    ESPObjects[p].Line.Visible = false
                    ESPObjects[p].Dist.Visible = false
                    ESPObjects[p].Part.Visible = false
                end
                continue
            end

            if not ESPObjects[p] then CreateESP(p) end
            local obj = ESPObjects[p]

            local top = Camera:WorldToViewportPoint(root.Position + Vector3.new(0, 3.5, 0))
            local bot = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 4, 0))
            local h = math.abs(top.Y - bot.Y)
            local w = h * 0.7
            obj.Box.Size = Vector2.new(w, h)
            obj.Box.Position = Vector2.new(pos.X - w/2, pos.Y - h/2)
            obj.Box.Visible = ESP.Enabled

            obj.Line.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
            obj.Line.To = Vector2.new(pos.X, pos.Y)
            obj.Line.Visible = ESP.Tracer

            if ESP.Distance then
                local distance = (player.Character.HumanoidRootPart.Position - root.Position).Magnitude
                obj.Dist.Text = string.format("%.1f m", distance)
                obj.Dist.Position = Vector2.new(pos.X, pos.Y + h/2 + 10)
                obj.Dist.Visible = true
            else
                obj.Dist.Visible = false
            end

            -- SHOW CURRENT TARGET PART ON ESP
            obj.Part.Text = "Target: " .. Aimbot.TargetPart
            obj.Part.Position = Vector2.new(pos.X, pos.Y - h/2 - 20)
            obj.Part.Visible = ESP.Enabled
        end
    else
        for _, obj in pairs(ESPObjects) do
            obj.Box.Visible = false
            obj.Line.Visible = false
            obj.Dist.Visible = false
            obj.Part.Visible = false
        end
    end
end)

Players.PlayerRemoving:Connect(RemoveESP)

-- === RAYFIELD UI ===
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
    Name = "CREATED BY: Jhonard",
    LoadingTitle = "Jhonard PVP",
    LoadingSubtitle = "Head & Body Only!",
    ConfigurationSaving = { Enabled = true, FolderName = "JhonardPVP", FileName = "Config" },
    KeySystem = false
})

local MainTab = Window:CreateTab("Main")
local VisualTab = Window:CreateTab("Visual")

-- === MAIN TAB ===
MainTab:CreateToggle({ 
    Name = "Aimbot", 
    CurrentValue = false, 
    Callback = function(v) 
        Aimbot.Enabled = v 
        Rayfield:Notify({
            Title = "Aimbot",
            Content = v and "ON → " .. Aimbot.TargetPart or "OFF",
            Duration = 3
        })
    end 
})

MainTab:CreateToggle({ Name = "FAST RELOAD", CurrentValue = false, Callback = function(v) FastReload = v end })
MainTab:CreateToggle({ Name = "Wall Check", CurrentValue = true, Callback = function(v) Aimbot.WallCheck = v end })
MainTab:CreateToggle({ Name = "Dead Check", CurrentValue = true, Callback = function(v) Aimbot.DeadCheck = v end })

-- === VISUAL TAB ===
VisualTab:CreateSlider({ 
    Name = "FOV Size", 
    Range = {10, 300}, 
    Increment = 5, 
    CurrentValue = 60, 
    Callback = function(v) FOV.Size = v end 
})

VisualTab:CreateToggle({ Name = "Show FOV", CurrentValue = true, Callback = function(v) FOV.Show = v end })
VisualTab:CreateToggle({ Name = "ESP Box", CurrentValue = false, Callback = function(v) ESP.Enabled = v end })
VisualTab:CreateToggle({ Name = "Tracer", CurrentValue = false, Callback = function(v) ESP.Tracer = v end })
VisualTab:CreateToggle({ Name = "Distance", CurrentValue = true, Callback = function(v) ESP.Distance = v end })

-- === PART SELECTOR (NO LEG) ===
VisualTab:CreateSection("TARGET PART")

VisualTab:CreateButton({
    Name = "HEAD SHOTS",
    Callback = function()
        Aimbot.TargetPart = "Head"
        Rayfield:Notify({ Title = "Target", Content = "HEAD SHOTS", Duration = 2 })
    end
})

VisualTab:CreateButton({
    Name = "BODY SHOTS",
    Callback = function()
        Aimbot.TargetPart = "Body"
        Rayfield:Notify({ Title = "Target", Content = "BODY SHOTS", Duration = 2 })
    end
})

-- === NOTIFY ===
Rayfield:Notify({
    Title = "CREATED BY: Jhonard",
    Content = "LOADED!\nHEAD & BODY ONLY\nLEG BUTTON REMOVED!",
    Duration = 7
})

print("JHONARD PVP - NO LEG BUTTON LOADED!")

Features & Information

PLEASE TRY MY MY SCRIPT IF THIS SCRIPT MORE PEOPLE TRY IT IM GONNA UPDATE THIS AND SUPER OP SCRIPT

Community Comments (2)

huyhuyhuyhuyhuyhuyNov 12, 2025

good

jhonardtaclindojhonardtaclindoNov 12, 2025

Thanks for trying my script I'm gonna update in Nov 14

More Scripts for [FPS] Flick