Zeros help V1
Key RequiredUniversal

Zeros help V1

Universal Scriptzero05000zero05000 1.8K views 3.8K executesUpdated Dec 23, 2025
5.0/ 5(3 votes)
30100% Positive
Lua Script•952 lines (31960 chars)
--// zeros help V1.2 — Studio - executors - works in both!
--//i like eggs (this is all commented by Ai and gui by Ai some bug fixes n stuff by me :D)
--// made for mobile but works just fineon pc (yes and console)


--=============================
-- Services & Locals
--=============================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local Teams = game:GetService("Teams")

local LP = Players.LocalPlayer
local PlayerGui = LP:WaitForChild("PlayerGui")

local function getChar(plr)
    plr = plr or LP
    local c = plr.Character or plr.CharacterAdded:Wait()
    return c
end

local function getHum(plr)
    local c = getChar(plr)
    return c:WaitForChild("Humanoid")
end

local function getRoot(plr)
    local c = getChar(plr)
    return c:WaitForChild("HumanoidRootPart")
end

--=============================
-- UI Helpers (rounded, stroke, drag, toggles)
--=============================
local function roundify(inst, radius)
    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, radius or 8)
    c.Parent = inst
    return c
end

local function strokify(inst, thickness, transparency)
    local s = Instance.new("UIStroke")
    s.Thickness = thickness or 1
    s.Transparency = transparency or 0.2
    s.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
    s.Parent = inst
    return s
end

local function padding(inst, l,t,r,b)
    local p = Instance.new("UIPadding")
    p.PaddingLeft = UDim.new(0, l or 8)
    p.PaddingTop = UDim.new(0, t or 8)
    p.PaddingRight = UDim.new(0, r or 8)
    p.PaddingBottom = UDim.new(0, b or 8)
    p.Parent = inst
    return p
end

local function makeButton(parent, text)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -16, 0, 34)
    btn.BackgroundColor3 = Color3.fromRGB(48,48,48)
    btn.Text = ""
    btn.AutoButtonColor = false
    btn.Parent = parent
    roundify(btn, 10)
    strokify(btn, 1, 0.4)

    local lbl = Instance.new("TextLabel")
    lbl.BackgroundTransparency = 1
    lbl.Size = UDim2.new(1, -44, 1, 0)
    lbl.Position = UDim2.new(0, 36, 0, 0)
    lbl.Font = Enum.Font.GothamMedium
    lbl.TextSize = 14
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.TextColor3 = Color3.fromRGB(235,235,235)
    lbl.Text = text
    lbl.Parent = btn

    -- Green indicator dot (left)
    local dot = Instance.new("Frame")
    dot.Size = UDim2.new(0, 12, 0, 12)
    dot.Position = UDim2.new(0, 12, 0.5, -6)
    dot.BackgroundColor3 = Color3.fromRGB(60, 180, 75)
    dot.Visible = false
    dot.Parent = btn
    roundify(dot, 6)

    -- Hover/press feedback
    btn.MouseEnter:Connect(function() btn.BackgroundColor3 = Color3.fromRGB(54,54,54) end)
    btn.MouseLeave:Connect(function() btn.BackgroundColor3 = Color3.fromRGB(48,48,48) end)
    btn.MouseButton1Down:Connect(function() btn.BackgroundColor3 = Color3.fromRGB(64,64,64) end)
    btn.MouseButton1Up:Connect(function() btn.BackgroundColor3 = Color3.fromRGB(54,54,54) end)

    return btn, dot, lbl
end

local function makeInput(parent, placeholder, width)
    local box = Instance.new("TextBox")
    box.Size = UDim2.new(0, width or 120, 1, -10)
    box.Position = UDim2.new(1, -(width or 120) - 10, 0, 5)
    box.BackgroundColor3 = Color3.fromRGB(36,36,36)
    box.ClearTextOnFocus = false
    box.PlaceholderText = placeholder or ""
    box.Text = ""
    box.TextColor3 = Color3.fromRGB(240,240,240)
    box.Font = Enum.Font.Gotham
    box.TextSize = 14
    box.Parent = parent
    roundify(box, 8)
    strokify(box, 1, 0.4)
    padding(box, 10,0,10,0)
    return box
end

local function makeDropdown(parent, width)
    local holder = Instance.new("Frame")
    holder.Size = UDim2.new(0, width or 160, 1, -10)
    holder.Position = UDim2.new(1, -(width or 160) - 10, 0, 5)
    holder.BackgroundColor3 = Color3.fromRGB(36,36,36)
    holder.Parent = parent
    roundify(holder, 8)
    strokify(holder, 1, 0.4)

    local current = Instance.new("TextLabel")
    current.BackgroundTransparency = 1
    current.Size = UDim2.new(1, -30, 1, 0)
    current.Position = UDim2.new(0, 10, 0, 0)
    current.Font = Enum.Font.Gotham
    current.TextSize = 14
    current.TextColor3 = Color3.fromRGB(240,240,240)
    current.TextXAlignment = Enum.TextXAlignment.Left
    current.Text = "Select..."
    current.Parent = holder

    local expand = Instance.new("TextButton")
    expand.Size = UDim2.new(0, 30, 1, 0)
    expand.Position = UDim2.new(1, -30, 0, 0)
    expand.BackgroundTransparency = 1
    expand.Text = "▼"
    expand.TextColor3 = Color3.fromRGB(220,220,220)
    expand.Parent = holder

    local list = Instance.new("Frame")
    list.Size = UDim2.new(1, 0, 0, 160)
    list.Position = UDim2.new(0, 0, 1, 6)
    list.BackgroundColor3 = Color3.fromRGB(36,36,36)
    list.Visible = false
    list.Parent = holder
    roundify(list, 8)
    strokify(list, 1, 0.4)

    local sf = Instance.new("ScrollingFrame")
    sf.Size = UDim2.new(1, -8, 1, -8)
    sf.Position = UDim2.new(0, 4, 0, 4)
    sf.BackgroundTransparency = 1
    sf.ScrollBarThickness = 6
    sf.Parent = list

    local uiList = Instance.new("UIListLayout")
    uiList.FillDirection = Enum.FillDirection.Vertical
    uiList.Padding = UDim.new(0, 6)
    uiList.Parent = sf

    local function setOpen(v)
        list.Visible = v
        expand.Text = v and "▲" or "▼"
    end

    expand.MouseButton1Click:Connect(function()
        setOpen(not list.Visible)
    end)

    local selectedValue = nil

    local function addOption(txt, value)
        local opt = Instance.new("TextButton")
        opt.Size = UDim2.new(1, -6, 0, 26)
        opt.BackgroundColor3 = Color3.fromRGB(48,48,48)
        opt.TextColor3 = Color3.fromRGB(235,235,235)
        opt.Text = txt
        opt.Parent = sf
        roundify(opt, 6)
        strokify(opt, 1, 0.5)
        opt.MouseButton1Click:Connect(function()
            selectedValue = value
            current.Text = txt
            setOpen(false)
        end)
    end

    return {
        holder = holder,
        open = function() setOpen(true) end,
        close = function() setOpen(false) end,
        setText = function(t) current.Text = t end,
        get = function() return selectedValue end,
        clear = function()
            for _,c in ipairs(sf:GetChildren()) do
                if c:IsA("TextButton") then c:Destroy() end
            end
            selectedValue = nil
            current.Text = "Select..."
        end,
        add = addOption,
    }
end

local function makeTabButton(parent, name, index)
    local tb = Instance.new("TextButton")
    tb.Size = UDim2.new(0, 120, 1, 0)
    tb.Position = UDim2.new(0, (index-1)*122, 0, 0)
    tb.BackgroundColor3 = Color3.fromRGB(52,52,52)
    tb.Text = name
    tb.TextColor3 = Color3.fromRGB(240,240,240)
    tb.Font = Enum.Font.GothamMedium
    tb.TextSize = 14
    tb.AutoButtonColor = false
    tb.Parent = parent
    roundify(tb, 10)
    strokify(tb, 1, 0.4)
    return tb
end

