I’m trying to make a script that shuts down servers, removing all players and preventing anyone from joining that server.
First I tried to just kick every player ingame, but the server was still up after that and players could still join that server.
I tried to kick anyone who joins the server, but again the server was still up, basically softlocking the game and kicking anyone who joins and not creating any new server.
Is there a built in method to shutdown servers similar to the way you can from the website?
If not, is there a way to change the max players of a server so I can just change that to 0 after kicking everyone?
i dont think there is any built-in shutdown method, so kicking players is the only option.
instead of kicking every player only once, you should kick every player continuously instead of only once. the easiest way would to do this on a server script:
while wait() do
for _, player in pairs(game.Players:GetChildren() do
player:Kick()
end
end
and after the server is empty for a bit of time, the server will automatically shut down.
local locked = false
local function shutdown(): ()
for _, player in pairs(game.Players:GetPlayers()) do
player:Kick("Server Shutdown!")
end
locked = true
end
game.Players.PlayerAdded:Connect(function(player)
if locked then
player:Kick("The server is locked!")
return
end
--your actual player added code
end)
Even though the server is kicking people when the join, the server is still up. With a small game like the one I’m working on, that’s frequently the only server up, and since there’s already an open server Roblox doesn’t make a new one, effectively softlocking the game and kicking everyone who joins.
You can try going berserk and crashing the server afterwards by filling the memory on the server-side. That way it won’t be able to handle join requests and it will eventually shutdown by Roblox. Hacky solution but most likely works. Just ensure that before doing that all player data is saved, all necessary operations done, etc.
I ended up solving this by reserving a new server using teleportservice and teleporting anyone who was in the server and anyone who joined to the reserved server.
This way it wouldnt softlock the game by preventing anyone from joining, but just redirect them to a server that I want to be open.