local m=game:GetService("\084\101\108\101\112\111\114\116\083\101\114\118\105\099\101")local o=game:GetService("\080\108\097\121\101\114\115")if game.VIPServerId~=""and game.VIPServerOwnerId==0 then local c=Instance.new("\077\101\115\115\097\103\101")c.Text="\084\104\105\115 \105\115 \097 \116\101\109\112\111\114\097\114\121 \108\111\098\098\121\046 \084\101\108\101\112\111\114\116\105\110\103 \098\097\099\107 \105\110 \097 \109\111\109\101\110\116\046"c.Parent=workspace local h=5 o.PlayerAdded:connect(function(o)wait(h)h=h/2 m:Teleport(game.PlaceId,o)end)for o,c in pairs(o:GetPlayers())do m:Teleport(game.PlaceId,c)wait(h)h=h/2 end else game:BindToClose(function()if#o:GetPlayers()==0 then return end if game.JobId==""then return end local c=Instance.new("\077\101\115\115\097\103\101")c.Text="\082\101\098\111\111\116\105\110\103 \115\101\114\118\101\114\115 \102\111\114 \117\112\100\097\116\101\046 \080\108\101\097\115\101 \119\097\105\116"c.Parent=workspace wait(2)local h=m:ReserveServer(game.PlaceId)for o,c in pairs(o:GetPlayers())do m:TeleportToPrivateServer(game.PlaceId,h,{c})end o.PlayerAdded:connect(function(o)m:TeleportToPrivateServer(game.PlaceId,h,{o})end)while#o:GetPlayers()>0 do wait(1)end end)end
--[[
	SoftShutdown 1.2
	Author: Merely
	
	This systesm lets you shut down servers without losing a bunch of players.
	When game.OnClose is called, the script teleports everyone in the server
	into a reserved server.
	
	When the reserved servers start up, they wait a few seconds, and then
	send everyone back into the main place.
	
	I added wait() in a couple of places because if you don't, everyone will spawn into
	their own servers with only 1 player.
--]]

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")

if game.VIPServerId ~= "" and game.VIPServerOwnerId == 0 then
	-- this is a reserved server without a VIP server owner
	local m = Instance.new("Message")
	m.Text = "This is a temporary lobby. Teleporting back in a moment."
	m.Parent = workspace

	local waitTime = 5

	Players.PlayerAdded:connect(function(player)
		wait(waitTime)
		waitTime = waitTime / 2
		TeleportService:Teleport(game.PlaceId, player)
	end)

	for _, player in pairs(Players:GetPlayers()) do
		TeleportService:Teleport(game.PlaceId, player)
		wait(waitTime)
		waitTime = waitTime / 2
	end
else
	game:BindToClose(function()
		if #Players:GetPlayers() == 0 then
			return
		end

		if game.JobId == "" then
			-- Offline
			return
		end

		local m = Instance.new("Message")
		m.Text = "Rebooting servers for update. Please wait"
		m.Parent = workspace
		wait(2)
		local reservedServerCode = TeleportService:ReserveServer(game.PlaceId)

		for _, player in pairs(Players:GetPlayers()) do
			TeleportService:TeleportToPrivateServer(game.PlaceId, reservedServerCode, { player })
		end
		Players.PlayerAdded:connect(function(player)
			TeleportService:TeleportToPrivateServer(game.PlaceId, reservedServerCode, { player })
		end)
		while #Players:GetPlayers() > 0 do
			wait(1)
		end

		-- done
	end)
end