local function makeScroll(parent)
    local sf = Instance.new("ScrollingFrame")
    sf.BackgroundTransparency = 1
    sf.Size = UDim2.new(1, -16, 1, -16)
    sf.Position = UDim2.new(0, 8, 0, 8)
    sf.ScrollBarThickness = 6
    sf.Parent = parent
    local layout = Instance.new("UIListLayout")
    layout.FillDirection = Enum.FillDirection.Vertical
    layout.Padding = UDim.new(0, 10)
    layout.Parent = sf
    return sf
end

--=============================
-- ScreenGui + Window
--=============================
local Gui = Instance.new("ScreenGui")
Gui.Name = "ZerosHelpV1_2"
Gui.ResetOnSpawn = false
Gui.IgnoreGuiInset = true
Gui.Parent = PlayerGui

local Window = Instance.new("Frame")
Window.Size = UDim2.new(0, 540, 0, 360)
Window.Position = UDim2.new(0.5, -270, 0.5, -180)
Window.BackgroundColor3 = Color3.fromRGB(26,26,26)
Window.Parent = Gui
roundify(Window, 12)
strokify(Window, 1, 0.25)

-- Top bar
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, -16, 0, 36)
TopBar.Position = UDim2.new(0, 8, 0, 8)
TopBar.BackgroundColor3 = Color3.fromRGB(18,18,18)
TopBar.Parent = Window
roundify(TopBar, 10)
strokify(TopBar, 1, 0.35)
padding(TopBar, 10, 0, 10, 0)

local Title = Instance.new("TextLabel")
Title.BackgroundTransparency = 1
Title.Size = UDim2.new(1, -120, 1, 0)
Title.Position = UDim2.new(0, 6, 0, 0)
Title.Font = Enum.Font.GothamSemibold
Title.TextSize = 16
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.TextColor3 = Color3.fromRGB(240,240,240)
Title.Text = "zeros help V1.2"
Title.Parent = TopBar

-- Minimize (blue dash)
local MinBtn = Instance.new("TextButton")
MinBtn.Size = UDim2.new(0, 36, 1, -8)
MinBtn.Position = UDim2.new(1, -88, 0, 4)
MinBtn.BackgroundColor3 = Color3.fromRGB(0,114,255)
MinBtn.TextColor3 = Color3.fromRGB(255,255,255)
MinBtn.Text = "—"
MinBtn.TextScaled = true
MinBtn.AutoButtonColor = false
MinBtn.Parent = TopBar
roundify(MinBtn, 8)

-- Close (red X)
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 36, 1, -8)
CloseBtn.Position = UDim2.new(1, -44, 0, 4)
CloseBtn.BackgroundColor3 = Color3.fromRGB(232, 17, 35)
CloseBtn.TextColor3 = Color3.fromRGB(255,255,255)
CloseBtn.Text = "X"
CloseBtn.TextScaled = true
CloseBtn.AutoButtonColor = false
CloseBtn.Parent = TopBar
roundify(CloseBtn, 8)

-- Drag window
do
    local dragging, dragStart, startPos
    TopBar.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            dragStart = input.Position
            startPos = Window.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then dragging = false end
            end)
        end
    end)
    TopBar.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            local delta = input.Position - dragStart
            Window.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)
end

-- Tabs bar
local TabsBar = Instance.new("Frame")
TabsBar.Size = UDim2.new(1, -16, 0, 36)
TabsBar.Position = UDim2.new(0, 8, 0, 56)
TabsBar.BackgroundColor3 = Color3.fromRGB(20,20,20)
TabsBar.Parent = Window
roundify(TabsBar, 10)
strokify(TabsBar, 1, 0.3)
padding(TabsBar, 10,0,10,0)

-- Content area
local Content = Instance.new("Frame")
Content.Size = UDim2.new(1, -16, 1, -108)
Content.Position = UDim2.new(0, 8, 0, 100)
Content.BackgroundColor3 = Color3.fromRGB(16,16,16)
Content.Parent = Window
roundify(Content, 12)
strokify(Content, 1, 0.25)

-- Individual tabs (frames)
local Tabs = {}
for _,name in ipairs({"Movement","Visual","Teleport","Misc"}) do
    local f = Instance.new("Frame")
    f.Visible = false
    f.BackgroundTransparency = 1
    f.Size = UDim2.new(1,0,1,0)
    f.Parent = Content
    Tabs[name] = f
end

