Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

Random song choosing not working properly! Please help?

Asked by
haba_nero 386 Moderation Voter
5 years ago

Please help! My table is not working properly. It keeps saying that '1 is not a valid member of the folder. IDK why it does the. Help!

01local Songs = script:FindFirstChild("Songs")
02local Gui = game.Lighting:FindFirstChild("ScreenGui")
03local Value = 2--change to num songs
04while true do
05    local Clone =  Songs:Clone()
06    Clone.Parent = game:FindFirstChild("Lighting")
07repeat
08    local ChosenSong = Songs[math.random(1,Value)]--This is the part I am having a problem with!
09    if ChosenSong.Name == "Disco" then
10        for player, v in pairs(game.Players:GetPlayers()) do
11            local Guis = player:FindFirstChild("PlayerGui")
12            local Clone2 = Gui:Clone()
13            Clone2.Parent = Guis
14 
15        end
View all 34 lines...

1 answer

Log in to vote
0
Answered by
Hypgnosis 186
5 years ago

You are so close. Here is a (hopefully) correct fix:

01local Songs = script:FindFirstChild("Songs"):GetChildren()
02local Gui = game.Lighting:FindFirstChild("ScreenGui")
03while true do
04    local Clone =  Songs:Clone()
05    Clone.Parent = game:FindFirstChild("Lighting")
06repeat
07    local ChosenSong = Songs[math.random(1, #Songs)]
08    if ChosenSong.Name == "Disco" then
09        for player, v in pairs(game.Players:GetPlayers()) do
10            local Guis = player:FindFirstChild("PlayerGui")
11            local Clone2 = Gui:Clone()
12            Clone2.Parent = Guis
13 
14        end
15        ChosenSong:Play()
View all 33 lines...

Changes:

  • Line 1: Added ":GetChildren()"
  • Removed "Value" variable, replaced with "#Songs"

Explanation:

  • First, the Songs variable in your code simply referred to the Folder which the songs are stored in. To rectify this, I added the "GetChildren()" function, which takes all of the Folder's children and places them into a table. That means in my code, the Songs variable is now a table with all of the Folder's songs.

  • Then, I removed the Value variable, because there is an easy trick to get the length of the Songs table (length meaning number of songs). By putting a '#' in front of the Songs variable, you get the length of the table.

    • So if two songs are in the Folder, then "#Songs" = 2.
0
Wow thanks! haba_nero 386 — 5y
0
I actually fixed it lol. haba_nero 386 — 5y
Ad

Answer this question