--[[
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")