Hello, So I’m making a game and I was wondering how can I make a countdown until server shutdown that will be on the upper center of the screen so it wont close unexpectedly when I shut down the servers for an update. I currently have a soft shutdown system so if you could make it work with it somehow it will be really appreciated.
My soft shutdown script (Server script in ServerScriptService):
local TeleportService = game:GetService(“TeleportService”)
local Players = game:GetService(“Players”)
local RunService = game:GetService(“RunService”)
local ReplicatedStorage = game:GetService(“ReplicatedStorage”)
local Message = ReplicatedStorage:FindFirstChild(“Message”)
local ShuttingDownMessage = ReplicatedStorage:FindFirstChild(“ShuttingDownMessage”)
local function NewMessage(player, message)
local TempMessage = Message:Clone()
TempMessage.Parent = player:WaitForChild("PlayerGui")
TempMessage:FindFirstChild("Frame"):FindFirstChild("TextLabel").Text = message
end
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0 then
local WaitTime = 5
Players.PlayerAdded:Connect(function(player)
NewMessage(player, "This is a temporary lobby. Teleporting back in a moment.")
wait(WaitTime)
WaitTime = WaitTime / 2
TeleportService:Teleport(game.PlaceId, player)
end)
for i, player in pairs(Players:GetPlayers()) do
NewMessage(player, "This is a temporary lobby. Teleporting back in a moment. ")
TeleportService:Teleport(game.PlaceId, player)
wait(WaitTime)
WaitTime = WaitTime / 2
end
elseif RunService:IsStudio() == false then
game:BindToClose(function()
spawn(function()
local ReservedServerCode = TeleportService:ReserveServer(game.PlaceId)
for i, player in pairs(Players:GetPlayers()) do
NewMessage(player, "Rebooting servers for update. Please wait.")
TeleportService:TeleportToPrivateServer(game.PlaceId, ReservedServerCode, {player})
end
Players.PlayerAdded:Connect(function(player)
NewMessage(player, "Rebooting servers for update. Please wait.")
TeleportService:TeleportToPrivateServer(game.PlaceId, ReservedServerCode, {player})
end)
end)
while #Players:GetPlayers() > 0 do
wait(1)
end
end)
end