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