Advertisement
Guest User

Soft Shutdown Script

a guest
Nov 16th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.89 KB | None | 0 0
  1.  
  2. --[[
  3.     SoftShutdown 1.2
  4.     Author: Merely
  5.    
  6.     This system lets you shut down servers without losing a bunch of players.
  7.     When game.OnClose is called, the script teleports everyone in the server
  8.     into a reserved server.
  9.    
  10.     When the reserved servers start up, they wait a few seconds, and then
  11.     send everyone back into the main place.
  12.    
  13.     I added wait() in a couple of places because if you don't, everyone will spawn into
  14.     their own servers with only 1 player.
  15. --]]
  16.  
  17. local TeleportService = game:GetService("TeleportService")
  18. local Players = game:GetService("Players")
  19.  
  20. if (game.VIPServerId ~= "" and game.VIPServerOwnerId == 0) then
  21.     -- this is a reserved server without a VIP server owner
  22.     local m = Instance.new("Message")
  23.     m.Text = "THIS IS A TEMPORARY SERVER. YOU WILL BE TELEPORTED BACK SHORTLY"
  24.     m.Parent = workspace
  25.    
  26.     local waitTime = 5
  27.  
  28.     Players.PlayerAdded:connect(function(player)
  29.         wait(waitTime)
  30.         waitTime = waitTime / 2
  31.         TeleportService:Teleport(game.PlaceId, player)
  32.     end)
  33.    
  34.     for _,player in pairs(Players:GetPlayers()) do
  35.         TeleportService:Teleport(game.PlaceId, player)
  36.         wait(waitTime)
  37.         waitTime = waitTime / 2
  38.     end
  39. else
  40.     game:BindToClose(function()
  41.         if (#Players:GetPlayers() == 0) then
  42.             return
  43.         end
  44.        
  45.         if (game:GetService("RunService"):IsStudio()) then
  46.             return
  47.         end
  48.        
  49.         local m = Instance.new("Message")
  50.         m.Text = "THIS SERVER IS REBOOTING FOR AN UPDATE. STAND BY"
  51.         m.Parent = workspace
  52.         wait(2)
  53.         local reservedServerCode = TeleportService:ReserveServer(game.PlaceId)
  54.        
  55.         for _,player in pairs(Players:GetPlayers()) do
  56.             TeleportService:TeleportToPrivateServer(game.PlaceId, reservedServerCode, { player })
  57.         end
  58.         Players.PlayerAdded:connect(function(player)
  59.             TeleportService:TeleportToPrivateServer(game.PlaceId, reservedServerCode, { player })
  60.         end)
  61.         while (#Players:GetPlayers() > 0) do
  62.             wait(1)
  63.         end
  64.        
  65.         -- done
  66.     end)
  67. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement