
Key RequiredUniversal
![THIS SCRIPT UPDATED FREE NO KEY FOR [FPS]](https://cdn.kocakz.me/images/4b228cd8746ce62940ee45f7667396d1bccfdb369c3e3b3ee57c82398a4f2d7f.webp)
-- 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!")



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