UNIVERSAL INSTANT ESP SCRIPT!   UNDETECTABLE!
Key RequiredUniversal

UNIVERSAL INSTANT ESP SCRIPT! UNDETECTABLE!

Universal ScriptCool_scripter123Cool_scripter123 44 views 5 executesUpdated Oct 3, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•1019 lines (39283 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

-- Color Themes Preset List
local THEMES = {
    ["Navy Blue"] = Color3.fromRGB(0, 102, 204),
    ["Blue"]      = Color3.fromRGB(30, 144, 255),
    ["Red"]       = Color3.fromRGB(235, 55, 55),
    ["Green"]     = Color3.fromRGB(46, 204, 113),
    ["Orange"]    = Color3.fromRGB(243, 156, 18),
    ["Purple"]    = Color3.fromRGB(140, 90, 255),
    ["Magenta"]   = Color3.fromRGB(225, 40, 135),
    ["Yellow"]    = Color3.fromRGB(241, 196, 15)
}

-- Current Active Color Theme (Default: Navy Blue)
local CurrentAccent = THEMES["Navy Blue"]

-- Global ESP & Target Settings
local ESP_SETTINGS = {
    Enabled = false,
    Boxes = true,
    Names = true,
    Distance = true,
    Health = true,
    Inventory = true,
    Skeleton = true,
    DroppedItems = true,
    TeamCheck = false,
    TargetUsername = "",
    ToggleKey = Enum.KeyCode.RightShift,
    FillColor = THEMES["Navy Blue"],
    TargetColor = Color3.fromRGB(255, 60, 60),
    ItemColor = Color3.fromRGB(80, 220, 120),
    OutlineColor = Color3.fromRGB(255, 255, 255),
    TextColor = Color3.fromRGB(255, 255, 255),
    -- Orbit Settings
    OrbitEnabled = false,
    OrbitSpeed = 15,
    OrbitDistance = 10,
    -- Teleport & Wall Check Settings
    TeleportEnabled = false,
    WallCheckEnabled = false
}

local ESP_Cache = {}
local Item_Cache = {}
local DynamicUIElements = {
    Strokes = {},
    ActiveTabs = {},
    ToggleIndicators = {},
    TextButtons = {},
    Sliders = {}
}

----------------------------------------------------
-- 1. MOBILE-FRIENDLY GUI CREATION (synQ V1 - SHARP EDGES)
----------------------------------------------------
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "synQ_ESP_Gui"
ScreenGui.ResetOnSpawn = false

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

-- Mobile Toggle Button (Floating Touch Button - KEPT ROUNDED)
local MobileToggleButton = Instance.new("TextButton")
MobileToggleButton.Name = "MobileToggleButton"
MobileToggleButton.Size = UDim2.new(0, 50, 0, 50)
MobileToggleButton.Position = UDim2.new(0, 15, 0.4, 0)
MobileToggleButton.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
MobileToggleButton.Text = "synQ"
MobileToggleButton.Font = Enum.Font.GothamBold
MobileToggleButton.TextSize = 14
MobileToggleButton.TextColor3 = CurrentAccent
MobileToggleButton.Active = true
MobileToggleButton.Parent = ScreenGui

local MobileBtnCorner = Instance.new("UICorner")
MobileBtnCorner.CornerRadius = UDim.new(0, 12)
MobileBtnCorner.Parent = MobileToggleButton

local MobileBtnStroke = Instance.new("UIStroke")
MobileBtnStroke.Color = CurrentAccent
MobileBtnStroke.Thickness = 2
MobileBtnStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
MobileBtnStroke.Parent = MobileToggleButton
table.insert(DynamicUIElements.Strokes, MobileBtnStroke)

-- Draggable Mobile Toggle Button
local mDragging, mDragStart, mStartPos
MobileToggleButton.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        mDragging = true
        mDragStart = input.Position
        mStartPos = MobileToggleButton.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                mDragging = false
            end
        end)
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if mDragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then
        local delta = input.Position - mDragStart
        MobileToggleButton.Position = UDim2.new(mStartPos.X.Scale, mStartPos.X.Offset + delta.X, mStartPos.Y.Scale, mStartPos.Y.Offset + delta.Y)
    end
end)

