I asked bunch of question with this type of script. But when I tested the script out, what makes me confuse is that the barrier to this script is not making the Collision false or the transparency into 1. This is the script:
local checkpoint1 = game.Workspace.MapHolder.Map1Beginner.Checkpoint1 local checkpoint2 = game.Workspace.MapHolder.Map1Beginner.Checkpoint2 local checkpoint3 = game.Workspace.MapHolder.Map1Beginner.Checkpoint3 local redLight = game.Workspace.MapHolder.Map1Beginner.StartLight.RedModel.LightBulb.PointLight local yellowLight = game.Workspace.MapHolder.Map1Beginner.StartLight.YellowModel.LightBulb.PointLight local greenLight = game.Workspace.MapHolder.Map1Beginner.StartLight.GreenModel.LightBulb.PointLight local startBarrier = game.Workspace.MapHolder.Map1Beginner.StartBarrier local raceInProgress = false local lobbySpawn = game.Workspace.LobbySpawn local trackSpawn = game.Workspace.MapHolder.Map1Beginner.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 message = Instance.new("Message") message.Text = playerName .. " has won!" message.Parent = game.Workspace wait(2) message:Destroy() 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
Also I made a map script as well where I make one script disable and the other one enabled. What I want to do is that after the race, it should disable the other script and enable script2 which is Map2. What I am saying here is that after the race, you wait 5 to 10 sec. and go to the next map. This is what I put:
script1 = game.ServerScriptService.Map1 script2 = game.ServerScriptService.Map2 while true do script1.Disabled = true wait() script1.Disabled = false end while true do script2.Disabled = true wait() script2.Enabled = false end
Thanks :D
Thanks for down voting on this. Because it is telling me that I am asking some stupid question that roblox must have heard, by roblox I mean the members. I am sorry if I did ask like that and answered it with this, but I am just wanting to say that since I am getting mad at myself for getting down votes.