How can I teleport the player to somebody else's private server?

Hi, I have a private server system and it is pretty much finished, but I don’t know how to teleport players to others private server when they click the join button

Full script:

local servers = {}
local DataStoreService = game:GetService("DataStoreService")
local playerData = DataStoreService:GetDataStore("#ServersData[pcall1]Save")
local runService = game:GetService("RunService")

local playerUserId = "#ServersData[pcall1]Data"

local data = playerData:GetAsync(playerUserId)  --Checks if player has stored data

if data then
	servers = data
end


game:BindToClose(function()
	wait(10)
end)

local arrayofunions = {}


local TS = game:GetService("TeleportService")
local Players = game:GetService("Players")
local messagingService = game:GetService("MessagingService")
local httpService = game:GetService("HttpService")
local rs = game:GetService("ReplicatedStorage")
local asktoinvite = rs.AskToInvite
local tp = rs.TeleportToServer
local newserver = rs.CreateServer
--local code = TS:ReserveServer(9619375620) -- Returns a code
--local players = Players:GetPlayers() -- Get a list of all players

--wait(5)
--TS:TeleportToPrivateServer(9619375620,code,players) -- Actually teleport the players
local CurServerId = game.PrivateServerId
local CurServerNumber = 0
local isReserved = game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0

local function ServerUpdate(ServerId,UserId,Psid)
	local createnewarr = true
	local data = playerData:GetAsync(playerUserId)  --Checks if player has stored data

	if data then
		servers = data
	end
	--if servers then
	--	for i,v in ipairs(servers) do
	--		
	--	end
	--end
	for i,v in ipairs(servers) do
		if v.server == ServerId and v.plr ==  UserId then
			createnewarr = false
		end
	end
	local arr = {server = ServerId,plr = UserId,id = nil}
	if Psid then
		for i,v in ipairs(servers) do
			if v.server == ServerId and v.id == nil then
				v.id = Psid
				createnewarr = false
			end
		end
	end
	if Psid == nil then
		for i,v in ipairs(servers) do
			if v.server == ServerId and v.id then
				createnewarr = false
			end
		end
	end
	if createnewarr == true then
		table.insert(servers,arr)
	end
	local success, err = pcall(function()
		local playerUserId = "#ServersData[pcall1]Data"
		playerData:SetAsync(playerUserId,servers) --Saves player data
	end)
	if not success then
		warn('Could not save data!')
		print(err)
	end		
	
	


end




Players.PlayerRemoving:Connect(function(player)
	CurServerNumber -= 1
	for i,v in ipairs(servers) do
		if game.PrivateServerId == v.id and isReserved then
			local messageData = {}

			messageData["sender"] = v.id
			messageData["message"] = CurServerNumber

			local encoded = httpService:JSONEncode(messageData)
			messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
		end
	end
end)

Players.PlayerAdded:Connect(function(player)
	for i,v in ipairs(servers) do
		if v.plr == player.UserId and isReserved and v.id == nil then
			ServerUpdate(v.server,v.plr,game.PrivateServerId)
		end
	end
	CurServerNumber += 1
	for i,v in ipairs(servers) do
		if game.PrivateServerId == v.id and isReserved then
			local messageData = {}

			messageData["sender"] = v.id
			messageData["message"] = CurServerNumber

			local encoded = httpService:JSONEncode(messageData)
			messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
		end
	end
end)

local function addtolist(PrivateServerId,amount,player)
	coroutine.wrap(function()
		local List = player.PlayerGui:WaitForChild("System",10).Frame.List
		local StandartFrame = game:GetService("ReplicatedStorage").Frame:Clone()
		StandartFrame.Parent = List
		local Owner = StandartFrame:FindFirstChild("Owner")
		local UserId = StandartFrame:FindFirstChild("UserId")
		local Players = StandartFrame:FindFirstChild("Players")
		local data
		for i,v in ipairs(servers) do
			if v.id == PrivateServerId then
				data = v
			end
		end
		if data then
			UserId.Text = "UserId: "..tostring(data.plr)
			Players.Text = "Players: "..tostring(amount).." / 50"
			Owner.Text = "Owner: "..game:GetService("Players"):GetNameFromUserIdAsync(data.plr)
		end
	end)()
end
function callbackFunction(serviceData)
	local decodedData = httpService:JSONDecode(serviceData.Data)
	arrayofunions[decodedData.sender] = decodedData.message
	if decodedData.message == 0 then
		arrayofunions[decodedData.sender] = nil	
	end
	--for i,v in ipairs(game:GetService("Players"):GetChildren()) do
	--addtolist(decodedData.sender,decodedData.message,v)
	--end
end
messagingService:SubscribeAsync("#ServersData[pcall1]Data", callbackFunction)

newserver.OnServerEvent:Connect(function(plr)
	local bool = false
	for i,v in ipairs(servers) do
		if game.PrivateServerId == v.id and v.plr == plr.UserId then
			
			bool = true
			break
		end
		if v.plr == plr.UserId and v.id ~= game.PrivateServerId then
			TS:TeleportToPrivateServer(9619375620,v.server,{plr})
			bool = true
		end
	end
	if bool == false then
		
		local code = TS:ReserveServer(9619375620) -- Returns a code
		ServerUpdate(code,plr.UserId)
		TS:TeleportToPrivateServer(9619375620,code,{plr})
		
		
	
		
	end


	
end)
coroutine.wrap(function()
	while wait(10) do
		for i,v in ipairs(servers) do
			if game.PrivateServerId == v.id and isReserved then
				local messageData = {}

				messageData["sender"] = v.id
				messageData["message"] = CurServerNumber

				local encoded = httpService:JSONEncode(messageData)
				messagingService:PublishAsync("#ServersData[pcall1]Data", encoded)
			end
		end
	end
end)()




coroutine.wrap(function()
	while wait(1) do
		for i,plr in ipairs(game:GetService("Players"):GetChildren()) do
			coroutine.wrap(function()
				for i,c in ipairs(plr.PlayerGui:WaitForChild("System",10).Frame.List:GetChildren()) do
					if c:IsA("Frame") then
						c:Destroy()
					end
				end
			end)()
		end
		for i,v in ipairs(servers) do
			if v.id ~= nil and arrayofunions[v.id] then

				for i,j in ipairs(game:GetService("Players"):GetChildren()) do
					coroutine.wrap(function()
						addtolist(v.id,arrayofunions[v.id],j)
					end)()
				end
			end
		end
	end
end)()

Any help would be appreciated, thanks!

TeleportToPrivateServer … examples may help …

I already used that, still no help.

I have an idea, but do not know how to implement it.

Fire a remote event when the join button is pressed, then teleport the player to the private server of the person they requested to join

I would assume you would need the ok to enter the private server and if so them examples should be how. I’ve never tried doing a private server teleport but was just reading that a while back so…

I have the scripts here, I am going to bed so I will update you guys in the morning.

local btn = script.Parent

local event = game.ReplicatedStorage.AskToInvite

btn.MouseButton1Click:Connect(function()

event:FireServer()

end)

Server:

event.OnServerEvent:Connect(function()
-- idk what to do from here
end)