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

Please Review my code and see if its right?

--Define variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 300

local reward = 250

--Game Loop

while true do Status.Value = "Waiting for enough players"

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

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(5)

local AvaiableMaps = MapsFolder:GetChildren()

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

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


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

--teleport playes to map

local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")

if not SpawnPoints then
	print("Spawnpoints not found!")
end

local AvaiableSpawnPoints = SpawnPoints:GetChildren()

for i,player in pairs(plrs) do
	if player then 
		character = player.Character

		if character then
			--telport them
			character:FindFirstChild("HumanoidRootPart").CFrame = AvaiableSpawnPoints[1].CFrame
			table.remove(AviableSpawnPoints,1)


			--there is no character
			if not player then 
				table.remove(plrs,i)

				--give them a sword

				local Knife = ServerStorage.Knife:Clone()
				Knife.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
						--They are 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.Money.Value = plrs[1].leaderstats.Money.Value + reward
			break
		elseif #plrs == 0 then
			Status.Value = "Nobody Won!"
			break
		end
		wait(1)
	end	
	print("End of Game")

	for i, player in pairs(game.Players:GetPlayers()) do

		if not character then
			--ignore them

		else 
			if character:FindFirstChild("GameTag") then
				character.GameTag:Destroy()
			end

			if player.Backpack.FindFirstChild("Knife") then
				player.Backpack.Sword:Destroy()
			end

			if character:FindFirstChild("Knife") then
				character.Knife:Destroy()
			end

		end

		player:LoadCharacter()
	end

	ClonedMap:Destroy()

	Status.Value = "Game ended"

	wait(2)
end

end

1 answer

The line, "While true do" has no "end" after it and there are no waits too, if you don't add a wait to while true loop it will crash your game. And you don't need the while true do loop, you can just set the status value to "Waiting for enough players" and use the repeat on the next line, there is also an error in player spawn point teleporting, you are getting the character of the player and checking if the character exists THEN checking if the player exists which doesn't even make sense, you need to check if player exists first and you don't need to do 2 checks for it, you can use else statement for it. You can also not use else statements if you don't need them, on the 131th line you are checking if the character doesn't exist and using the main code on the else statement which doesn't even make sense, you can check if the character exists instead of NOT exists. Other than these I don't see an issue with the script, it's pretty good if you're a newbie.

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