Quick actions

cmd+k|ctrl+k

Navigation

Languages

TP_Tool_v2

Snippet info

Language

Lua

Visibility

public

Author

panickyhospital950

Created

2026-04-04T02:27:38.452098Z

Updated

2026-04-04T02:27:38.452098Z

--[[
    TP TOOL v2 | Advanced Executor Teleport
    
    [RIGHT CLICK]  = TP to mouse position
    [T]            = Toggle TP on/off
    [P]            = Open player TP menu (click name to tp to them)
    [B]            = Set waypoint at current pos
    [N]            = TP to last waypoint
    [DELETE]       = Clear waypoint
    
    Coords HUD + Waypoint display + Player list
]]

-- 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()

-- character refs
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()
lp.CharacterAdded:Connect(function(c)
    c:WaitForChild("HumanoidRootPart")
    task.wait(0.2)
    grab()
end)

-- state
local enabled = true
local waypoint = nil
local playerListOpen = false

------------------------------------------------------------------------
-- GUI
------------------------------------------------------------------------
local function kill(n)
    local x = lp.PlayerGui:FindFirstChild(n)
    if x then x:Destroy() end
end

kill("TPGui")

local gui = Instance.new("ScreenGui")
gui.Name = "TPGui"
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
gui.Parent = lp.PlayerGui

-- helper
local function mkFrame(props)
    local f = Instance.new("Frame")
    f.BackgroundColor3 = props.bg or Color3.fromRGB(28,28,28)
    f.BorderSizePixel = 0
    f.Size = props.size
    f.Position = props.pos
    f.Parent = props.parent
    f.BackgroundTransparency = props.tp or 0
    if props.stroke then
        local s = Instance.new("UIStroke",f)
        s.Thickness = props.stroke
        s.Color = props.strokeColor or Color3.fromRGB(10,10,10)
    end
    return f
end

local function mkLabel(props)
    local t = Instance.new("TextLabel")
    t.BackgroundTransparency = 1
    t.Size = props.size
    t.Position = props.pos or UDim2.new()
    t.Text = props.text or ""
    t.TextColor3 = props.color or Color3.fromRGB(200,200,200)
    t.TextSize = props.tsize or 12
    t.Font = Enum.Font.Code
    t.TextXAlignment = props.ax or Enum.TextXAlignment.Left
    t.RichText = true
    t.Parent = props.parent
    t.Name = props.name or "Label"
    return t
end

-- main hud bar
local bar = mkFrame({
    size = UDim2.new(0,300,0,82),
    pos = UDim2.new(0.5,-150,1,-100),
    bg = Color3.fromRGB(22,22,22),
    parent = gui,
    stroke = 3,
    strokeColor = Color3.fromRGB(8,8,8),
})

local inner = mkFrame({
    size = UDim2.new(1,-8,1,-8),
    pos = UDim2.new(0,4,0,4),
    bg = Color3.fromRGB(38,38,38),
    parent = bar,
    stroke = 1,
    strokeColor = Color3.fromRGB(52,52,52),
})

-- status
local statusLbl = mkLabel({
    size = UDim2.new(1,-12,0,16),
    pos = UDim2.new(0,6,0,3),
    text = '<font color="#55FF55">[ TP: ON ]</font>  <font color="#888888">RClick=TP  T=Toggle</font>',
    tsize = 11,
    parent = inner,
    name = "Status",
})

-- coords
local coordsLbl = mkLabel({
    size = UDim2.new(1,-12,0,14),
    pos = UDim2.new(0,6,0,20),
    text = "Pos: 0, 0, 0",
    color = Color3.fromRGB(170,170,170),
    tsize = 11,
    parent = inner,
    name = "Coords",
})

-- target info
local targetLbl = mkLabel({
    size = UDim2.new(1,-12,0,14),
    pos = UDim2.new(0,6,0,35),
    text = '<font color="#FFFF55">Hover to see target</font>',
    tsize = 11,
    parent = inner,
    name = "Target",
})

