FlashESP
Key RequiredUniversal

FlashESP

Universal ScriptColton9Colton9 200 views 2.8K executesUpdated Aug 27, 2026
Unrated
00
Lua Script•352 lines (14330 chars)
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")
local LocalPlayer = Players.LocalPlayer

-- Check if script is already running
if _G.FlashESPRunning then
    _G.FlashESPRunning()
end

local active = true
_G.FlashESPRunning = function()
    active = false
end

-- Toggles State
local tracerToggled = false
local holdingToggled = false
local bodyToggled = false
local nameToggled = false
local healthToggled = false
local distanceToggled = false
local squareToggled = false

-- Storage tables
local highlights = {}
local nameGuis = {}
local healthGuis = {}
local distanceGuis = {}
local holdingGuis = {}
local squareGuis = {}
local beams = {}

-- Clean up function
local function cleanPlayer(p)
    if highlights[p] then highlights[p]:Destroy(); highlights[p] = nil end
    if nameGuis[p] then nameGuis[p]:Destroy(); nameGuis[p] = nil end
    if healthGuis[p] then healthGuis[p]:Destroy(); healthGuis[p] = nil end
    if distanceGuis[p] then distanceGuis[p]:Destroy(); distanceGuis[p] = nil end
    if holdingGuis[p] then holdingGuis[p]:Destroy(); holdingGuis[p] = nil end
    if squareGuis[p] then squareGuis[p]:Destroy(); squareGuis[p] = nil end
    if beams[p] then
        if beams[p].Beam then beams[p].Beam:Destroy() end
        if beams[p].Att0 then beams[p].Att0:Destroy() end
        if beams[p].Att1 then beams[p].Att1:Destroy() end
        beams[p] = nil
    end
end

Players.PlayerRemoving:Connect(function(p)
    cleanPlayer(p)
end)

-- UI Setup
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "FlashESPGui"
ScreenGui.ResetOnSpawn = false

pcall(function()
    if gethui then
        ScreenGui.Parent = gethui()
    else
        ScreenGui.Parent = CoreGui
    end
end)

if not ScreenGui.Parent then
    ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

-- Main Frame (Expanded height to fit 7 buttons)
local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Size = UDim2.new(0, 200, 0, 340)
MainFrame.Position = UDim2.new(0, 50, 0, 100)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true

local UICorner = Instance.new("UICorner", MainFrame)
UICorner.CornerRadius = UDim.new(0, 8)

-- Title
local Title = Instance.new("TextLabel", MainFrame)
Title.Size = UDim2.new(1, 0, 0, 35)
Title.BackgroundTransparency = 1
Title.Text = "FlashESP"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 16
Title.Font = Enum.Font.SourceSansBold

-- Helper function to create toggle buttons
local function createButton(name, yPos, callback)
    local btn = Instance.new("TextButton", MainFrame)
    btn.Size = UDim2.new(1, -20, 0, 35)
    btn.Position = UDim2.new(0, 10, 0, yPos)
    btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.TextSize = 14
    btn.Font = Enum.Font.SourceSansSemibold
    btn.Text = name .. ": OFF"

    local corner = Instance.new("UICorner", btn)
    corner.CornerRadius = UDim.new(0, 6)

    local state = false
    btn.MouseButton1Click:Connect(function()
        state = not state
        if state then
            btn.BackgroundColor3 = Color3.fromRGB(0, 120, 215)
            btn.TextColor3 = Color3.fromRGB(255, 255, 255)
            btn.Text = name .. ": ON"
        else
            btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
            btn.TextColor3 = Color3.fromRGB(200, 200, 200)
            btn.Text = name .. ": OFF"
        end
        callback(state)
    end)
end

-- Create UI Toggles
createButton("Tracers", 40, function(state) tracerToggled = state end)
createButton("Holding Track", 80, function(state) holdingToggled = state end)
createButton("Body ESP", 120, function(state) bodyToggled = state end)
createButton("Name ESP", 160, function(state) nameToggled = state end)
createButton("Health ESP", 200, function(state) healthToggled = state end)
createButton("Distance ESP", 240, function(state) distanceToggled = state end)
createButton("2D Square", 280, function(state) squareToggled = state end)

-- Minimize Button
local MinBtn = Instance.new("TextButton", MainFrame)
MinBtn.Size = UDim2.new(0, 30, 0, 30)
MinBtn.Position = UDim2.new(1, -35, 0, 3)
MinBtn.BackgroundTransparency = 1
MinBtn.Text = "-"
MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
MinBtn.TextSize = 20

local minimized = false
MinBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    for _, child in ipairs(MainFrame:GetChildren()) do
        if child:IsA("TextButton") and child ~= MinBtn then
            child.Visible = not minimized
        end
    end
    MainFrame.Size = minimized and UDim2.new(0, 200, 0, 40) or UDim2.new(0, 200, 0, 340)
end)

-- Main Render Loop
RunService.RenderStepped:Connect(function()
    if not active then return end

    local lChar = LocalPlayer.Character
    local lHead = lChar and lChar:FindFirstChild("Head")

    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LocalPlayer then
            local char = p.Character
            local hum = char and char:FindFirstChildOfClass("Humanoid")
            local root = char and char:FindFirstChild("HumanoidRootPart")
            local head = char and char:FindFirstChild("Head")
            local isAlive = hum and hum.Health > 0 and root and head

            if isAlive then
                -- 1. Tracers (Beams)
                if tracerToggled and lHead then
                    if not beams[p] or beams[p].Att1.Parent ~= root then
                        if beams[p] then
                            if beams[p].Beam then beams[p].Beam:Destroy() end
                            if beams[p].Att0 then beams[p].Att0:Destroy() end
                            if beams[p].Att1 then beams[p].Att1:Destroy() end
                        end
                        local att0 = Instance.new("Attachment", lHead)
                        local att1 = Instance.new("Attachment", root)
                        local beam = Instance.new("Beam", lHead)
                        beam.Attachment0 = att0
                        beam.Attachment1 = att1
                        beam.Color = ColorSequence.new(Color3.fromRGB(255, 0, 0))
                        beam.Width0 = 0.05
                        beam.Width1 = 0.05
                        beam.FaceCamera = true
                        beams[p] = {Beam = beam, Att0 = att0, Att1 = att1}
                    end
                else
                    if beams[p] then
                        if beams[p].Beam then beams[p].Beam:Destroy() end
                        if beams[p].Att0 then beams[p].Att0:Destroy() end
                        if beams[p].Att1 then beams[p].Att1:Destroy() end
                        beams[p] = nil
                    end
                end

                -- 2. Holding Item Track
                if holdingToggled then
                    local tool = char:FindFirstChildOfClass("Tool")
                    local toolName = tool and tool.Name or "None"
                    if not holdingGuis[p] or holdingGuis[p].Adornee ~= head then
                        if holdingGuis[p] then holdingGuis[p]:Destroy() end
                        local bg = Instance.new("BillboardGui", head)
                        bg.Size = UDim2.new(0, 120, 0, 30)
                        bg.StudsOffset = Vector3.new(0, -1.6, 0)
                        bg.AlwaysOnTop = true
                        bg.Adornee = head

                        local lbl = Instance.new("TextLabel", bg)
                        lbl.Size = UDim2.new(1, 0, 1, 0)
                        lbl.BackgroundTransparency = 1
                        lbl.Text = "Item: " .. toolName
                        lbl.TextColor3 = Color3.fromRGB(255, 140, 0)
                        lbl.TextStrokeTransparency = 0
                        lbl.TextSize = 12
                        holdingGuis[p] = bg
                    else
                        local lbl = holdingGuis[p]:FindFirstChildOfClass("TextLabel")
                        if lbl then
                            lbl.Text = "Item: " .. toolName
                        end
                    end
                else
                    if holdingGuis[p] then holdingGuis[p]:Destroy(); holdingGuis[p] = nil end
                end

                -- 3. Body ESP (Highlight)
                if bodyToggled then
                    if not highlights[p] or highlights[p].Parent ~= char then
                        if highlights[p] then highlights[p]:Destroy() end
                        local hl = Instance.new("Highlight")
                        hl.Adornee = char
                        hl.FillColor = Color3.fromRGB(255, 0, 0)
                        hl.OutlineColor = Color3.fromRGB(255, 255, 255)
                        hl.FillTransparency = 0.5
                        hl.Parent = char
                        highlights[p] = hl
                    end
                else
                    if highlights[p] then highlights[p]:Destroy(); highlights[p] = nil end
                end

                -- 4. Name ESP
                if nameToggled then
                    if not nameGuis[p] or nameGuis[p].Adornee ~= head then
                        if nameGuis[p] then nameGuis[p]:Destroy() end
                        local bg = Instance.new("BillboardGui", head)
                        bg.Size = UDim2.new(0, 100, 0, 30)
                        bg.StudsOffset = Vector3.new(0, 2, 0)
                        bg.AlwaysOnTop = true
                        bg.Adornee = head

                        local lbl = Instance.new("TextLabel", bg)
                        lbl.Size = UDim2.new(1, 0, 1, 0)
                        lbl.BackgroundTransparency = 1
                        lbl.Text = p.Name
                        lbl.TextColor3 = Color3.fromRGB(255, 255, 255)
                        lbl.TextStrokeTransparency = 0
                        lbl.TextSize = 14
                        nameGuis[p] = bg
                    end
                else
                    if nameGuis[p] then nameGuis[p]:Destroy(); nameGuis[p] = nil end
                end

                -- 5. Health ESP
                if healthToggled then
                    if not healthGuis[p] or healthGuis[p].Adornee ~= head then
                        if healthGuis[p] then healthGuis[p]:Destroy() end
                        local bg = Instance.new("BillboardGui", head)
                        bg.Size = UDim2.new(0, 100, 0, 30)
                        bg.StudsOffset = Vector3.new(0, 0.8, 0)
                        bg.AlwaysOnTop = true
                        bg.Adornee = head

                        local lbl = Instance.new("TextLabel", bg)
                        lbl.Size = UDim2.new(1, 0, 1, 0)
                        lbl.BackgroundTransparency = 1
                        lbl.Text = "HP: " .. math.floor(hum.Health)
                        lbl.TextColor3 = Color3.fromRGB(0, 255, 0)
                        lbl.TextStrokeTransparency = 0
                        lbl.TextSize = 12
                        healthGuis[p] = bg
                    else
                        local lbl = healthGuis[p]:FindFirstChildOfClass("TextLabel")
                        if lbl then
                            lbl.Text = "HP: " .. math.floor(hum.Health)
                        end
                    end
                else
                    if healthGuis[p] then healthGuis[p]:Destroy(); healthGuis[p] = nil end
                end

                -- 6. Distance ESP
                if distanceToggled and lHead then
                    local dist = math.floor((lHead.Position - root.Position).Magnitude)
                    if not distanceGuis[p] or distanceGuis[p].Adornee ~= head then
                        if distanceGuis[p] then distanceGuis[p]:Destroy() end
                        local bg = Instance.new("BillboardGui", head)
                        bg.Size = UDim2.new(0, 100, 0, 30)
                        bg.StudsOffset = Vector3.new(0, -0.4, 0)
                        bg.AlwaysOnTop = true
                        bg.Adornee = head

                        local lbl = Instance.new("TextLabel", bg)
                        lbl.Size = UDim2.new(1, 0, 1, 0)
                        lbl.BackgroundTransparency = 1
                        lbl.Text = dist .. " studs"
                        lbl.TextColor3 = Color3.fromRGB(255, 255, 0)
                        lbl.TextStrokeTransparency = 0
                        lbl.TextSize = 12
                        distanceGuis[p] = bg
                    else
                        local lbl = distanceGuis[p]:FindFirstChildOfClass("TextLabel")
                        if lbl then
                            local dist = math.floor((lHead.Position - root.Position).Magnitude)
                            lbl.Text = dist .. " studs"
                        end
                    end
                else
                    if distanceGuis[p] then distanceGuis[p]:Destroy(); distanceGuis[p] = nil end
                end

                -- 7. 2D Square Box ESP
                if squareToggled then
                    if not squareGuis[p] or squareGuis[p].Adornee ~= root then
                        if squareGuis[p] then squareGuis[p]:Destroy() end
                        local bg = Instance.new("BillboardGui", root)
                        bg.Size = UDim2.new(3, 0, 5, 0) -- Frames the whole body size in studs
                        bg.StudsOffset = Vector3.new(0, 0, 0)
                        bg.AlwaysOnTop = true
                        bg.Adornee = root

                        local box = Instance.new("Frame", bg)
                        box.Size = UDim2.new(1, 0, 1, 0)
                        box.BackgroundTransparency = 1

                        local stroke = Instance.new("UIStroke", box)
                        stroke.Thickness = 1.5
                        stroke.Color = Color3.fromRGB(255, 255, 255)

                        squareGuis[p] = bg
                    end
                else
                    if squareGuis[p] then squareGuis[p]:Destroy(); squareGuis[p] = nil end
                end
            else
                -- Clean up if dead or not spawned
                cleanPlayer(p)
            end
        end
    end
end)

Features & Information

So basically just ESP with Gemini Ai Made for somebody who want to track Features: Tracers (Red line, Connect to Everyone Head) Red Body (Highlights the body) Name ESP (Display Player Username) Health ESP (Display Player HP) Distance ESP (Display The Distance in Studs) Holding Tracks (Display The items/tools when Player is Holding) 2D Square (Frame The Whole Body and Resize dynamically) Okay that all ig Also made by Gemini Ai
#ESP#ROBLOX#Universal#Universal Scripts#Tracker

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts