Server Teleporter
Key RequiredUniversal

Server Teleporter

Universal ScriptEducationalistEducationalist 846 views 139 executesUpdated Nov 15, 2025
Unrated
00
Lua Script•293 lines (9279 chars)
--[[
	Roblox Server Teleporter GUI
	- Shows on join
	- Search bar
	- Draggable / Minimizable / Closable
	- Modern UI
--]]

--// Services
local Players          = game:GetService("Players")
local TeleportService  = game:GetService("TeleportService")
local AssetService     = game:GetService("AssetService")
local TweenService     = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService       = game:GetService("RunService")

local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

--// GUI Container
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ServerTeleporterGUI"
screenGui.ResetOnSpawn = false
screenGui.DisplayOrder = 100
screenGui.Parent = playerGui

--// Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0.42, 0, 0.65, 0)
mainFrame.Position = UDim2.new(0.29, 0, 0.175, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 14)
mainCorner.Parent = mainFrame

-- Shadow
local shadow = Instance.new("ImageLabel")
shadow.Size = UDim2.new(1, 24, 1, 24)
shadow.Position = UDim2.new(0, -12, 0, -12)
shadow.BackgroundTransparency = 1
shadow.Image = "rbxassetid://6014261993"
shadow.ImageColor3 = Color3.new(0,0,0)
shadow.ImageTransparency = 0.55
shadow.ZIndex = 0
shadow.Parent = mainFrame

--// Header
local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 44)
header.BackgroundColor3 = Color3.fromRGB(55, 55, 70)
header.BorderSizePixel = 0
header.Parent = mainFrame

local headerCorner = Instance.new("UICorner")
headerCorner.CornerRadius = UDim.new(0, 14)
headerCorner.Parent = header

local headerGradient = Instance.new("UIGradient")
headerGradient.Color = ColorSequence.new{
	ColorSequenceKeypoint.new(0, Color3.fromRGB(120, 120, 255)),
	ColorSequenceKeypoint.new(1, Color3.fromRGB(80, 80, 200))
}
headerGradient.Rotation = 90
headerGradient.Parent = header

-- Title
local titleLabel = Instance.new("TextLabel")
titleLabel.Text = "Server Teleporter"
titleLabel.Size = UDim2.new(1, -130, 1, 0)
titleLabel.Position = UDim2.new(0, 16, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 18
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = header

-- Minimize Button
local minimizeBtn = Instance.new("TextButton")
minimizeBtn.Size = UDim2.new(0, 36, 0, 36)
minimizeBtn.Position = UDim2.new(1, -80, 0, 4)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 65)
minimizeBtn.Text = "−"
minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.TextSize = 22
minimizeBtn.Parent = header

local minCorner = Instance.new("UICorner")
minCorner.CornerRadius = UDim.new(0, 10)
minCorner.Parent = minimizeBtn

-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 36, 0, 36)
closeBtn.Position = UDim2.new(1, -40, 0, 4)
closeBtn.BackgroundColor3 = Color3.fromRGB(220, 50, 50)
closeBtn.Text = "×"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 22
closeBtn.Parent = header

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 10)
closeCorner.Parent = closeBtn

--// Search Bar
local searchFrame = Instance.new("Frame")
searchFrame.Size = UDim2.new(1, -24, 0, 38)
searchFrame.Position = UDim2.new(0, 12, 0, 52)
searchFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
searchFrame.Parent = mainFrame

local searchCorner = Instance.new("UICorner")
searchCorner.CornerRadius = UDim.new(0, 10)
searchCorner.Parent = searchFrame

local searchBox = Instance.new("TextBox")
searchBox.PlaceholderText = "Search places..."
searchBox.Text = ""
searchBox.Size = UDim2.new(1, -10, 1, 0)
searchBox.Position = UDim2.new(0, 5, 0, 0)
searchBox.BackgroundTransparency = 1
searchBox.TextColor3 = Color3.fromRGB(220, 220, 230)
searchBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 170)
searchBox.Font = Enum.Font.Gotham
searchBox.TextSize = 16
searchBox.TextXAlignment = Enum.TextXAlignment.Left
searchBox.Parent = searchFrame

local searchIcon = Instance.new("ImageLabel")
searchIcon.Size = UDim2.new(0, 20, 0, 20)
searchIcon.Position = UDim2.new(0, 10, 0.5, -10)
searchIcon.BackgroundTransparency = 1
searchIcon.Image = "rbxassetid://7072716849" -- Magnifying glass
searchIcon.ImageColor3 = Color3.fromRGB(150, 150, 170)
searchIcon.Parent = searchFrame

--// Scrolling List
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -24, 1, -100)
scroll.Position = UDim2.new(0, 12, 0, 98)
scroll.BackgroundTransparency = 1
scroll.BorderSizePixel = 0
scroll.ScrollBarThickness = 6
scroll.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 130)
scroll.ScrollingDirection = Enum.ScrollingDirection.Y
scroll.Parent = mainFrame

local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 9)
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Parent = scroll

--// Draggable
local dragging, dragInput, dragStart, startPos
local function updateDrag(input)
	local delta = input.Position - dragStart
	local pos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X,
	                     startPos.Y.Scale, startPos.Y.Offset + delta.Y)
	TweenService:Create(mainFrame, TweenInfo.new(0.15), {Position = pos}):Play()
end

header.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
		dragging = true
		dragStart = input.Position
		startPos = mainFrame.Position
		input.Changed:Connect(function()
			if input.UserInputState == Enum.UserInputState.End then dragging = false end
		end)
	end
end)

header.InputChanged:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
		dragInput = input
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if dragging and input == dragInput then updateDrag(input) end
end)

--// Minimize
local minimized = false
local normalSize = mainFrame.Size

minimizeBtn.MouseButton1Click:Connect(function()
	if minimized then
		TweenService:Create(mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Size = normalSize}):Play()
		scroll.Visible = true
		searchFrame.Visible = true
		minimizeBtn.Text = "−"
		minimized = false
	else
		normalSize = mainFrame.Size
		TweenService:Create(mainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quint),
		                    {Size = UDim2.new(mainFrame.Size.X.Scale, 0, 0, 44)}):Play()
		scroll.Visible = false
		searchFrame.Visible = false
		minimizeBtn.Text = "+"
		minimized = true
	end
end)

--// Close
closeBtn.MouseButton1Click:Connect(function()
	TweenService:Create(mainFrame, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play()
	task.delay(0.22, function() screenGui:Destroy() end)
end)

--// Hover Helper
local function hover(btn, normal, hover)
	btn.MouseEnter:Connect(function()
		TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = hover}):Play()
	end)
	btn.MouseLeave:Connect(function()
		TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = normal}):Play()
	end)
end

--// Place Buttons Container
local placeButtons = {}

local function createPlaceButton(placeInfo)
	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, -10, 0, 52)
	btn.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
	btn.TextColor3 = Color3.fromRGB(220, 220, 230)
	btn.Font = Enum.Font.Gotham
	btn.TextSize = 16
	btn.TextXAlignment = Enum.TextXAlignment.Left
	btn.Text = "  " .. (placeInfo.Name or ("Place ID: %d"):format(placeInfo.PlaceId))
	btn.Parent = scroll

	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 10)
	corner.Parent = btn

	hover(btn, Color3.fromRGB(45,45,55), Color3.fromRGB(70,70,85))

	btn.MouseButton1Click:Connect(function()
		btn.Text = "  Teleporting..."
		TeleportService:Teleport(placeInfo.PlaceId, player)
	end)

	return btn
end

--// Search Filter
local function filterPlaces(query)
	query = query:lower()
	for _, btn in ipairs(placeButtons) do
		local placeName = btn.Text:lower()
		btn.Visible = (query == "" or placeName:find(query, 1, true))
	end
end

searchBox:GetPropertyChangedSignal("Text"):Connect(function()
	filterPlaces(searchBox.Text)
end)

--// Load Places
task.spawn(function()
	local pages = AssetService:GetGamePlacesAsync()
	repeat
		local current = pages:GetCurrentPage()
		for _, info in ipairs(current) do
			if info.PlaceId ~= game.PlaceId then
				local btn = createPlaceButton(info)
				table.insert(placeButtons, btn)
			end
		end
		if not pages.IsFinished then pages:AdvanceToNextPageAsync() end
	until pages.IsFinished

	-- Initial canvas size
	scroll.CanvasSize = UDim2.new(0,0,0, listLayout.AbsoluteContentSize.Y + 20)
end)

-- Auto-resize canvas
listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
	scroll.CanvasSize = UDim2.new(0,0,0, listLayout.AbsoluteContentSize.Y + 20)
end)

--// Make sure GUI appears instantly
screenGui.Enabled = true

Features & Information

The Server teleporter let's you teleport to secret or sub places inside the game educational purposes
#Made by WesawDrippy

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts