Advanced ChatGPT ESP
Key RequiredUniversal

Advanced ChatGPT ESP

Universal ScriptAdorbsxVibesPr3ppyAdorbsxVibesPr3ppy 2.8K views 4 executesUpdated Feb 26, 2025
Unrated
00
Lua Script•245 lines (8158 chars)
local c = workspace.CurrentCamera
local ps = game:GetService("Players")
local lp = ps.LocalPlayer
local rs = game:GetService("RunService")

-- Utility Functions
local function getdistancefc(part)
    return (part.Position - c.CFrame.Position).Magnitude
end

local function lerp(a, b, t)
    return a + (b - a) * t
end

-- Configuration Table
local espConfig = {
    tracerColor = Color3.fromRGB(255, 0, 0),
    nameColor = Color3.fromRGB(255, 255, 255),
    distColor = Color3.fromRGB(0, 255, 0),
    boxColor = Color3.fromRGB(0, 191, 255),
    healthBarColor = Color3.fromRGB(0, 255, 0),
    pulseSpeed = 5,
    orbitRadius = 20,
    glitchChance = 0.05,
    scanInterval = 50, -- Time between scan line appearances changed to 50 seconds
    scanDuration = 0.5, -- How long scan lines are visible each time (still 0.5s)
}

-- ESP Function
local function esp(p, cr)
    local h = cr:WaitForChild("Humanoid")
    local hrp = cr:WaitForChild("HumanoidRootPart")

    -- Drawing Objects
    local nameText = Drawing.new("Text")
    nameText.Center = true
    nameText.Outline = true
    nameText.Font = 2
    nameText.Color = espConfig.nameColor
    nameText.Size = 16
    nameText.Visible = false

    local distText = Drawing.new("Text")
    distText.Center = true
    distText.Outline = true
    distText.Font = 2
    distText.Color = espConfig.distColor
    distText.Size = 13
    distText.Visible = false

    local tracer = Drawing.new("Line")
    tracer.From = Vector2.new(c.ViewportSize.X / 2, c.ViewportSize.Y)
    tracer.Color = espConfig.tracerColor
    tracer.Thickness = 2
    tracer.Transparency = 1
    tracer.Visible = false

    local box = {
        top = Drawing.new("Line"),
        bottom = Drawing.new("Line"),
        left = Drawing.new("Line"),
        right = Drawing.new("Line")
    }
    for _, line in pairs(box) do
        line.Color = espConfig.boxColor
        line.Thickness = 1
        line.Visible = false
    end

    local healthBar = Drawing.new("Line")
    healthBar.Color = espConfig.healthBarColor
    healthBar.Thickness = 3
    healthBar.Visible = false

    local orbitDot1 = Drawing.new("Circle")
    orbitDot1.Radius = 3
    orbitDot1.Color = Color3.fromRGB(255, 255, 0)
    orbitDot1.Filled = true
    orbitDot1.Visible = false

    local orbitDot2 = Drawing.new("Circle")
    orbitDot2.Radius = 3
    orbitDot2.Color = Color3.fromRGB(0, 255, 255)
    orbitDot2.Filled = true
    orbitDot2.Visible = false

    -- Connections
    local c1, c2, c3
    local time = 0

    -- Cleanup Function
    local function dc()
        nameText:Remove()
        distText:Remove()
        tracer:Remove()
        for _, line in pairs(box) do line:Remove() end
        healthBar:Remove()
        orbitDot1:Remove()
        orbitDot2:Remove()
        if c1 then c1:Disconnect() c1 = nil end
        if c2 then c2:Disconnect() c2 = nil end
        if c3 then c3:Disconnect() c3 = nil end
    end

    -- Disconnect Conditions
    c2 = cr.AncestryChanged:Connect(function(_, parent)
        if not parent then dc() end
    end)

    c3 = h.HealthChanged:Connect(function(v)
        if (v <= 0) or (h:GetState() == Enum.HumanoidStateType.Dead) then dc() end
    end)

    -- Animation Logic
    c1 = rs.RenderStepped:Connect(function(dt)
        time = time + dt
        local hrp_pos, hrp_os = c:WorldToViewportPoint(hrp.Position)
        local head_pos = c:WorldToViewportPoint(hrp.Position + Vector3.new(0, 3, 0))
        local feet_pos = c:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0))

        if hrp_os then
            -- Name Text
            nameText.Position = Vector2.new(head_pos.X, head_pos.Y - 20)
            nameText.Text = p.Name
            nameText.Visible = true

            -- Distance Text with Pulse and Glitch
            local distance = math.floor(getdistancefc(hrp))
            distText.Position = Vector2.new(head_pos.X, head_pos.Y - 5)
            distText.Text = distance .. " studs"
            distText.Size = 13 + math.sin(time * espConfig.pulseSpeed) * 2
            if math.random() < espConfig.glitchChance then
                distText.Text = distText.Text:gsub("s", "5"):gsub("u", "v")
            end
            distText.Visible = true

            -- Animated Tracer
            tracer.To = Vector2.new(hrp_pos.X, hrp_pos.Y)
            tracer.Color = Color3.fromRGB(
                255 * math.abs(math.sin(time)),
                0,
                255 * math.abs(math.cos(time))
            )
            tracer.Visible = true

            -- Dynamic Box
            local boxSize = Vector2.new(20, 60)
            box.top.From = Vector2.new(feet_pos.X - boxSize.X / 2, feet_pos.Y - boxSize.Y / 2)
            box.top.To = Vector2.new(feet_pos.X + boxSize.X / 2, feet_pos.Y - boxSize.Y / 2)
            box.bottom.From = Vector2.new(feet_pos.X - boxSize.X / 2, feet_pos.Y + boxSize.Y / 2)
            box.bottom.To = Vector2.new(feet_pos.X + boxSize.X / 2, feet_pos.Y + boxSize.Y / 2)
            box.left.From = box.top.From
            box.left.To = box.bottom.From
            box.right.From = box.top.To
            box.right.To = box.bottom.To
            for _, line in pairs(box) do line.Visible = true end

            -- Health Bar
            local healthPercent = h.Health / h.MaxHealth
            healthBar.From = Vector2.new(feet_pos.X - boxSize.X / 2 - 5, feet_pos.Y + boxSize.Y / 2)
            healthBar.To = Vector2.new(
                feet_pos.X - boxSize.X / 2 - 5,
                lerp(feet_pos.Y + boxSize.Y / 2, feet_pos.Y - boxSize.Y / 2, healthPercent)
            )
            healthBar.Color = Color3.fromRGB(
                255 * (1 - healthPercent),
                255 * healthPercent,
                0
            )
            healthBar.Visible = true

            -- Orbiting Dots
            local orbitAngle = time * 3
            orbitDot1.Position = Vector2.new(
                hrp_pos.X + math.cos(orbitAngle) * espConfig.orbitRadius,
                hrp_pos.Y + math.sin(orbitAngle) * espConfig.orbitRadius
            )
            orbitDot2.Position = Vector2.new(
                hrp_pos.X + math.cos(orbitAngle + math.pi) * espConfig.orbitRadius,
                hrp_pos.Y + math.sin(orbitAngle + math.pi) * espConfig.orbitRadius
            )
            orbitDot1.Visible = true
            orbitDot2.Visible = true
        else
            nameText.Visible = false
            distText.Visible = false
            tracer.Visible = false
            for _, line in pairs(box) do line.Visible = false end
            healthBar.Visible = false
            orbitDot1.Visible = false
            orbitDot2.Visible = false
        end
    end)
