Quick actions

cmd+k|ctrl+k

Navigation

Languages

TP Tool v4

Snippet info

Language

Lua

Visibility

public

Author

panickyhospital950

Created

2026-04-04T02:35:55.337016Z

Updated

2026-04-04T02:35:55.337016Z

--[[
    TP TOOL v4 | Executor Teleport System
    
    [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
]]

-- DESTROY OLD GUI FIRST
pcall(function()
    local pg = game:GetService("Players").LocalPlayer.PlayerGui
    for _, g in pairs(pg:GetChildren()) do
        if g.Name == "TPToolGui" then g:Destroy() end
    end
end)
pcall(function()
    if _G._TPToolConns then
        for _, c in pairs(_G._TPToolConns) do pcall(function() c:Disconnect() end) end
    end
end)
_G._TPToolConns = {}

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

local c1 = lp.CharacterAdded:Connect(function(c)
    c:WaitForChild("HumanoidRootPart")
    task.wait(0.2)
    grab()
end)
table.insert(_G._TPToolConns, c1)

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

------------------------------------------------------------------------
-- COLORS (Minecraft dirt theme)
------------------------------------------------------------------------
local COL_DARK   = Color3.fromRGB(30, 20, 10)
local COL_MED    = Color3.fromRGB(60, 40, 20)
local COL_LIGHT  = Color3.fromRGB(80, 55, 30)
local COL_BORDER = Color3.fromRGB(20, 12, 5)
local COL_ACCENT = Color3.fromRGB(110, 80, 45)
local COL_GOLD   = Color3.fromRGB(255, 200, 60)
local COL_GREEN  = Color3.fromRGB(85, 255, 85)
local COL_RED    = Color3.fromRGB(255, 85, 85)
local COL_PURPLE = Color3.fromRGB(200, 120, 255)
local COL_YELLOW = Color3.fromRGB(255, 255, 85)
local COL_GRAY   = Color3.fromRGB(180, 180, 180)
local COL_DIMGRAY= Color3.fromRGB(130, 130, 130)
local COL_WHITE  = Color3.fromRGB(220, 220, 220)
local COL_BTN    = Color3.fromRGB(50, 35, 18)
local COL_BTNHOV = Color3.fromRGB(90, 55, 25)

------------------------------------------------------------------------
-- HELPER: make MC-style label (blocky look via Code font)
------------------------------------------------------------------------
local function MakeLabel(parent, props)
    local l = Instance.new("TextLabel")
    l.BackgroundTransparency = 1
    l.BorderSizePixel = 0
    l.Font = Enum.Font.Code
    l.TextSize = props.Size or 14
    l.TextColor3 = props.Color or COL_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

------------------------------------------------------------------------
-- DRAGGABLE
------------------------------------------------------------------------
local function MakeDraggable(frame, handle)
    handle = handle or frame
    local dragging = false
    local dragStart, startPos
    
    local c2 = 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)
    table.insert(_G._TPToolConns, c2)
    
    local c3 = 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)
    table.insert(_G._TPToolConns, c3)
end

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

-- main panel
local panel = Instance.new("Frame")
panel.Size = UDim2.new(0, 310, 0, 120)
panel.Position = UDim2.new(0.5, -155, 1, -140)
panel.BackgroundColor3 = COL_MED
panel.BorderSizePixel = 0
panel.Parent = gui

local border1 = Instance.new("UIStroke")
border1.Thickness = 4
border1.Color = COL_BORDER
border1.Parent = panel

local inner = Instance.new("Frame")
inner.Size = UDim2.new(1, -8, 1, -8)
inner.Position = UDim2.new(0, 4, 0, 4)
inner.BackgroundColor3 = COL_LIGHT
inner.BorderSizePixel = 0
inner.Parent = panel

local innerStroke = Instance.new("UIStroke")
innerStroke.Thickness = 2
innerStroke.Color = COL_ACCENT
innerStroke.Parent = inner

-- content area
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -8, 1, -24)
content.Position = UDim2.new(0, 4, 0, 20)
content.BackgroundColor3 = COL_DARK
content.BackgroundTransparency = 0.3
content.BorderSizePixel = 0
content.Parent = inner

-- drag handle
local dragBar = Instance.new("Frame")
dragBar.Size = UDim2.new(1, 0, 0, 20)
dragBar.BackgroundTransparency = 1
dragBar.BorderSizePixel = 0
dragBar.Parent = inner
MakeDraggable(panel, dragBar)

-- title
local titleLabel = MakeLabel(inner, {
    Text = "⛏ TP TOOL v4",
    Color = COL_GOLD,
    Size = UDim2.new(1, -8, 0, 18),
    Pos = UDim2.new(0, 6, 0, 1),
})
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 13

-- status
local statusLabel = MakeLabel(content, {
    Text = "● TP ON  |  RClick=TP  X=Toggle",
    Color = COL_GREEN,
    Pos = UDim2.new(0, 6, 0, 4),
})

