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

Why won't my sound play for the client, but will play for the server?

Asked by 2 years ago

Hi there,

Just recently I've made a script that will play songs from a pre-defined playlist. It'll loop trough the playlist and will prioritize songs added by players who purchased a one-time custom song.

The script will play the first song on the playlist just fine. A player joins the game, music starts, all good. The moment I stop the song using Sound:Stop(), the script will play the next song instantly. However, the "Playing" value on the Sound is only checked on for the Server, and not the Client (?). I have no clue why/how, and I'm truly lost.

Any help would be much appreciated!

local SoundService = game:GetService("SoundService")

--/ Variables

local CurrentSong = 0
local SoundQueue = {}

--/ Functions

local function ContinuePlaylist()
    --/ Check queue for purchased songs first
    if #SoundQueue >= 1 then
        --/ Song in queue
    else
        --/ Play from playlist
        CurrentSong += 1
        for _, Sound in pairs (SoundStorage:GetChildren()) do
            if not Sound.IsPlaying then
                local PlaylistPosition = Sound:GetAttribute("PlaylistPosition")
                if PlaylistPosition == CurrentSong then
                    Sound:Play()
                    Sound.Stopped:Connect(function()
                        ContinuePlaylist()
                    end)
                end
            end
        end
    end
end

--/ Startup
ContinuePlaylist()

Answer this question