-- waypoint info
local wpLbl = mkLabel({
    size = UDim2.new(1,-12,0,14),
    pos = UDim2.new(0,6,0,50),
    text = '<font color="#888888">WP: None  [B]=Set [N]=Go</font>',
    tsize = 10,
    parent = inner,
    name = "WP",
})

-- flash overlay
local flash = Instance.new("Frame")
flash.Size = UDim2.new(1,0,1,0)
flash.BackgroundColor3 = Color3.fromRGB(120,60,255)
flash.BackgroundTransparency = 1
flash.BorderSizePixel = 0
flash.ZIndex = 10
flash.Parent = gui

-- crosshair
local cross = mkLabel({
    size = UDim2.new(0,20,0,20),
    pos = UDim2.new(0.5,-10,0.5,-10),
    text = "+",
    color = Color3.fromRGB(140,70,255),
    tsize = 22,
    ax = Enum.TextXAlignment.Center,
    parent = gui,
    name = "Cross",
})
cross.TextYAlignment = Enum.TextYAlignment.Center
cross.TextStrokeTransparency = 0.3

------------------------------------------------------------------------
-- PLAYER LIST (toggle with P)
------------------------------------------------------------------------
local plrFrame = mkFrame({
    size = UDim2.new(0,200,0,0),
    pos = UDim2.new(0,12,0.5,-100),
    bg = Color3.fromRGB(22,22,22),
    parent = gui,
    stroke = 2,
    strokeColor = Color3.fromRGB(60,30,100),
})
plrFrame.Visible = false
plrFrame.ClipsDescendants = true
plrFrame.Name = "PlrList"

local plrTitle = mkLabel({
    size = UDim2.new(1,0,0,22),
    pos = UDim2.new(0,8,0,2),
    text = '<font color="#AA55FF">[ PLAYERS ]</font>',
    tsize = 12,
    parent = plrFrame,
})

local plrScroll = Instance.new("ScrollingFrame")
plrScroll.Size = UDim2.new(1,-4,1,-26)
plrScroll.Position = UDim2.new(0,2,0,24)
plrScroll.BackgroundTransparency = 1
plrScroll.BorderSizePixel = 0
plrScroll.ScrollBarThickness = 4
plrScroll.ScrollBarImageColor3 = Color3.fromRGB(100,50,160)
plrScroll.CanvasSize = UDim2.new(0,0,0,0)
plrScroll.Parent = plrFrame

local plrLayout = Instance.new("UIListLayout")
plrLayout.SortOrder = Enum.SortOrder.Name
plrLayout.Padding = UDim.new(0,2)
plrLayout.Parent = plrScroll

local function refreshPlrList()
    for _,c in ipairs(plrScroll:GetChildren()) do
        if c:IsA("TextButton") then c:Destroy() end
    end
    local list = plrs:GetPlayers()
    local count = 0
    for _, p in ipairs(list) do
        if p ~= lp then
            count += 1
            local btn = Instance.new("TextButton")
            btn.Size = UDim2.new(1,-8,0,22)
            btn.BackgroundColor3 = Color3.fromRGB(35,35,35)
            btn.BorderSizePixel = 0
            btn.Text = "  " .. p.DisplayName .. " (@" .. p.Name .. ")"
            btn.TextColor3 = Color3.fromRGB(200,200,200)
            btn.TextSize = 11
            btn.Font = Enum.Font.Code
            btn.TextXAlignment = Enum.TextXAlignment.Left
            btn.Parent = plrScroll

            Instance.new("UIStroke", btn).Color = Color3.fromRGB(50,50,50)

            btn.MouseEnter:Connect(function()
                btn.BackgroundColor3 = Color3.fromRGB(60,30,100)
            end)
            btn.MouseLeave:Connect(function()
                btn.BackgroundColor3 = Color3.fromRGB(35,35,35)
            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))
                    targetLbl.Text = '<font color="#AA55FF">TP >> ' .. p.DisplayName .. '</font>'
                end
            end)
        end
    end
    plrScroll.CanvasSize = UDim2.new(0,0,0,count * 24)
    plrFrame.Size = UDim2.new(0,200,0, math.min(count * 24 + 28, 250))
