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

How can I teleport players to a map after the intermission is over?

I'm trying to make players teleport to a random map after 10 seconds. Can you help me as this script wont work?

-- Define variables

local ReplicatedStorage = game:GetService ("ReplicatedStorage")

local ServerStorage = game:GetService ("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 50

local reward = 200

-- Game loop

while true do
	
	Status.Value = "Waiting for enough players"
	
	repeat wait(1) until game.Players.NumPlayers >= 2
	
	Status.Value = "Intermission"

wait(10)

local plrs = {}

for i, player in pairs(game.Players.GetPlayers()) do
	if player then
		table.insert(plrs,player) -- Add each player into plrs table
		
	end
end
wait(2)

local AvailableMaps = MapsFolder:GetChildren()

local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]

Status.Value = ChosenMap.Name.." Chosen"

local ClonedMap = ChosenMap:Clone()
ClonedMap.Parent = workspace

-- Teleport players to the map

local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")

if not SpawnPoints then
	print("Spawnpoints not found!")
	
	local AvailableSpawnPoints = SpawnPoints:GetChildren()
	
	
	for i, player in pairs(plrs) do
		if player then
			character = player.Character
			
			if character then
				   -- Teleport them
				character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame
				table.remove(AvailableSpawnPoints,1)
				
				
				-- Give them a sword
				
				local Sword = ServerStorage.Sword:Clone()
				Sword.Parent = player.Backpack
				
				local GameTag = Instance.new("BoolValue")
				GameTag.Name = "GameTag"
				GameTag.Parent = player.Character 
				else
					-- There is no character
					if not player then
						table.remove(plrs,i)
					end
			end
		end
	end
	
	
	
end
Status.Value = "Get ready to play!"

wait(2)

for i = GameLength,0,-1 do
	
	for x , player in pairs(plrs) do
		if player then
			character = player.Character
			
			if not character then
				else
					if character:FindFirstChild("GameTag") then
						-- They are still alive
					print(player.Name.." is still in the game!")
					else
						-- They are dead
						table.remove(plrs,x)
						print(player.name.." has been removed!") 
					end
			end
		else 
	        table.remove(plrs,x)
	print(player.name.." has been removed!")
		      
		
		
		end
		
		 
		end
		
		Status.Value = "There are "..i.." seconds remaining, and "..#plrs.." players left"
		
		if #plrs == 1 then
			 -- Last person standing
			Status.Value = "The winner is "..plrs[1].Name"!"
			plrs[1].leaderstats.Cash.Value = plrs[1].leaderstats.Cash.Value + reward
			break
		elseif #plrs == 0 then
		Status.Value = "Nobody won!"
		break
		elseif i == 0 then
			Status.Value = "Times up!"
			break
		end
		
		wait(1)
		
		print("End of game")
		
		for i, player in pairs(game.Players:GetPlayers()) do
			character = player.Character
			
			if not character then
				-- Ignore them
			else
				
				if character:FindFirstChild("GameTag") then
					character.GameTag:Destroy()
					
			
			end
			
			
			if player.Backpack:FindFirstChild("Sword") then
				player.Backpack.Sword:Destroy()
			end
				if character:FindFirstChild("Sword") then
				character.Sword:Destroy()
			end
		end
		
		player:LoadCharacter()
		
	end

ClonedMap:Destroy()

Status.Value = "The game has ended!"

wait(2)
end
end

1 answer

✓ Accepted answer

Hi,

To teleport a player, first, you need to get access to their "HumanoidRootPart". Let's say you have the player object stored in a variable named "plr", you can get their HumanoidRootPart by first finding their character in the workspace, as follows :

local plrChar = workspace:FindFirstChild(plr.Name) --Gets Player Character In Workspace
local plrRootPart = plrChar:FindFirstChild("HumanoidRootPart") --Gets Their HumanoidRootPart

Next, we need to move the player's position we need to set the RootPart's CFrame to the Position value of where you want to teleport the players. (I apologize for not being to explain this better, but I don't fully understand it that much myself.) You can do this by using the following code :

plrRootPart.CFrame = CFrame.new(Vector3.new(0,0,0))

In your script, you could change "0,0,0" to the position where you want to send the players. If you want to send the player to the position of the part you can use the .Position property as this is a "Vector3" value. This would be done like this :

local part = workspace.Part
plrRootPart.CFrame = CFrame.new(Vector3.new(part.Position))

The full script snippet to teleport a player (Given that you have the player object in a variable named "plr"),

local plrChar = workspace:FindFirstChild(plr.Name) --Gets Player Character In Workspace
local plrRootPart = plrChar:FindFirstChild("HumanoidRootPart") --Gets Their HumanoidRootPart
plrRootPart.CFrame = CFrame.new(Vector3.new(0,0,0)) -- Here you could also use a part's position or a predefined position as mentioned above.

I hope that you found my answer helpful! Please reply to me with any questions you may have.

1 comment

0

Thank you.

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