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 all players into the map?

Hi! So I have been following a AlvinBlox Tutorial

I have wrote down everything he did but only one player get teleported to the map.

The code below this is the Main Script

-- 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 = 25

-- 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!")
	end
	
	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
	
	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
					-- Left the game
				else
					if character:FindFirstChild("GameTag") then
						-- Still alive 
						print(player.Name.." is still in the game!")
					else 
						-- They are dead
						table.remove(plrs.x)
					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.Bucks.Value = plrs[1].leaderstats.Bucks + reward
			break
		elseif #plrs == 0 then
			Status.Value = "Nobody won!"
			break
		elseif i == 0 then
			Status.Value = "Nobody Won!"
		end
		
		wait(1)
	end
	
	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:Destroy()
			end
			
			if character:FindFirstChild("Sword")then
				character.Sword:Destroy()
			end
		end
		
		player:LoadCharacter()
		
	end
	
	ClonedMap:Destroy()
	
	Status.Value = "Game Ended"
	
	wait(2)
	
end

There are no errors in the code. (Nothing in the output or the script analyser) Please help me. Thanks to all of you in advance.

1 comment

0

You can use the print() command to decipher your error. Go through each for pair and and whichever one it stops at, it won't print.

1 answer

✓ Accepted answer

Are you sure that only one player is teleported? Can you do a local test with atleast 2 players? By skimming over the code everything seems fine, though I would probably change this line:

repeat wait(1) until game.Players.NumPlayers >= 2

to

repeat wait(1) until #game:GetService('Players'):GetPlayers() >= 2

Apart from that everything looks fine. I assume that code snippet above also works fine, but I'm not entirely sure what NumPlayers is. The best you can do is debug your code and look through Alvin's tutorial carefully again.

4 comments

0

So I tested it with your method but it sill only teleports one person :(

0

pls help :)

0

Debug your code. Add in prints. Print your table to see that both players are getting inserted. Maybe you might only have one spawn, therefore it only teleports one player because it removes that spawn from the table. Otherwise dunno. Make sure you haven't misspelled anything. Sorry can't help much..

0

It's fine but there are no errors in the code because I have checked several times.

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