There has to be a better way to do this

if Number == 1 then
		YellowLevel:Fire()
		print("Yellow Level Fired")
	else if Number == 2 then
			BlueLevel:Fire()
			print("Blue Level Fired")
		else if Number == 3 then
				PurpleLevel:Fire()
				print("Purple Level Fired")
			else if Number == 4 then
					SwitchLevel:Fire()
					print("Switch Level Fired")
				else if Number == 5 then
						PinkLevel:Fire()
						print("Pink Level Fired")
					else if Number == 6 then
							WipeoutLevel:Fire()
							print("Wipeout Level Fired")
						else if Number == 7 then
								SpinningLevelEvent:Fire()
							else if Number == 8 then
									FadingLevelEvent:Fire()
								else if Number == 9 then
										BoxEvent:Fire()
									end
								end
							end
						end
					end
				end
			end
		end
	end

This is supposed to randomly select a level to be loaded for my game with a random number generator. This looks like a big mess. Is there any way to make this smaller or look cleaner?

1 Like

Use math.random and it will automatically choose it randomly for you

1 Like
local Number = math.random(1,9)--This is where the number comes from.  The rest of the code is for something different
	local LavaEventFired = false
	local LastMap = Number
	local RS = game:GetService("ReplicatedStorage")
	
	local event = RS.GUIEvents:WaitForChild("FirstEvent")
	local eventTwo = RS.GUIEvents:WaitForChild("SecondEvent")
	local eventThree = RS.GUIEvents:WaitForChild("ThirdEvent")
	local eventThreeServer = RS.Lava:WaitForChild("LavaWarning")
	
	local Reset = RS.GUIEvents:WaitForChild("ResetVotingGUI")
	
	local LavaRising = RS.GUIEvents:WaitForChild("LavaRising")
	
	local YellowLevel = RS.LevelEvents:WaitForChild("YellowLevelEvent")
	local BlueLevel = RS.LevelEvents:WaitForChild("BlueLevelEvent")
	local PurpleLevel = RS.LevelEvents:WaitForChild("PurpleLevelEvent")
	local SwitchLevel = RS.LevelEvents:WaitForChild("SwitchLevelEvent")
	local PinkLevel = RS.LevelEvents:WaitForChild("PinkLevelEvent")
	local WipeoutLevel = RS.LevelEvents:WaitForChild("WipeoutLevelEvent")
	local SpinningLevelEvent = RS.LevelEvents:WaitForChild("SpinningLevelEvent")
	local FadingLevelEvent = RS.LevelEvents:WaitForChild("FadingLevelEvent")
	local BoxEvent = RS.LevelEvents:WaitForChild("BoxEvent")
	
	local SoundDissolve = RS.Audio.SoundDissolve
	
	local count = 30
	--Intermission: #
	RS.GUIEvents.INTERMISSION:Fire()
	RS.TeleportPlayers:Fire()
	RS.GUIEvents.EXTRAINTERMISSIONEVENT:Fire()
	RS.Audio.Crescendo:Fire()
	while count > 0 do
		count -= 1
		event:FireAllClients(count)
		task.wait(1)
		
	end
	--Cheese is rising in #
	count = 6
	RS.LevelEvents.MapChooser:Fire()
	RS.TeleportPlayers:Fire()

	if Number == 1 then
		YellowLevel:Fire()
		print("Yellow Level Fired")
	else if Number == 2 then
			BlueLevel:Fire()
			print("Blue Level Fired")
		else if Number == 3 then
				PurpleLevel:Fire()
				print("Purple Level Fired")
			else if Number == 4 then
					SwitchLevel:Fire()
					print("Switch Level Fired")
				else if Number == 5 then
						PinkLevel:Fire()
						print("Pink Level Fired")
					else if Number == 6 then
							WipeoutLevel:Fire()
							print("Wipeout Level Fired")
						else if Number == 7 then
								SpinningLevelEvent:Fire()
							else if Number == 8 then
									FadingLevelEvent:Fire()
								else if Number == 9 then
										BoxEvent:Fire()
									end
								end
							end
						end
					end
				end
			end
		end
	end
1 Like

You could put the Signals in a dictionary and then index from it.

local Events = {
	[1] = YellowLevel,
	[2] = BlueLevel,
	[3] = ...
	
}

Events[Number]:Fire()
2 Likes

Take away the space between else and if, because this way to will take away a lot of ends, because in your script it says else if, but this way it will make if add an end, instead elseif doesn’t need any more ends

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.