-- Main Window Frame (Sharp Edges)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0.9, 0, 0.8, 0)
MainFrame.Position = UDim2.new(0.05, 0, 0.1, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Parent = ScreenGui

local MainConstraint = Instance.new("UISizeConstraint")
MainConstraint.MaxSize = Vector2.new(420, 560)
MainConstraint.MinSize = Vector2.new(280, 380)
MainConstraint.Parent = MainFrame

local MainStroke = Instance.new("UIStroke")
MainStroke.Color = CurrentAccent
MainStroke.Thickness = 1.5
MainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
MainStroke.Parent = MainFrame
table.insert(DynamicUIElements.Strokes, MainStroke)

-- Header Bar (Sharp Edges)
local Header = Instance.new("Frame")
Header.Name = "Header"
Header.Size = UDim2.new(1, 0, 0, 45)
Header.BackgroundColor3 = Color3.fromRGB(25, 25, 34)
Header.BorderSizePixel = 0
Header.Parent = MainFrame

local HeaderStroke = Instance.new("UIStroke")
HeaderStroke.Color = Color3.fromRGB(45, 45, 60)
HeaderStroke.Thickness = 1
HeaderStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
HeaderStroke.Parent = Header

-- Title Label (synQ V1)
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(0, 80, 1, 0)
Title.Position = UDim2.new(0, 12, 0, 0)
Title.Text = "synQ V1"
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.TextColor3 = CurrentAccent
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.BackgroundTransparency = 1
Title.Parent = Header
table.insert(DynamicUIElements.TextButtons, Title)

-- Tab Buttons Container
local TabContainer = Instance.new("Frame")
TabContainer.Size = UDim2.new(1, -100, 0, 32)
TabContainer.Position = UDim2.new(0, 92, 0.5, -16)
TabContainer.BackgroundTransparency = 1
TabContainer.Parent = Header

local TabListLayout = Instance.new("UIListLayout")
TabListLayout.FillDirection = Enum.FillDirection.Horizontal
TabListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
TabListLayout.SortOrder = Enum.SortOrder.LayoutOrder
TabListLayout.Padding = UDim.new(0, 4)
TabListLayout.Parent = TabContainer

local function CreateTabButton(text, layoutOrder)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.23, 0, 1, 0)
    btn.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
    btn.BorderSizePixel = 0
    btn.Text = text
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 10
    btn.TextColor3 = Color3.fromRGB(140, 140, 160)
    btn.LayoutOrder = layoutOrder
    btn.Parent = TabContainer

    return btn
end

local VisualsTabBtn = CreateTabButton("Visuals", 1)
VisualsTabBtn.BackgroundColor3 = CurrentAccent
VisualsTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)

local SearchTabBtn = CreateTabButton("Search", 2)
local ExtrasTabBtn = CreateTabButton("Extras", 3)
local SettingsTabBtn = CreateTabButton("Settings", 4)

local ActiveTabObj = VisualsTabBtn

----------------------------------------------------
-- 2. SMOOTH DRAGGING & OPEN/CLOSE ANIMATIONS
----------------------------------------------------
local dragging, dragInput, dragStart, startPos

local function UpdateDrag(input)
    local delta = input.Position - dragStart
    local targetPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    TweenService:Create(MainFrame, TweenInfo.new(0.12, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = targetPos}):Play()
end

Header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

Header.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        UpdateDrag(input)
    end
end)

local function ToggleMenu()
    if MainFrame.Visible then
        local tween = TweenService:Create(MainFrame, TweenInfo.new(0.18, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
            Size = UDim2.new(0, 0, 0, 0)
        })
        tween:Play()
        tween.Completed:Connect(function()
            MainFrame.Visible = false
            MainFrame.Size = UDim2.new(0.9, 0, 0.8, 0)
        end)
    else
        MainFrame.Size = UDim2.new(0, 0, 0, 0)
        MainFrame.Visible = true
        TweenService:Create(MainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
            Size = UDim2.new(0.9, 0, 0.8, 0)
        }):Play()
    end
end

MobileToggleButton.MouseButton1Click:Connect(ToggleMenu)

----------------------------------------------------
-- 3. TAB PAGES (SCROLLABLE FOR MOBILE - SHARP)
----------------------------------------------------
local function CreatePage(name)
    local page = Instance.new("ScrollingFrame")
    page.Name = name
    page.Size = UDim2.new(1, -16, 1, -55)
    page.Position = UDim2.new(0, 8, 0, 50)
    page.BackgroundTransparency = 1
    page.BorderSizePixel = 0
    page.CanvasSize = UDim2.new(0, 0, 0, 0)
    page.AutomaticCanvasSize = Enum.AutomaticSize.Y
    page.ScrollBarThickness = 4
    page.ScrollBarImageColor3 = CurrentAccent
    page.Visible = false
    page.Parent = MainFrame

    local layout = Instance.new("UIListLayout")
    layout.SortOrder = Enum.SortOrder.LayoutOrder
    layout.Padding = UDim.new(0, 8)
    layout.Parent = page

    return page
end

local VisualsPage = CreatePage("VisualsPage")
VisualsPage.Visible = true
local SearchPage = CreatePage("SearchPage")
local ExtrasPage = CreatePage("ExtrasPage")
local SettingsPage = CreatePage("SettingsPage")

-- Dynamic Theme Refresh
local function SetThemeColor(newColor)
    CurrentAccent = newColor
    ESP_SETTINGS.FillColor = newColor

    for _, stroke in pairs(DynamicUIElements.Strokes) do
        stroke.Color = newColor
    end

    if ActiveTabObj then
        ActiveTabObj.BackgroundColor3 = newColor
    end

    Title.TextColor3 = newColor
    MobileToggleButton.TextColor3 = newColor

    for _, item in pairs(DynamicUIElements.ToggleIndicators) do
        if item.IsActive() then
            item.Frame.BackgroundColor3 = newColor
        end
    end

    for _, bar in pairs(DynamicUIElements.Sliders) do
        bar.BackgroundColor3 = newColor
    end
end

