Clean up some code

Hey, I need somebody to help me.

How would I make this code shorter and clear it up a little?

local slides = script.Parent
local slidesFolder = slides:WaitForChild("Slides")

local slide1 = slidesFolder.Slide1
local slide2 = slidesFolder.Slide2
local slide3 = slidesFolder.Slide3
local slide4 = slidesFolder.Slide4
local slide5 = slidesFolder.Slide5
local slide6 = slidesFolder.Slide6
local slide7 = slidesFolder.Slide7
local slide8 = slidesFolder.Slide8
local slide9 = slidesFolder.Slide9
local slide10 = slidesFolder.Slide10

local arrowLeft = slides:WaitForChild("ArrowLeft")
local arrowRight = slides:WaitForChild("ArrowRight")

local currentSlide = 1

arrowLeft.MouseButton1Click:Connect(function()
	if currentSlide == 1 then
		print("Lowest slide reached!")
	elseif currentSlide == 2 then
		currentSlide -=1
		slide2.TextTransparency = 1
		slide1.TextTransparency = 0
	elseif currentSlide == 3 then
		currentSlide -=1
		slide3.TextTransparency = 1
		slide2.TextTransparency = 0
	elseif currentSlide == 4 then
		currentSlide -=1
		slide4.TextTransparency = 1
		slide3.TextTransparency = 0
	elseif currentSlide == 5 then
		currentSlide -=1
		slide5.TextTransparency = 1
		slide4.TextTransparency = 0
	elseif currentSlide == 6 then
		currentSlide -=1
		slide6.TextTransparency = 1
		slide5.TextTransparency = 0
	elseif currentSlide == 7 then
		currentSlide -=1
		slide7.TextTransparency = 1
		slide6.TextTransparency = 0
	elseif currentSlide == 8 then
		currentSlide -=1
		slide8.TextTransparency = 1
		slide7.TextTransparency = 0
	elseif currentSlide == 9 then
		currentSlide -=1
		slide9.TextTransparency = 1
		slide8.TextTransparency = 0
	elseif currentSlide == 10 then
		currentSlide -=1
		slide10.TextTransparency = 1
		slide9.TextTransparency = 0
	end
end)

arrowRight.MouseButton1Click:Connect(function()
	if currentSlide == 10 then
		print("Highest slide reached!")
	elseif currentSlide == 9 then
		currentSlide +=1
		slide10.TextTransparency = 0
		slide9.TextTransparency = 1
	elseif currentSlide == 8 then
		currentSlide +=1
		slide9.TextTransparency = 0
		slide8.TextTransparency = 1
	elseif currentSlide == 7 then
		currentSlide +=1
		slide8.TextTransparency = 0
		slide7.TextTransparency = 1
	elseif currentSlide == 6 then
		currentSlide +=1
		slide7.TextTransparency = 0
		slide6.TextTransparency = 1
	elseif currentSlide == 5 then
		currentSlide +=1
		slide6.TextTransparency = 0
		slide5.TextTransparency = 1
	elseif currentSlide == 4 then
		currentSlide +=1
		slide5.TextTransparency = 0
		slide4.TextTransparency = 1
	elseif currentSlide == 3 then
		currentSlide +=1
		slide4.TextTransparency = 0
		slide3.TextTransparency = 1
	elseif currentSlide == 2 then
		currentSlide +=1
		slide3.TextTransparency = 0
		slide2.TextTransparency = 1
	elseif currentSlide == 1 then
		currentSlide +=1
		slide2.TextTransparency = 0
		slide1.TextTransparency = 1
	end
end)
1 Like

Because right now it looks horrible, it works but looks so bad.

Yeah maybe stick to it for now

Really?? Oh um alright then…

I can see how you can add a loop through each slide but it would take some time so I would just stick to it

Do you know how to animate it with tweenservice?

You could just use a for loop, to go through each child and change its TextTransparency accordingly.


@GamingExpert0312 I also don’t think there is an operator for -= so keep that in mind when coding, though correct me if I’m wrong.

local slides = script.Parent
local slidesFolder = slides:WaitForChild("Slides")

local arrowLeft = slides:WaitForChild("ArrowLeft")
local arrowRight = slides:WaitForChild("ArrowRight")

local currentSlide = 1
local collectedSlides = slidesFolder:GetChildren()

arrowLeft.MouseButton1Click:Connect(function()
	if currentSlide == 1 then print("Lowest slide reached!") return end
	
	currentSlide = currentSlide - 1
	for _, label in pairs(collectedSlides) do
		if label.Name == "Slide" .. currentSlide then
			label.TextTransparency = 0
		else
			label.TextTransparency = 1
		end
	end
end)

arrowRight.MouseButton1Click:Connect(function()
	if currentSlide == 10 then print("Highest slide reached!") return end

	currentSlide = currentSlide + 1
	for _, label in pairs(collectedSlides) do
		if label.Name == "Slide" .. currentSlide then
			label.TextTransparency = 0
		else
			label.TextTransparency = 1
		end
	end
end)
3 Likes

Don’t be rude to him, please. He may not have a great reputation but he’s literally done nothing to any of us directly, nor has any relation to Roblox.

That actually looks so much better! Thanks!

1 Like

I am just differentiating it to someone else’s code

No the -= and += actually do work.

It’s still a bit rude, and he isn’t even a developer for the Roblox platform which makes this a bit off-topic.

What? I do develop on roblox bro.

I meant YandereDev, I’m sorry.

Oh right, sorry I thought you ment me xD

1 Like

Yeah but lua and C++ are basically the same except they have different rules, they still include else if

Let me ask you a question, if someone asked you if their code is good would you, give unhonest answer or give a honest answer

2 Likes