-- Make tab buttons
local TabButtons = {}
local currentTab = nil
local function switchTab(name)
    for n,frame in pairs(Tabs) do frame.Visible = (n == name) end
    for n,btn in pairs(TabButtons) do
        btn.BackgroundColor3 = (n == name) and Color3.fromRGB(72,72,72) or Color3.fromRGB(52,52,52)
    end
    currentTab = name
end

local names = {"Movement","Visual","Teleport","Misc"}
for i,n in ipairs(names) do
    local b = makeTabButton(TabsBar, n, i)
    TabButtons[n] = b
    b.MouseButton1Click:Connect(function() switchTab(n) end)
end
switchTab("Movement")

-- Scroll containers inside each tab
local MovementScroll = makeScroll(Tabs["Movement"])
local VisualScroll   = makeScroll(Tabs["Visual"])
local TeleportScroll = makeScroll(Tabs["Teleport"])
local MiscScroll     = makeScroll(Tabs["Misc"])

-- Minimize / Close behavior
local minimized = false
MinBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    if minimized then
        Content.Visible = false
        TabsBar.Visible = false
        Window:TweenSize(UDim2.new(0, 260, 0, 60), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
    else
        Window:TweenSize(UDim2.new(0, 540, 0, 360), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true)
        task.wait(0.22)
        TabsBar.Visible = true
        Content.Visible = true
    end
end)
CloseBtn.MouseButton1Click:Connect(function()
    Gui:Destroy()
end)

--=============================
-- State
--=============================
local toggles = {
    speed = false,
    jump = false,
    fly = false,
    infjump = false,
    espOutline = false,
    espName = false,
    fullbright = false,
    clicktp = false,
    aimbot = false,
}
local values = {
    speed = 24,
    jump = 50,
    flyspeed = 60,
    brightness = 100,
}
local flyY = 0
local flyBV -- BodyVelocity
local ascendMobile, descendMobile

--=============================
-- Utility
--=============================
local function numOrDefault(txt, default)
    local n = tonumber(txt)
    if n then return n end
    return default
end

local function isEnemy(other)
    if other == LP then return false end
    if Teams and LP.Team ~= nil and other.Team ~= nil then
        if other.Team == LP.Team then return false end
    end
    return true
end

--=============================
-- Movement Tab
--=============================
do
    -- Speed
    do
        local btn, dot = makeButton(MovementScroll, "Speed")
        local input = makeInput(btn, "speed value", 120)
        input.Text = tostring(values.speed)
        btn.MouseButton1Click:Connect(function()
            toggles.speed = not toggles.speed
            dot.Visible = toggles.speed
            values.speed = numOrDefault(input.Text, values.speed)
            if toggles.speed then
                getHum().WalkSpeed = values.speed
            else
                getHum().WalkSpeed = 16
            end
        end)
        input.FocusLost:Connect(function()
            values.speed = numOrDefault(input.Text, values.speed)
            if toggles.speed then getHum().WalkSpeed = values.speed end
        end)
    end

    -- Jump
    do
        local btn, dot = makeButton(MovementScroll, "Jump Height")
        local input = makeInput(btn, "jump height", 120)
        input.Text = tostring(values.jump)
        btn.MouseButton1Click:Connect(function()
            toggles.jump = not toggles.jump
            dot.Visible = toggles.jump
            values.jump = numOrDefault(input.Text, values.jump)
            if toggles.jump then
                getHum().UseJumpPower = true
                getHum().JumpPower = values.jump
            else
                getHum().JumpPower = 50
            end
        end)
        input.FocusLost:Connect(function()
            values.jump = numOrDefault(input.Text, values.jump)
            if toggles.jump then
                getHum().UseJumpPower = true
                getHum().JumpPower = values.jump
            end
        end)
    end

    -- Fly (WASD + mobile joystick). Space = up, LeftControl = down. Mobile ▲ ▼.
    do
        local btn, dot = makeButton(MovementScroll, "Fly")
        local input = makeInput(btn, "fly speed value", 120)
        input.Text = tostring(values.flyspeed)

        -- Mobile ascend/descend buttons
        local mobilePanel = Instance.new("Frame")
        mobilePanel.Size = UDim2.new(0, 96, 0, 36)
        mobilePanel.Position = UDim2.new(1, -96-140, 0, 5)
        mobilePanel.BackgroundColor3 = Color3.fromRGB(36,36,36)
        mobilePanel.Visible = true
        mobilePanel.Parent = btn
        roundify(mobilePanel, 8)
        strokify(mobilePanel, 1, 0.4)

        ascendMobile = Instance.new("TextButton")
        ascendMobile.Size = UDim2.new(0.5, -6, 1, -8)
        ascendMobile.Position = UDim2.new(0, 4, 0, 4)
        ascendMobile.BackgroundColor3 = Color3.fromRGB(48,48,48)
        ascendMobile.Text = "▲"
        ascendMobile.TextColor3 = Color3.fromRGB(235,235,235)
        ascendMobile.Parent = mobilePanel
        roundify(ascendMobile, 6)

        descendMobile = Instance.new("TextButton")
        descendMobile.Size = UDim2.new(0.5, -6, 1, -8)
        descendMobile.Position = UDim2.new(0.5, 2, 0, 4)
        descendMobile.BackgroundColor3 = Color3.fromRGB(48,48,48)
        descendMobile.Text = "▼"
        descendMobile.TextColor3 = Color3.fromRGB(235,235,235)
        descendMobile.Parent = mobilePanel
        roundify(descendMobile, 6)

        local rising, falling = false, false
        ascendMobile.MouseButton1Down:Connect(function() rising = true end)
        ascendMobile.MouseButton1Up:Connect(function() rising = false end)
        descendMobile.MouseButton1Down:Connect(function() falling = true end)
        descendMobile.MouseButton1Up:Connect(function() falling = false end)

        UserInputService.InputBegan:Connect(function(input, gpe)
            if gpe then return end
            if input.KeyCode == Enum.KeyCode.Space then flyY = 1 end
            if input.KeyCode == Enum.KeyCode.LeftControl then flyY = -1 end
        end)
        UserInputService.InputEnded:Connect(function(input, gpe)
            if input.KeyCode == Enum.KeyCode.Space or input.KeyCode == Enum.KeyCode.LeftControl then
                flyY = 0
            end
        end)

        btn.MouseButton1Click:Connect(function()
            toggles.fly = not toggles.fly
            dot.Visible = toggles.fly
            values.flyspeed = numOrDefault(input.Text, values.flyspeed)

            local hum = getHum()
            local root = getRoot()
            if toggles.fly then
                if not flyBV then
                    flyBV = Instance.new("BodyVelocity")
                    flyBV.MaxForce = Vector3.new(1e5,1e5,1e5)
                    flyBV.Velocity = Vector3.zero
                    flyBV.Parent = root
                end
                hum.PlatformStand = true
            else
                if flyBV then flyBV:Destroy(); flyBV = nil end
                hum.PlatformStand = false
            end
        end)

        input.FocusLost:Connect(function()
            values.flyspeed = numOrDefault(input.Text, values.flyspeed)
        end)

        RunService.RenderStepped:Connect(function()
            if toggles.fly and flyBV then
                local hum = getHum()
                local dir = hum.MoveDirection -- WASD / mobile joystick
                local dy = 0
                -- mobile holds
                if ascendMobile and descendMobile then
                    if UserInputService.TouchEnabled then
                        if ascendMobile and ascendMobile.Active then end
                    end
                end
                -- combine PC + mobile
                if flyY ~= 0 then dy = flyY end
                if ascendMobile and descendMobile then
                    -- simple polling of rising/falling
                    if ascendMobile and ascendMobile.Parent and ascendMobile.Parent.Visible then
                        -- rising/falling flags set by button press handlers
                    end
                end
                if dy == 0 then
                    -- Check mobile flags
                    -- Rising/falling defined above
                end

                -- Read mobile flags
                local yAdd = 0
                if ascendMobile and ascendMobile.Parent then
                    -- use rising/falling booleans
                    yAdd = (rising and 1 or 0) + (falling and -1 or 0)
                end

                local v = (dir * values.flyspeed) + Vector3.new(0, (flyY ~= 0 and (flyY*values.flyspeed) or (yAdd*values.flyspeed)), 0)
                flyBV.Velocity = v
            end
        end)
    end

    -- Infinite Jump
    do
        local btn, dot = makeButton(MovementScroll, "Infinite Jump")
        local jumping = false
        btn.MouseButton1Click:Connect(function()
            toggles.infjump = not toggles.infjump
            dot.Visible = toggles.infjump
        end)
        UserInputService.JumpRequest:Connect(function()
            if toggles.infjump then
                local hum = getHum()
                hum:ChangeState(Enum.HumanoidStateType.Jumping)
                hum:ChangeState(Enum.HumanoidStateType.Seated) -- quick state flip helps on some rigs
                hum:ChangeState(Enum.HumanoidStateType.Jumping)
            end
        end)
    end