local function ResetTabs()
    VisualsPage.Visible = false
    SearchPage.Visible = false
    ExtrasPage.Visible = false
    SettingsPage.Visible = false

    local buttons = {VisualsTabBtn, SearchTabBtn, ExtrasTabBtn, SettingsTabBtn}
    for _, btn in ipairs(buttons) do
        btn.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
        btn.TextColor3 = Color3.fromRGB(140, 140, 160)
    end
end

local function SelectTab(btn, page)
    ResetTabs()
    page.Visible = true
    btn.BackgroundColor3 = CurrentAccent
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    ActiveTabObj = btn
end

VisualsTabBtn.MouseButton1Click:Connect(function() SelectTab(VisualsTabBtn, VisualsPage) end)
SearchTabBtn.MouseButton1Click:Connect(function() SelectTab(SearchTabBtn, SearchPage) end)
ExtrasTabBtn.MouseButton1Click:Connect(function() SelectTab(ExtrasTabBtn, ExtrasPage) end)
SettingsTabBtn.MouseButton1Click:Connect(function() SelectTab(SettingsTabBtn, SettingsPage) end)

----------------------------------------------------
-- 4. UI CREATOR CONTROLS (SHARP EDGES)
----------------------------------------------------
local function CreateToggle(text, defaultState, parent, callback)
    local state = defaultState
    
    local Button = Instance.new("TextButton")
    Button.Size = UDim2.new(1, 0, 0, 44)
    Button.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
    Button.AutoButtonColor = false
    Button.BorderSizePixel = 0
    Button.Text = ""
    Button.Parent = parent

    local BtnStroke = Instance.new("UIStroke")
    BtnStroke.Color = Color3.fromRGB(45, 45, 60)
    BtnStroke.Thickness = 1
    BtnStroke.Parent = Button

    local Label = Instance.new("TextLabel")
    Label.Size = UDim2.new(0.65, 0, 1, 0)
    Label.Position = UDim2.new(0, 10, 0, 0)
    Label.Text = text
    Label.Font = Enum.Font.GothamMedium
    Label.TextSize = 12
    Label.TextColor3 = Color3.fromRGB(200, 200, 220)
    Label.TextXAlignment = Enum.TextXAlignment.Left
    Label.TextWrapped = true
    Label.BackgroundTransparency = 1
    Label.Parent = Button

    local IndicatorBg = Instance.new("Frame")
    IndicatorBg.Size = UDim2.new(0, 42, 0, 24)
    IndicatorBg.Position = UDim2.new(1, -50, 0.5, -12)
    IndicatorBg.BackgroundColor3 = state and CurrentAccent or Color3.fromRGB(50, 50, 65)
    IndicatorBg.BorderSizePixel = 0
    IndicatorBg.Parent = Button

    local Dot = Instance.new("Frame")
    Dot.Size = UDim2.new(0, 18, 0, 18)
    Dot.Position = state and UDim2.new(1, -21, 0.5, -9) or UDim2.new(0, 3, 0.5, -9)
    Dot.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    Dot.BorderSizePixel = 0
    Dot.Parent = IndicatorBg

    table.insert(DynamicUIElements.ToggleIndicators, {
        Frame = IndicatorBg,
        IsActive = function() return state end
    })

    Button.MouseButton1Click:Connect(function()
        state = not state
        TweenService:Create(IndicatorBg, TweenInfo.new(0.15), {
            BackgroundColor3 = state and CurrentAccent or Color3.fromRGB(50, 50, 65)
        }):Play()
        TweenService:Create(Dot, TweenInfo.new(0.15), {
            Position = state and UDim2.new(1, -21, 0.5, -9) or UDim2.new(0, 3, 0.5, -9)
        }):Play()
        Label.TextColor3 = state and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(200, 200, 220)
        callback(state)
    end)
end

local function CreateSlider(text, minVal, maxVal, defaultVal, unit, parent, callback)
    local val = defaultVal

    local Frame = Instance.new("Frame")
    Frame.Size = UDim2.new(1, 0, 0, 54)
    Frame.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
    Frame.BorderSizePixel = 0
    Frame.Parent = parent

    local Stroke = Instance.new("UIStroke")
    Stroke.Color = Color3.fromRGB(45, 45, 60)
    Stroke.Thickness = 1
    Stroke.Parent = Frame

    local Label = Instance.new("TextLabel")
    Label.Size = UDim2.new(0.6, 0, 0, 24)
    Label.Position = UDim2.new(0, 10, 0, 4)
    Label.Text = text
    Label.Font = Enum.Font.GothamMedium
    Label.TextSize = 12
    Label.TextColor3 = Color3.fromRGB(200, 200, 220)
    Label.TextXAlignment = Enum.TextXAlignment.Left
    Label.BackgroundTransparency = 1
    Label.Parent = Frame

    local ValLabel = Instance.new("TextLabel")
    ValLabel.Size = UDim2.new(0.35, 0, 0, 24)
    ValLabel.Position = UDim2.new(0.65, -10, 0, 4)
    ValLabel.Text = tostring(defaultVal) .. " " .. unit
    ValLabel.Font = Enum.Font.GothamBold
    ValLabel.TextSize = 12
    ValLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    ValLabel.TextXAlignment = Enum.TextXAlignment.Right
    ValLabel.BackgroundTransparency = 1
    ValLabel.Parent = Frame

    local Track = Instance.new("Frame")
    Track.Size = UDim2.new(1, -20, 0, 10)
    Track.Position = UDim2.new(0, 10, 1, -18)
    Track.BackgroundColor3 = Color3.fromRGB(45, 45, 60)
    Track.BorderSizePixel = 0
    Track.Parent = Frame

    local Fill = Instance.new("Frame")
    Fill.Size = UDim2.new((defaultVal - minVal) / (maxVal - minVal), 0, 1, 0)
    Fill.BackgroundColor3 = CurrentAccent
    Fill.BorderSizePixel = 0
    Fill.Parent = Track
    table.insert(DynamicUIElements.Sliders, Fill)

    local isSliding = false

    local function Update(input)
        local pos = math.clamp((input.Position.X - Track.AbsolutePosition.X) / Track.AbsoluteSize.X, 0, 1)
        val = math.floor(minVal + (maxVal - minVal) * pos)
        Fill.Size = UDim2.new(pos, 0, 1, 0)
        ValLabel.Text = tostring(val) .. " " .. unit
        callback(val)
    end

    Track.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            isSliding = true
            Update(input)
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if isSliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            Update(input)
        end
    end)

    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            isSliding = false
        end
    end)
end

local function CreateKeybindSetting(text, defaultKey, parent, callback)
    local isBinding = false
    local currentKey = defaultKey

    local ContainerFrame = Instance.new("Frame")
    ContainerFrame.Size = UDim2.new(1, 0, 0, 44)
    ContainerFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
    ContainerFrame.BorderSizePixel = 0
    ContainerFrame.Parent = parent

    local FrameStroke = Instance.new("UIStroke")
    FrameStroke.Color = Color3.fromRGB(45, 45, 60)
    FrameStroke.Thickness = 1
    FrameStroke.Parent = ContainerFrame

    local Label = Instance.new("TextLabel")
    Label.Size = UDim2.new(0.55, 0, 1, 0)
    Label.Position = UDim2.new(0, 10, 0, 0)
    Label.Text = text
    Label.Font = Enum.Font.GothamMedium
    Label.TextSize = 12
    Label.TextColor3 = Color3.fromRGB(200, 200, 220)
    Label.TextXAlignment = Enum.TextXAlignment.Left
    Label.TextWrapped = true
    Label.BackgroundTransparency = 1
    Label.Parent = ContainerFrame

    local BindBtn = Instance.new("TextButton")
    BindBtn.Size = UDim2.new(0, 85, 0, 28)
    BindBtn.Position = UDim2.new(1, -95, 0.5, -14)
    BindBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 55)
    BindBtn.BorderSizePixel = 0
    BindBtn.Font = Enum.Font.GothamBold
    BindBtn.TextSize = 11
    BindBtn.TextColor3 = Color3.fromRGB(200, 200, 220)
    BindBtn.Text = "[" .. currentKey.Name .. "]"
    BindBtn.Parent = ContainerFrame

    BindBtn.MouseButton1Click:Connect(function()
        if isBinding then return end
        isBinding = true
        BindBtn.Text = "[...]"
        BindBtn.TextColor3 = Color3.fromRGB(255, 200, 80)

        local connection
        connection = UserInputService.InputBegan:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.Keyboard then
                currentKey = input.KeyCode
                BindBtn.Text = "[" .. currentKey.Name .. "]"
                BindBtn.TextColor3 = Color3.fromRGB(200, 200, 220)
                isBinding = false
                connection:Disconnect()
                callback(currentKey)
            end
        end)
    end)
end

-- Visuals Tab Controls
CreateToggle("Enable ESP Master Switch", ESP_SETTINGS.Enabled, VisualsPage, function(val) ESP_SETTINGS.Enabled = val end)
CreateToggle("Chams / Highlight Boxes", ESP_SETTINGS.Boxes, VisualsPage, function(val) ESP_SETTINGS.Boxes = val end)
CreateToggle("Skeleton ESP", ESP_SETTINGS.Skeleton, VisualsPage, function(val) ESP_SETTINGS.Skeleton = val end)
CreateToggle("Show Names & Tag", ESP_SETTINGS.Names, VisualsPage, function(val) ESP_SETTINGS.Names = val end)
CreateToggle("Show Health & Distance", ESP_SETTINGS.Distance, VisualsPage, function(val) ESP_SETTINGS.Distance = val end)
CreateToggle("Show Inventory Tools", ESP_SETTINGS.Inventory, VisualsPage, function(val) ESP_SETTINGS.Inventory = val end)
CreateToggle("Team Check", ESP_SETTINGS.TeamCheck, VisualsPage, function(val) ESP_SETTINGS.TeamCheck = val end)

-- Extras Tab Controls
CreateToggle("Show Dropped Items & Gear", ESP_SETTINGS.DroppedItems, ExtrasPage, function(val) ESP_SETTINGS.DroppedItems = val end)

----------------------------------------------------
-- 5. SEARCH TAB CONTROLS (ORBIT, TELEPORT, WALL CHECK)
----------------------------------------------------
local NoticeFrame = Instance.new("Frame")
NoticeFrame.Size = UDim2.new(1, 0, 0, 48)
NoticeFrame.BackgroundColor3 = Color3.fromRGB(38, 28, 20)
NoticeFrame.BorderSizePixel = 0
NoticeFrame.Parent = SearchPage

local NoticeStroke = Instance.new("UIStroke")
NoticeStroke.Color = Color3.fromRGB(220, 130, 40)
NoticeStroke.Thickness = 1
NoticeStroke.Parent = NoticeFrame

local ReminderText = Instance.new("TextLabel")
ReminderText.Size = UDim2.new(1, -16, 1, 0)
ReminderText.Position = UDim2.new(0, 8, 0, 0)
ReminderText.Text = "REMINDER: PUT REAL @USERNAME NOT DISPLAY"
ReminderText.Font = Enum.Font.GothamBold
ReminderText.TextSize = 10
ReminderText.TextColor3 = Color3.fromRGB(255, 170, 70)
ReminderText.TextWrapped = true
ReminderText.BackgroundTransparency = 1
ReminderText.Parent = NoticeFrame

local SearchBoxFrame = Instance.new("Frame")
SearchBoxFrame.Size = UDim2.new(1, 0, 0, 42)
SearchBoxFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
SearchBoxFrame.BorderSizePixel = 0
SearchBoxFrame.Parent = SearchPage

local SearchBoxStroke = Instance.new("UIStroke")
SearchBoxStroke.Color = Color3.fromRGB(45, 45, 60)
SearchBoxStroke.Thickness = 1
SearchBoxStroke.Parent = SearchBoxFrame

local SearchInput = Instance.new("TextBox")
SearchInput.Size = UDim2.new(1, -20, 1, 0)
SearchInput.Position = UDim2.new(0, 10, 0, 0)
SearchInput.PlaceholderText = "Type @username here..."
SearchInput.PlaceholderColor3 = Color3.fromRGB(100, 100, 120)
SearchInput.Text = ESP_SETTINGS.TargetUsername
SearchInput.Font = Enum.Font.GothamMedium
SearchInput.TextSize = 12
SearchInput.TextColor3 = Color3.fromRGB(255, 255, 255)
SearchInput.TextXAlignment = Enum.TextXAlignment.Left
SearchInput.BackgroundTransparency = 1
SearchInput.Parent = SearchBoxFrame

SearchInput.FocusLost:Connect(function()
    local cleanText = string.gsub(SearchInput.Text, "@", "")
    ESP_SETTINGS.TargetUsername = string.lower(cleanText)
end)

-- Teleport & Wall Check Toggles
CreateToggle("Teleport to Target", ESP_SETTINGS.TeleportEnabled, SearchPage, function(val)
    ESP_SETTINGS.TeleportEnabled = val
end)

CreateToggle("Wall Check", ESP_SETTINGS.WallCheckEnabled, SearchPage, function(val)
    ESP_SETTINGS.WallCheckEnabled = val
end)

-- Orbit Toggles & Sliders
CreateToggle("ORBIT PLAYER", ESP_SETTINGS.OrbitEnabled, SearchPage, function(val)
    ESP_SETTINGS.OrbitEnabled = val
end)

CreateSlider("Orbit Speed", 0, 100, 15, "studs/s", SearchPage, function(val)
    ESP_SETTINGS.OrbitSpeed = val
end)

CreateSlider("Orbit Distance", 5, 50, 10, "studs", SearchPage, function(val)
    ESP_SETTINGS.OrbitDistance = val
end)

----------------------------------------------------
-- 6. SETTINGS TAB (THEME SELECTOR)
----------------------------------------------------
CreateKeybindSetting("Menu Toggle Key", ESP_SETTINGS.ToggleKey, SettingsPage, function(newKey)
    ESP_SETTINGS.ToggleKey = newKey
end)

local ThemePanel = Instance.new("Frame")
ThemePanel.Size = UDim2.new(1, 0, 0, 130)
ThemePanel.BackgroundColor3 = Color3.fromRGB(28, 28, 38)
ThemePanel.BorderSizePixel = 0
ThemePanel.Parent = SettingsPage

local ThemePanelStroke = Instance.new("UIStroke")
ThemePanelStroke.Color = Color3.fromRGB(45, 45, 60)
ThemePanelStroke.Thickness = 1
ThemePanelStroke.Parent = ThemePanel

local ThemeHeaderLabel = Instance.new("TextLabel")
ThemeHeaderLabel.Size = UDim2.new(1, -20, 0, 30)
ThemeHeaderLabel.Position = UDim2.new(0, 10, 0, 4)
ThemeHeaderLabel.Text = "GUI Theme Color Accent"
ThemeHeaderLabel.Font = Enum.Font.GothamBold
ThemeHeaderLabel.TextSize = 12
ThemeHeaderLabel.TextColor3 = Color3.fromRGB(230, 230, 240)
ThemeHeaderLabel.TextXAlignment = Enum.TextXAlignment.Left
ThemeHeaderLabel.BackgroundTransparency = 1
ThemeHeaderLabel.Parent = ThemePanel

