if not game:IsLoaded() then game.Loaded:Wait() end local Players = game:GetService("Players") local TeleportService = game:GetService("TeleportService") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer -- Create GUI Elements local screenGui = Instance.new("ScreenGui") screenGui.Name = "ServerJoinerGui" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 450, 0, 150) frame.Position = UDim2.new(0.5, -225, 0.5, -75) frame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) frame.BorderSizePixel = 0 frame.Active = true -- Required for dragging frame.Parent = screenGui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 30) title.Text = "Deep Link Server Joiner" title.TextColor3 = Color3.new(1, 1, 1) title.Font = Enum.Font.SourceSansBold title.TextSize = 18 title.BackgroundTransparency = 1 title.Parent = frame local textBox = Instance.new("TextBox") textBox.Size = UDim2.new(0.9, 0, 0, 40) textBox.Position = UDim2.new(0.05, 0, 0.3, 0) textBox.PlaceholderText = "Paste roblox://... link here" textBox.Text = "" textBox.ClearTextOnFocus = false textBox.BackgroundColor3 = Color3.fromRGB(20, 20, 20) textBox.TextColor3 = Color3.new(1, 1, 1) textBox.TextScaled = true textBox.Parent = frame local joinButton = Instance.new("TextButton") joinButton.Size = UDim2.new(0.5, 0, 0, 40) joinButton.Position = UDim2.new(0.25, 0, 0.65, 0) joinButton.Text = "Extract & Join" joinButton.BackgroundColor3 = Color3.fromRGB(0, 120, 215) joinButton.TextColor3 = Color3.new(1, 1, 1) joinButton.Font = Enum.Font.SourceSansBold joinButton.TextSize = 18 joinButton.Parent = frame -- Dragging Logic local dragging local dragInput local dragStart local startPos local function update(input) 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 frame.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) frame.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 input == dragInput and dragging then update(input) end end) -- Button Click Logic joinButton.MouseButton1Click:Connect(function() local inputString = textBox.Text -- Extract PlaceId (numbers) and JobId (alphanumeric + hyphens) local placeIdStr = string.match(inputString, "placeId=(%d+)") local jobId = string.match(inputString, "gameInstanceId=([%w%-]+)") if placeIdStr and jobId then local placeId = tonumber(placeIdStr) joinButton.Text = "Joining..." -- Attempt to teleport to the specific server local success, err = pcall(function() TeleportService:TeleportToPlaceInstance(placeId, jobId, player) end) if not success then warn("Teleport failed: " .. tostring(err)) joinButton.Text = "Failed (Check F9)" task.wait(2) joinButton.Text = "Extract & Join" end else joinButton.Text = "Invalid Link" joinButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) task.wait(2) joinButton.Text = "Extract & Join" joinButton.BackgroundColor3 = Color3.fromRGB(0, 120, 215) end end)