end

--=============================
-- Visual Tab
--=============================
local highlights = {}
local nameTags = {}

local function addHighlight(plr)
    if plr == LP then return end
    if highlights[plr] then return end
    local c = plr.Character
    if not c then return end
    local h = Instance.new("Highlight")
    h.Adornee = c
    h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    h.FillTransparency = 1
    h.OutlineTransparency = 0
    h.OutlineColor = Color3.fromRGB(0, 190, 255)
    h.Enabled = toggles.espOutline
    h.Parent = c
    highlights[plr] = h
end

local function removeHighlight(plr)
    local h = highlights[plr]
    if h then h:Destroy() end
    highlights[plr] = nil
end

local function addNameTag(plr)
    if plr == LP then return end
    if nameTags[plr] then return end
    local c = plr.Character
    if not c then return end
    local head = c:FindFirstChild("Head")
    if not head then return end

    local bg = Instance.new("BillboardGui")
    bg.Name = "ZeroNameTag"
    bg.Size = UDim2.new(0, 200, 0, 30)
    bg.StudsOffset = Vector3.new(0, 3, 0)
    bg.AlwaysOnTop = true
    bg.Adornee = head
    bg.Parent = head

    local inner = Instance.new("Frame")
    inner.Size = UDim2.new(1, 0, 1, 0)
    inner.BackgroundColor3 = Color3.fromRGB(20,20,20)
    inner.BackgroundTransparency = 0.25
    inner.Parent = bg
    roundify(inner, 8)
    strokify(inner, 1, 0.4)

    local txt = Instance.new("TextLabel")
    txt.BackgroundTransparency = 1
    txt.Size = UDim2.new(1, -10, 1, 0)
    txt.Position = UDim2.new(0, 5, 0, 0)
    txt.Font = Enum.Font.GothamSemibold
    txt.TextSize = 14
    txt.TextColor3 = Color3.fromRGB(255,255,255)
    txt.Text = plr.Name
    txt.Parent = inner

    bg.Enabled = toggles.espName
    nameTags[plr] = bg
end

local function removeNameTag(plr)
    local t = nameTags[plr]
    if t then t:Destroy() end
    nameTags[plr] = nil
end

-- Full bright original backup
local originalLighting = {
    Brightness = Lighting.Brightness,
    Ambient = Lighting.Ambient,
    OutdoorAmbient = Lighting.OutdoorAmbient,
    ClockTime = Lighting.ClockTime,
    ColorShift_Top = Lighting.ColorShift_Top,
    ColorShift_Bottom = Lighting.ColorShift_Bottom,
    FogEnd = Lighting.FogEnd,
}