end

-- Player Handling
local function p_added(p)
    if p.Character then
        esp(p, p.Character)
    end
    p.CharacterAdded:Connect(function(cr)
        esp(p, cr)
    end)
end

for _, p in next, ps:GetPlayers() do
    if p ~= lp then
        p_added(p)
    end
end

ps.PlayerAdded:Connect(p_added)

-- Updated Scan Lines: Appear Every 50 Seconds
local scanLines = {}
for i = 1, 10 do
    scanLines[i] = Drawing.new("Line")
    scanLines[i].Color = Color3.fromRGB(0, 255, 255) -- Cyan-blue
    scanLines[i].Thickness = 1
    scanLines[i].Visible = false
end

local scanTime = 0
rs.RenderStepped:Connect(function(dt)
    scanTime = scanTime + dt
    local cycleTime = scanTime % espConfig.scanInterval -- Time within 50-second cycle
    local isActive = cycleTime < espConfig.scanDuration -- Active for first 0.5s of cycle

    for i, line in pairs(scanLines) do
        if isActive then
            -- Position lines moving downward during active period
            local yPos = (cycleTime / espConfig.scanDuration) * c.ViewportSize.Y + (i - 1) * 50
            if yPos < c.ViewportSize.Y then
                line.From = Vector2.new(0, yPos)
                line.To = Vector2.new(c.ViewportSize.X, yPos)
                line.Transparency = 1 - (cycleTime / espConfig.scanDuration) -- Fade out over 0.5s
                line.Visible = true
            else
                line.Visible = false
            end
        else
            line.Visible = false
        end
    end
end)

Features & Information

— Made by Grok 3

Community Comments (1)

asdjkasdjkasdjkasdjkFeb 27, 2025(edited)

chatgpt and advanced :broken_heart:

More Scripts for Universal Scripts