simple esp menu
Key RequiredUniversal

simple esp menu

Universal ScriptH7O_H7O_ 585 views 914 executesUpdated Mar 13, 2026
Unrated
00
Lua Script•174 lines (5945 chars)
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)

Features & Information

esp

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts