local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- // Settings local Settings = { Enabled = true, Boxes = true, Names = true, TeamCheck = true, BoxColor = Color3.fromRGB(255, 0, 0), NameColor = Color3.fromRGB(255, 255, 255), MenuKey = Enum.KeyCode.Insert } -- // UI Creation (Simple Toggle Menu) local ScreenGui = Instance.new("ScreenGui") local MainFrame = Instance.new("Frame") local Title = Instance.new("TextLabel") local ToggleBox = Instance.new("TextButton") local ToggleName = Instance.new("TextButton") local StatusLabel = Instance.new("TextLabel") ScreenGui.Name = "ESPMenus" ScreenGui.Parent = (game:GetService("CoreGui") or game:GetService("Players").LocalPlayer.PlayerGui) ScreenGui.ResetOnSpawn = false MainFrame.Name = "MainFrame" MainFrame.Parent = ScreenGui MainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) MainFrame.BorderSizePixel = 0 MainFrame.Position = UDim2.new(0.05, 0, 0.05, 0) MainFrame.Size = UDim2.new(0, 200, 0, 180) MainFrame.Active = true MainFrame.Draggable = true Title.Name = "Title" Title.Parent = MainFrame Title.BackgroundColor3 = Color3.fromRGB(45, 45, 45) Title.BorderSizePixel = 0 Title.Size = UDim2.new(1, 0, 0, 30) Title.Font = Enum.Font.SourceSansBold Title.Text = "ESP MENU" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextSize = 18 local function CreateButton(name, text, pos, callback) local btn = Instance.new("TextButton") btn.Name = name btn.Parent = MainFrame btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) btn.BorderSizePixel = 0 btn.Position = pos btn.Size = UDim2.new(0.8, 0, 0, 30) btn.AnchorPoint = Vector2.new(0.5, 0) btn.Position = UDim2.new(0.5, 0, pos.Y.Scale, pos.Y.Offset) btn.Font = Enum.Font.SourceSans btn.Text = text .. ": ON" btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.TextSize = 16 btn.MouseButton1Click:Connect(function() local newState = callback() btn.Text = text .. (newState and ": ON" or ": OFF") btn.BackgroundColor3 = newState and Color3.fromRGB(50, 80, 50) or Color3.fromRGB(80, 50, 50) end) return btn end CreateButton("BoxToggle", "Box ESP", UDim2.new(0, 0, 0, 45), function() Settings.Boxes = not Settings.Boxes return Settings.Boxes end) CreateButton("NameToggle", "Name ESP", UDim2.new(0, 0, 0, 85), function() Settings.Names = not Settings.Names return Settings.Names end) StatusLabel.Parent = MainFrame StatusLabel.Size = UDim2.new(1, 0, 0, 20) StatusLabel.Position = UDim2.new(0, 0, 1, -25) StatusLabel.BackgroundTransparency = 1 StatusLabel.Text = "[Ins] to Toggle Menu" StatusLabel.TextColor3 = Color3.fromRGB(150, 150, 150) StatusLabel.TextSize = 12 UserInputService.InputBegan:Connect(function(input, gpe) if not gpe and input.KeyCode == Settings.MenuKey then MainFrame.Visible = not MainFrame.Visible end end) -- // ESP Logic using Drawing Library local function CreateESP(Player) local Box = Drawing.new("Square") Box.Visible = false Box.Color = Settings.BoxColor Box.Thickness = 1 Box.Transparency = 1 Box.Filled = false local Name = Drawing.new("Text") Name.Visible = false Name.Color = Settings.NameColor Name.Size = 16 Name.Center = true Name.Outline = true local function Updater() local Connection Connection = RunService.RenderStepped:Connect(function() if Settings.Enabled and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") and Player.Character:FindFirstChild("Humanoid") and Player.Character.Humanoid.Health > 0 then if Settings.TeamCheck and Player.Team == LocalPlayer.Team then Box.Visible = false Name.Visible = false return end local RootPart = Player.Character.HumanoidRootPart local Head = Player.Character:FindFirstChild("Head") if not Head then return end local RootPos, OnScreen = Camera:WorldToViewportPoint(RootPart.Position) local HeadPos = Camera:WorldToViewportPoint(Head.Position + Vector3.new(0, 0.5, 0)) local LegPos = Camera:WorldToViewportPoint(RootPart.Position - Vector3.new(0, 3, 0)) if OnScreen then if Settings.Boxes then local Height = math.abs(HeadPos.Y - LegPos.Y) local Width = Height / 1.5 Box.Size = Vector2.new(Width, Height) Box.Position = Vector2.new(RootPos.X - Width / 2, RootPos.Y - Height / 2) Box.Visible = true else Box.Visible = false end if Settings.Names then Name.Text = Player.Name Name.Position = Vector2.new(RootPos.X, RootPos.Y - (math.abs(HeadPos.Y - LegPos.Y) / 2) - 15) Name.Visible = true else Name.Visible = false end else Box.Visible = false Name.Visible = false end else Box.Visible = false Name.Visible = false if not Player.Parent then Box:Remove() Name:Remove() Connection:Disconnect() end end end) end coroutine.wrap(Updater)() end for _, v in pairs(Players:GetPlayers()) do if v ~= LocalPlayer then CreateESP(v) end end Players.PlayerAdded:Connect(function(v) CreateESP(v) end)