TP to any stage in the obby
Key Required

TP to any stage in the obby

IMPOSSIBLE TROLL OBBYveemxveemx 408 views 31 executesUpdated Jan 20, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•158 lines (4592 chars)
--[[
Checkpoint Teleport GUI
Credits: veemix373
--]]

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local UIS = game:GetService("UserInputService")

-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "CheckpointTPGui"
gui.ResetOnSpawn = false
gui.Parent = playerGui

local frame = Instance.new("Frame")
frame.Size = UDim2.fromScale(0.18, 0.22)
frame.Position = UDim2.fromScale(0.41, 0.41)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.BorderSizePixel = 0
frame.Active = true
frame.Parent = gui

-- Title (draggable)
local title = Instance.new("TextLabel")
title.Size = UDim2.fromScale(1, 0.2)
title.Position = UDim2.fromScale(0, 0)
title.BackgroundTransparency = 1
title.Text = "Checkpoint TP"
title.TextColor3 = Color3.new(1,1,1)
title.TextScaled = true
title.Font = Enum.Font.Cartoon
title.Parent = frame

-- Drag support only on the title
local dragging, dragStart, startPos
title.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = frame.Position
	end
end)

title.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = false
	end
end)

UIS.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement 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)

-- Stage label
local stageLabel = Instance.new("TextLabel")
stageLabel.Size = UDim2.fromScale(1, 0.15)
stageLabel.Position = UDim2.fromScale(0, 0.2)
stageLabel.BackgroundTransparency = 1
stageLabel.Text = "Stage: 0"
stageLabel.TextColor3 = Color3.new(1,1,1)
stageLabel.TextScaled = true
stageLabel.Font = Enum.Font.Cartoon
stageLabel.Parent = frame

-- Slider background
local sliderBg = Instance.new("Frame")
sliderBg.Size = UDim2.fromScale(0.8, 0.1)
sliderBg.Position = UDim2.fromScale(0.1, 0.37)
sliderBg.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
sliderBg.Parent = frame

local sliderHandle = Instance.new("Frame")
sliderHandle.Size = UDim2.fromScale(0.03, 1)
sliderHandle.Position = UDim2.fromScale(0, 0)
sliderHandle.BackgroundColor3 = Color3.fromRGB(60, 120, 255)
sliderHandle.Parent = sliderBg

local draggingSlider = false
local selectedStage = 0
local maxStage = 192

sliderHandle.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		draggingSlider = true
	end
end)
sliderHandle.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		draggingSlider = false
	end
end)
sliderBg.InputChanged:Connect(function(input)
	if draggingSlider and input.UserInputType == Enum.UserInputType.MouseMovement then
		local localX = math.clamp(input.Position.X - sliderBg.AbsolutePosition.X, 0, sliderBg.AbsoluteSize.X)
		local scale = localX / sliderBg.AbsoluteSize.X
		sliderHandle.Position = UDim2.new(scale,0,0,0)
		selectedStage = math.floor(scale * maxStage)
		stageLabel.Text = "Stage: "..selectedStage
	end
end)

-- Start button
local startButton = Instance.new("TextButton")
startButton.Size = UDim2.fromScale(0.8, 0.15)
startButton.Position = UDim2.fromScale(0.1, 0.5)
startButton.BackgroundColor3 = Color3.fromRGB(60, 120, 255)
startButton.TextColor3 = Color3.new(1,1,1)
startButton.TextScaled = true
startButton.Font = Enum.Font.Cartoon
startButton.Text = "START"
startButton.Parent = frame

-- Status display
local status = Instance.new("TextLabel")
status.Size = UDim2.fromScale(1,0.15)
status.Position = UDim2.fromScale(0,0.68)
status.BackgroundTransparency = 1
status.Text = ""
status.TextColor3 = Color3.new(1,1,1)
status.TextScaled = true
status.Font = Enum.Font.Cartoon
status.Parent = frame

-- Teleport logic
local function runTeleport()
	local folder = workspace:WaitForChild("aos"):WaitForChild("checkpoints")
	local character = player.Character or player.CharacterAdded:Wait()
	local hrp = character:WaitForChild("HumanoidRootPart")

	startButton.Text = "RUNNING..."
	status.Text = "Teleporting..."
	local index = 0

	while index <= selectedStage do
		local checkpoint = folder:FindFirstChild(tostring(index))
		if checkpoint and checkpoint:IsA("BasePart") then
			hrp.CFrame = checkpoint.CFrame + Vector3.new(0,3,0)
			index = index + 1
			task.wait(0.25)
		else
			task.wait(0.2)
		end
	end

	gui:Destroy()
end

startButton.MouseButton1Click:Connect(runTeleport)

Features & Information

lets you pick which stage to tp to you can pick from 1 to 192

Community Comments (0)

No comments yet for this script.