end

local function togglePlrList()
    playerListOpen = not playerListOpen
    plrFrame.Visible = playerListOpen
    if playerListOpen then refreshPlrList() end
end

------------------------------------------------------------------------
-- TP FUNCTION
------------------------------------------------------------------------
function doTP(pos)
    if not grab() then return end
    
    -- flash
    flash.BackgroundTransparency = 0.4
    ts:Create(flash, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
        BackgroundTransparency = 1
    }):Play()
    
    -- tp
    hrp.CFrame = CFrame.new(pos + Vector3.new(0,0.5,0))
end

------------------------------------------------------------------------
-- INPUT
------------------------------------------------------------------------
uis.InputBegan:Connect(function(inp, gpe)
    if gpe then return end
    
    if inp.KeyCode == Enum.KeyCode.T then
        enabled = not enabled
        if enabled then
            statusLbl.Text = '<font color="#55FF55">[ TP: ON ]</font>  <font color="#888888">RClick=TP  T=Toggle</font>'
            cross.TextColor3 = Color3.fromRGB(140,70,255)
        else
            statusLbl.Text = '<font color="#FF5555">[ TP: OFF ]</font>  <font color="#888888">RClick=TP  T=Toggle</font>'
            cross.TextColor3 = Color3.fromRGB(100,100,100)
        end
    end
    
    if inp.KeyCode == Enum.KeyCode.P then
        togglePlrList()
    end
    
    if inp.KeyCode == Enum.KeyCode.B then
        if grab() then
            waypoint = hrp.Position
            local w = waypoint
            wpLbl.Text = string.format('<font color="#55FF55">WP: %d,%d,%d</font>  <font color="#888">[N]=Go [Del]=Clear</font>', math.floor(w.X), math.floor(w.Y), math.floor(w.Z))
        end
    end
    
    if inp.KeyCode == Enum.KeyCode.N then
        if waypoint then
            doTP(waypoint)
            targetLbl.Text = '<font color="#55FF55">TP >> Waypoint</font>'
        end
    end
    
    if inp.KeyCode == Enum.KeyCode.Delete then
        waypoint = nil
        wpLbl.Text = '<font color="#888888">WP: None  [B]=Set [N]=Go</font>'
    end
end)

-- RIGHT CLICK to TP
mouse.Button2Down:Connect(function()
    if not enabled then return end
    local hit = mouse.Hit
    if hit then
        doTP(hit.Position)
        local p = hit.Position
        targetLbl.Text = string.format('<font color="#AA55FF">TP >> %d, %d, %d</font>', math.floor(p.X), math.floor(p.Y), math.floor(p.Z))
    end
end)

------------------------------------------------------------------------
-- UPDATE
------------------------------------------------------------------------
rs.RenderStepped:Connect(function()
    if not grab() then return end
    
    local p = hrp.Position
    coordsLbl.Text = string.format("Pos: %d, %d, %d", math.floor(p.X), math.floor(p.Y), math.floor(p.Z))
    
    -- show mouse target coords
    if enabled then
        local mh = mouse.Hit
        if mh then
            local mp = mh.Position
            local dist = (mp - p).Magnitude
            targetLbl.Text = string.format(
                '<font color="#FFFF55">Target: %d,%d,%d</font>  <font color="#888">Dist: %d</font>',
                math.floor(mp.X), math.floor(mp.Y), math.floor(mp.Z), math.floor(dist)
            )
        end
    end
end)

print("[TP v2] Loaded | RClick=TP | T=Toggle | P=Players | B=SetWP | N=GoWP")
INFO