local ColorsContainer = Instance.new("Frame")
ColorsContainer.Size = UDim2.new(1, -20, 0, 80)
ColorsContainer.Position = UDim2.new(0, 10, 0, 38)
ColorsContainer.BackgroundTransparency = 1
ColorsContainer.Parent = ThemePanel

local ColorGrid = Instance.new("UIGridLayout")
ColorGrid.CellSize = UDim2.new(0.23, 0, 0, 34)
ColorGrid.CellPadding = UDim2.new(0.02, 0, 0, 8)
ColorGrid.SortOrder = Enum.SortOrder.LayoutOrder
ColorGrid.Parent = ColorsContainer

local ThemeList = {"Navy Blue", "Blue", "Red", "Green", "Orange", "Purple", "Magenta", "Yellow"}
for _, themeName in ipairs(ThemeList) do
    local colorValue = THEMES[themeName]
    
    local ThemeBtn = Instance.new("TextButton")
    ThemeBtn.Size = UDim2.new(1, 0, 1, 0)
    ThemeBtn.BackgroundColor3 = colorValue
    ThemeBtn.BorderSizePixel = 0
    ThemeBtn.Text = themeName
    ThemeBtn.Font = Enum.Font.GothamBold
    ThemeBtn.TextSize = 9
    ThemeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    ThemeBtn.Parent = ColorsContainer

    ThemeBtn.MouseButton1Click:Connect(function()
        SetThemeColor(colorValue)
    end)
end

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == ESP_SETTINGS.ToggleKey then
        ToggleMenu()
    end
end)

----------------------------------------------------
-- 7. HELPER FUNCTIONS (WALL CHECK)
----------------------------------------------------
local function IsVisible(targetPart)
    if not ESP_SETTINGS.WallCheckEnabled then return true end
    if not targetPart or not LocalPlayer.Character then return false end

    local origin = Camera.CFrame.Position
    local destination = targetPart.Position
    local direction = destination - origin

    local params = RaycastParams.new()
    params.FilterType = RaycastFilterType.Exclude
    params.FilterDescendantsInstances = {LocalPlayer.Character, targetPart.Parent}
    params.IgnoreWater = true

    local result = workspace:Raycast(origin, direction, params)
    return result == nil
end

----------------------------------------------------
-- 8. ORBIT & TELEPORT ENGINE
----------------------------------------------------
local orbitAngle = 0

RunService.RenderStepped:Connect(function(deltaTime)
    if ESP_SETTINGS.TargetUsername ~= "" then
        local targetPlayer = nil
        for _, plr in pairs(Players:GetPlayers()) do
            if string.lower(plr.Name) == ESP_SETTINGS.TargetUsername then
                targetPlayer = plr
                break
            end
        end

        if targetPlayer and targetPlayer.Character then
            local targetHead = targetPlayer.Character:FindFirstChild("Head")
            local targetRoot = targetPlayer.Character:FindFirstChild("HumanoidRootPart")

            if targetRoot and targetHead then
                local visible = IsVisible(targetHead)

                -- 1. Orbit Logic
                if ESP_SETTINGS.OrbitEnabled then
                    local myChar = LocalPlayer.Character
                    local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")

                    if myRoot then
                        orbitAngle = orbitAngle + (ESP_SETTINGS.OrbitSpeed * deltaTime)
                        local offsetX = math.cos(orbitAngle) * ESP_SETTINGS.OrbitDistance
                        local offsetZ = math.sin(orbitAngle) * ESP_SETTINGS.OrbitDistance
                        local newPos = targetRoot.Position + Vector3.new(offsetX, 0, offsetZ)
                        myRoot.CFrame = CFrame.new(newPos, targetRoot.Position)
                    end
                end

                -- 2. Teleport Logic
                if ESP_SETTINGS.TeleportEnabled and visible then
                    local myChar = LocalPlayer.Character
                    local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")

                    if myRoot then
                        myRoot.CFrame = targetRoot.CFrame * CFrame.new(0, 0, 3)
                    end
                end
            end
        end
    end
end)

----------------------------------------------------
-- 9. SKELETON & WORKSPACE ITEMS PIPELINE
----------------------------------------------------
local LineFolder = Instance.new("Folder")
LineFolder.Name = "synQ_SkeletonLines"
LineFolder.Parent = ScreenGui

local function CreateLine()
    local line = Instance.new("Frame")
    line.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    line.BorderSizePixel = 0
    line.AnchorPoint = Vector2.new(0.5, 0.5)
    line.Visible = false
    line.Parent = LineFolder
    return line
end

local function ConnectJoints(p1, p2, line, color)
    if not (p1 and p2) then line.Visible = false return end
    local pos1, vis1 = Camera:WorldToViewportPoint(p1.Position)
    local pos2, vis2 = Camera:WorldToViewportPoint(p2.Position)

    if vis1 and vis2 then
        local startVec = Vector2.new(pos1.X, pos1.Y)
        local endVec = Vector2.new(pos2.X, pos2.Y)
        local distance = (startVec - endVec).Magnitude
        local center = (startVec + endVec) / 2
        local angle = math.atan2(endVec.Y - startVec.Y, endVec.X - startVec.X)

        line.Size = UDim2.new(0, distance, 0, 1.5)
        line.Position = UDim2.new(0, center.X, 0, center.Y)
        line.Rotation = math.deg(angle)
        line.BackgroundColor3 = color
        line.Visible = true
    else
        line.Visible = false
    end
