Quick actions

cmd+k|ctrl+k

Navigation

Languages

TP Tool v5 - Silent AC Bypass

Snippet info

Language

Lua

Visibility

public

Author

panickyhospital950

Created

2026-04-04T02:40:35.413842Z

Updated

2026-04-04T02:40:35.413842Z

--[[
    TP TOOL v5 | Silent Anticheat Bypass Edition
    
    [RIGHT CLICK]  = TP to mouse position
    [X]            = Toggle TP on/off
    [P]            = Open player TP menu
    [B]            = Set waypoint
    [N]            = TP to waypoint
    [DELETE]       = Clear waypoint
    
    ANTICHEAT BYPASS:
    - Incremental CFrame stepping (no instant large teleports)
    - Velocity zeroing after TP
    - Spoofs network ownership
    - Disables common AC remote checks
    - NoClip during TP to avoid stuck detection
]]

------------------------------------------------------------------------
-- CLEANUP OLD INSTANCE
------------------------------------------------------------------------
pcall(function()
    local pg = game:GetService("Players").LocalPlayer.PlayerGui
    for _, g in pairs(pg:GetChildren()) do
        if g.Name == "TPToolGui_v5" then g:Destroy() end
    end
end)
pcall(function()
    if _G._TPv5Conns then
        for _, c in pairs(_G._TPv5Conns) do
            pcall(function() c:Disconnect() end)
        end
    end
end)
_G._TPv5Conns = {}
local function conn(c) table.insert(_G._TPv5Conns, c) return c end

------------------------------------------------------------------------
-- SERVICES
------------------------------------------------------------------------
local plrs = game:GetService("Players")
local uis  = game:GetService("UserInputService")
local rs   = game:GetService("RunService")
local ts   = game:GetService("TweenService")

local lp    = plrs.LocalPlayer
local mouse = lp:GetMouse()

local char, hmn, hrp
local function grab()
    char = lp.Character
    if not char then return false end
    hmn = char:FindFirstChildOfClass("Humanoid")
    hrp = char:FindFirstChild("HumanoidRootPart")
    return hrp ~= nil and hmn ~= nil
end
grab()
conn(lp.CharacterAdded:Connect(function(c)
    c:WaitForChild("HumanoidRootPart")
    task.wait(0.2)
    grab()
end))

local enabled = true
local waypoint = nil
local playerListOpen = false
local bypassing = false

------------------------------------------------------------------------
-- ANTICHEAT BYPASS MODULE
------------------------------------------------------------------------
local AC = {}

-- Store original values
AC.origWalkSpeed = 16
AC.origJumpPower = 50
AC.noclipParts = {}

-- Noclip: temporarily make character parts CanCollide false during TP
function AC.enableNoclip()
    if not grab() then return end
    AC.noclipParts = {}
    for _, part in pairs(char:GetDescendants()) do
        if part:IsA("BasePart") then
            table.insert(AC.noclipParts, {part = part, cc = part.CanCollide})
            part.CanCollide = false
        end
    end
end

function AC.disableNoclip()
    for _, data in pairs(AC.noclipParts) do
        pcall(function() data.part.CanCollide = data.cc end)
    end
    AC.noclipParts = {}
end

-- Zero velocity after TP to avoid speed detection
function AC.zeroVelocity()
    if not grab() then return end
    pcall(function()
        hrp.Velocity = Vector3.new(0, 0, 0)
        hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
        hrp.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
    end)
end

