local sound1 = 532933680 local sound2 = 663850511 local sound3 = 1239252570 local sound4 = 447293921 local sound5 = 656434255 local sound6 = 316677879 local sound7 = 518562191 local sound8 = 233471598 local sound9 = 412765335 local music = script.Parent while true do wait() music.SoundId = "rbxassetid://"..sound1 music:Play() game.StarterGui.ScreenGui.Settings["Now Playing"].Song name.Text = 'Song name' music.Ended:Wait() music.SoundId = "rbxassetid://"..sound2 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound3 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound4 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound5 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound6 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound7 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound8 music:Play() music.Ended:Wait() music.SoundId = "rbxassetid://"..sound9 music:Play() music.Ended:Wait() end
So I want to change the text of a label in Starter Gui with a script in Workspace. The script is the child of a sound.
Code is on top
At line 16 the path has square brackets and double quotation marks. I tried using a '.' to complete the path but it didn't work.
Please help me!!
game.StarterGui.ScreenGui.Settings["Now Playing"]["Song name"].Text = "Song name"
But to avoid this, since it can be messy, just remove the spaces and name it NowPlaying
and SongName
.
But this code is far from perfect. Why are you setting the music ID one-by-one when a loop can do this for you.
Have a table contain the IDs, then traverse the table and wait for it to play to go on to the next ID.
local client = game:GetService("Players").LocalPlayer local song_ids = { 532933680, 663850511, 1239252570, 447293921, 656434255, 316677879, 518562191, 233471598, 412765335 } local music = script.Parent local now_playing = client.PlayerGui.ScreenGui.Settings.NowPlaying local song_name_label = now_playing.SongName -- if renamed to this it works while true do -- You don't need that wait() call it does nothing useful for _, song_id in ipairs(song_ids) do music.SoundId = string.format("rbxassetid://%d", song_id) music:Play() song_name_label.Text = "Song name" music.Ended:Wait() -- Will wait for music to end to go onto next end end
I'm not sure where this is parented at, I know it's in a Sound
, but where is that sound.
You do not access the player's UI from StarterGui
. You access it from their PlayerGui
.
game.StarterGui.ScreenGui.Settings["Now Playing"]["Song name"].Text = "Song name"
But to avoid this, since it can be messy, just remove the spaces and name it NowPlaying
and SongName
.
But this code is far from perfect. Why are you setting the music ID one-by-one when a loop can do this for you.
Have a table contain the IDs, then traverse the table and wait for it to play to go on to the next ID.
local client = game:GetService("Players").LocalPlayer local song_ids = { 532933680, 663850511, 1239252570, 447293921, 656434255, 316677879, 518562191, 233471598, 412765335 } local music = script.Parent local now_playing = client.PlayerGui.ScreenGui.Settings.NowPlaying local song_name_label = now_playing.SongName -- if renamed to this it works while true do -- You don't need that wait() call it does nothing useful for _, song_id in ipairs(songs) do music.SoundId = string.format("rbxassetid://%d", song_id) music:Play() song_name_label.Text = "Song name" music.Ended:Wait() -- Will wait for music to end to go onto next end end
I'm not sure where this is parented at, I know it's in a Sound
, but where is that sound.
You do not access the player's UI from StarterGui
. You access it from their PlayerGui
.