I asked a question about decal popping up after a player wins a race. Well, I got that answered and tested it out. But it didn't pop up the decal and it didn't pop up the winner of the player either. This is the script with someone answering it:

local checkpoint1 = game.Workspace.Checkpoint1
local checkpoint2 = game.Workspace.Checkpoint2
local checkpoint3 = game.Workspace.Checkpoint3

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 startBarrier = game.Workspace.StartBarrier

local raceInProgress = false

local lobbySpawn = game.Workspace.LobbySpawn
local trackSpawn = game.Workspace.TrackSpawn

local minimumPlayers = 2

function destroyCars()
	for _, object in pairs(game.Workspace:GetChildren()) do
		print(object.Name)
		if object.Name == "RaceCar" then
			print("This is the RC. Destroy it!")
			object:Destroy()
		end
	end
end

function createCars()
	for _, object in pairs(game.ServerStorage:GetChildren()) do
		local carCopy = object:Clone()
		carCopy.Parent = game.Workspace
		carCopy:MakeJoints()
	end	
end


function showVictoryMessage(playerName)
    local player = game.Players:FindFirstChild(playerName)
    createGui(player.PlayerGui)
    local screengui = player.PlayerGui.ScreenGui
    screengui.Frame.TextLabel.Text = playerName .. "has won!"
    for e = 1,0,0.05 do
            screengui.Frame.Transparency = e
        wait(0)
    end
    wait(1.5)
    for e = 0,1,0.05 do
            screengui.Frame.Transparency = e
        wait(0)
    end
end

function createGui(playerGui)
    local screengui = Instance.new("ScreenGui",playerGui)
    local frame = Instance.new("Frame",screengui).Size UDim2.new(1,0,0.1,0)
    local imageLabel = Instance.new("ImageLabel",frame).Size UDim2.new(1,0,0,0)
    wait()
    imageLabel.Size = UDim2.new(1,0,0,imageLabel.AbsoluteSize.X)--kind of a trick to get x and y the same
    imageLabel.Image = "rbxgameasset://Images/Background"
    local textLabel = Instance.new("TextLabel",frame).Size UDim2.new(0,frame.AbsoluteSize.X-imageLabel.AbsoluteSize.X,1,0)
    --Any Formatting to the TextLabel/Frame/ImageLabel would be done HERE
end


function checkpoint1hit(otherPart)
	print("Checkpoint 1")
	print(otherPart.Name)
	if otherPart ~= nil and otherPart.Parent ~= nil and otherPart.Parent:FindFirstChild("Humanoid") then
		print("Someone hit me!")
		if not checkpoint1:FindFirstChild(otherPart.Parent.Name) then
			local playerTag = Instance.new("StringValue")
			playerTag.Parent = checkpoint1
			playerTag.Name = otherPart.Parent.Name
		end
		
		if checkpoint3:FindFirstChild(otherPart.Parent.Name) and raceInProgress then
			print("Player wins!")
			raceInProgress = false
			showVictoryMessage(otherPart.Parent.Name)
		end
	end
end

function checkpoint2hit(otherPart)
	print("Checkpoint 2")
	print(otherPart.Name)
	if otherPart ~= nil and otherPart.Parent ~= nil and otherPart.Parent:FindFirstChild("Humanoid") then
		print("Someone 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

function checkpoint3hit(otherPart)
	print("Checkpoint 3")
	print(otherPart.Name)
	if otherPart ~= nil and otherPart.Parent ~= nil and otherPart.Parent:FindFirstChild("Humanoid") then
		print("Someone 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

checkpoint1.Touched:connect(checkpoint1hit)
checkpoint2.Touched:connect(checkpoint2hit)
checkpoint3.Touched:connect(checkpoint3hit)



function startLightCycle()
	redLight.Enabled = true

	wait(1)
	
	redLight.Enabled = false
	yellowLight.Enabled = true
	
	wait(1)
	
	yellowLight.Enabled = false
	greenLight.Enabled = true
end

function removeBarrier()
	startBarrier.Transparency = 1
	startBarrier.CanCollide = false
end

function resetLights()
	redLight.Enabled = false
	yellowLight.Enabled = false
	greenLight.Enabled = false
end

function resetBarrier()
	startBarrier.Transparency = .5
	startBarrier.CanCollide = true
end

function clearCheckpoint(checkpoint)
	for _, object in pairs(checkpoint:GetChildren()) do
		if object.Name ~= "TouchInterest" then
			object:Destroy()
		end
	end
end

function teleportPlayers(target)
	for _, player in pairs(game.Players:GetChildren()) do
			while player.Character == nil do
				wait()
			end
		local character = player.Character
		local torso = character:WaitForChild("Torso")
		torso.CFrame = target.CFrame
	end
end

wait(10)

while true do
	-- wait for enough players before we start the game
	while game.Players.NumPlayers < minimumPlayers do
		wait()
	end
	
	-- setup racetrack	
	-- turn off all lights
	resetLights()
	
	-- reset barrier
	resetBarrier()
	
	-- create all cars
	createCars()
	
	-- clear all checkpoints
	clearCheckpoint(checkpoint1)
	clearCheckpoint(checkpoint2)
	clearCheckpoint(checkpoint3)
	
	-- teleport all players to the racetrack
	teleportPlayers(trackSpawn)
	
	wait(5)
	
	-- start race
	-- start light cycle
	startLightCycle()
	
	-- remove barrier
	removeBarrier()
	
	raceInProgress = true
	
	-- wait for race to finish 
	while raceInProgress == true do
		wait()
	end
	
	wait(2)
	
	-- delete all cars
	destroyCars()
	
	wait(2)
	
	-- teleport all players to the lobby
	teleportPlayers(lobbySpawn)
	
	wait(10)
end