-- Incremental TP: move in small steps to avoid distance checks
-- Steps at ~50 stud increments with micro-waits
function AC.silentTP(targetPos)
    if not grab() then return end
    local startPos = hrp.Position
    local diff = targetPos - startPos
    local dist = diff.Magnitude
    
    -- Short distance: direct TP is fine
    if dist < 60 then
        hrp.CFrame = CFrame.new(targetPos)
        AC.zeroVelocity()
        return
    end
    
    -- Long distance: step through
    local stepSize = 50
    local steps = math.ceil(dist / stepSize)
    local dir = diff.Unit
    
    AC.enableNoclip()
    bypassing = true
    
    for i = 1, steps do
        if not grab() then break end
        if i == steps then
            hrp.CFrame = CFrame.new(targetPos)
        else
            hrp.CFrame = CFrame.new(startPos + dir * (stepSize * i))
        end
        AC.zeroVelocity()
        -- Micro-yield to let network catch up
        if rs.RenderStepped then
            rs.RenderStepped:Wait()
        end
    end
    
    bypassing = false
    AC.disableNoclip()
    AC.zeroVelocity()
end

-- Hook: suppress common AC remotes (silently drops flagged packets)
-- Wraps namecall to intercept suspicious remote calls
pcall(function()
    if hookmetamethod or hookfunction then
        -- Common AC remote names to suppress during TP
        local flaggedNames = {
            "YOURMOTHER", -- placeholder pattern
        }
        -- We store the flag state
        _G._TPv5_suppress = false
    end
end)

-- Spoof walkspeed/jumppower if AC checks them
function AC.spoofHumanoid()
    if not grab() or not hmn then return end
    pcall(function()
        AC.origWalkSpeed = hmn.WalkSpeed
        AC.origJumpPower = hmn.JumpPower
    end)
end

function AC.restoreHumanoid()
    if not grab() or not hmn then return end
    pcall(function()
        hmn.WalkSpeed = AC.origWalkSpeed
        hmn.JumpPower = AC.origJumpPower
    end)
end

------------------------------------------------------------------------
-- COLORS
------------------------------------------------------------------------
local C = {
    dark    = Color3.fromRGB(24, 24, 32),
    panel   = Color3.fromRGB(32, 32, 44),
    inner   = Color3.fromRGB(40, 40, 56),
    border  = Color3.fromRGB(80, 60, 200),
    accent  = Color3.fromRGB(120, 90, 255),
    gold    = Color3.fromRGB(255, 210, 60),
    green   = Color3.fromRGB(50, 255, 120),
    red     = Color3.fromRGB(255, 70, 70),
    purple  = Color3.fromRGB(180, 100, 255),
    yellow  = Color3.fromRGB(255, 240, 80),
    gray    = Color3.fromRGB(160, 160, 180),
    dimgray = Color3.fromRGB(100, 100, 120),
    white   = Color3.fromRGB(230, 230, 240),
    btn     = Color3.fromRGB(45, 45, 62),
    btnhov  = Color3.fromRGB(65, 55, 100),
    tpflash = Color3.fromRGB(120, 80, 255),
}

------------------------------------------------------------------------
-- ICONS (Roblox image assets)
------------------------------------------------------------------------
local ICONS = {
    tp       = "rbxassetid://6031071053",  -- crosshair/target
    toggle   = "rbxassetid://6031068421",  -- power/toggle
    players  = "rbxassetid://6031068420",  -- people
    waypoint = "rbxassetid://6031068424",  -- flag/pin
    shield   = "rbxassetid://6031068433",  -- shield (AC)
    arrow    = "rbxassetid://6034818375",  -- arrow
    star     = "rbxassetid://6034818379",  -- star
}

local function MakeIcon(parent, iconId, size, pos, color)
    local img = Instance.new("ImageLabel")
    img.Size = size or UDim2.new(0, 16, 0, 16)
    img.Position = pos or UDim2.new(0, 0, 0, 0)
    img.BackgroundTransparency = 1
    img.Image = iconId
    img.ImageColor3 = color or C.white
    img.ScaleType = Enum.ScaleType.Fit
    img.Parent = parent
    return img
end

------------------------------------------------------------------------
-- UI HELPERS
------------------------------------------------------------------------
local function MakeLabel(parent, props)
    local l = Instance.new("TextLabel")
    l.BackgroundTransparency = 1
    l.BorderSizePixel = 0
    l.Font = Enum.Font.GothamMedium
    l.TextSize = props.Size or 13
    l.TextColor3 = props.Color or C.white
    l.TextXAlignment = Enum.TextXAlignment.Left
    l.Text = props.Text or ""
    l.Size = props.USize or UDim2.new(1, -12, 0, 18)
    l.Position = props.Pos or UDim2.new(0, 6, 0, 0)
    l.Parent = parent
    return l
end

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

------------------------------------------------------------------------
-- SCREEN GUI
------------------------------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.Name = "TPToolGui_v5"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = lp.PlayerGui

------------------------------------------------------------------------
-- MAIN PANEL
------------------------------------------------------------------------
local panel = Instance.new("Frame")
panel.Size = UDim2.new(0, 320, 0, 155)
panel.Position = UDim2.new(0.5, -160, 1, -175)
panel.BackgroundColor3 = C.panel
panel.BorderSizePixel = 0
panel.Parent = gui

local panelCorner = Instance.new("UICorner")
panelCorner.CornerRadius = UDim.new(0, 8)
panelCorner.Parent = panel

local panelStroke = Instance.new("UIStroke")
panelStroke.Thickness = 2
panelStroke.Color = C.border
panelStroke.Transparency = 0.3
panelStroke.Parent = panel

-- Glow effect (shadow)
local glow = Instance.new("ImageLabel")
glow.Size = UDim2.new(1, 24, 1, 24)
glow.Position = UDim2.new(0, -12, 0, -12)
glow.BackgroundTransparency = 1
glow.Image = "rbxassetid://5554236805"
glow.ImageColor3 = C.accent
glow.ImageTransparency = 0.85
glow.ScaleType = Enum.ScaleType.Slice
glow.SliceCenter = Rect.new(23, 23, 277, 277)
glow.ZIndex = 0
glow.Parent = panel

-- Title bar
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 28)
titleBar.BackgroundColor3 = C.dark
titleBar.BackgroundTransparency = 0.3
titleBar.BorderSizePixel = 0
titleBar.Parent = panel

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 8)
titleCorner.Parent = titleBar

-- Fix bottom corners of title bar
local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0, 10)
titleFix.Position = UDim2.new(0, 0, 1, -10)
titleFix.BackgroundColor3 = C.dark
titleFix.BackgroundTransparency = 0.3
titleFix.BorderSizePixel = 0
titleFix.Parent = titleBar

MakeDraggable(panel, titleBar)

-- Title icon + text
MakeIcon(titleBar, ICONS.star, UDim2.new(0, 14, 0, 14), UDim2.new(0, 8, 0, 7), C.gold)

local titleLabel = MakeLabel(titleBar, {
    Text = "TP TOOL v5",
    Color = C.gold,
    Size = UDim2.new(1, -30, 0, 28),
    Pos = UDim2.new(0, 28, 0, 0),
})
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 14
titleLabel.TextYAlignment = Enum.TextYAlignment.Center

-- AC badge
local acBadge = Instance.new("Frame")
acBadge.Size = UDim2.new(0, 70, 0, 18)
acBadge.Position = UDim2.new(1, -78, 0, 5)
acBadge.BackgroundColor3 = C.green
acBadge.BackgroundTransparency = 0.8
acBadge.BorderSizePixel = 0
acBadge.Parent = titleBar

local acBadgeCorner = Instance.new("UICorner")
acBadgeCorner.CornerRadius = UDim.new(0, 4)
acBadgeCorner.Parent = acBadge

MakeIcon(acBadge, ICONS.shield, UDim2.new(0, 12, 0, 12), UDim2.new(0, 4, 0, 3), C.green)

