local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Stats = game:GetService("Stats") local Camera = workspace.CurrentCamera local LP = Players.LocalPlayer if not Drawing then return end local Settings = { Running = true, ESPBox = true, ESPHealth = true, ESPNames = true, ESPSkeleton = true, ESPChams = true, BoxPadding = 0.5, -- Colors ChamsColor = Color3.fromRGB(170, 0, 255), NameColor = Color3.fromRGB(255, 255, 0), NeonColor = Color3.fromRGB(170, 0, 255), SkinColor = Color3.fromRGB(255, 180, 180), TipColor = Color3.fromRGB(255, 140, 140), -- Joke Settings ShaftLength = 2.4, ShaftRadius = 0.22, BallSize = 0.3, } local R15_Bones = { {"UpperTorso", "Head"}, {"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"}, {"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RLowerArm", "RightHand"}, {"UpperTorso", "LowerTorso"}, {"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"}, {"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RLowerLeg", "RightFoot"} } -- [[ HUD SYSTEM ]] -- local PerformanceLabel = Drawing.new("Text") PerformanceLabel.Visible = true; PerformanceLabel.Size = 20; PerformanceLabel.Outline = true local ScreenGui = Instance.new("ScreenGui", game:GetService("CoreGui")) local UnloadBtn = Instance.new("TextButton", ScreenGui) UnloadBtn.Size = UDim2.new(0, 80, 0, 30); UnloadBtn.Position = UDim2.new(0, 10, 1, -40); UnloadBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) UnloadBtn.Text = "UNLOAD"; UnloadBtn.TextColor3 = Color3.fromRGB(255, 50, 50); UnloadBtn.Font = Enum.Font.GothamBold; UnloadBtn.TextSize = 12 Instance.new("UICorner", UnloadBtn) UnloadBtn.MouseButton1Click:Connect(function() Settings.Running = false ScreenGui:Destroy() PerformanceLabel:Remove() end) -- Optimized Performance Loop RunService.Heartbeat:Connect(function() if not Settings.Running then return end local fps = math.floor(1 / RunService.RenderStepped:Wait()) local ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()) PerformanceLabel.Text = "FPS: " .. fps .. "\nPING: " .. ping .. "ms" PerformanceLabel.Position = Vector2.new(Camera.ViewportSize.X - 120, Camera.ViewportSize.Y / 2) PerformanceLabel.Color = (fps >= 60 and Color3.new(0,1,0)) or (fps >= 30 and Color3.new(1,1,0)) or Color3.new(1,0,0) end) -- [[ STABILIZED CALCULATION ]] -- local function GetBoundingVectors(char) local cf, size = char:GetBoundingBox() size = size + Vector3.new(Settings.BoxPadding, Settings.BoxPadding, Settings.BoxPadding) local corners = { cf * CFrame.new(-size.X/2, size.Y/2, size.Z/2), cf * CFrame.new(size.X/2, size.Y/2, size.Z/2), cf * CFrame.new(-size.X/2, -size.Y/2, size.Z/2), cf * CFrame.new(size.X/2, -size.Y/2, size.Z/2), cf * CFrame.new(-size.X/2, size.Y/2, -size.Z/2), cf * CFrame.new(size.X/2, size.Y/2, -size.Z/2), cf * CFrame.new(-size.X/2, -size.Y/2, -size.Z/2), cf * CFrame.new(size.X/2, -size.Y/2, -size.Z/2) } local minX, minY = math.huge, math.huge local maxX, maxY = -math.huge, -math.huge local allOffscreen = true for _, corner in pairs(corners) do local screenPos, onScreen = Camera:WorldToViewportPoint(corner.Position) if onScreen then allOffscreen = false minX = math.min(minX, screenPos.X) minY = math.min(minY, screenPos.Y) maxX = math.max(maxX, screenPos.X) maxY = math.max(maxY, screenPos.Y) end end if allOffscreen then return nil, nil, false end return Vector2.new(minX, minY), Vector2.new(maxX - minX, maxY - minY), true end -- [[ ESP LOGIC ]] -- local function CreateESP(p) if p == LP then return end local Box = Drawing.new("Square"); Box.Thickness = 1 local HealthBar = Drawing.new("Line"); HealthBar.Thickness = 2 local NameTag = Drawing.new("Text"); NameTag.Size = 18; NameTag.Center = true; NameTag.Outline = true local SkeletonLines = {} local Shaft = Instance.new("CylinderHandleAdornment") local Tip = Instance.new("SphereHandleAdornment") local BallL = Instance.new("SphereHandleAdornment") local BallR = Instance.new("SphereHandleAdornment") local Highlight = Instance.new("Highlight") Highlight.FillColor = Settings.ChamsColor; Highlight.OutlineColor = Color3.new(1, 1, 1) Highlight.FillTransparency = 0.25; Highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop local function SetupAdorn(obj, color) obj.AlwaysOnTop = true; obj.ZIndex = 10; obj.Transparency = 0.1; obj.Color3 = color end SetupAdorn(Shaft, Settings.SkinColor); SetupAdorn(Tip, Settings.TipColor) SetupAdorn(BallL, Settings.SkinColor); SetupAdorn(BallR, Settings.SkinColor) local function Clear() Box.Visible, HealthBar.Visible, NameTag.Visible = false, false, false for _, l in pairs(SkeletonLines) do l.Visible = false end Shaft.Visible, Tip.Visible, BallL.Visible, BallR.Visible = false, false, false, false Highlight.Enabled = false end RunService.RenderStepped:Connect(function() if not Settings.Running or not p.Parent then Box:Remove(); HealthBar:Remove(); NameTag:Remove(); Highlight:Destroy() for _, l in pairs(SkeletonLines) do l:Remove() end Shaft:Destroy(); Tip:Destroy(); BallL:Destroy(); BallR:Destroy() return end local char = p.Character local hum = char and char:FindFirstChildOfClass("Humanoid") if char and hum and hum.Health > 0 then local boxPos, boxSize, isVisible = GetBoundingVectors(char) -- Chams stay active (native ESP) if Settings.ESPChams then Highlight.Enabled = true; Highlight.Parent = char; Highlight.Adornee = char else Highlight.Enabled = false end if isVisible and boxPos and boxSize then -- Check if size is sane to prevent "lines everywhere" glitch if boxSize.X > 5000 or boxSize.Y > 5000 then Clear() return end if Settings.ESPBox then Box.Visible = true; Box.Position = boxPos; Box.Size = boxSize; Box.Color = Settings.NeonColor else Box.Visible = false end if Settings.ESPHealth then HealthBar.Visible = true; local hp = math.clamp(hum.Health / hum.MaxHealth, 0, 1) HealthBar.From = Vector2.new(boxPos.X - 5, boxPos.Y + boxSize.Y) HealthBar.To = Vector2.new(boxPos.X - 5, boxPos.Y + boxSize.Y - (boxSize.Y * hp)) HealthBar.Color = Color3.fromHSV(hp * 0.3, 1, 1) else HealthBar.Visible = false end if Settings.ESPNames then NameTag.Visible = true; NameTag.Text = "★ " .. p.Name:upper() .. " ★" NameTag.Position = Vector2.new(boxPos.X + boxSize.X/2, boxPos.Y - 25) NameTag.Color = Settings.NameColor else NameTag.Visible = false end if Settings.ESPSkeleton then for i, boneMap in ipairs(R15_Bones) do if not SkeletonLines[i] then SkeletonLines[i] = Drawing.new("Line"); SkeletonLines[i].Thickness = 1; SkeletonLines[i].Color = Color3.new(1, 1, 1) end local pA, pB = char:FindFirstChild(boneMap[1]), char:FindFirstChild(boneMap[2]) if pA and pB then local vA, oA = Camera:WorldToViewportPoint(pA.Position); local vB, oB = Camera:WorldToViewportPoint(pB.Position) if oA and oB then SkeletonLines[i].From = Vector2.new(vA.X, vA.Y); SkeletonLines[i].To = Vector2.new(vB.X, vB.Y); SkeletonLines[i].Visible = true else SkeletonLines[i].Visible = false end else SkeletonLines[i].Visible = false end end local root = char:FindFirstChild("LowerTorso") or char:FindFirstChild("Torso") if root then Shaft.Adornee, Shaft.Parent, Tip.Adornee, Tip.Parent = root, root, root, root BallL.Adornee, BallL.Parent, BallR.Adornee, BallR.Parent = root, root, root, root local scale = char:GetExtentsSize().Y / 6 Shaft.Height = Settings.ShaftLength * scale; Shaft.Radius = Settings.ShaftRadius * scale Tip.Radius = (Settings.ShaftRadius + 0.06) * scale BallL.Radius, BallR.Radius = Settings.BallSize * scale, Settings.BallSize * scale Shaft.CFrame = CFrame.new(0, -0.7 * scale, -(Shaft.Height/2)); Tip.CFrame = CFrame.new(0, -0.7 * scale, -Shaft.Height) BallL.CFrame = CFrame.new(-0.25 * scale, -0.85 * scale, 0); BallR.CFrame = CFrame.new(0.25 * scale, -0.85 * scale, 0) Shaft.Visible, Tip.Visible, BallL.Visible, BallR.Visible = true, true, true, true end end else Clear() end else Clear() end end) end for _, v in ipairs(Players:GetPlayers()) do task.spawn(CreateESP, v) end Players.PlayerAdded:Connect(CreateESP)