Discussion Forums > Technology

Making a VGUI music player in game

(1/1)

pantsu miru:
So I was playing garrysmod, and was tinkering with Foobar2000 To see if I could get it to play a song I wanted just through shortcuts, rather than alt tabbing out of the game every time to choose the file I want to play. 
Lots of tinkering with it, no success.
So I asked one of the guys on the server who was also playing songs if he knew how to do it.
He said he was using an VGUI menu music player in garrysmod with Itunes as the player. 


^ that is it, found it on his page after much sleuthing  ^
How do I make one like that?  (I have no idea how to use LUA[derp])


EDIT: May have found a lua script that does what I want... Only one major problem, after I have made it a LUA file in the appropriate folder... How do i access it?  ._.
This is the script I'm thinking may work.
(click to show/hide)PANEL = {}
PANEL.Name = "iTunes"
PANEL.Desc = "Control iTunes from GMod"
PANEL.TabIcon = "gui/silkicons/music"
PANEL.iTunes = itunes.CreateInterf ace()
PANEL.Skin = "" -- _blue

function PANEL:Init()
        self:SetMouseInputEnable d(true)
        self:SetKeyboardInputEna bled(true)
       
        self.ControlPanel = vgui.Create("DPanel",self)
        --self.SongList = vgui.Create("DPanel",self)
        --self.PlayList = vgui.Create("DPanel",self)
       
        self.PlayState = tobool(self.iTunes:GetPlayerState())
               
        self.Button_PlaySto p = vgui.Create("DImageButton",self.ControlPanel)
        self.Button_PlaySto p:SetPos(40,20)
        self.Button_PlaySto p:SetSize(16,16)
        self.Button_PlaySto p:SetImage((tobool(self.iTunes:GetPlayerState()) == true and "gui/silkicons/control_stop" or "gui/silkicons/control_play")..self.Skin)
        self.Button_PlaySto p.DoClick = function(btn)
                if tobool(self.iTunes:GetPlayerState()) == true then
                        btn:SetImage("gui/silkicons/control_play"..self.Skin)
                        self.iTunes:Stop()
                else
                        btn:SetImage("gui/silkicons/control_stop"..self.Skin)
                        self.iTunes:Play()
                end
        end
       
        self.Button_Next = vgui.Create("DImageButton",self.ControlPanel)
        self.Button_Next:SetPos(60,20)
        self.Button_Next:SetSize(16,16)
        self.Button_Next:SetImage("gui/silkicons/control_fastforward"..self.Skin)
        self.Button_Next.Do Click = function(btn)
                self.iTunes:NextTrack()
        end
       
        self.Button_Back = vgui.Create("DImageButton",self.ControlPanel)
        self.Button_Back:SetPos(20,20)
        self.Button_Back:SetSize(16,16)
        self.Button_Back:SetImage("gui/silkicons/control_rewind"..self.Skin)
        self.Button_Back.Do Click = function(btn)
                self.iTunes:BackTrack()
        end
       
        self.Slider_Volume = vgui.Create("DSlider",self.ControlPanel)
        self.Slider_Volume:SetPos(100,21)
        self.Slider_Volume:SetSize(150,13)
        self.Slider_Volume:SetLockY(0.5)
        self.Slider_Volume:SetTrapInside(true)
        self.Slider_Volume:SetImage("vgui/slider")
        self.Slider_Volume:SetSlideX(self.iTunes:GetSoundVolume()/100)
        self.Slider_Volume. TranslateValues = function(slider,x,y)
                x = math.floor(x*100)/100
                self.iTunes:SetSoundVolume(x*100)
                return x,y
        end
        Derma_Hook(self.Slider_Volume,"Paint","Paint","NumSlider")     
       
        self.CurrentTrack = self.iTunes:GetCurrentTrack()
        self.CurrentTitle = self.CurrentTrack:GetName()
        self.CurrentArtist = self.CurrentTrack:GetArtist()
       
        self.PlayerPosition = math.floor(self.iTunes:GetPlayerPosition() / self.CurrentTrack:GetDuration() * 100)
       
        self.Info_CurrentTr ack = vgui.Create("DPanel",self.ControlPanel)
        self.Info_CurrentTr ack:SetSize(500,55)
        self.Info_CurrentTr ack.OldPaint = self.Info_CurrentTr ack.Paint
        self.Info_CurrentTr ack.Paint = function(pnl)
                self.Info_CurrentTr ack.OldPaint(pnl)
                draw.DrawText(self.CurrentArtist. ." - "..self.CurrentTitle,"Default",100,10,Color(255,255,255,255),ALIGN_LEFT)
        end
       
        self.Slider_Track = vgui.Create("DSlider",self.Info_CurrentTrack)
        self.Slider_Track:SetPos(100,31)
        self.Slider_Track:SetSize(300,13)
        self.Slider_Track:SetLockY(0.5)
        self.Slider_Track:SetTrapInside(true)
        self.Slider_Track:SetImage("vgui/slider")
        self.Slider_Track:SetSlideX(self.PlayerPosition/100)
        self.Slider_Track.T ranslateValues = function(slider,x,y)
                x = math.floor(x*100)/100
                self.iTunes:SetPlayerPosition(x*100)
                return x,y
        end
        Derma_Hook(self.Slider_Track,"Paint","Paint","NumSlider")
       
        self.TrackList = vgui.Create("DListView",self)
        self.TrackList:AddColumn("Title"):SetFixedWidth(400)
        self.TrackList:AddColumn("Artist"):SetFixedWidth(200)
        self.TrackList:AddColumn("Album"):SetFixedWidth(200)
        self.TrackList:AddColumn("Last Played")
        self.TrackList:SetDataHeight(16)
       
        self.CurrentPlayLis t = self.iTunes:GetCurrentPlaylist()
       
        function LoadPlayList(lib)
                self.TrackList:Clear()
                local tracklist = lib:GetTracks()
                for i=1,tracklist:GetCount() do
                        local track = tracklist:GetItem(i)
                        local name = track:GetName()
                        local artist = track:GetArtist()
                        local album = track:GetAlbum()
                        local last = track:GetPlayedDate()
                       
                        self.TrackList:AddLine(name,artist,album,last)
                end
        end
        LoadPlayList(self.CurrentPlayLis t)
       
        self.PlayList = vgui.Create("DListView",self)
        self.PlayList:AddColumn("PlayLists")
        self.PlayList:SetDataHeight(16)
        self.PlayList:SetMultiSelect(false)
        self.PlayList.OnCli ckLine = function(parent,line,selected)
                line:SetSelected(true)
                local lib = self.PlayListLib:GetItemByName(line:GetValue(1))
                if lib then LoadPlayList(lib) end
        end
       
        self.Source = self.iTunes:GetLibrarySource()
        self.PlayListLib = self.Source:GetPlaylists()
        for i=1,self.PlayListLib:GetCount() do
                local playlist = self.PlayListLib:GetItem(i)
                local name = playlist:GetName()
                if !table.HasValue({"Mediathek","Filme","Fernsehsendungen","Podcasts","Einkäufe","Genius","iTunes DJ","Klassische Musik","Zuletzt Hinzugefügt"},name) then
                        self.PlayList:AddLine(name)
                end
        end
       
       
        /*
        itunes.CreateInterf ace()

        IiTunes:Release()
        IiTunes:BackTrack()
        IiTunes:FastForward()
        IiTunes:GetCurrentStreamTit le()
        IiTunes:GetCurrentStreamURL()
        IiTunes:GetCurrentPlaylist()
        IiTunes:GetCurrentTrack()
        IiTunes:GetLibraryPlaylist()
        IiTunes:GetLibrarySource()
        IiTunes:GetMute()
        IiTunes:GetPlayerPosition()
        IiTunes:GetPlayerState()
        IiTunes:GetSoundVolume()
        IiTunes:GetSources()
        IiTunes:GetVersion()
        IiTunes:NextTrack()
        IiTunes:Pause()
        IiTunes:Play()
        IiTunes:PlayFile(filePath)
        IiTunes:PlayPause()
        IiTunes:PreviousTrack()
        IiTunes:Quit()
        IiTunes:Resume()
        IiTunes:Rewind()
        IiTunes:SetMute(mute)
        IiTunes:SetPlayerPosition(position)
        IiTunes:SetSoundVolume(volume)
        IiTunes:Stop()
        IiTunes:SubscribeToPodcast(url)
        IiTunes:UpdateIPod()
        IiTunes:UpdatePodcastFeeds()

        IITTrack:Release()
        IITTrack:GetIndex()
        IITTrack:GetName()
        IITTrack:GetPlaylistID()
        IITTrack:GetSourceID()
        IITTrack:GetTrackDatabaseID()
        IITTrack:GetTrackID()
        IITTrack:SetName()
        IITTrack:Delete()
        IITTrack:GetAlbum()
        IITTrack:GetArtist()
        IITTrack:GetBitRate()
        IITTrack:GetBPM()
        IITTrack:GetComment()
        IITTrack:GetCompilation()
        IITTrack:GetComposer()
        IITTrack:GetDateAdded()
        IITTrack:GetDiscCount()
        IITTrack:GetDiscNumber()
        IITTrack:GetDuration()
        IITTrack:GetEnabled()
        IITTrack:GetEQ()
        IITTrack:GetFinish()
        IITTrack:GetGenre()
        IITTrack:GetGrouping()
        IITTrack:GetKind()
        IITTrack:GetModificationDate()
        IITTrack:GetPlayedCount()
        IITTrack:GetPlayedDate()
        IITTrack:GetPlaylist()
        IITTrack:GetPlayOrderIndex()
        IITTrack:GetRating()
        IITTrack:GetSampleRate()
        IITTrack:GetSize()
        IITTrack:GetStart()
        IITTrack:GetTime()
        IITTrack:GetTrackCount()
        IITTrack:GetTrackNumber()
        IITTrack:GetVolumeAdjustment()
        IITTrack:GetYear()
        IITTrack:Play()
        IITTrack:SetAlbum(album)
        IITTrack:SetArtist(artist)
        IITTrack:SetBPM(bpm)
        IITTrack:SetComment(comment)
        IITTrack:SetCompilation(compilation)
        IITTrack:SetComposer(composer)
        IITTrack:SetDiscCount(discCount)
        IITTrack:SetDiscNumber(discNumber)
        IITTrack:SetEnabled(enabled)
        IITTrack:SetEQ(eq)
        IITTrack:SetFinish(finish)
        IITTrack:SetGenre(genre)
        IITTrack:SetGrouping(grouping)
        IITTrack:SetPlayedCount(count)
        IITTrack:SetPlayedDate(playedDate)
        IITTrack:SetRating(rating)
        IITTrack:SetStart(start)
        IITTrack:SetTrackCount(trackCount)
        IITTrack:SetTrackNumber(trackNumber)
        IITTrack:SetVolumeAdjustment(adjustment)
        IITTrack:SetYear(year)

        IITTrackCollection:Release()
        IITTrackCollection:GetCount()
        IITTrackCollection:GetItem(index)
        IITTrackCollection:GetItemByName(name)

        IITPlaylist:Release()
        IITPlaylist:GetIndex()
        IITPlaylist:GetName()
        IITPlaylist:GetPlaylistID()
        IITPlaylist:GetSourceID()
        IITPlaylist:SetName(name)
        IITPlaylist:Delete()
        IITPlaylist:GetDuration()
        IITPlaylist:GetKind()
        IITPlaylist:GetShuffle()
        IITPlaylist:GetSize()
        IITPlaylist:GetSongRepeat()
        IITPlaylist:GetSource()
        IITPlaylist:GetTime()
        IITPlaylist:GetTracks()
        IITPlaylist:GetVisible()
        IITPlaylist:PlayFirstTrack()
        IITPlaylist:Search(search, field)
        IITPlaylist:SetShuffle(shuffle)
        IITPlaylist:SetSongRepeat(mode)

        IITPlaylistCollecti on:Release()
        IITPlaylistCollecti on:GetCount()
        IITPlaylistCollecti on:GetItem(index)
        IITPlaylistCollecti on:GetItemByName(name)

        IITSource:Release()
        IITSource:GetIndex()
        IITSource:GetName()
        IITSource:GetSourceID()
        IITSource:SetName(name)
        IITSource:GetCapacity()
        IITSource:GetFreeSpace()
        IITSource:GetKind()
        IITSource:GetPlaylists()

        IITSourceCollection:Release()
        IITSourceCollection:GetCount()
        IITSourceCollection:GetItem(index)
        IITSourceCollection:GetItemByName(name)
        */

       
        function GetiTunes()
                return self
        end
end

function PANEL:PerformLayout()
        self:StretchToParent(4,27,4,4)
        self.ControlPanel:StretchToParent(0,0,0,self:GetTall() - 55)
        self.TrackList:StretchToParent(200,60,0,0)     
        self.PlayList:StretchToParent(0,60,self:GetWide() - 195,0)
        self.Info_CurrentTr ack:SetPos(math.max(270,self:GetWide()/2 - 250),0)
end

function PANEL:Paint()
end

Navigation

[0] Message Index

Go to full version