Universal ESP
Key RequiredUniversal

Universal ESP

Universal Scriptmiyeperezromiyeperezro 3.6K views 237 executesUpdated Jun 19, 2025
Unrated
00
Lua Script•407 lines (12522 chars)
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")

-- Global variables
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local ScreenGui = Instance.new("ScreenGui")
local drawings = {}
local ESPEnabled = false
local teamCheckEnabled = false

-- GUI Configuration
ScreenGui.Name = "KuzaHubGui"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = game:GetService("CoreGui")
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

-- Function to create UI elements
local function createElement(className, props)
    local element = Instance.new(className)
    for prop, value in pairs(props) do
        element[prop] = value
    end
    return element
end

-- ========== INITIAL NOTIFICATION ==========
local Notification = createElement("Frame", {
    Size = UDim2.new(0, 500, 0, 100),
    Position = UDim2.new(0.5, -250, 0.1, 0),
    BackgroundColor3 = Color3.fromRGB(20, 20, 20),
    BorderSizePixel = 0,
    Parent = ScreenGui,
    Active = true,
    Draggable = true,
    ZIndex = 2
})

local NotificationText = createElement("TextLabel", {
    Size = UDim2.new(1, -50, 1, 0),
    Position = UDim2.new(0, 10, 0, 0),
    BackgroundTransparency = 1,
    Text = "Kuza Hub - Premium Version\nESP System Activated!",
    TextColor3 = Color3.new(1, 1, 1),
    Font = Enum.Font.GothamBold,
    TextSize = 22,
    TextWrapped = true,
    TextYAlignment = Enum.TextYAlignment.Center,
    Parent = Notification,
    ZIndex = 3
})

-- Rainbow effect
coroutine.wrap(function()
    local hue = 0
    while Notification and Notification.Parent do
        hue = (hue + 0.01) % 1
        NotificationText.TextColor3 = Color3.fromHSV(hue, 1, 1)
        RunService.Heartbeat:Wait()
    end
end)()

local CloseNotificationBtn = createElement("TextButton", {
    Size = UDim2.new(0, 30, 0, 30),
    Position = UDim2.new(1, -35, 0, 5),
    BackgroundColor3 = Color3.fromRGB(255, 50, 50),
    Text = "X",
    Font = Enum.Font.GothamBold,
    TextSize = 20,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = Notification,
    AutoButtonColor = false,
    ZIndex = 3
})

CloseNotificationBtn.MouseEnter:Connect(function()
    CloseNotificationBtn.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
end)

CloseNotificationBtn.MouseLeave:Connect(function()
    CloseNotificationBtn.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
end)

CloseNotificationBtn.MouseButton1Click:Connect(function()
    Notification:Destroy()
end)

-- ========== MAIN INTERFACE ==========
local MainFrame = createElement("Frame", {
    Size = UDim2.new(0, 350, 0, 300), -- Reduced size due to removed features
    Position = UDim2.new(0.5, -175, 0.4, 0),
    BackgroundColor3 = Color3.fromRGB(25, 25, 25),
    BorderSizePixel = 0,
    Active = true,
    Draggable = true,
    Parent = ScreenGui,
    ZIndex = 2
})

local TopBar = createElement("Frame", {
    Size = UDim2.new(1, 0, 0, 40),
    BackgroundColor3 = Color3.fromRGB(35, 35, 35),
    BorderSizePixel = 0,
    Parent = MainFrame,
    ZIndex = 3
})

-- "Kuza Hub" title with rainbow effect
local Title = createElement("TextLabel", {
    Size = UDim2.new(1, -100, 1, 0),
    Position = UDim2.new(0, 10, 0, 0),
    BackgroundTransparency = 1,
    Text = "Kuza Hub - ESP",
    TextColor3 = Color3.new(1, 1, 1),
    TextSize = 22,
    Font = Enum.Font.GothamBold,
    TextXAlignment = Enum.TextXAlignment.Left,
    Parent = TopBar,
    ZIndex = 4
})

-- Rainbow effect for the title
coroutine.wrap(function()
    while Title and Title.Parent do
        for hue = 0, 1, 0.01 do
            Title.TextColor3 = Color3.fromHSV(hue, 1, 1)
            RunService.Heartbeat:Wait()
        end
    end
end)()

local MinimizeBtn = createElement("TextButton", {
    Size = UDim2.new(0, 40, 0, 30),
    Position = UDim2.new(1, -90, 0, 5),
    BackgroundColor3 = Color3.fromRGB(255, 170, 0),
    Text = "-",
    Font = Enum.Font.GothamBold,
    TextSize = 24,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = TopBar,
    AutoButtonColor = false,
    ZIndex = 4
})

local CloseBtn = createElement("TextButton", {
    Size = UDim2.new(0, 40, 0, 30),
    Position = UDim2.new(1, -45, 0, 5),
    BackgroundColor3 = Color3.fromRGB(255, 70, 70),
    Text = "X",
    Font = Enum.Font.GothamBold,
    TextSize = 20,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = TopBar,
    AutoButtonColor = false,
    ZIndex = 4
})

-- Main buttons
local ESPButton = createElement("TextButton", {
    Size = UDim2.new(0.85, 0, 0, 40),
    Position = UDim2.new(0.075, 0, 0.15, 0), -- Adjusted position
    BackgroundColor3 = Color3.fromRGB(40, 40, 255),
    Text = "Enable ESP",
    Font = Enum.Font.GothamBold,
    TextSize = 20,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = MainFrame,
    ZIndex = 3
})

local TeamCheckBtn = createElement("TextButton", {
    Size = UDim2.new(0.85, 0, 0, 40),
    Position = UDim2.new(0.075, 0, 0.35, 0), -- Adjusted position
    BackgroundColor3 = Color3.fromRGB(120, 80, 200),
    Text = "Team Check: OFF",
    Font = Enum.Font.GothamBold,
    TextSize = 20,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = MainFrame,
    ZIndex = 3
})

local DiscordBtn = createElement("TextButton", {
    Size = UDim2.new(0.85, 0, 0, 40),
    Position = UDim2.new(0.075, 0, 0.55, 0), -- Adjusted position
    BackgroundColor3 = Color3.fromRGB(88, 101, 242),
    Text = "Join Discord",
    Font = Enum.Font.GothamBold,
    TextSize = 20,
    TextColor3 = Color3.new(1, 1, 1),
    Parent = MainFrame,
    ZIndex = 3
})

-- ========== ESP SYSTEM ==========
local function ClearDrawings()
    for player, playerDrawings in pairs(drawings) do
        for _, drawing in pairs(playerDrawings) do
            drawing:Remove()
        end
        drawings[player] = nil
    end
end

local function IsEnemy(player)
    if not teamCheckEnabled then return true end
    local localTeam = LocalPlayer.Team
    local playerTeam = player.Team
    if not localTeam or not playerTeam then return true end
    return localTeam ~= playerTeam
end

local function UpdateESP()
    for player, playerDrawings in pairs(drawings) do
        local char = player.Character
        if not char then
            for _, drawing in pairs(playerDrawings) do
                drawing.Visible = false
            end
        else
            local hrp = char:FindFirstChild("HumanoidRootPart")
            local head = char:FindFirstChild("Head")
            local humanoid = char:FindFirstChildOfClass("Humanoid")
            
            local shouldShow = hrp and head and humanoid and humanoid.Health > 0 and IsEnemy(player)
            
            if shouldShow then
                local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
                if onScreen then
                    local headPos = Camera:WorldToViewportPoint(head.Position)
                    local rootPos = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0))
                    local height = (headPos.Y - rootPos.Y) * 1.5
                    local width = height / 2

                    playerDrawings.Box.Size = Vector2.new(width, height)
                    playerDrawings.Box.Position = Vector2.new(pos.X - width/2, pos.Y - height/2)
                    playerDrawings.Box.Visible = true
                    
                    playerDrawings.Name.Position = Vector2.new(pos.X, pos.Y - height/2 - 20)
                    playerDrawings.Name.Text = player.Name
                    playerDrawings.Name.Visible = true
                    
                    playerDrawings.Tracer.To = Vector2.new(pos.X, pos.Y)
                    playerDrawings.Tracer.Visible = true
                else
                    for _, drawing in pairs(playerDrawings) do
                        drawing.Visible = false
                    end
                end
            else
                for _, drawing in pairs(playerDrawings) do
                    drawing.Visible = false
                end
            end
        end
    end
end

local function CreatePlayerESP(player)
    if drawings[player] then return end
    
    drawings[player] = {
        Box = Drawing.new("Square"),
        Name = Drawing.new("Text"),
        Tracer = Drawing.new("Line")
    }
    
    local pDrawings = drawings[player]
    pDrawings.Box.Thickness = 2
    pDrawings.Box.Filled = false
    pDrawings.Box.Visible = false
    pDrawings.Box.Color = Color3.fromRGB(0, 255, 255)  -- Cyan color
    
    pDrawings.Name.Size = 16
    pDrawings.Name.Center = true
    pDrawings.Name.Outline = true
    pDrawings.Name.Visible = false
    pDrawings.Name.Color = Color3.fromRGB(255, 255, 255)  -- White color
    
    pDrawings.Tracer.Thickness = 1
    pDrawings.Tracer.Visible = false
    pDrawings.Tracer.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
    pDrawings.Tracer.Color = Color3.fromRGB(255, 0, 0)  -- Red color
end

-- Player management
local function SetupPlayer(player)
    if player ~= LocalPlayer then
        CreatePlayerESP(player)
    end
end

Players.PlayerAdded:Connect(SetupPlayer)
Players.PlayerRemoving:Connect(function(player)
    if drawings[player] then
        for _, drawing in pairs(drawings[player]) do
            drawing:Remove()
        end
        drawings[player] = nil
    end
end)

for _, player in ipairs(Players:GetPlayers()) do
    SetupPlayer(player)
end

-- ========== INTERACTIONS ==========
-- Main buttons
ESPButton.MouseButton1Click:Connect(function()
    ESPEnabled = not ESPEnabled
    ESPButton.Text = ESPEnabled and "Disable ESP" or "Enable ESP"
    ESPButton.BackgroundColor3 = ESPEnabled and Color3.fromRGB(0, 170, 255) or Color3.fromRGB(40, 40, 255)
    
    if ESPEnabled then
        for _, player in ipairs(Players:GetPlayers()) do
            if player ~= LocalPlayer then
                CreatePlayerESP(player)
            end
        end
        RunService:BindToRenderStep("ESP_Update", Enum.RenderPriority.Last.Value, UpdateESP)
        
        StarterGui:SetCore("SendNotification", {
            Title = "ESP Activated",
            Text = "ESP system activated successfully!",
            Duration = 3
        })
    else
        RunService:UnbindFromRenderStep("ESP_Update")
        ClearDrawings()
        
        StarterGui:SetCore("SendNotification", {
            Title = "ESP Deactivated",
            Text = "ESP system deactivated!",
            Duration = 3
        })
    end
end)

TeamCheckBtn.MouseButton1Click:Connect(function()
    teamCheckEnabled = not teamCheckEnabled
    TeamCheckBtn.Text = "Team Check: " .. (teamCheckEnabled and "ON" or "OFF")
    TeamCheckBtn.BackgroundColor3 = teamCheckEnabled and Color3.fromRGB(80, 200, 120) or Color3.fromRGB(120, 80, 200)
    
    if ESPEnabled then
        UpdateESP()
    end
end)

DiscordBtn.MouseButton1Click:Connect(function()
    setclipboard("https://discord.gg/BMAzkqXzWR")
    StarterGui:SetCore("SendNotification", {
        Title = "Discord Copied",
        Text = "Link copied to clipboard!",
        Duration = 3
    })
end)

-- Minimize/Maximize
local isMinimized = false

MinimizeBtn.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    
    local newSize = isMinimized and UDim2.new(0, 350, 0, 40) or UDim2.new(0, 350, 0, 300)
    local tween = TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad), {Size = newSize})
    tween:Play()
    
    if not isMinimized then
        tween.Completed:Wait()
        ESPButton.Visible = true
        TeamCheckBtn.Visible = true
        DiscordBtn.Visible = true
    else
        ESPButton.Visible = false
        TeamCheckBtn.Visible = false
        DiscordBtn.Visible = false
    end
end)

CloseBtn.MouseButton1Click:Connect(function()
    -- Clean up ESP before closing
    if ESPEnabled then
        ClearDrawings()
        RunService:UnbindFromRenderStep("ESP_Update")
    end
    
    local tween = TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad), {
        Position = UDim2.new(0.5, 500, 0.4, 0)
    })
    tween:Play()
    tween.Completed:Wait()
    ScreenGui:Destroy()
end)

-- Initial welcome notification
delay(1, function()
    StarterGui:SetCore("SendNotification", {
        Title = "Kuza Hub Activated",
        Text = "ESP system ready!",
        Duration = 5,
        Icon = "rbxassetid://6724439482"
    })
end)

Features & Information

Universal ESP Team Check More features soon
#ESP#UNIVERSAL#universal#Universal ESP#Hub

Community Comments (6)

chatgpt

miyeperezromiyeperezroJun 20, 2025

how?

the most obvious and useless comments on earth

and you coroutine.wrap *ing everything

miyeperezromiyeperezroJun 20, 2025

its clearly not chat gp

miyeperezromiyeperezroJun 20, 2025

I dont know what u are talking about

More Scripts for Universal Scripts