do
    -- ESP Outline
    local btn, dot = makeButton(VisualScroll, "ESP Outline (Players)")
    btn.MouseButton1Click:Connect(function()
        toggles.espOutline = not toggles.espOutline
        dot.Visible = toggles.espOutline
        for _,plr in ipairs(Players:GetPlayers()) do
            if toggles.espOutline then addHighlight(plr) else removeHighlight(plr) end
        end
    end)

    -- ESP Name Tags
    local btn2, dot2 = makeButton(VisualScroll, "ESP Name Tags")
    btn2.MouseButton1Click:Connect(function()
        toggles.espName = not toggles.espName
        dot2.Visible = toggles.espName
        for _,plr in ipairs(Players:GetPlayers()) do
            if toggles.espName then addNameTag(plr) else removeNameTag(plr) end
        end
    end)

    Players.PlayerAdded:Connect(function(plr)
        plr.CharacterAdded:Connect(function()
            if toggles.espOutline then addHighlight(plr) end
            if toggles.espName then addNameTag(plr) end
        end)
    end)
    Players.PlayerRemoving:Connect(function(plr)
        removeHighlight(plr)
        removeNameTag(plr)
    end)

    -- Full Bright (% 1-100)
    local btn3, dot3 = makeButton(VisualScroll, "Full Bright")
    local input = makeInput(btn3, "% value 1-100", 120)
    input.Text = tostring(values.brightness)
    local function applyFullBright(pct)
        pct = math.clamp(pct or 100, 1, 100)
        local s = pct/100
        Lighting.Brightness = 2 + 6*s
        Lighting.Ambient = Color3.fromRGB(160,160,160)
        Lighting.OutdoorAmbient = Color3.fromRGB(160,160,160)
        Lighting.ClockTime = 14
        Lighting.ColorShift_Top = Color3.fromRGB(0,0,0)
        Lighting.ColorShift_Bottom = Color3.fromRGB(0,0,0)
        Lighting.FogEnd = 100000
    end
    btn3.MouseButton1Click:Connect(function()
        toggles.fullbright = not toggles.fullbright
        dot3.Visible = toggles.fullbright
        values.brightness = numOrDefault(input.Text, values.brightness)
        if toggles.fullbright then
            applyFullBright(values.brightness)
        else
            for k,v in pairs(originalLighting) do
                if Lighting[k] ~= nil then
                    Lighting[k] = v
                end
            end
        end
    end)
    input.FocusLost:Connect(function()
        values.brightness = numOrDefault(input.Text, values.brightness)
        if toggles.fullbright then applyFullBright(values.brightness) end
    end)
end

