Run it
Copy the script and paste it into your executor.
Players =
UserInputService =
SoundService =
MarketplaceService =
RunService =
(serviceName)
service =
retryDelay =
serviceName ==
success, srv = (.GetService, , serviceName)
success srv
currentLocalPlayer = srv.LocalPlayer
currentLocalPlayer currentLocalPlayer:()
service = srv
()
.(retryDelay)
( .. retryDelay .. )
.(retryDelay)
success, srv = (.GetService, , serviceName)
success srv
service = srv
( .. serviceName .. .. retryDelay .. )
.(retryDelay)
service
( .. serviceName .. )
service
Players = ()
UserInputService = ()
SoundService = ()
MarketplaceService = ()
RunService = ()
DEFAULT_VOLUME =
BUTTON_HEIGHT =
BUTTON_PADDING =
TEXTBOX_HEIGHT =
POPULAR_SONGS_IDS = {
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
}
.currentSound =
.playlist = {}
.currentPlaylistIndex =
.playlistPlaying =
.loopCurrentSong =
.loopAllPlaylist =
.filteredPopularSongs = {}
(musicId, volume, loop)
.currentSound
.currentSound:()
.currentSound:()
.currentSound =
musicId musicId ==
()
()
.(musicId, )
( .. musicId .. )
newSound = .()
newSound.SoundId = musicId
newSound.Volume = volume DEFAULT_VOLUME
newSound.Looped = loop
newSound.Parent = SoundService
.currentSound = newSound
newSound.Ended:(()
.currentSound == newSound
.loopCurrentSong
newSound:()
.playlistPlaying #.playlist >
.currentPlaylistIndex = .currentPlaylistIndex +
.currentPlaylistIndex > #.playlist
.loopAllPlaylist
.currentPlaylistIndex =
.playlistPlaying =
()
newSound:()
.currentSound =
nextSong = .playlist[.currentPlaylistIndex]
nextSong
( .. (nextSong.name nextSong.id:(, )))
(nextSong.id, DEFAULT_VOLUME, )
newSound:()
.currentSound =
newSound:()
.currentSound =
)
newSound:()
( .. musicId:(, ))
()
.currentSound
.currentSound:()
.currentSound:()
.currentSound =
.playlistPlaying =
.currentPlaylistIndex =
()
()
(assetIdString)
assetIdNumber = (assetIdString)
assetIdNumber
( .. (assetIdString))
, , .. (assetIdString)
success, info = (MarketplaceService.GetProductInfo, MarketplaceService, assetIdNumber, .InfoType.Asset)
success info
info.AssetTypeId == .AssetType.Audio.Value info.IsRemoved
.(info.Name, , , )
( .. (assetIdNumber) .. )
, , info.Name .. (assetIdNumber)
, info.Name, info.Name .. (assetIdNumber)
( .. (assetIdNumber) .. .. (info.AssetTypeId) .. .. (info.IsRemoved) .. )
, , info.Name .. (assetIdNumber)
( .. (assetIdNumber))
, , .. (assetIdNumber)
(id, name)
fullId = .. id
songName = name
songName .(songName) ==
isAvailable, fetchedName = (id)
songName = fetchedName
isAvailable
( .. id .. )
.(fullId, )
( .. id .. )
alreadyExists =
_, song (.playlist)
song.id == fullId
alreadyExists =
( .. (songName) .. .. id .. )
alreadyExists
.(.playlist, {id = fullId, name = songName})
( .. songName .. .. id .. )
(query)
removedCount =
i = #.playlist, , -
song = .playlist[i]
.(song.name) == .(query) song.id == .. query
.(.playlist, i)
removedCount = removedCount +
( .. (song.name song.id:(, )))
removedCount ==
( .. query .. )
( .. removedCount .. .. query .. )
.currentSound
currentSoundId = .currentSound.SoundId
foundCurrentInPlaylist =
_, song (.playlist)
song.id == currentSoundId
foundCurrentInPlaylist =
foundCurrentInPlaylist .playlistPlaying
()
#.playlist >
.currentPlaylistIndex =
.playlistPlaying =
nextSong = .playlist[.currentPlaylistIndex]
nextSong
( .. (nextSong.name nextSong.id:(, )))
(nextSong.id, DEFAULT_VOLUME, )
.playlistPlaying =
()
.playlistPlaying =
()
foundCurrentInPlaylist .playlistPlaying
()
()
()
#.playlist ==
()
i, song (.playlist)
prefix = (.currentPlaylistIndex == i .playlistPlaying)
songInfo = .(, i, song.name, song.id:(, ), prefix)
(songInfo)
()
.currentSound .currentSound.IsPlaying .playlistPlaying
( .. .currentSound.SoundId:(, ))
.currentSound .playlistPlaying
( .. .currentSound.SoundId:(, ))
.currentSound
()
()
()
.playlist = {}
.currentPlaylistIndex =
.playlistPlaying =
()
PlayerGui = Players.LocalPlayer:()
MainMusicPlayerGUI = .()
MainMusicPlayerGUI.Name =
MainMusicPlayerGUI.Parent = PlayerGui
MainPanel = .()
MainPanel.Size = .(, , , )
MainPanel.Position = .(, -, , )
MainPanel.AnchorPoint = .(, )
MainPanel.BackgroundColor3 = .(, , )
MainPanel.BorderColor3 = .(, , )
MainPanel.BorderSizePixel =
MainPanel.Draggable =
MainPanel.Parent = MainMusicPlayerGUI
HeaderFrame = .()
HeaderFrame.Size = .(, , , )
HeaderFrame.Position = .(, , , )
HeaderFrame.BackgroundColor3 = .(, , )
HeaderFrame.BorderColor3 = .(, , )
HeaderFrame.BorderSizePixel =
HeaderFrame.Parent = MainPanel
HeaderLabel = .()
HeaderLabel.Size = .(, -, , )
HeaderLabel.Position = .(, , , )
HeaderLabel.Text =
HeaderLabel.Font = .Font.SourceSansBold
HeaderLabel.TextColor3 = .(, , )
HeaderLabel.TextSize =
HeaderLabel.BackgroundTransparency =
HeaderLabel.Parent = HeaderFrame
HeaderLabel.ZIndex =
MinimizeButton = .()
MinimizeButton.Size = .(, , , )
MinimizeButton.Position = .(, -, , )
MinimizeButton.Text =
MinimizeButton.Font = .Font.SourceSansBold
MinimizeButton.TextColor3 = .(, , )
MinimizeButton.TextSize =
MinimizeButton.BackgroundColor3 = .(, , )
MinimizeButton.BorderColor3 = .(, , )
MinimizeButton.BorderSizePixel =
MinimizeButton.Parent = HeaderFrame
MinimizeButton.ZIndex =
MinimizeButton.MouseButton1Click:(()
contentContainer = MainPanel:()
contentContainer
contentContainer.Visible = contentContainer.Visible
contentContainer.Visible
MainPanel.Size = .(, , , )
MinimizeButton.Text =
MainPanel.Size = .(, , , )
MinimizeButton.Text =
)
DestroyButton = .()
DestroyButton.Size = .(, , , )
DestroyButton.Position = .(, -, , )
DestroyButton.Text =
DestroyButton.Font = .Font.SourceSansBold
DestroyButton.TextColor3 = .(, , )
DestroyButton.TextSize =
DestroyButton.BackgroundColor3 = .(, , )
DestroyButton.BorderColor3 = .(, , )
DestroyButton.BorderSizePixel =
DestroyButton.Parent = HeaderFrame
DestroyButton.ZIndex =
DestroyButton.MouseButton1Click:(()
MainMusicPlayerGUI:()
.currentSound
()
()
)
ContentContainer = .()
ContentContainer.Size = .(, , , -)
ContentContainer.Position = .(, , , )
ContentContainer.BackgroundTransparency =
ContentContainer.Parent = MainPanel
ContentContainer.Name =
ScrollingFrame = .()
ScrollingFrame.Size = .(, -, , -)
ScrollingFrame.Position = .(, , , )
ScrollingFrame.AnchorPoint = .(, )
ScrollingFrame.BackgroundColor3 = .(, , )
ScrollingFrame.BorderColor3 = .(, , )
ScrollingFrame.BorderSizePixel =
ScrollingFrame.CanvasSize = .(, , , )
ScrollingFrame.VerticalScrollBarInset = .ScrollBarInset.Always
ScrollingFrame.ScrollBarImageColor3 = .(, , )
ScrollingFrame.ScrollBarThickness =
ScrollingFrame.Parent = ContentContainer
ScrollingFrame.Active =
ButtonsContainer = .()
ButtonsContainer.Size = .(, , , )
ButtonsContainer.BackgroundTransparency =
ButtonsContainer.Parent = ScrollingFrame
ListLayout = .()
ListLayout.FillDirection = .FillDirection.Vertical
ListLayout.Padding = .(, BUTTON_PADDING)
ListLayout.HorizontalAlignment = .HorizontalAlignment.Center
ListLayout.VerticalAlignment = .VerticalAlignment.Top
ListLayout.Parent = ButtonsContainer
(scrollingFrameRef, listLayoutRef)
.()
totalContentHeight = listLayoutRef.AbsoluteContentSize.Y
minCanvasHeight = scrollingFrameRef.AbsoluteSize.Y
minCanvasHeight == minCanvasHeight =
totalContentHeight < minCanvasHeight
scrollingFrameRef.CanvasSize = .(, , , minCanvasHeight + )
scrollingFrameRef.CanvasSize = .(, , , totalContentHeight)
ButtonsContainer.ChildAdded:(() (ScrollingFrame, ListLayout) )
ButtonsContainer.ChildRemoved:(() (ScrollingFrame, ListLayout) )
ListLayout:():(() (ScrollingFrame, ListLayout) )
ScrollingFrame:():(() (ScrollingFrame, ListLayout) )
(text, clickFunction)
button = .()
button.Size = .(, -, , BUTTON_HEIGHT)
button.Text = text
button.Font = .Font.SourceSans
button.TextColor3 = .(, , )
button.TextSize =
button.BackgroundColor3 = .(, , )
button.BorderColor3 = .(, , )
button.BorderSizePixel =
button.Parent = ButtonsContainer
button.ZIndex =
button.MouseButton1Click:(clickFunction)
button
AssetIdInput = .()
AssetIdInput.Size = .(, -, , TEXTBOX_HEIGHT)
AssetIdInput.PlaceholderText =
AssetIdInput.Text =
AssetIdInput.Font = .Font.SourceSans
AssetIdInput.TextColor3 = .(, , )
AssetIdInput.TextSize =
AssetIdInput.BackgroundColor3 = .(, , )
AssetIdInput.BorderColor3 = .(, , )
AssetIdInput.BorderSizePixel =
AssetIdInput.Parent = ButtonsContainer
AssetIdInput.ClearTextOnFocus =
AssetIdInput.ZIndex =
SongNameInput = .()
SongNameInput.Size = .(, -, , TEXTBOX_HEIGHT)
SongNameInput.PlaceholderText =
SongNameInput.Text =
SongNameInput.Font = .Font.SourceSans
SongNameInput.TextColor3 = .(, , )
SongNameInput.TextSize =
SongNameInput.BackgroundColor3 = .(, , )
SongNameInput.BorderColor3 = .(, , )
SongNameInput.BorderSizePixel =
SongNameInput.Parent = ButtonsContainer
AssetIdInput.ClearTextOnFocus =
SongNameInput.ZIndex =
(, ()
assetId = AssetIdInput.Text
assetId assetId ~=
( .. assetId, DEFAULT_VOLUME, )
()
)
(, stopSound)
(, ()
assetId = AssetIdInput.Text
songName = SongNameInput.Text
assetId assetId ~=
(assetId, songName ~= songName )
AssetIdInput.Text =
SongNameInput.Text =
()
)
(, ()
#.playlist >
.currentSound .currentSound.IsPlaying .playlistPlaying
.currentSound:()
.playlistPlaying =
()
.currentSound .currentSound.IsPlaying .playlistPlaying
.currentSound:()
.playlistPlaying =
()
.currentSound .playlistPlaying
.currentPlaylistIndex =
.playlistPlaying =
nextSong = .playlist[.currentPlaylistIndex]
nextSong
( .. (nextSong.name nextSong.id:(, )))
(nextSong.id, DEFAULT_VOLUME, )
()
()
)
(, ()
.playlistPlaying #.playlist >
.currentPlaylistIndex = .currentPlaylistIndex +
.currentPlaylistIndex > #.playlist
.currentPlaylistIndex = (.loopAllPlaylist )
.currentPlaylistIndex ==
.playlistPlaying =
()
()
nextSong = .playlist[.currentPlaylistIndex]
nextSong
( .. (nextSong.name nextSong.id:(, )))
(nextSong.id, DEFAULT_VOLUME, )
()
()
)
(, ()
.playlistPlaying #.playlist >
.currentPlaylistIndex = .currentPlaylistIndex -
.currentPlaylistIndex <
.currentPlaylistIndex = #.playlist
.currentPlaylistIndex ==
.playlistPlaying =
()
()
prevSong = .playlist[.currentPlaylistIndex]
prevSong
( .. (prevSong.name prevSong.id:(, )))
(prevSong.id, DEFAULT_VOLUME, )
()
()
)
(, ()
.loopCurrentSong = .loopCurrentSong
( .. (.loopCurrentSong))
.currentSound
.currentSound.Looped = .loopCurrentSong
)
(, ()
.loopAllPlaylist = .loopAllPlaylist
( .. (.loopAllPlaylist))
)
(, ()
query = AssetIdInput.Text
nameQuery = SongNameInput.Text
query ~=
(query)
nameQuery ~=
(nameQuery)
()
AssetIdInput.Text =
SongNameInput.Text =
)
(, ()
AssetIdInput:() SongNameInput:()
()
()
)
(, handlePlaylistList)
VolumeInput = .()
VolumeInput.Size = .(, -, , TEXTBOX_HEIGHT)
VolumeInput.PlaceholderText =
VolumeInput.Text = (DEFAULT_VOLUME)
VolumeInput.Font = .Font.SourceSans
VolumeInput.TextColor3 = .(, , )
VolumeInput.TextSize =
VolumeInput.BackgroundColor3 = .(, , )
VolumeInput.BorderColor3 = .(, , )
VolumeInput.BorderSizePixel =
VolumeInput.Parent = ButtonsContainer
VolumeInput.ClearTextOnFocus =
VolumeInput.ZIndex =
(, ()
volumeText = VolumeInput.Text
newVolume = (volumeText)
newVolume newVolume >= newVolume <=
.currentSound
.currentSound.Volume = newVolume
( .. newVolume)
( .. DEFAULT_VOLUME .. )
()
)
PopularSongsGUI = .()
PopularSongsGUI.Name =
PopularSongsGUI.Parent = PlayerGui
PopularSongsGUI.Enabled =
PopularSongsPanel = .()
PopularSongsPanel.Size = .(, , , )
PopularSongsPanel.Position = .(, -, , )
PopularSongsPanel.AnchorPoint = .(, )
PopularSongsPanel.BackgroundColor3 = .(, , )
PopularSongsPanel.BorderColor3 = .(, , )
PopularSongsPanel.BorderSizePixel =
PopularSongsPanel.Draggable =
PopularSongsPanel.Parent = PopularSongsGUI
PSHeaderFrame = .()
PSHeaderFrame.Size = .(, , , )
PSHeaderFrame.Position = .(, , , )
PSHeaderFrame.BackgroundColor3 = .(, , )
PSHeaderFrame.BorderColor3 = .(, , )
PSHeaderFrame.BorderSizePixel =
PSHeaderFrame.Parent = PopularSongsPanel
PSHeaderLabel = .()
PSHeaderLabel.Size = .(, -, , )
PSHeaderLabel.Position = .(, , , )
PSHeaderLabel.Text =
PSHeaderLabel.Font = .Font.SourceSansBold
PSHeaderLabel.TextColor3 = .(, , )
PSHeaderLabel.TextSize =
PSHeaderLabel.BackgroundTransparency =
PSHeaderLabel.Parent = PSHeaderFrame
PSHeaderLabel.ZIndex =
PSCloseButton = .()
PSCloseButton.Size = .(, , , )
PSCloseButton.Position = .(, -, , )
PSCloseButton.Text =
PSCloseButton.Font = .Font.SourceSansBold
PSCloseButton.TextColor3 = .(, , )
PSCloseButton.TextSize =
PSCloseButton.BackgroundColor3 = .(, , )
PSCloseButton.BorderColor3 = .(, , )
PSCloseButton.BorderSizePixel =
PSCloseButton.Parent = PSHeaderFrame
PSCloseButton.ZIndex =
PSCloseButton.MouseButton1Click:(()
PopularSongsGUI.Enabled =
)
PSSubHeaderLabel = .()
PSSubHeaderLabel.Size = .(, , , )
PSSubHeaderLabel.Position = .(, , , )
PSSubHeaderLabel.Text =
PSSubHeaderLabel.Font = .Font.SourceSans
PSSubHeaderLabel.TextColor3 = .(, , )
PSSubHeaderLabel.TextSize =
PSSubHeaderLabel.BackgroundTransparency =
PSSubHeaderLabel.Parent = PopularSongsPanel
PSSubHeaderLabel.ZIndex =
PSScollingFrame = .()
PSScollingFrame.Size = .(, -, , -)
PSScollingFrame.Position = .(, , , )
PSScollingFrame.AnchorPoint = .(, )
PSScollingFrame.BackgroundColor3 = .(, , )
PSScollingFrame.BorderColor3 = .(, , )
PSScollingFrame.BorderSizePixel =
PSScollingFrame.CanvasSize = .(, , , )
PSScollingFrame.VerticalScrollBarInset = .ScrollBarInset.Always
PSScollingFrame.ScrollBarImageColor3 = .(, , )
PSScollingFrame.ScrollBarThickness =
PSScollingFrame.Parent = PopularSongsPanel
PSScollingFrame.Active =
PSButtonsContainer = .()
PSButtonsContainer.Size = .(, , , )
PSButtonsContainer.BackgroundTransparency =
PSButtonsContainer.Parent = PSScollingFrame
PSListLayout = .()
PSListLayout.FillDirection = .FillDirection.Vertical
PSListLayout.Padding = .(, BUTTON_PADDING)
PSListLayout.HorizontalAlignment = .HorizontalAlignment.Center
PSListLayout.VerticalAlignment = .VerticalAlignment.Top
PSListLayout.Parent = PSButtonsContainer
PSButtonsContainer.ChildAdded:(() (PSScollingFrame, PSListLayout) )
PSButtonsContainer.ChildRemoved:(() (PSScollingFrame, PSListLayout) )
PSListLayout:():(() (PSScollingFrame, PSListLayout) )
PSScollingFrame:():(() (PSScollingFrame, PSListLayout) )
PopularSongsPanel.Position = .(, -, , )
()
_, child (PSButtonsContainer:())
child:()
child:()
()
.filteredPopularSongs = {}
availableSongs = {}
_, id (POPULAR_SONGS_IDS)
isAvailable, name, defaultName = (id)
isAvailable
.(availableSongs, {id = id, name = name})
( .. id .. .. defaultName .. )
.()
.(availableSongs, (a, b)
a.name < b.name
)
#availableSongs ==
noSongsLabel = .()
noSongsLabel.Size = .(, -, , )
noSongsLabel.Text =
noSongsLabel.Font = .Font.SourceSans
noSongsLabel.TextColor3 = .(, , )
noSongsLabel.TextSize =
noSongsLabel.BackgroundTransparency =
noSongsLabel.Parent = PSButtonsContainer
i, song (availableSongs)
songEntryFrame = .()
songEntryFrame.Size = .(, -, , BUTTON_HEIGHT * )
songEntryFrame.BackgroundTransparency =
songEntryFrame.Parent = PSButtonsContainer
songNameLabel = .()
songNameLabel.Size = .(, , , )
songNameLabel.Position = .(, , , )
songNameLabel.Text = song.name
songNameLabel.Font = .Font.SourceSansBold
songNameLabel.TextColor3 = .(, , )
songNameLabel.TextSize =
songNameLabel.TextXAlignment = .TextXAlignment.Left
songNameLabel.BackgroundTransparency =
songNameLabel.Parent = songEntryFrame
buttonsContainerInner = .()
buttonsContainerInner.Size = .(, , , )
buttonsContainerInner.Position = .(, , , )
buttonsContainerInner.BackgroundTransparency =
buttonsContainerInner.Parent = songEntryFrame
buttonsLayout = .()
buttonsLayout.CellSize = .(, , , )
buttonsLayout.CellPadding = .(, , , )
buttonsLayout.FillDirection = .FillDirection.Horizontal
buttonsLayout.HorizontalAlignment = .HorizontalAlignment.Center
buttonsLayout.StartCorner = .StartCorner.TopLeft
buttonsLayout.SortOrder = .SortOrder.LayoutOrder
buttonsLayout.Parent = buttonsContainerInner
copyIDButton = .()
copyIDButton.Size = .(, , , )
copyIDButton.LayoutOrder =
copyIDButton.Text =
copyIDButton.Font = .Font.SourceSans
copyIDButton.TextColor3 = .(, , )
copyIDButton.TextSize =
copyIDButton.BackgroundColor3 = .(, , )
copyIDButton.BorderColor3 = .(, , )
copyIDButton.BorderSizePixel =
copyIDButton.Parent = buttonsContainerInner
copyIDButton.MouseButton1Click:(()
UserInputService:(song.id)
( .. song.id)
)
playButton = .()
playButton.Size = .(, , , )
playButton.LayoutOrder =
playButton.Text =
playButton.Font = .Font.SourceSans
playButton.TextColor3 = .(, , )
playButton.TextSize =
playButton.BackgroundColor3 = .(, , )
playButton.BorderColor3 = .(, , )
playButton.BorderSizePixel =
playButton.Parent = buttonsContainerInner
playButton.MouseButton1Click:(()
( .. song.id, DEFAULT_VOLUME, )
)
addToPlaylistButton = .()
addToPlaylistButton.Size = .(, , , )
addToPlaylistButton.LayoutOrder =
addToPlaylistButton.Text =
addToPlaylistButton.Font = .Font.SourceSans
addToPlaylistButton.TextColor3 = .(, , )
addToPlaylistButton.TextSize =
addToPlaylistButton.BackgroundColor3 = .(, , )
addToPlaylistButton.BorderColor3 = .(, , )
addToPlaylistButton.BorderSizePixel =
addToPlaylistButton.Parent = buttonsContainerInner
addToPlaylistButton.MouseButton1Click:(()
(song.id, song.name)
)
(PSScollingFrame, PSListLayout)
()
(, ()
PopularSongsGUI.Enabled = PopularSongsGUI.Enabled
PopularSongsGUI.Enabled
()
)
()Its a simple and good CLIENT music player that can play any ids, and has a somewhat good popular songs list that well… Just guesses the ids and stops after 153 requests… Well, enjoy!