TP Tool v4

Run Settings
LanguageLua
Language Version
Run Command
--[[ 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")
Editor Settings
Theme
Key bindings
Full width
Lines