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

"NumPLayer is not a valid member of Players" Can someone help me?

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

while true do
	
	Status.Value = "Waiting for enough players"
	
	repeat wait(1) until game.Players.NumPLayers >=2
	
	Status.Value = "Intermission"
	
	wait(2)
	
	local plrs = {}
	
	for i, player in pairs(game.Players:GetPlayers()) do
		 if player then
			 table.insert(plrs,player)
		end
	end
		
	wait(2)
		
	local AvailableMaps = MapsFolder:GetChildren()
		
	local ChosenMap = AvailableMaps[math.random(1,#AvailableMaps)]
		
	Status.Value = ChosenMap.Name.." Chosen"
		
	local CloneMap = ChosenMap:Clone()
	ClonedMap.Parent = workspace
		
	-- Teleport Players
		
	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
				 	
					character:FindFirstChild("HumanoidRootPart").CFrame = AvailableSpawnPoints[1].CFrame
					table.remove(AvailableSpawnPoints,1)
				
					
					-- Give them a Sowrd
				
					local Sword = ServerStorage.Sword:Clone()
					Sword.Parent = player.Backpack
				
					local GameTag = Instance.new("BoolValue")
					GameTag.Name = "GameTag"
					GameTag.Parent = player.Character
				else
					
					if not player then
						table.remove(plrs,i)
					end
				end
				
			end
		end
	
	
	Status.Value = "Get ready Muffins!"
	
	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
						-- They are still alive
						print(player.Name.."is still in the game!")
					else
						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 Man
			Status.Value = "The winner is "..plrs[1].Name
			plrs[1].leaderstats.Wins.Value = plrs[1].leaderstats.Wins.Value + reward
			break
		elseif #plrs == 0 then
			Status.Value = "Nobody won!"
			break
		elseif i == 0 then
			Status.Value = "Times up!"
			break
		end
		
		wait(1)
	end
	
	print("End of game!")
	
	for i, player in pairs(game.Players:GetPlayers()) do
		character = player.Charater
		
		if not character then
			-- Ignore them
		else
			if character:FindFirstChild("GameTag") then
				character.GameTag:Destroy()
			end
			
			if player.Bachpack:FindFirstChild("Sword") then
				player.Backpack.Sword:Destroy()
			end
			
			if character.Bachpack:FindFirstChild("Sword") then
				character.Sword:Destroy()
			end
			
		end
		
		player:LoadCharacter()
	end
	
	ClonedMap:Destroy()
	
	Status.Value = "Game ended"
	
	wait(2)
end

1 answer

The problem is there is no variable like NumPlayers for this line:

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

For fixing this, you can do,

local NumPlayersTable = game.Players:GetPlayers()
local NumPlayers = #NumPlayersTable
repeat wait(1) until NumPlayers >= 2

Lemme know if it helps!

4 comments

1

For number of players it would be #game.Players:GetPlayers(), as #table gets the number of items in a table.

0

Oh ya! I forgot that completely.

0

Now the "local NumPlayers = #NumPlayersTable" that you said shows this problem "ServerScriptService.MainScript:12: attempt to get length of a number value"

0

Did you change game.Players.NumPlayers to NumPlayers?

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