Retro Rejoin Script for PRIVATE SERVERS
Key RequiredUniversal

Retro Rejoin Script for PRIVATE SERVERS

Universal Scriptasdffdsaasdffdsa 533 views 797 executesUpdated Jul 20, 2026
Unrated
00
Lua Script•405 lines (13434 chars)
local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local function getScreenSize()
    if camera and camera.ViewportSize then
        return camera.ViewportSize
    end
    return Vector2.new(1280, 720)
end

local function roundify(obj, radius)
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, radius)
    corner.Parent = obj
end

local function setLabelText(label, text, color)
    label.Text = text
    label.TextColor3 = color or Color3.fromRGB(255, 255, 255)
end

local function parsePrivateServerCode(raw)
    local text = tostring(raw or ""):gsub("^%s+", ""):gsub("%s+$", "")
    if text == "" then return nil end

    local linkCode = text:match("privateServerLinkCode=([^&]+)")
    if linkCode then
        return linkCode
    end

    return text
end

local screen = getScreenSize()
local width = math.clamp(screen.X * 0.9, 300, 440)
local height = math.clamp(screen.Y * 0.72, 320, 520)

local gui = Instance.new("ScreenGui")
gui.Name = "DeltaPrivateServerUI"
gui.ResetOnSpawn = false
gui.Parent = CoreGui

local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(width, height)
frame.Position = UDim2.fromOffset((screen.X - width) / 2, math.max(24, screen.Y * 0.08))
frame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
frame.BorderSizePixel = 0
frame.Parent = gui
roundify(frame, 16)

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -24, 0, 42)
title.Position = UDim2.new(0, 12, 0, 12)
title.BackgroundTransparency = 1
title.Text = "Private Server Joiner"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame

local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -24, 0, 24)
subtitle.Position = UDim2.new(0, 12, 0, 50)
subtitle.BackgroundTransparency = 1
subtitle.Text = "Mobile + PC friendly UI"
subtitle.TextColor3 = Color3.fromRGB(160, 160, 180)
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 13
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = frame

local function createInput(labelText, y, default)
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -24, 0, 18)
    label.Position = UDim2.new(0, 12, 0, y)
    label.BackgroundTransparency = 1
    label.Text = labelText
    label.TextColor3 = Color3.fromRGB(220, 220, 230)
    label.Font = Enum.Font.GothamSemibold
    label.TextSize = 13
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame

    local box = Instance.new("TextBox")
    box.Size = UDim2.new(1, -24, 0, 38)
    box.Position = UDim2.new(0, 12, 0, y + 20)
    box.BackgroundColor3 = Color3.fromRGB(25, 26, 34)
    box.TextColor3 = Color3.fromRGB(255, 255, 255)
    box.PlaceholderText = default
    box.Text = default
    box.Font = Enum.Font.Gotham
    box.TextSize = 15
    box.ClearTextOnFocus = false
    box.Parent = frame
    roundify(box, 10)

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(60, 60, 75)
    stroke.Thickness = 1
    stroke.Parent = box

    return box
end

local placeBox = createInput("Target Place ID", 88, tostring(game.PlaceId))
local codeBox = createInput("Private Server Link or Code", 154, "")

local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -24, 0, 48)
status.Position = UDim2.new(0, 12, 0, height - 110)
status.BackgroundTransparency = 1
status.Text = "Enter the place ID and private server code/link"
status.TextColor3 = Color3.fromRGB(180, 200, 255)
status.Font = Enum.Font.Gotham
status.TextSize = 14
status.TextWrapped = true
status.Parent = frame

local joinButton = Instance.new("TextButton")
joinButton.Size = UDim2.new(1, -24, 0, 50)
joinButton.Position = UDim2.new(0, 12, 0, height - 56)
joinButton.BackgroundColor3 = Color3.fromRGB(76, 166, 255)
joinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
joinButton.Text = "Join Private Server"
joinButton.Font = Enum.Font.GothamBold
joinButton.TextSize = 16
joinButton.Parent = frame
roundify(joinButton, 12)

local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = Color3.fromRGB(90, 190, 255)
buttonStroke.Thickness = 1
buttonStroke.Parent = joinButton

-- Draggable window for easier use on mobile/PC
local dragging = false
local dragStart
local startPos

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
    end
end)

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

frame.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(0, startPos.X.Offset + delta.X, 0, startPos.Y.Offset + delta.Y)
    end
end)

joinButton.MouseButton1Click:Connect(function()
    local placeId = tonumber(placeBox.Text)
    local serverCode = parsePrivateServerCode(codeBox.Text)

    if not placeId or not serverCode then
        setLabelText(status, "Please enter a valid Place ID and private server code/link.", Color3.fromRGB(255, 120, 120))
        return
    end

    if game.PlaceId ~= placeId then
        setLabelText(status, "This server is not the target place. Open the target place first.", Color3.fromRGB(255, 200, 100))
        return
    end

    local teleportData = TeleportService:GetTeleportData()
    if teleportData and teleportData.__fromPrivateServerUI then
        setLabelText(status, "Already joined from this UI.", Color3.fromRGB(120, 255, 120))
        return
    end

    setLabelText(status, "Trying to join private server...", Color3.fromRGB(150, 220, 255))

    local ok, err = pcall(function()
        TeleportService:TeleportToPrivateServer(
            placeId,
            serverCode,
            {player},
            { __fromPrivateServerUI = true }
        )
    end)

    if ok then
        setLabelText(status, "Teleport request sent. If nothing happens, the game may block this from client-side execution.", Color3.fromRGB(120, 255, 120))
    else
        setLabelText(status, "Teleport failed: " .. tostring(err), Color3.fromRGB(255, 120, 120))
    end
end)local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local function getScreenSize()
    if camera and camera.ViewportSize then
        return camera.ViewportSize
    end
    return Vector2.new(1280, 720)
