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

I followed a tutorial but when I play only one player is teleported to the map?


--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=100
--Game Loop

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

	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+Vector3.new(0,10,0)
				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
					table.remove(plrs,x)
				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.."second remaining,and "..#players"left"
		
		if #plrs==1 then
			--Last person standing
			StatusValue="The winner is "..plrs[1].Name
			plrs[1].leaderstats.Bucks.Value=plrs[1].leaderstats.Bucks.Value+reward
			break
		elseif #plrs==0 then 
			Status.Value="Nobody won!"
			break
		elseif i==0 then
			Status.Value="Time up!"
			break	
		end	
			
		wait(1)
	end
	
	print("End of game")
	
	wait(2)
	
	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
			
			play:LoadCharacter()
		end
	
		Clonedmap:Destroy()
		
		Status.Value="Game ended"
		
		wait(2)
	end

2 comments

0

have you tried playing with multiple players?

0

Yes i have tried with more than 2 players

2 answers

✓ Accepted answer

I'm going to assume it's because you run the for loop once.

Maybe try adding it inside a PlayerAdded event?

5 comments

0

What's a PlayerAdded event? I just started learning the basic of scripting can you help me please?

0

game.Players.PlayerAdded:Connect(function(player)

0

ok i pressed enter before i had the time to explain, basically an event that will fire everytime a player joins and if we put it in a function we can add "player" to the parameter, could be whatever you want. basically what's inside the parameter is what you reference the player that joined, for instance if you had boomer in the parameter and did print(boomer.Name) in the function it would print

0

But at what line do i put it?

0

Thanks man

This tutorial was by AlvinBlox if anyone wants to know that

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