--=============================
-- Teleport Tab
--=============================
do
    -- Player TP (type name)
    do
        local btn, dot, lbl = makeButton(TeleportScroll, "Player TP (by name)")
        local input = makeInput(btn, "player name", 160)
        btn.MouseButton1Click:Connect(function()
            local name = input.Text
            if name and #name > 0 then
                for _,plr in ipairs(Players:GetPlayers()) do
                    if plr.Name:lower():sub(1,#name) == name:lower() then
                        local root = getRoot()
                        local targetRoot = getRoot(plr)
                        root.CFrame = targetRoot.CFrame + Vector3.new(0,3,0)
                        break
                    end
                end
            end
        end)
    end

    -- Random player TP
    do
        local btn = makeButton(TeleportScroll, "Random Player TP")
        btn.MouseButton1Click:Connect(function()
            local others = {}
            for _,plr in ipairs(Players:GetPlayers()) do
                if plr ~= LP then table.insert(others, plr) end
            end
            if #others > 0 then
                local choice = others[math.random(1, #others)]
                local root = getRoot()
                root.CFrame = getRoot(choice).CFrame + Vector3.new(0,3,0)
            end
        end)
    end

    -- Player TP (dropdown select)
    do
        local btn = makeButton(TeleportScroll, "Player TP (dropdown)")
        local dd = makeDropdown(btn, 200)
        local function refreshDD()
            dd.clear()
            for _,plr in ipairs(Players:GetPlayers()) do
                if plr ~= LP then dd.add(plr.Name, plr) end
            end
        end
        refreshDD()
        Players.PlayerAdded:Connect(refreshDD)
        Players.PlayerRemoving:Connect(refreshDD)

        btn.MouseButton1Click:Connect(function()
            local sel = dd.get()
            if sel and sel.Character and sel.Character:FindFirstChild("HumanoidRootPart") then
                local root = getRoot()
                root.CFrame = sel.Character.HumanoidRootPart.CFrame + Vector3.new(0,3,0)
            end
        end)
    end

    -- Click TP
    do
        local btn, dot = makeButton(TeleportScroll, "Click TP (toggle)")
        btn.MouseButton1Click:Connect(function()
            toggles.clicktp = not toggles.clicktp
            dot.Visible = toggles.clicktp
        end)
        local mouse = LP:GetMouse()
        mouse.Button1Down:Connect(function()
            if toggles.clicktp then
                local hit = mouse.Hit
                if hit then
                    getRoot().CFrame = CFrame.new(hit.Position + Vector3.new(0,3,0))
                end
            end
        end)
        -- Simple mobile tap support
        UserInputService.TouchTap:Connect(function(pos, processed)
            if toggles.clicktp and not processed then
                local cam = workspace.CurrentCamera
                local unitRay = cam:ViewportPointToRay(pos.X, pos.Y)
                local ray = Ray.new(unitRay.Origin, unitRay.Direction * 1000)
                local part, position = workspace:FindPartOnRay(ray, getChar())
                if position then
                    getRoot().CFrame = CFrame.new(position + Vector3.new(0,3,0))
                end
            end
        end)
    end
end

--=============================
-- Misc Tab
--=============================
do
    -- Heal self
    do
        local btn = makeButton(MiscScroll, "Heal Player (You)")
        btn.MouseButton1Click:Connect(function()
            local hum = getHum()
            hum.Health = hum.MaxHealth
        end)
    end

    -- Aimbot (closest visible enemy; LOS check)
    do
        local btn, dot = makeButton(MiscScroll, "Aimbot (closest visible enemy)")
        btn.MouseButton1Click:Connect(function()
            toggles.aimbot = not toggles.aimbot
            dot.Visible = toggles.aimbot
        end)

        local function getClosestVisibleEnemyHead()
            local cam = workspace.CurrentCamera
            if not cam then return nil end
            local myRoot = getRoot()
            local closest, bestDist = nil, math.huge

            for _,plr in ipairs(Players:GetPlayers()) do
                if isEnemy(plr) and plr.Character and plr.Character:FindFirstChild("Head") then
                    local head = plr.Character.Head
                    local hum = plr.Character:FindFirstChildOfClass("Humanoid")

                    if hum and hum.Health > 0 then
                        local rayParams = RaycastParams.new()
                        rayParams.FilterType = Enum.RaycastFilterType.Blacklist
                        -- ignore own character and camera so we don't hit them
                        rayParams.FilterDescendantsInstances = { getChar(), workspace.CurrentCamera }

                        local origin = cam.CFrame.Position
                        local direction = (head.Position - origin)
                        local result = workspace:Raycast(origin, direction, rayParams)

                        -- If the ray hit something, ensure it belongs to the candidate player's character (i.e. no wall in between)
                        if result and result.Instance and result.Instance:IsDescendantOf(plr.Character) then
                            local dist = (head.Position - myRoot.Position).Magnitude
                            if dist < bestDist then
                                bestDist = dist
                                closest = head
                            end
                        end
                    end
                end
            end

            return closest
        end

        RunService.RenderStepped:Connect(function()
            if toggles.aimbot then
                local cam = workspace.CurrentCamera
                if not cam then return end
                local targetHead = getClosestVisibleEnemyHead()
                if targetHead then
                    local lookAt = CFrame.new(cam.CFrame.Position, targetHead.Position)
                    cam.CFrame = cam.CFrame:Lerp(lookAt, 0.25)
                end
            end
        end)
    end
end

--=============================
-- Live ESP maintenance (keep up with character spawns)
--=============================
Players.PlayerAdded:Connect(function(plr)
    plr.CharacterAdded:Connect(function()
        if toggles.espOutline then addHighlight(plr) end
        if toggles.espName then addNameTag(plr) end
    end)
end)
for _,plr in ipairs(Players:GetPlayers()) do
    plr.CharacterAdded:Connect(function()
        if toggles.espOutline then addHighlight(plr) end
        if toggles.espName then addNameTag(plr) end
    end)
end

Features & Information

zeros help V1.2 Movement speed jump height fly infinite jump Visual ESP outline players ESP name tags Full bright Teleport Player TP (By name) Random player TP Player TP (dropdown) Click TP Misc Heal player (You) Aimbot (closest enemy)
#mobile#Universal#Fly#Aimbot#ESP

Community Comments (3)

jorik1111jorik1111Dec 23, 2025

WWW

JonhzingamerJonhzingamerDec 24, 2025

rizz

JonhzingamerJonhzingamerDec 24, 2025

what yhe sigma read the final good boy

More Scripts for Universal Scripts