local RedLight = game.Workspace.StartLight.RedModel.LightBulb.PointLight

local YellowLight = game.Workspace.StartLight.YellowModel.LightBulb.PointLight

local GreenLight = game.Workspace.StartLight.GreenModel.LightBulb.PointLight

local Barrier = game.Workspace.Wall

local RaceInProgress = false

local Checkpoint4 = game.Workspace.Checkpoint4

local Checkpoint1 = game.Workspace.Checkpoint1

local Checkpoint2 = game.Workspace.Checkpoint2

local Checkpoint3 = game.Workspace.Checkpoint3

function CreateCars()

for _, object in pairs (game.Workspace:GetChildren()) do

	print(object.Name)

	if object.Name == "Car" then

		print ("This is a car, we need to destroy it!")

		object:Destroy()

	end

end

end

function DestroyCars()

for _, object in pairs (game.ServerStorage:GetChildren()) do

	local carCopy = object:Clone()

	carCopy.Parent = game.Workspace

	carCopy:MakeJoints()

end

end

function ResetLights()

RedLight.Enabled = false

YellowLight.Enabled = false

GreenLight.Enbled = false	

end

function ResetBarrier()

Barrier.CanCollide = true

Barrier.Transparency = 0.5

end

function ResetLightCycle()

RedLight.Enabled = true

wait (1)  
       
RedLight.Enabled = false

YellowLight.Enabled = true

wait (1)

YellowLight.Enabled = false

GreenLight.Enabled = true    

end

function RemoveBarrier()

Barrier.Transparency = 1

Barrier.CanCollide = false

end

function ShowVictoryMessage (playerName)

local message = Instance.New("Message")

message.Text = playerName .. " has won!"

message.Parent = game.Workspace

wait(2)

message:Destroy()

end

function Checkpoint4Hit (OtherPart)

print ("Checkpoint4 was hit")

print (OtherPart.name)

if OtherPart ~= nil and OtherPart.Parent ~= nil and OtherPart.Parent:FindFirstChild ("Humanoid") then

	print ("A player hit me!")

	if not Checkpoint4:FindFirstChild(OtherPart.Parent.Name) and Checkpoint3:FindFirstChild 

(OtherPart.Parent.Name) then

		local playerTag = Instance.new("StringValue")

		playerTag.parent = Finish

		playerTag.name = OtherPart.Parent.Name

	end

end

end

Finish.Touched:connect(FinishHit)

function Checkpoint1Hit (OtherPart)

print ("Checkpoint1 was hit")

print (OtherPart.name)

if OtherPart ~= nil and OtherPart.Parent ~= nil and OtherPart.Parent:FindFirstChild ("Humanoid") then

	print ("A player hit me!")

	if Checkpoint1:FindFirstChild (OtherPart.Parent.Name) then

		local playerTag = Instance.new("StringValue")

		playerTag.parent = Checkpoint1

		playerTag.name = OtherPart.Parent.Name

	end

	if Finish:FindFirstChild (OtherPart.Parent.Name) and RaceInProgress then

		print ("Player wins!")

		RaceInProgress = false

		ShowVictoryMessage(OtherPart.Parent.Name)

	end

end

end

Checkpoint1.Touched:connect(Checkpoint1Hit)

function Checkpoint2Hit (OtherPart)

print ("Checkpoint2 was hit")

print (OtherPart.name)

if OtherPart ~= nil and OtherPart.Parent ~= nil and OtherPart.Parent:FindFirstChild ("Humanoid") then

	print ("A player hit me!")

	if not Checkpoint2:FindFirstChild(OtherPart.Parent.Name) and Checkpoint1:FindFirstChild 

(OtherPart.Parent.Name) then

		local playerTag = Instance.new("StringValue")

		playerTag.parent = Checkpoint2

		playerTag.name = OtherPart.Parent.Name

	end

end

end

Checkpoint2.Touched:connect(Checkpoint2Hit)

function Checkpoint3Hit (OtherPart)

print ("Checkpoint3 was hit")

print (OtherPart.name)

if OtherPart ~= nil and OtherPart.Parent ~= nil and OtherPart.Parent:FindFirstChild ("Humanoid") then

	print ("A player hit me!")

	if not Checkpoint3:FindFirstChild(OtherPart.Parent.Name) and Checkpoint2:FindFirstChild 

(OtherPart.Parent.Name) then

		local playerTag = Instance.new("StringValue")

		playerTag.parent = Checkpoint3

		playerTag.name = OtherPart.Parent.Name

	end

end

end

Checkpoint3.Touched:connect(Checkpoint3Hit)

function ClearCheckpoint(Checkpoint)

for _, object in pairs(Checkpoint:GetChildren()) do

if object.Name ~= "TouchInterest" then

	object:Destroy()

end

end

wait(10)

while true do

ResetLights()

ResetBarrier()

DestroyCars()

CreateCars()    

ClearCheckpoint(Checkpoint1)

ClearCheckpoint(Checkpoint2)

ClearCheckpoint(Checkpoint3)

ClearCheckpoint(Checkpoint4)

wait(10)

ResetLightCycle()

RemoveBarrier()

RaceInProgress = true

while RaceInProgress == true do

	wait()

end

wait(5)

end

Please help, It would mean alot, I am almost done making my game.

Thanks.