end

local function GetPlayerInventory(plr)
    local items = {}
    if plr.Character then
        for _, obj in pairs(plr.Character:GetChildren()) do
            if obj:IsA("Tool") then table.insert(items, "[E] " .. obj.Name) end
        end
    end
    local backpack = plr:FindFirstChild("Backpack")
    if backpack then
        for _, obj in pairs(backpack:GetChildren()) do
            if obj:IsA("Tool") then table.insert(items, obj.Name) end
        end
    end
    return #items == 0 and "Empty" or table.concat(items, ", ")
end

local function TrackWorkspaceItem(item)
    if item:IsA("Tool") and not item:IsDescendantOf(Players) then
        local handle = item:FindFirstChild("Handle") or item:FindFirstChildWhichIsA("BasePart")
        if handle and not Item_Cache[item] then
            local billboard = Instance.new("BillboardGui")
            billboard.Name = "synQ_ItemBillboard"
            billboard.Adornee = handle
            billboard.Size = UDim2.new(0, 200, 0, 30)
            billboard.AlwaysOnTop = true
            billboard.Enabled = false
            billboard.Parent = item

            local label = Instance.new("TextLabel")
            label.Size = UDim2.new(1, 0, 1, 0)
            label.BackgroundTransparency = 1
            label.Font = Enum.Font.GothamBold
            label.TextSize = 12
            label.TextColor3 = ESP_SETTINGS.ItemColor
            label.TextStrokeTransparency = 0.2
            label.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
            label.Parent = billboard

            Item_Cache[item] = {
                Billboard = billboard,
                Label = label,
                Part = handle
            }
        end
    end
end

for _, obj in pairs(workspace:GetDescendants()) do TrackWorkspaceItem(obj) end
workspace.DescendantAdded:Connect(TrackWorkspaceItem)
workspace.DescendantRemoving:Connect(function(obj)
    if Item_Cache[obj] then
        if Item_Cache[obj].Billboard then Item_Cache[obj].Billboard:Destroy() end
        Item_Cache[obj] = nil
    end
end)

----------------------------------------------------
-- 10. PLAYER ESP PIPELINE & RENDER LOOP
----------------------------------------------------
local function AddESP(plr)
    if plr == LocalPlayer then return end

    local function Apply(char)
        if not char then return end
        
        if ESP_Cache[plr] then
            for _, v in pairs(ESP_Cache[plr].Lines or {}) do v:Destroy() end
            if ESP_Cache[plr].Highlight then ESP_Cache[plr].Highlight:Destroy() end
            if ESP_Cache[plr].Billboard then ESP_Cache[plr].Billboard:Destroy() end
        end

        local highlight = Instance.new("Highlight")
        highlight.Name = "synQ_Highlight"
        highlight.Adornee = char
        highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
        highlight.FillTransparency = 0.5
        highlight.Enabled = false
        highlight.Parent = char

        local billboard = Instance.new("BillboardGui")
        billboard.Name = "synQ_Billboard"
        billboard.Size = UDim2.new(0, 300, 0, 80)
        billboard.StudsOffset = Vector3.new(0, 2.8, 0)
        billboard.AlwaysOnTop = true
        billboard.Enabled = false
        billboard.Parent = char

        local tagLabel = Instance.new("TextLabel")
        tagLabel.Size = UDim2.new(1, 0, 1, 0)
        tagLabel.BackgroundTransparency = 1
        tagLabel.Font = Enum.Font.GothamBold
        tagLabel.TextSize = 12
        tagLabel.TextColor3 = ESP_SETTINGS.TextColor
        tagLabel.TextStrokeTransparency = 0.2
        tagLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
        tagLabel.Parent = billboard

        local lines = {}
        for i = 1, 12 do table.insert(lines, CreateLine()) end

        ESP_Cache[plr] = {
            Highlight = highlight,
            Billboard = billboard,
            Label = tagLabel,
            Lines = lines,
            Character = char
        }
    end

    if plr.Character then Apply(plr.Character) end
    plr.CharacterAdded:Connect(Apply)
end

for _, plr in pairs(Players:GetPlayers()) do AddESP(plr) end
Players.PlayerAdded:Connect(AddESP)

Players.PlayerRemoving:Connect(function(plr)
    if ESP_Cache[plr] then
        for _, v in pairs(ESP_Cache[plr].Lines or {}) do v:Destroy() end
        if ESP_Cache[plr].Highlight then ESP_Cache[plr].Highlight:Destroy() end
        if ESP_Cache[plr].Billboard then ESP_Cache[plr].Billboard:Destroy() end
        ESP_Cache[plr] = nil
    end
end)

RunService.RenderStepped:Connect(function()
    for plr, data in pairs(ESP_Cache) do
        local char = data.Character
        local hum = char and char:FindFirstChild("Humanoid")
        local root = char and char:FindFirstChild("HumanoidRootPart")
        local head = char and char:FindFirstChild("Head")

        if char and char.Parent and root and head and hum and hum.Health > 0 then
            local isEnemy = not ESP_SETTINGS.TeamCheck or (plr.Team ~= LocalPlayer.Team)
            local isTarget = (ESP_SETTINGS.TargetUsername ~= "") and (string.lower(plr.Name) == ESP_SETTINGS.TargetUsername)
            local activeColor = isTarget and ESP_SETTINGS.TargetColor or ESP_SETTINGS.FillColor

            if ESP_SETTINGS.Enabled and isEnemy then
                data.Highlight.FillColor = activeColor
                data.Highlight.OutlineColor = isTarget and Color3.fromRGB(255, 255, 255) or ESP_SETTINGS.OutlineColor
                data.Highlight.Enabled = ESP_SETTINGS.Boxes

                data.Billboard.Adornee = head
                local dist = math.floor((root.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude)
                local hp = math.floor(hum.Health)

                local textFormat = ""
                if isTarget then textFormat = textFormat .. "[TARGET] " end
                if ESP_SETTINGS.Names then textFormat = textFormat .. plr.DisplayName .. " (@" .. plr.Name .. ")\n" end
                if ESP_SETTINGS.Distance then textFormat = textFormat .. "[" .. hp .. " HP] • " .. dist .. "m\n" end
                if ESP_SETTINGS.Inventory then textFormat = textFormat .. "Holding: " .. GetPlayerInventory(plr) end

                data.Label.Text = textFormat
                data.Label.TextColor3 = isTarget and Color3.fromRGB(255, 90, 90) or ESP_SETTINGS.TextColor
                data.Billboard.Enabled = ESP_SETTINGS.Names or ESP_SETTINGS.Distance or ESP_SETTINGS.Inventory

                if ESP_SETTINGS.Skeleton then
                    local R6 = char:FindFirstChild("Torso") ~= nil
                    if R6 then
                        ConnectJoints(head, char:FindFirstChild("Torso"), data.Lines[1], activeColor)
                        ConnectJoints(char:FindFirstChild("Torso"), char:FindFirstChild("Left Arm"), data.Lines[2], activeColor)
                        ConnectJoints(char:FindFirstChild("Torso"), char:FindFirstChild("Right Arm"), data.Lines[3], activeColor)
                        ConnectJoints(char:FindFirstChild("Torso"), char:FindFirstChild("Left Leg"), data.Lines[4], activeColor)
                        ConnectJoints(char:FindFirstChild("Torso"), char:FindFirstChild("Right Leg"), data.Lines[5], activeColor)
                        for i = 6, 12 do data.Lines[i].Visible = false end
                    else
                        ConnectJoints(head, char:FindFirstChild("UpperTorso"), data.Lines[1], activeColor)
                        ConnectJoints(char:FindFirstChild("UpperTorso"), char:FindFirstChild("LowerTorso"), data.Lines[2], activeColor)
                        ConnectJoints(char:FindFirstChild("UpperTorso"), char:FindFirstChild("LeftUpperArm"), data.Lines[3], activeColor)
                        ConnectJoints(char:FindFirstChild("LeftUpperArm"), char:FindFirstChild("LeftLowerArm"), data.Lines[4], activeColor)
                        ConnectJoints(char:FindFirstChild("UpperTorso"), char:FindFirstChild("RightUpperArm"), data.Lines[5], activeColor)
                        ConnectJoints(char:FindFirstChild("RightUpperArm"), char:FindFirstChild("RightLowerArm"), data.Lines[6], activeColor)
                        ConnectJoints(char:FindFirstChild("LowerTorso"), char:FindFirstChild("LeftUpperLeg"), data.Lines[7], activeColor)
                        ConnectJoints(char:FindFirstChild("LeftUpperLeg"), char:FindFirstChild("LeftLowerLeg"), data.Lines[8], activeColor)
                        ConnectJoints(char:FindFirstChild("LowerTorso"), char:FindFirstChild("RightUpperLeg"), data.Lines[9], activeColor)
                        ConnectJoints(char:FindFirstChild("RightUpperLeg"), char:FindFirstChild("RightLowerLeg"), data.Lines[10], activeColor)
                        for i = 11, 12 do data.Lines[i].Visible = false end
                    end
                else
                    for _, line in pairs(data.Lines) do line.Visible = false end
                end
            else
                data.Highlight.Enabled = false
                data.Billboard.Enabled = false
                for _, line in pairs(data.Lines) do line.Visible = false end
            end
        else
            data.Highlight.Enabled = false
            data.Billboard.Enabled = false
            for _, line in pairs(data.Lines) do line.Visible = false end
        end
    end

    for item, data in pairs(Item_Cache) do
        if item and item.Parent and data.Part and ESP_SETTINGS.Enabled and ESP_SETTINGS.DroppedItems then
            if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                local dist = math.floor((data.Part.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude)
                data.Label.Text = "📦 " .. item.Name .. " [" .. dist .. "m]"
                data.Billboard.Enabled = true
            else
                data.Billboard.Enabled = false
            end
        else
            if data.Billboard then data.Billboard.Enabled = false end
        end
    end
end)

Features & Information

Esp, Esp skeleton, show inventory gears, Esp distance and health, team check, player searcher, player teleport, orbit player, show dropped items and gear, menu toggle key, gui theme accent.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts