My problem with reserving a server is I wouldn’t be able to have friends join their friends in the server without an access code. I can store this access code in their data tables but I’m not sure how to look up their data through script.
local DataStoreService = game:GetService("DataStoreService")
local AccessCodeStore = DataStoreService:GetDataStore("AccessCodes")
-- when the player creates a new server
AccessCodeStore:SetAsync("Player_" .. player.UserId, access_code)
-- when the player leaves the new server
AccessCodeStore:SetAsync("Player_" .. player.UserId, nil)
-- when the player's friend wants to join
local accessCode = AccessCodeStore:GetAsync("Player_" .. player.UserId)
Note that this is just pseudo-code, you can read the DataStoreService documentation