local Players = game:GetService("Players") local player = Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui")) gui.ResetOnSpawn = false gui.Name = "WaypointGUI" --========== DRAGGABLE MAIN FRAME ==========-- local main = Instance.new("Frame", gui) main.Size = UDim2.new(0, 300, 0, 350) main.Position = UDim2.new(0.5, -150, 0.3, -150) main.BackgroundColor3 = Color3.fromRGB(40,40,40) main.Active = true main.Draggable = true local title = Instance.new("TextLabel", main) title.Size = UDim2.new(1,0,0,30) title.BackgroundColor3 = Color3.fromRGB(30,30,30) title.Text = "Waypoint System" title.TextColor3 = Color3.new(1,1,1) title.TextScaled = true --========== CLOSE BUTTON ==========-- local close = Instance.new("TextButton", main) close.Size = UDim2.new(0,30,0,30) close.Position = UDim2.new(1,-35,0,0) close.Text = "X" close.BackgroundColor3 = Color3.fromRGB(100,0,0) close.TextColor3 = Color3.new(1,1,1) close.MouseButton1Click:Connect(function() gui:Destroy() end) --========== TAB BUTTONS ==========-- local tabFrame = Instance.new("Frame", main) tabFrame.Size = UDim2.new(1,0,0,30) tabFrame.Position = UDim2.new(0,0,0,35) tabFrame.BackgroundTransparency = 1 local tab1 = Instance.new("TextButton", tabFrame) tab1.Size = UDim2.new(0.5,0,1,0) tab1.Text = "ButtonTp" tab1.BackgroundColor3 = Color3.fromRGB(60,60,60) tab1.TextColor3 = Color3.new(1,1,1) local tab2 = Instance.new("TextButton", tabFrame) tab2.Size = UDim2.new(0.5,0,1,0) tab2.Position = UDim2.new(0.5,0,0,0) tab2.Text = "Teleport" tab2.BackgroundColor3 = Color3.fromRGB(35,35,35) tab2.TextColor3 = Color3.new(1,1,1) --========== CONTENT FRAMES ==========-- local content1 = Instance.new("ScrollingFrame", main) content1.Size = UDim2.new(1,0,1,-70) content1.Position = UDim2.new(0,0,0,70) content1.CanvasSize = UDim2.new(0,0,5,0) content1.BackgroundColor3 = Color3.fromRGB(25,25,25) local content2 = Instance.new("Frame", main) content2.Size = UDim2.new(1,0,1,-70) content2.Position = UDim2.new(0,0,0,70) content2.BackgroundColor3 = Color3.fromRGB(25,25,25) content2.Visible = false --========== TAB LOGIC ==========-- tab1.MouseButton1Click:Connect(function() content1.Visible = true content2.Visible = false tab1.BackgroundColor3 = Color3.fromRGB(60,60,60) tab2.BackgroundColor3 = Color3.fromRGB(35,35,35) end) tab2.MouseButton1Click:Connect(function() content1.Visible = false content2.Visible = true tab1.BackgroundColor3 = Color3.fromRGB(35,35,35) tab2.BackgroundColor3 = Color3.fromRGB(60,60,60) end) --========== WAYPOINT STORAGE ==========-- local waypoints = {} for i = 1, 50 do waypoints[i] = nil end --========== NOTIFICATION FUNCTION ==========-- local function notify(msg) game.StarterGui:SetCore("SendNotification", { Title = "Waypoint"; Text = msg; Duration = 1; }) end --========== CREATE 50 BUTTONS ==========-- for i = 1, 50 do local btn = Instance.new("TextButton", content1) btn.Size = UDim2.new(1, -10, 0, 40) btn.Position = UDim2.new(0, 5, 0, (i-1)*45) btn.Text = "TP Button " .. i btn.BackgroundColor3 = Color3.fromRGB(50,50,50) btn.TextColor3 = Color3.new(1,1,1) btn.MouseButton1Click:Connect(function() local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart") if hrp then waypoints[i] = hrp.CFrame notify("Clicked!") end end) end --========== TELEPORT ALL BUTTON ==========-- local tpAllBtn = Instance.new("TextButton", content2) tpAllBtn.Size = UDim2.new(1,-20,0,50) tpAllBtn.Position = UDim2.new(0,10,0,10) tpAllBtn.Text = "Teleport Through All" tpAllBtn.BackgroundColor3 = Color3.fromRGB(60,60,60) tpAllBtn.TextColor3 = Color3.new(1,1,1) tpAllBtn.MouseButton1Click:Connect(function() local hrp = player.Character:FindFirstChild("HumanoidRootPart") if not hrp then return end for i = 1, 50 do if waypoints[i] then hrp.CFrame = waypoints[i] + Vector3.new(0,2,0) notify("TP "..i.."!") task.wait(0.8) end end end)