-- coords
local coordsLabel = MakeLabel(content, {
    Text = "POS: 0, 0, 0",
    Color = COL_GRAY,
    Pos = UDim2.new(0, 6, 0, 22),
})

-- target
local targetLabel = MakeLabel(content, {
    Text = "TARGET: ...",
    Color = COL_YELLOW,
    Pos = UDim2.new(0, 6, 0, 40),
})

-- waypoint
local wpLabel = MakeLabel(content, {
    Text = "WP: None  |  B=Set  N=Go",
    Color = COL_DIMGRAY,
    Pos = UDim2.new(0, 6, 0, 58),
})

-- crosshair
local cross_v = Instance.new("Frame")
cross_v.Size = UDim2.new(0, 2, 0, 14)
cross_v.Position = UDim2.new(0.5, -1, 0.5, -7)
cross_v.BackgroundColor3 = COL_PURPLE
cross_v.BorderSizePixel = 0
cross_v.Parent = gui

local cross_h = Instance.new("Frame")
cross_h.Size = UDim2.new(0, 14, 0, 2)
cross_h.Position = UDim2.new(0.5, -7, 0.5, -1)
cross_h.BackgroundColor3 = COL_PURPLE
cross_h.BorderSizePixel = 0
cross_h.Parent = gui

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

------------------------------------------------------------------------
-- PLAYER LIST
------------------------------------------------------------------------
local plrPanel = Instance.new("Frame")
plrPanel.Size = UDim2.new(0, 210, 0, 200)
plrPanel.Position = UDim2.new(0, 12, 0.5, -100)
plrPanel.BackgroundColor3 = COL_MED
plrPanel.BorderSizePixel = 0
plrPanel.Visible = false
plrPanel.Parent = gui

local plrBorder = Instance.new("UIStroke")
plrBorder.Thickness = 4
plrBorder.Color = COL_BORDER
plrBorder.Parent = plrPanel

local plrInner = Instance.new("Frame")
plrInner.Size = UDim2.new(1, -8, 1, -8)
plrInner.Position = UDim2.new(0, 4, 0, 4)
plrInner.BackgroundColor3 = COL_LIGHT
plrInner.BorderSizePixel = 0
plrInner.ClipsDescendants = true
plrInner.Parent = plrPanel

local plrDrag = Instance.new("Frame")
plrDrag.Size = UDim2.new(1, 0, 0, 20)
plrDrag.BackgroundTransparency = 1
plrDrag.Parent = plrInner
MakeDraggable(plrPanel, plrDrag)

local plrTitle = MakeLabel(plrInner, {
    Text = "PLAYERS",
    Color = COL_PURPLE,
    Size = UDim2.new(1, -8, 0, 18),
    Pos = UDim2.new(0, 6, 0, 1),
})
plrTitle.Font = Enum.Font.GothamBold
plrTitle.TextSize = 13

local plrScroll = Instance.new("ScrollingFrame")
plrScroll.Size = UDim2.new(1, -8, 1, -24)
plrScroll.Position = UDim2.new(0, 4, 0, 22)
plrScroll.BackgroundColor3 = COL_DARK
plrScroll.BackgroundTransparency = 0.3
plrScroll.BorderSizePixel = 0
plrScroll.ScrollBarThickness = 4
plrScroll.ScrollBarImageColor3 = COL_ACCENT
plrScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
plrScroll.Parent = plrInner

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

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, 24)
            btn.BackgroundColor3 = COL_BTN
            btn.BorderSizePixel = 0
            btn.Text = "  " .. p.DisplayName
            btn.TextColor3 = COL_WHITE
            btn.Font = Enum.Font.Code
            btn.TextSize = 13
            btn.TextXAlignment = Enum.TextXAlignment.Left
            btn.Parent = plrScroll
            
            local btnStroke = Instance.new("UIStroke")
            btnStroke.Color = Color3.fromRGB(70, 50, 28)
            btnStroke.Parent = btn
            
            btn.MouseEnter:Connect(function()
                btn.BackgroundColor3 = COL_BTNHOV
            end)
            btn.MouseLeave:Connect(function()
                btn.BackgroundColor3 = COL_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 * 27)
end

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

------------------------------------------------------------------------
-- INPUT
------------------------------------------------------------------------
local c4 = 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 ON  |  RClick=TP  X=Toggle"
            statusLabel.TextColor3 = COL_GREEN
        else
            statusLabel.Text = "○ TP OFF  |  RClick=TP  X=Toggle"
            statusLabel.TextColor3 = COL_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 = COL_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 = COL_DIMGRAY
    end
end)
table.insert(_G._TPToolConns, c4)

local c5 = 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 = COL_PURPLE
    end
end)
table.insert(_G._TPToolConns, c5)

------------------------------------------------------------------------
-- UPDATE LOOP (lightweight - just text updates)
------------------------------------------------------------------------
local elapsed = 0
local c6 = 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 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 = COL_YELLOW
        end
    end
end)
table.insert(_G._TPToolConns, c6)

print("[TP TOOL v4] Loaded! RClick=TP | X=Toggle | P=Players | B=WP | N=GoWP")
INFO