-- 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!")