Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

how to teleport 2 players to a private server with a countdown (it must be touchable)?

I need to teleport 2 players to a privete server with a countdown i don't have much idea about group teleportation can you guys help me about this and do you know a way to make the countdown with it.

2 comments

1

Not a req site.

0

Yup, not a request site!

2 answers

✓ Accepted answer

Assuming you are asking for a full tutorial on how to teleport multiple players to another place in the same game, I am here to give you the full tutorial.

Theoretically, you could teleport multiple players with things other than a part, but for simplicity, this will be using a part to teleport multiple players.

What you want to do is create a Part in Workspace. You can do whatever you want to this part, as long as multiple players are able to touch this part. After you have placed the part in Workspace, place a Script inside the part.

Inside the script, the code should look something like this:

local Players = game.Players
local PlayersTouching = {}
local Timer = 10
local NeededPlayers = 1 -- Change to amount of players needed to start timer
local PlaceId = 0 -- Place GameId here

local Toucher = script.Parent
local RunService = game:GetService("RunService")
local TeleportService = game:GetService("TeleportService")

function IsPlayer(obj)
	if obj.Parent:IsA("Model") and obj.Parent:findFirstChild("Humanoid") then
		if Players:GetPlayerFromCharacter(obj.Parent) ~= nil then
			return true
		end
	end
	
	return false
end

function TeleportPlayers()
	local PrivateServerId = TeleportService:ReserveServer(PlaceId)
	TeleportService:TeleportToPrivateServer(PlaceId, PrivateServerId, PlayersTouching)
end

Toucher.Touched:connect(function(obj)
	if IsPlayer(obj) then
		local CurChar = obj.Parent
		local CurPlayer = Players:GetPlayerFromCharacter(CurChar)
		local index
		
		for i,v in pairs(PlayersTouching) do
			if v == CurPlayer then
				index = i
			end
		end
		
		if not index then
			table.insert(PlayersTouching, CurPlayer)
		end
	end
end)


Toucher.TouchEnded:connect(function(obj)
	if IsPlayer(obj) then
		local CurChar = obj.Parent
		local CurPlayer = Players:GetPlayerFromCharacter(CurChar)
		local index
		
		for i,v in pairs(PlayersTouching) do
			if v == CurPlayer then
				index = i
			end
		end
		
		if index then
			table.remove(PlayersTouching, index)
		end
	end
end)


local TimerRunning = false
local CurTime = Timer
local LastTick = tick()
RunService.Stepped:connect(function()
	if #PlayersTouching >= NeededPlayers then
		TimerRunning = true
	else
		TimerRunning = false
		CurTime = Timer
	end
	
	if TimerRunning then
		CurTime = CurTime-(tick()-LastTick)
		if CurTime <= 0 then
			TeleportPlayers()
			TimerRunning = false
			CurTime = Timer
		end
	end
	
	print(CurTime)
	for i,v in pairs(PlayersTouching) do print(v.Name) end
	LastTick = tick()
end)

Extra advice: In order to make sure that the Toucher.TouchEnded event does not fire when it is not needed to fire, it is important to make sure that the Part that was placed in Workspace is not collidable, anchored, transparent, and touches all parts of the Character. This can be done by creating a very large part that covers a lot of area.

I hope that helps! :D

1 comment

0

You are an awesome human this looks perfect i will try. thank you

To teleport any number of players to a private server, you have to use the TeleportService, specifically TeleportService:ReserveServer and TeleportService:TeleportToPrivateServer (linking to rbxts types docs for that function because the devhub is terrible) First, you have to create a private server with TeleportService:ReserveServer.

local TeleportService = game:GetService("TeleportService")
local serverAccessCode = TeleportService:ReserveServer(game.PlaceId)

Then, you have to get the group of players.

local playersYouWantToTeleport = {} -- This should be an array of Players

To make the delay we use the wait function

local delayTime = 30
wait(delayTime)

And to teleport the players we use TeleportService:TeleportToPrivateServer

TeleportService:TeleportToPrivateServer(game.PlaceId, serverAccessCode, playersYouWantToTeleport)

This discussion is preserved as it was. New answers, comments, and votes are closed.