Tutorial de Roblox: Como criar servidores privados com TeleportService

Neste tutorial, você irá aprender como criar servidores privados com o TeleportService.
Dessa forma, os jogadores não precisam comprar servidores VIP para jogar com amigos.

Primeiro, nós iremos usar 2 serviços:

  • DataStoreService: O DataStoreService serve para salvar informações no seu jogo.
    Nesse caso, iremos usá-lo para armazenar o código de acesso dos servidores.

  • TeleportService: Usaremos ele para criar e teleportar os jogadores para os servidores privados

-- Variáveis
local DataStoreService = game:GetService("DataStoreService")
local TeleportService = game:GetService("TeleportService")

Agora que importamos os serviços, vamos ter que criar um DataStore para armazenar os
servidores privados e uma variável com o id da place que você desejar (Caso seu jogo
tenha múltiplas places, você pode colocar o id da place que você quiser).

-- Variáveis
local DataStoreService = game:GetService("DataStoreService")
local TeleportService = game:GetService("TeleportService")
local PrivateServers  = DataStoreService:GetDataStore("PrivateServers")
local PlaceId = game.PlaceId

Os servidores privados serão acessados através de uma senha, que você irá compartilhar
com seus amigos.

function CreatePrivateServer(ServerName, ServerPlaceId)
	-- Criar o servidor privado
	local accessCode, privateServerId = TeleportService:ReserveServer(ServerPlaceId)
	local newPrivateServer = {}
	newPrivateServer.Name = ServerName
	newPrivateServer.PlaceId = ServerPlaceId
	newPrivateServer.AccessCode = accessCode
	newPrivateServer.ServerId = privateServerId
	
	-- Salvar no DataStore
	PrivateServers:SetAsync(ServerName, newPrivateServer)
	return newPrivateServer
end

Pronto, agora iremos criar uma função para procurar o servidor na DataStore ou criá-lo caso não exista:

function GetPrivateServer(ServerName)
	-- Verificar se o servidor está no DataStore
	local success, privateServer = pcall(function()
		return PrivateServers:GetAsync(ServerName)
	end)
	
	if success and privateServer then
		return privateServer
	else
		return CreatePrivateServer(ServerName, PlaceId)
	end
end

E por fim, uma função para teleportar o jogador para o servidor:

function TeleportPlayerToPrivateServer(Player, ServerName)
	-- Obter o servidor privado
	local privateServer = GetPrivateServer(ServerName)
	
	-- Teleportar o jogador para o servidor privado
	TeleportService:TeleportToPrivateServer(privateServer.PlaceId, privateServer.AccessCode, {Player})
end

Agora você pode criar um comando ou uma GUI para teleportar os jogadores para o servidor privado (usando a função TeleportPlayerToPrivateServer):

servidoresPrivados

Esse tutorial chegou ao fim :smiley: Qualquer duvida me pergunte aqui no tópico.
Links úteis:


Código completo:
-- Variáveis
local DataStoreService = game:GetService("DataStoreService")
local TeleportService = game:GetService("TeleportService")
local PrivateServers  = DataStoreService:GetDataStore("PrivateServers")
local PlaceId = game.PlaceId

function CreatePrivateServer(ServerName, ServerPlaceId)
	-- Criar o servidor privado
	local accessCode, privateServerId = TeleportService:ReserveServer(ServerPlaceId)
	local newPrivateServer = {}
	newPrivateServer.Name = ServerName
	newPrivateServer.PlaceId = ServerPlaceId
	newPrivateServer.AccessCode = accessCode
	newPrivateServer.ServerId = privateServerId
	
	-- Salvar no DataStore
	PrivateServers:SetAsync(ServerName, newPrivateServer)
	return newPrivateServer
end

function GetPrivateServer(ServerName)
	-- Verificar se o servidor está no DataStore
	local success, privateServer = pcall(function()
		return PrivateServers:GetAsync(ServerName)
	end)
	
	if success and privateServer then
		return privateServer
	else
		return CreatePrivateServer(ServerName, PlaceId)
	end
end

function TeleportPlayerToPrivateServer(Player, ServerName)
	-- Obter o servidor privado
	local privateServer = GetPrivateServer(ServerName)
	
	-- Teleportar o jogador para o servidor privado
	TeleportService:TeleportToPrivateServer(privateServer.PlaceId, privateServer.AccessCode, {Player})
end
7 Curtidas

Seria legal um tutorial que ensine a usar os parâmetros mais complexos dessa api, nem na wiki official tem

3 Curtidas