end

local function roundify(obj, radius)
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, radius)
    corner.Parent = obj
end

local function setLabelText(label, text, color)
    label.Text = text
    label.TextColor3 = color or Color3.fromRGB(255, 255, 255)
end

local function parsePrivateServerCode(raw)
    local text = tostring(raw or ""):gsub("^%s+", ""):gsub("%s+$", "")
    if text == "" then return nil end

    local linkCode = text:match("privateServerLinkCode=([^&]+)")
    if linkCode then
        return linkCode
    end

    return text
end

local screen = getScreenSize()
local width = math.clamp(screen.X * 0.9, 300, 440)
local height = math.clamp(screen.Y * 0.72, 320, 520)

local gui = Instance.new("ScreenGui")
gui.Name = "DeltaPrivateServerUI"
gui.ResetOnSpawn = false
gui.Parent = CoreGui

local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(width, height)
frame.Position = UDim2.fromOffset((screen.X - width) / 2, math.max(24, screen.Y * 0.08))
frame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
frame.BorderSizePixel = 0
frame.Parent = gui
roundify(frame, 16)

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -24, 0, 42)
title.Position = UDim2.new(0, 12, 0, 12)
title.BackgroundTransparency = 1
title.Text = "Private Server Joiner"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = frame

local subtitle = Instance.new("TextLabel")
subtitle.Size = UDim2.new(1, -24, 0, 24)
subtitle.Position = UDim2.new(0, 12, 0, 50)
subtitle.BackgroundTransparency = 1
subtitle.Text = "Mobile + PC friendly UI"
subtitle.TextColor3 = Color3.fromRGB(160, 160, 180)
subtitle.Font = Enum.Font.Gotham
subtitle.TextSize = 13
subtitle.TextXAlignment = Enum.TextXAlignment.Left
subtitle.Parent = frame

local function createInput(labelText, y, default)
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -24, 0, 18)
    label.Position = UDim2.new(0, 12, 0, y)
    label.BackgroundTransparency = 1
    label.Text = labelText
    label.TextColor3 = Color3.fromRGB(220, 220, 230)
    label.Font = Enum.Font.GothamSemibold
    label.TextSize = 13
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame

    local box = Instance.new("TextBox")
    box.Size = UDim2.new(1, -24, 0, 38)
    box.Position = UDim2.new(0, 12, 0, y + 20)
    box.BackgroundColor3 = Color3.fromRGB(25, 26, 34)
    box.TextColor3 = Color3.fromRGB(255, 255, 255)
    box.PlaceholderText = default
    box.Text = default
    box.Font = Enum.Font.Gotham
    box.TextSize = 15
    box.ClearTextOnFocus = false
    box.Parent = frame
    roundify(box, 10)

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(60, 60, 75)
    stroke.Thickness = 1
    stroke.Parent = box

    return box
end

local placeBox = createInput("Target Place ID", 88, tostring(game.PlaceId))
local codeBox = createInput("Private Server Link or Code", 154, "")

local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -24, 0, 48)
status.Position = UDim2.new(0, 12, 0, height - 110)
status.BackgroundTransparency = 1
status.Text = "Enter the place ID and private server code/link"
status.TextColor3 = Color3.fromRGB(180, 200, 255)
status.Font = Enum.Font.Gotham
status.TextSize = 14
status.TextWrapped = true
status.Parent = frame

local joinButton = Instance.new("TextButton")
joinButton.Size = UDim2.new(1, -24, 0, 50)
joinButton.Position = UDim2.new(0, 12, 0, height - 56)
joinButton.BackgroundColor3 = Color3.fromRGB(76, 166, 255)
joinButton.TextColor3 = Color3.fromRGB(255, 255, 255)
joinButton.Text = "Join Private Server"
joinButton.Font = Enum.Font.GothamBold
joinButton.TextSize = 16
joinButton.Parent = frame
roundify(joinButton, 12)

local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = Color3.fromRGB(90, 190, 255)
buttonStroke.Thickness = 1
buttonStroke.Parent = joinButton

-- Draggable window for easier use on mobile/PC
local dragging = false
local dragStart
local startPos

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
    end
end)

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

frame.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(0, startPos.X.Offset + delta.X, 0, startPos.Y.Offset + delta.Y)
    end
end)

joinButton.MouseButton1Click:Connect(function()
    local placeId = tonumber(placeBox.Text)
    local serverCode = parsePrivateServerCode(codeBox.Text)

    if not placeId or not serverCode then
        setLabelText(status, "Please enter a valid Place ID and private server code/link.", Color3.fromRGB(255, 120, 120))
        return
    end

    if game.PlaceId ~= placeId then
        setLabelText(status, "This server is not the target place. Open the target place first.", Color3.fromRGB(255, 200, 100))
        return
    end

    local teleportData = TeleportService:GetTeleportData()
    if teleportData and teleportData.__fromPrivateServerUI then
        setLabelText(status, "Already joined from this UI.", Color3.fromRGB(120, 255, 120))
        return
    end

    setLabelText(status, "Trying to join private server...", Color3.fromRGB(150, 220, 255))

    local ok, err = pcall(function()
        TeleportService:TeleportToPrivateServer(
            placeId,
            serverCode,
            {player},
            { __fromPrivateServerUI = true }
        )
    end)

    if ok then
        setLabelText(status, "Teleport request sent. If nothing happens, the game may block this from client-side execution.", Color3.fromRGB(120, 255, 120))
    else
        setLabelText(status, "Teleport failed: " .. tostring(err), Color3.fromRGB(255, 120, 120))
    end
end)

Features & Information

when you join a PLACE ID that you put it, it will join a private server link that you insert. made for retro swarm for bss so you dont get banned

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts