Still have questions? Join our Discord server and get real time help.
-1

# What is wrong with this script?

Please make your question title relevant to your question content. It should be a one-sentence summary in question form.

I got my answer from putting music in each decal slides or the ones that needs it. But the one problem is that it has an error to the script. This is the script and error:

local bin = script.Parent
local decal = bin.Decal
local sound = Instance.new("Sound", bin) -- Creates a sound object to play assets

local MainSlides = {
{'http://www.roblox.com/asset/?id=213163470', 189421358, 15},
{'http://www.roblox.com/asset/?id=213486920', nil, 3},
{'http://www.roblox.com/asset/?id=157656296', nil, 3},
{'http://www.roblox.com/asset/?id=213486967', nil, 3},
{'http://www.roblox.com/asset/?id=151111211', 160442087, 3},
{'http://www.roblox.com/asset/?id=213487020', nil, 3}
-- You can add sounds where you want, just make sure they are in the correct index of the table.
-- If you do not want a sound on the slide, put nil where the asset ID would go.
}

function getNumTabs(tab)
local num = 0
for i,v in pairs(tab) do num = num + 1 end
return num
end

function runTable(tab)
for i = 1,getNumTabs(tab) do
local currentTab = tab[tostring(i)]

if currentTab[2] ~= nil then  -- If there is an asset ID given then
sound.SoundId = currentTab[2] -- Load asset ID into sound
sound:Play() -- Play the sound
end

decal.Texture = currentTab[1]
wait(currentTab[3])
sound:Pause() -- Pauses the sound
end
end

local c = game.Workspace.Countdown.SurfaceGui.TextLabel

function countDown()
for timeLeft = 20, 0, -1 do
c.Text = timeLeft
wait(1)
end
c.Text = "Movie has started!"
end

while true do
countDown()
runTable(MainSlides)
end



Error:

00:09:23.912 - Workspace.Part.SlideScript:358: attempt to index local 'currentTab' (a nil value)


Thank you!

1
BlueTaslem 17922
5 years ago

MainSlides is a list. That means the indices are 1, 2, 3, ....

The indices are not the text "1", "2", "3", ....

In other words, there is no reason to use tostring on line 24 -- you want the number i, so use just i.

Similarly, since MainSlides is a list, getNumTabs(MainSlides) will just be the length of MainSlides, or #MainSlides.

for i = 1, #tab do
local currentTab = tab[i]


Usually, it's better to use ipairs than direction iteration like this:

for _, currentTab in ipairs(tab) do
if currentTab[2] ~= then
....

0
Thanks bro. User#5689 0 — 5y