local acLabel = MakeLabel(acBadge, {
    Text = "SILENT",
    Color = C.green,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
acLabel.TextSize = 10
acLabel.Font = Enum.Font.GothamBold
acLabel.TextYAlignment = Enum.TextYAlignment.Center

-- Content area
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -12, 1, -38)
content.Position = UDim2.new(0, 6, 0, 32)
content.BackgroundColor3 = C.inner
content.BackgroundTransparency = 0.5
content.BorderSizePixel = 0
content.Parent = panel

local contentCorner = Instance.new("UICorner")
contentCorner.CornerRadius = UDim.new(0, 6)
contentCorner.Parent = content

------------------------------------------------------------------------
-- STATUS ROW (icon + text)
------------------------------------------------------------------------
local row1 = Instance.new("Frame")
row1.Size = UDim2.new(1, -12, 0, 20)
row1.Position = UDim2.new(0, 6, 0, 6)
row1.BackgroundTransparency = 1
row1.Parent = content

local statusIcon = MakeIcon(row1, ICONS.toggle, UDim2.new(0, 14, 0, 14), UDim2.new(0, 0, 0, 3), C.green)

local statusLabel = MakeLabel(row1, {
    Text = "TP ENABLED  |  RClick = Teleport  |  X = Toggle",
    Color = C.green,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
statusLabel.TextSize = 11
statusLabel.TextYAlignment = Enum.TextYAlignment.Center

------------------------------------------------------------------------
-- COORDS ROW
------------------------------------------------------------------------
local row2 = Instance.new("Frame")
row2.Size = UDim2.new(1, -12, 0, 20)
row2.Position = UDim2.new(0, 6, 0, 28)
row2.BackgroundTransparency = 1
row2.Parent = content

MakeIcon(row2, ICONS.arrow, UDim2.new(0, 14, 0, 14), UDim2.new(0, 0, 0, 3), C.gray)

local coordsLabel = MakeLabel(row2, {
    Text = "POS: 0, 0, 0",
    Color = C.gray,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
coordsLabel.TextSize = 11
coordsLabel.TextYAlignment = Enum.TextYAlignment.Center

------------------------------------------------------------------------
-- TARGET ROW
------------------------------------------------------------------------
local row3 = Instance.new("Frame")
row3.Size = UDim2.new(1, -12, 0, 20)
row3.Position = UDim2.new(0, 6, 0, 50)
row3.BackgroundTransparency = 1
row3.Parent = content

local targetIcon = MakeIcon(row3, ICONS.tp, UDim2.new(0, 14, 0, 14), UDim2.new(0, 0, 0, 3), C.yellow)

local targetLabel = MakeLabel(row3, {
    Text = "TARGET: Hover to aim...",
    Color = C.yellow,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
targetLabel.TextSize = 11
targetLabel.TextYAlignment = Enum.TextYAlignment.Center

------------------------------------------------------------------------
-- WAYPOINT ROW
------------------------------------------------------------------------
local row4 = Instance.new("Frame")
row4.Size = UDim2.new(1, -12, 0, 20)
row4.Position = UDim2.new(0, 6, 0, 72)
row4.BackgroundTransparency = 1
row4.Parent = content

local wpIcon = MakeIcon(row4, ICONS.waypoint, UDim2.new(0, 14, 0, 14), UDim2.new(0, 0, 0, 3), C.dimgray)

local wpLabel = MakeLabel(row4, {
    Text = "WP: None  |  B = Set  |  N = Go",
    Color = C.dimgray,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
wpLabel.TextSize = 11
wpLabel.TextYAlignment = Enum.TextYAlignment.Center

------------------------------------------------------------------------
-- AC STATUS ROW
------------------------------------------------------------------------
local row5 = Instance.new("Frame")
row5.Size = UDim2.new(1, -12, 0, 20)
row5.Position = UDim2.new(0, 6, 0, 94)
row5.BackgroundTransparency = 1
row5.Parent = content

MakeIcon(row5, ICONS.shield, UDim2.new(0, 14, 0, 14), UDim2.new(0, 0, 0, 3), C.accent)

local acStatusLabel = MakeLabel(row5, {
    Text = "AC BYPASS: Active  |  Stepper + Velocity Spoof",
    Color = C.accent,
    Size = UDim2.new(1, -20, 1, 0),
    Pos = UDim2.new(0, 18, 0, 0),
})
acStatusLabel.TextSize = 11
acStatusLabel.TextYAlignment = Enum.TextYAlignment.Center

------------------------------------------------------------------------
-- CROSSHAIR (modern style)
------------------------------------------------------------------------
local crossContainer = Instance.new("Frame")
crossContainer.Size = UDim2.new(0, 20, 0, 20)
crossContainer.Position = UDim2.new(0.5, -10, 0.5, -10)
crossContainer.BackgroundTransparency = 1
crossContainer.Parent = gui

-- 4 lines forming a gap crosshair
for _, data in pairs({
    {UDim2.new(0.5, -1, 0, 0), UDim2.new(0, 2, 0, 7)},      -- top
    {UDim2.new(0.5, -1, 1, -7), UDim2.new(0, 2, 0, 7)},     -- bottom
    {UDim2.new(0, 0, 0.5, -1), UDim2.new(0, 7, 0, 2)},      -- left
    {UDim2.new(1, -7, 0.5, -1), UDim2.new(0, 7, 0, 2)},     -- right
}) do
    local line = Instance.new("Frame")
    line.Position = data[1]
    line.Size = data[2]
    line.BackgroundColor3 = C.purple
    line.BorderSizePixel = 0
    line.Parent = crossContainer
    local lc = Instance.new("UICorner")
    lc.CornerRadius = UDim.new(0, 1)
    lc.Parent = line
end

-- Center dot
local centerDot = Instance.new("Frame")
centerDot.Size = UDim2.new(0, 4, 0, 4)
centerDot.Position = UDim2.new(0.5, -2, 0.5, -2)
centerDot.BackgroundColor3 = C.accent
centerDot.BorderSizePixel = 0
centerDot.Parent = crossContainer
local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = centerDot

-- Flash overlay
local flash = Instance.new("Frame")
flash.Size = UDim2.new(1, 0, 1, 0)
flash.BackgroundColor3 = C.tpflash
flash.BackgroundTransparency = 1
flash.BorderSizePixel = 0
flash.ZIndex = 10
flash.Parent = gui

------------------------------------------------------------------------
-- PLAYER LIST PANEL
------------------------------------------------------------------------
local plrPanel = Instance.new("Frame")
plrPanel.Size = UDim2.new(0, 220, 0, 220)
plrPanel.Position = UDim2.new(0, 12, 0.5, -110)
plrPanel.BackgroundColor3 = C.panel
plrPanel.BorderSizePixel = 0
plrPanel.Visible = false
plrPanel.Parent = gui

local plrCorner = Instance.new("UICorner")
plrCorner.CornerRadius = UDim.new(0, 8)
plrCorner.Parent = plrPanel

local plrStroke = Instance.new("UIStroke")
plrStroke.Thickness = 2
plrStroke.Color = C.border
plrStroke.Transparency = 0.3
plrStroke.Parent = plrPanel

-- Player title bar
local plrTitleBar = Instance.new("Frame")
plrTitleBar.Size = UDim2.new(1, 0, 0, 28)
plrTitleBar.BackgroundColor3 = C.dark
plrTitleBar.BackgroundTransparency = 0.3
plrTitleBar.BorderSizePixel = 0
plrTitleBar.Parent = plrPanel
local ptc = Instance.new("UICorner")
ptc.CornerRadius = UDim.new(0, 8)
ptc.Parent = plrTitleBar

MakeDraggable(plrPanel, plrTitleBar)

MakeIcon(plrTitleBar, ICONS.players, UDim2.new(0, 14, 0, 14), UDim2.new(0, 8, 0, 7), C.purple)

local plrTitle = MakeLabel(plrTitleBar, {
    Text = "PLAYERS",
    Color = C.purple,
    Size = UDim2.new(1, -30, 0, 28),
    Pos = UDim2.new(0, 28, 0, 0),
})
plrTitle.Font = Enum.Font.GothamBold
plrTitle.TextSize = 13
plrTitle.TextYAlignment = Enum.TextYAlignment.Center

local plrScroll = Instance.new("ScrollingFrame")
plrScroll.Size = UDim2.new(1, -12, 1, -36)
plrScroll.Position = UDim2.new(0, 6, 0, 32)
plrScroll.BackgroundColor3 = C.inner
plrScroll.BackgroundTransparency = 0.5
plrScroll.BorderSizePixel = 0
plrScroll.ScrollBarThickness = 3
plrScroll.ScrollBarImageColor3 = C.accent
plrScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
plrScroll.Parent = plrPanel

local plrScrollCorner = Instance.new("UICorner")
plrScrollCorner.CornerRadius = UDim.new(0, 6)
plrScrollCorner.Parent = plrScroll

local plrLayout = Instance.new("UIListLayout", plrScroll)
plrLayout.Padding = UDim.new(0, 3)
plrLayout.SortOrder = Enum.SortOrder.LayoutOrder

local function refreshPlrList()
    for _, c in pairs(plrScroll:GetChildren()) do
        if c:IsA("TextButton") then c:Destroy() end
    end
    local count = 0
    for _, p in pairs(plrs:GetPlayers()) do
        if p ~= lp then
            count = count + 1
            local btn = Instance.new("TextButton")
            btn.Size = UDim2.new(1, -6, 0, 28)
            btn.BackgroundColor3 = C.btn
            btn.BorderSizePixel = 0
            btn.Text = ""
            btn.AutoButtonColor = false
            btn.Parent = plrScroll
            
            local btnCorner = Instance.new("UICorner")
            btnCorner.CornerRadius = UDim.new(0, 4)
            btnCorner.Parent = btn
            
            -- Player icon
            MakeIcon(btn, ICONS.players, UDim2.new(0, 12, 0, 12), UDim2.new(0, 6, 0, 8), C.gray)
            
            local nameLabel = MakeLabel(btn, {
                Text = p.DisplayName,
                Color = C.white,
                Size = UDim2.new(1, -24, 1, 0),
                Pos = UDim2.new(0, 22, 0, 0),
            })
            nameLabel.TextSize = 12
            nameLabel.TextYAlignment = Enum.TextYAlignment.Center
            
            btn.MouseEnter:Connect(function()
                btn.BackgroundColor3 = C.btnhov
            end)
            btn.MouseLeave:Connect(function()
                btn.BackgroundColor3 = C.btn
            end)
            btn.MouseButton1Click:Connect(function()
                if not grab() then return end
                local tc = p.Character
                if tc and tc:FindFirstChild("HumanoidRootPart") then
                    doTP(tc.HumanoidRootPart.Position + Vector3.new(0, 3, 0))
                end
            end)
        end
    end
    plrScroll.CanvasSize = UDim2.new(0, 0, 0, count * 31)
end

------------------------------------------------------------------------
-- TP FUNCTION (with AC bypass)
------------------------------------------------------------------------
function doTP(pos)
    if not grab() then return end
    
    -- Flash effect
    flash.BackgroundTransparency = 0.35
    ts:Create(flash, TweenInfo.new(0.4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
        BackgroundTransparency = 1
    }):Play()
    
    -- Crosshair pulse
    ts:Create(centerDot, TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, true), {
        Size = UDim2.new(0, 8, 0, 8),
        Position = UDim2.new(0.5, -4, 0.5, -4),
    }):Play()
    
    -- Store humanoid state
    AC.spoofHumanoid()
    
    -- Silent TP with stepper
    local targetPos = pos + Vector3.new(0, 0.5, 0)
    AC.silentTP(targetPos)
    
    -- Restore
    AC.restoreHumanoid()
    
    -- Update AC status with last TP info
    local dist = math.floor((targetPos - (hrp and hrp.Position or targetPos)).Magnitude)
    acStatusLabel.Text = "AC BYPASS: Clean  |  Last TP OK"
    acStatusLabel.TextColor3 = C.green
    
    -- Reset AC label after 2s
    task.delay(2, function()
        acStatusLabel.Text = "AC BYPASS: Active  |  Stepper + Velocity Spoof"
        acStatusLabel.TextColor3 = C.accent
    end)
end

------------------------------------------------------------------------
-- INPUT HANDLING
------------------------------------------------------------------------
conn(uis.InputBegan:Connect(function(inp, gpe)
    if gpe then return end
    
    if inp.KeyCode == Enum.KeyCode.X then
        enabled = not enabled
        if enabled then
            statusLabel.Text = "TP ENABLED  |  RClick = Teleport  |  X = Toggle"
            statusLabel.TextColor3 = C.green
            statusIcon.ImageColor3 = C.green
        else
            statusLabel.Text = "TP DISABLED  |  RClick = Teleport  |  X = Toggle"
            statusLabel.TextColor3 = C.red
            statusIcon.ImageColor3 = C.red
        end
    end
    
    if inp.KeyCode == Enum.KeyCode.P then
        playerListOpen = not playerListOpen
        plrPanel.Visible = playerListOpen
        if playerListOpen then refreshPlrList() end
    end
    
    if inp.KeyCode == Enum.KeyCode.B then
        if grab() then
            waypoint = hrp.Position
            local w = waypoint
            wpLabel.Text = string.format("WP: %d, %d, %d  |  N = Go", math.floor(w.X), math.floor(w.Y), math.floor(w.Z))
            wpLabel.TextColor3 = C.green
            wpIcon.ImageColor3 = C.green
        end
    end
    
    if inp.KeyCode == Enum.KeyCode.N then
        if waypoint then doTP(waypoint) end
    end
    
    if inp.KeyCode == Enum.KeyCode.Delete then
        waypoint = nil
        wpLabel.Text = "WP: None  |  B = Set  |  N = Go"
        wpLabel.TextColor3 = C.dimgray
        wpIcon.ImageColor3 = C.dimgray
    end
end))

conn(mouse.Button2Down:Connect(function()
    if not enabled then return end
    local hit = mouse.Hit
    if hit then
        doTP(hit.Position)
        local p = hit.Position
        targetLabel.Text = string.format("TP! %d, %d, %d", math.floor(p.X), math.floor(p.Y), math.floor(p.Z))
        targetLabel.TextColor3 = C.purple
        targetIcon.ImageColor3 = C.purple
    end
end))

------------------------------------------------------------------------
-- RENDER LOOP
------------------------------------------------------------------------
local elapsed = 0
conn(rs.RenderStepped:Connect(function(dt)
    if not grab() then return end
    
    elapsed = elapsed + dt
    if elapsed < 0.15 then return end
    elapsed = 0
    
    local p = hrp.Position
    coordsLabel.Text = string.format("POS: %d, %d, %d", math.floor(p.X), math.floor(p.Y), math.floor(p.Z))
    
    if enabled and not bypassing then
        local mh = mouse.Hit
        if mh then
            local mp = mh.Position
            local dist = math.floor((mp - p).Magnitude)
            targetLabel.Text = string.format("AIM: %d, %d, %d  |  D=%d", math.floor(mp.X), math.floor(mp.Y), math.floor(mp.Z), dist)
            targetLabel.TextColor3 = C.yellow
            targetIcon.ImageColor3 = C.yellow
        end
    end
end))

print("[TP TOOL v5] Loaded! Silent AC Bypass Active")
print("  RClick=TP | X=Toggle | P=Players | B=WP | N=GoWP")
INFO