
Key Required Verified

-- Services
local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local HttpService = game:GetService("HttpService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
-- GUI Setup Compact
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "JoinPlayerGuiCompact"
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
ScreenGui.ResetOnSpawn = false
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 240, 0, 160) -- sedikit lebih tinggi untuk space bar bawah
MainFrame.Position = UDim2.new(0.5, -120, 0.5, -80)
MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
MainFrame.BorderSizePixel = 0
MainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui
local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 12)
MainCorner.Parent = MainFrame
-- Rainbow Border
local Border = Instance.new("UIStroke")
Border.Thickness = 3
Border.Parent = MainFrame
RunService.RenderStepped:Connect(function()
local time = tick() * 2
Border.Color = Color3.fromHSV((time % 1), 1, 1)
end)
-- Close Button
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 25, 0, 25)
CloseBtn.Position = UDim2.new(1, -30, 0, 5)
CloseBtn.BackgroundTransparency = 1
CloseBtn.Text = "X"
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 18
CloseBtn.TextColor3 = Color3.fromRGB(255, 80, 80)
CloseBtn.Parent = MainFrame
CloseBtn.MouseButton1Click:Connect(function()
ScreenGui:Destroy()
end)
-- Title
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -40, 0, 25)
Title.Position = UDim2.new(0, 10, 0, 5)
Title.BackgroundTransparency = 1
Title.Text = "Join Player"
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = MainFrame
-- Username Input
local UsernameBox = Instance.new("TextBox")
UsernameBox.Size = UDim2.new(0.8, 0, 0, 25)
UsernameBox.Position = UDim2.new(0.1, 0, 0.22, 0)
UsernameBox.PlaceholderText = "Enter username"
UsernameBox.Text = ""
UsernameBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
UsernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameBox.ClearTextOnFocus = false
UsernameBox.Font = Enum.Font.Gotham
UsernameBox.TextSize = 14
UsernameBox.Parent = MainFrame
local InputCorner = Instance.new("UICorner")
InputCorner.CornerRadius = UDim.new(0, 10)
InputCorner.Parent = UsernameBox
-- Join Button
local JoinBtn = Instance.new("TextButton")
JoinBtn.Size = UDim2.new(0.8, 0, 0, 35)
JoinBtn.Position = UDim2.new(0.1, 0, 0.45, 0)
JoinBtn.BackgroundColor3 = Color3.fromRGB(85, 170, 255)
JoinBtn.Text = "Join"
JoinBtn.Font = Enum.Font.GothamBold
JoinBtn.TextSize = 16
JoinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
JoinBtn.Parent = MainFrame
local BtnCorner = Instance.new("UICorner")
BtnCorner.CornerRadius = UDim.new(0, 10)
BtnCorner.Parent = JoinBtn
-- Status Label
local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, -20, 0, 22)
StatusLabel.Position = UDim2.new(0, 10, 0.7, 0)
StatusLabel.BackgroundTransparency = 1
StatusLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.TextSize = 14
StatusLabel.Text = ""
StatusLabel.TextXAlignment = Enum.TextXAlignment.Center
StatusLabel.Parent = MainFrame
-- Modern Rainbow Time Bar (di bawah frame)
local TimeBarBG = Instance.new("Frame")
TimeBarBG.Size = UDim2.new(0.8, 0, 0, 6)
TimeBarBG.Position = UDim2.new(0.1, 0, 0.88, 0) -- posisi di bawah status label
TimeBarBG.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
TimeBarBG.Parent = MainFrame
local TimeBar = Instance.new("Frame")
TimeBar.Size = UDim2.new(0, 0, 1, 0)
TimeBar.BackgroundColor3 = Color3.fromRGB(85, 170, 255)
TimeBar.Parent = TimeBarBG
local TimeBarCorner = Instance.new("UICorner")
TimeBarCorner.CornerRadius = UDim.new(0, 4)
TimeBarCorner.Parent = TimeBar
local TimeBarStroke = Instance.new("UIStroke")
TimeBarStroke.Thickness = 2
TimeBarStroke.Parent = TimeBar
RunService.RenderStepped:Connect(function()
local time = tick() * 2
TimeBarStroke.Color = Color3.fromHSV((time % 1), 1, 1)
end)
local function updateTimeBar(progress)
TimeBar:TweenSize(UDim2.new(math.clamp(progress,0,1),0,1,0), "Out", "Sine", 0.2, true)
end
-- Join player function
local function joinPlayerByUsername(username)
if username == "" then
StatusLabel.Text = "Please enter a username!"
updateTimeBar(0)
return
end
if LocalPlayer.Name:lower() == username:lower() then
StatusLabel.Text = "You are already this player!"
updateTimeBar(1)
return
end
StatusLabel.Text = "Checking current server..."
updateTimeBar(0.1)
task.wait(0.4)
for _, p in pairs(Players:GetPlayers()) do
if p.Name:lower() == username:lower() then
StatusLabel.Text = "Player is already in this server!"
updateTimeBar(1)
return
end
end
StatusLabel.Text = "Searching other servers..."
updateTimeBar(0.3)
task.wait(0.5)
local cursor
local found = false
while true do
local success, servers = pcall(function()
local url = "https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?limit=100"
if cursor then url = url.."&cursor="..cursor end
return HttpService:JSONDecode(game:HttpGet(url))
end)
if success and servers and servers.data and #servers.data > 0 then
for i, server in pairs(servers.data) do
if server.id ~= game.JobId and server.playing > 0 then
StatusLabel.Text = "Trying next server..."
updateTimeBar(0.3 + 0.6*(i/#servers.data))
task.wait(0.3)
pcall(function()
TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer)
end)
found = true
break
end
end
cursor = servers.nextPageCursor
if found then break end
else
StatusLabel.Text = "Wrong username!"
updateTimeBar(1)
break
end
end
end
-- Connect Join Button
JoinBtn.MouseButton1Click:Connect(function()
joinPlayerByUsername(UsernameBox.Text)
end)No comments yet for this script.



