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