IsakViste icon

Music Player v2.0

IsakViste | PRO | 01/17/15 04:39:57 PM UTC | 0 ⭐ | 2714 👁️ | Never ⏰ | []
text |

18.1 KB

|

None

|

0 👍

/

0 👎

@name Music Player v1.0
@inputs Controller:wirelink Info:wirelink Radio:wirelink User:entity
@outputs StreamURL:string PLAY Volume SongTimeDecimal PlayedTime CurrentSongNumber
@persist Player:entity RangeToPlayer:number PlayedTime:number CurrentSongNumber NextSongNumber LastSongNumber
@trigger
 #!!!PLAYER EDIT STARTS HERE!!!
 #Playlist = array("Default"
#)
 #Format:
#"Song Name", "Song Artist", "Song Time Minutes", "Song Time Seconds", "Song Link"
#To get the link, find music on soundcloud, then use this converter to get the link in .mp3
#https://www.appendipity.com/get-mp3-links-soundcloud/
 SongInfo = array("Find Yourself", "John O Callaghan", "7", "26", "http://media.soundcloud.com/stream/59kSSbkraFIV.mp3",
"Walk", "Foo Fighters", "4", "16", "http://media.soundcloud.com/stream/3sQXZtg2IkIh.mp3",
"Take me to Church", "Jasmine", "4", "07", "http://media.soundcloud.com/stream/AGgjElPgqpOw.mp3",
"Forgive me", "Group1Crew", "3", "46", "http://media.soundcloud.com/stream/CAdLM04pOECV.mp3",
"My Friend", "Tristam", "4", "22", "http://media.soundcloud.com/stream/ILeojRVJSIzI.mp3",
"Whole World Is Watching", "Within Temptation", "4", "13", "http://media.soundcloud.com/stream/oPkcnW03k3ij.mp3"
)
 #!!!PLAYER EDIT STOPS HERE!!!
 if(first() | duped()) {
    hint("Music Player v1.0 - Made by Mentin", 15)
     #Put in your own Steam ID
    if(!isSinglePlayer() & owner():steamID()!= "STEAM_0:1:28842512"){
        selfDestruct()
    }
     #How far must you be from the Screen for it to activate
    RangeToPlayer = 200
    #The volume of the music player at start up
    Volume = 1.0
     #DO NOT CHANGE WHAT'S UNDER!
    CurrentSongNumber = 1
    NextSongNumber = 2
    PLAY = 0
}
 #BASIC
NumberOfSongs = SongInfo:count()/5
#Last Song
LastSongName = SongInfo[1+(LastSongNumber-1)*5,string]
#Current Song
SongName = SongInfo[1+(CurrentSongNumber-1)*5,string]
SongArtist = SongInfo[2+(CurrentSongNumber-1)*5,string]
SongTimeM = SongInfo[3+(CurrentSongNumber-1)*5,string]
SongTimeS = SongInfo[4+(CurrentSongNumber-1)*5,string]
SongLink = SongInfo[5+(CurrentSongNumber-1)*5,string]
SongTime = SongTimeM + "." + SongTimeS
SongTimeDecimal = SongTimeM:toNumber()*60 + SongTimeS:toNumber()
#Next Song
NextSongName1 = SongInfo[1+(NextSongNumber-1)*5,string]
NextSongArtist = SongInfo[2+(NextSongNumber-1)*5,string]
NextSongTimeM = SongInfo[3+(NextSongNumber-1)*5,string]
NextSongTimeS = SongInfo[4+(NextSongNumber-1)*5,string]
NextSongLink = SongInfo[5+(NextSongNumber-1)*5,string]
NextSongTime = NextSongTimeM + "." + NextSongTimeS
 #NEXT SONGS
#Current
TempX1 = CurrentSongNumber
TempX2 = TempX1 + 1
TempX3 = TempX2 + 1
TempX4 = TempX3 + 1
if(TempX1 == NumberOfSongs) {
TempX1 = 0
TempX2 = 1
TempX3 = 2
TempX4 = 3
} elseif (TempX2 == NumberOfSongs) {
TempX2 = 0
TempX3 = 1
TempX4 = 2
} elseif (TempX3 == NumberOfSongs) {
TempX3 = 0
TempX4 = 1
} elseif (TempX4 == NumberOfSongs) {
TempX4 = 0
}
#Use Above Info To Get Names
SongName1 = SongInfo[1+(TempX1)*5,string]
SongName2 = SongInfo[1+(TempX2)*5,string]
SongName3 = SongInfo[1+(TempX3)*5,string]
SongName4 = SongInfo[1+(TempX4)*5,string]
#Next
TempY1 = NextSongNumber
TempY2 = TempY1 + 1
TempY3 = TempY2 + 1
if(TempY1 == NumberOfSongs) {
TempY1 = 0
TempY2 = 1
TempY3 = 2
} elseif (TempY2 == NumberOfSongs) {
TempY2 = 0
TempY3 = 1  
} elseif (TempY3 == NumberOfSongs) {
TempY3 = 0
}
#Use Above Info To Get Names
NextSongName2 = SongInfo[1+(TempY1)*5,string]
NextSongName3 = SongInfo[1+(TempY2)*5,string]
NextSongName4 = SongInfo[1+(TempY3)*5,string]
 if(first() | duped()) {
    #Clear Screens!
    Controller:egpClear()
    Info:egpClear()
     function void screenController(){
        #CONTROLLER SCREEN
        #Background
        Controller:egpBox(1,vec2(256,256),vec2(512,512))
        Controller:egpColor(1,vec(108,201,248))
        Controller:egpMaterial(1, "gui/center_gradient")
        #Top Bar
        Controller:egpRoundedBox(2,vec2(256,60),vec2(480,90))
        Controller:egpColor(2,vec(255,255,255))
        Controller:egpMaterial(2, "gui/center_gradient")
        #Top Bar Outline
        Controller:egpRoundedBoxOutline(3,vec2(256,60),vec2(480,90))
        #Play Button
        Controller:egpBox(6,vec2(90,180),vec2(100,40))
        #Play Button Outline
        Controller:egpBoxOutline(7,vec2(90,180),vec2(100,40))
        Controller:egpColor(7,vec(0,0,0))
        #Play Button Text
        Controller:egpText(8,"Play",vec2(90,170))
        Controller:egpAlign(8,1)
        Controller:egpColor(8,vec(0,0,0))
        #Stop Button
        Controller:egpBox(10,vec2(90,135),vec2(100,40))
        #Stop Button Outline
        Controller:egpBoxOutline(11,vec2(90,135),vec2(100,40))
        Controller:egpColor(11,vec(0,0,0))
        #Stop Button Text
        Controller:egpText(12,"Stop",vec2(90,127))
        Controller:egpAlign(12,1)
        Controller:egpColor(12,vec(0,0,0))
        #Volume Up Button
        Controller:egpBox(13,vec2(170,180),vec2(35,40))
        #Volume Up Button Outline
        Controller:egpBoxOutline(14,vec2(170,180),vec2(35,40))
        Controller:egpColor(14,vec(0,0,0))
        #Volume Up Button Text
        Controller:egpText(15,"+",vec2(169,164))
        Controller:egpAlign(15,1)
        Controller:egpSize(15,30)
        Controller:egpColor(15,vec(0,0,0))
        #Volume Down Button
        Controller:egpBox(17,vec2(342,180),vec2(35,40))
        #Volume Down Button Outline
        Controller:egpBoxOutline(18,vec2(342,180),vec2(35,40))
        Controller:egpColor(18,vec(0,0,0))
        #Volume Down Button Text
        Controller:egpText(19,"-",vec2(343,164))
        Controller:egpAlign(19,1)
        Controller:egpSize(19,30)
        Controller:egpColor(19,vec(0,0,0))
        #Bottom Bar
        Controller:egpBox(22,vec2(256,355),vec2(480,280))
        Controller:egpColor(22,vec(255,255,255))
        Controller:egpMaterial(22, "vgui/gradient_down")
        #Bottom Bar Outline
        Controller:egpBoxOutline(23,vec2(256,355),vec2(480,280))
        Controller:egpColor(23,vec(0,0,0))
        #Previous Song Bar
        Controller:egpBoxOutline(24,vec2(46,355),vec2(60,280))
        Controller:egpColor(24,vec(0,0,0))
        #Previous Song Bar Text
        Controller:egpText(25,"<",vec2(46,333))
        Controller:egpAlign(25,1)
        Controller:egpColor(25,vec(0,0,0))
        Controller:egpSize(25,50)
        #Next Song Bar
        Controller:egpBoxOutline(26,vec2(466,355),vec2(60,280))
        Controller:egpColor(26,vec(0,0,0))
        #Next Song Bar Text
        Controller:egpText(27,">",vec2(466,333))
        Controller:egpAlign(27,1)
        Controller:egpColor(27,vec(0,0,0))
        Controller:egpSize(27,50)
        #Bottom Bar Title Text
        Controller:egpText(28,"Title",vec2(256,250))
        Controller:egpAlign(28,1)
        Controller:egpColor(28,vec(0,0,0))
        Controller:egpSize(28,35)
        #Bottom Bar Duration Text
        Controller:egpText(30,"Duration",vec2(256,380))
        Controller:egpAlign(30,1)
        Controller:egpColor(30,vec(0,0,0))
        Controller:egpSize(30,35)
        #Skip Song Button
        Controller:egpBox(34,vec2(422,180),vec2(100,40))
        Controller:egpAlign(34,1)
        #Skip Song Button Outline
        Controller:egpBoxOutline(35,vec2(422,180),vec2(100,40))
        Controller:egpColor(35,vec(0,0,0))
        Controller:egpAlign(35,1)
        #Skip Song Text
        Controller:egpText(36,"Skip -->",vec2(422,170))
        Controller:egpAlign(36,1)
        Controller:egpColor(36,vec(0,0,0))
    }
     function void screenInfo() {
        #INFO SCREEN
        #Background
        Info:egpBox(1,vec2(256,256),vec2(512,512))
        Info:egpColor(1,vec(255,128,0))
        Info:egpMaterial(1, "gui/center_gradient")
        #Title Bar
        Info:egpBox(2,vec2(256,32),vec2(512,64))
        Info:egpColor(2,vec(0,204,0))
        Info:egpMaterial(2, "gui/center_gradient")
        #Title Bar Text
        Info:egpText(3,"Playlist",vec2(256,6))
        Info:egpAlign(3,1)
        Info:egpColor(3,vec(0,0,153))
        Info:egpSize(3,48)
        #Song Name Bars
        #1
        Info:egpBox(10,vec2(256,104),vec2(496,64))
        Info:egpColor(10,vec(255,255,255))
        Info:egpAlign(10,1)
        Info:egpMaterial(10, "gui/center_gradient")
        #2
        Info:egpBox(13,vec2(256,176),vec2(496,64))
        Info:egpColor(13,vec(102,255,255))
        Info:egpAlign(13,1)
        Info:egpMaterial(13, "gui/center_gradient")
        #3
        Info:egpBox(16,vec2(256,248),vec2(496,64))
        Info:egpColor(16,vec(255,255,255))
        Info:egpAlign(16,1)
        Info:egpMaterial(16, "gui/center_gradient")
        #4
        Info:egpBox(19,vec2(256,320),vec2(496,64))
        Info:egpColor(19,vec(255,255,255))
        Info:egpAlign(19,1)
        Info:egpMaterial(19, "gui/center_gradient")
        #5
        Info:egpBox(22,vec2(256,392),vec2(496,64))
        Info:egpColor(22,vec(255,255,255))
        Info:egpAlign(22,1)
        Info:egpMaterial(22, "gui/center_gradient")
        #6
        Info:egpBox(25,vec2(256,464),vec2(496,64))
        Info:egpColor(25,vec(255,255,255))
        Info:egpAlign(25,1)
        Info:egpMaterial(25, "gui/center_gradient")
    }
     function void infoSongs() {
        #Last Song
        Info:egpText(11,LastSongName,vec2(256,88))
        Info:egpText(14,SongName,vec2(256,160))
        if(PLAY == 0) {
            #Current Song
            Info:egpRemove(15)
            #Next Song
            Info:egpText(17,SongName1,vec2(256,232))
            #Next x2 Song
            Info:egpText(20,SongName2,vec2(256,304))
            #Next x3 Song
            Info:egpText(23,SongName3,vec2(256,376))
            #Next x4 Song
            Info:egpText(26,SongName4,vec2(256,448))
        } else {
            #Current Song
            Info:egpBoxOutline(15,vec2(256,176),vec2(496,64))
            Info:egpColor(15,vec(255,0,0))
            #Next Song
            Info:egpText(17,NextSongName1,vec2(256,232))
            #Next x2 Song
            Info:egpText(20,NextSongName2,vec2(256,304))
            #Next x3 Song
            Info:egpText(23,NextSongName3,vec2(256,376))
            #Next x4 Song
            Info:egpText(26,NextSongName4,vec2(256,448))
        }
    }
     function void volumeController() {
        #Volume Info Amount
        Controller:egpText(21,Volume * 100 + "%",vec2(256,164))
        Controller:egpAlign(21,1)
        Controller:egpColor(21,vec(0,0,0))
        Controller:egpSize(21,30)
    }
     function void songTimer() {
        #Song Timer Text
        Controller:egpText(32,PlayedTime + " / " + SongTimeDecimal,vec2(256,120))
        Controller:egpAlign(32,1)
        Controller:egpColor(32,vec(0,0,0))
        Controller:egpSize(32,30)
    }
     function void topBarTitle() {
        #Top Bar Title
        Controller:egpText(4,SongName,vec2(256,55))
        Controller:egpAlign(4,1)
        Controller:egpColor(4,vec(0,0,0))
    }
     function void bottomBar() {
        #Bottom Bar Song Title
        Controller:egpText(29,SongName,vec2(256,300))
        #Bottom Bar Song Artist
        Controller:egpText(33,SongArtist,vec2(256,330))
        #Bottom Bar Song Duration
        Controller:egpText(31,SongTime,vec2(256,430))
    }
     function void bottomBarNext() {
        #Bottom Bar Song Title
        Controller:egpText(29,NextSongName1,vec2(256,300))
        #Bottom Bar Song Artist
        Controller:egpText(33,NextSongArtist,vec2(256,330))
        #Bottom Bar Song Duration
        Controller:egpText(31,NextSongTime,vec2(256,430))
    }
     function void startSong() {
        PLAY = 1
        PlayedTime = 0
        StreamURL = SongLink
        timer("songtime",1000)
         if(CurrentSongNumber == NumberOfSongs) {
            NextSongNumber = 1
        } else {
            NextSongNumber = CurrentSongNumber + 1
        }
         #CONTROLLER EGP
        #Top Bar Title
        topBarTitle()
        #Color Stop & Start Button
        Controller:egpColor(6,vec(0,255,0))
        Controller:egpColor(10,vec(255,255,255))  
        #Skip Button
        Controller:egpColor(34,vec(200,200,255))
    }
     function void stopSong() {
        PLAY = 0
        PlayedTime = 0
        StreamURL = ""
        LastSongNumber = CurrentSongNumber
        CurrentSongNumber = NextSongNumber
        stoptimer("songtime")
         #CONTROLLER EGP
        #Color Stop & Start Button
        Controller:egpColor(6,vec(255,255,255))
        Controller:egpColor(10,vec(255,0,0))
        #Top Bar Title
        Controller:egpRemove(4)
        #Skip Button
        Controller:egpColor(34,vec(255,255,255))
        songTimer()
    }
     #Draw Info
    screenController()
    screenInfo()
    infoSongs()
    volumeController()
    bottomBar()
    songTimer()
     #CONTROLLER EGP
    #Color Stop & Start Button
    Controller:egpColor(10,vec(255,0,0))
    #Bottom Bar Song Title
    Controller:egpAlign(29,1)
    Controller:egpColor(29,vec(0,0,255))
    Controller:egpSize(29,25)
    #Bottom Bar Song Duration
    Controller:egpAlign(31,1)
    Controller:egpColor(31,vec(255,0,0))
    Controller:egpSize(31,20)
    #Bottom Bar Song Artist
    Controller:egpAlign(33,1)
    Controller:egpColor(33,vec(0,255,0))
    Controller:egpSize(33,22)
    #INFO EGP
    #1 Last Song
    Info:egpAlign(11,1)
    Info:egpColor(11,vec(0,0,0))
    Info:egpSize(11,32)
    #2 Current Song
    Info:egpAlign(14,1)
    Info:egpColor(14,vec(100,0,0))
    Info:egpSize(14,32)
    #Remove Outline
    Info:egpRemove(15)
    #3 Next Song
    Info:egpAlign(17,1)
    Info:egpColor(17,vec(0,0,0))
    Info:egpSize(17,32)
    #4 Next x2 Song
    Info:egpAlign(20,1)
    Info:egpColor(20,vec(0,0,0))
    Info:egpSize(20,32)
    #5 Next x3 Song
    Info:egpAlign(23,1)
    Info:egpColor(23,vec(0,0,0))
    Info:egpSize(23,32)
    #6 Next x4 Song
    Info:egpAlign(26,1)
    Info:egpColor(26,vec(0,0,0))
    Info:egpSize(26,32)
    #CURSOR
    Controller:egpCircleOutline(4,vec2(0,0),vec2(5,5))
    Controller:egpColor(4,vec(255,0,0))
    Controller:egpParentToCursor(4)
}
 #Interval between actions, in miliseconds
interval(1000)
 #If it can find a player within the "RangeToPlayer"...
if(findCanQuery()) {
    findIncludeClass("player")
    findInSphere(Controller:entity():pos(),RangeToPlayer)
    #Remove :owner() to allow all players access the Controller EGP
    Player = findClosest(Controller:entity():pos()):owner()
     Cursor = round(Controller:egpCursor(Player))
     if(~User & User) {
        #Start Song
        if(inrange(Cursor,Controller:egpPos(6) - Controller:egpSize(6)/2,Controller:egpPos(6) + Controller:egpSize(6)/2) & PLAY == 0) {
            startSong()
            #INFO EGP
            #Song List
            infoSongs()
        }
         #Stop Song
        if(inrange(Cursor,Controller:egpPos(10) - Controller:egpSize(10)/2,Controller:egpPos(10) + Controller:egpSize(10)/2) & PLAY == 1) {
            stopSong()
            #INFO EGP
            #Song List
            infoSongs()
        }
         #Skip Song
        if(inrange(Cursor,Controller:egpPos(34) - Controller:egpSize(34)/2,Controller:egpPos(34) + Controller:egpSize(34)/2) & PLAY == 1) {
        }
         #Volume Up
        if(inrange(Cursor,Controller:egpPos(13) - Controller:egpSize(13)/2,Controller:egpPos(13) + Controller:egpSize(13)/2) & Volume <= 0.9) {
            Volume += 0.1
            volumeController()
        }
         #Volume Down
        if(inrange(Cursor,Controller:egpPos(17) - Controller:egpSize(17)/2,Controller:egpPos(17) + Controller:egpSize(17)/2) & Volume >= 0.2) {
            Volume -= 0.1
            volumeController()
        }
         if(PLAY == 0) {
            #Previous Song
            if(inrange(Cursor,Controller:egpPos(24) - Controller:egpSize(24)/2,Controller:egpPos(24) + Controller:egpSize(24)/2)) {
                if(CurrentSongNumber == 1) {
                    CurrentSongNumber = NumberOfSongs
                } else {
                    CurrentSongNumber -= 1
                }
            }
            #Next Song
            if(inrange(Cursor,Controller:egpPos(26) - Controller:egpSize(26)/2,Controller:egpPos(26) + Controller:egpSize(26)/2)) {
                if(CurrentSongNumber == NumberOfSongs) {
                    CurrentSongNumber = 1
                } else {
                    CurrentSongNumber +=1
                }
            }
        } elseif(PLAY == 1) {
            #Previous Song
            if(inrange(Cursor,Controller:egpPos(24) - Controller:egpSize(24)/2,Controller:egpPos(24) + Controller:egpSize(24)/2)) {
                if(NextSongNumber == 1) {
                    NextSongNumber = NumberOfSongs
                } else {
                    NextSongNumber -= 1
                }
            }
            #Next Song
            if(inrange(Cursor,Controller:egpPos(26) - Controller:egpSize(26)/2,Controller:egpPos(26) + Controller:egpSize(26)/2)) {
                if(NextSongNumber == NumberOfSongs) {
                    NextSongNumber = 1
                } else {
                    NextSongNumber += 1
                }
            }
        }
    }
}
 interval(5000)
if(PLAY != 1){
    bottomBar()
    infoSongs()
    topBarTitle()
 } else {
    bottomBarNext()
    infoSongs()
    topBarTitle()
}
 interval(1000)
if(clk("songtime")) {
    if(PLAY == 1) {
        PlayedTime += 1
        #Update Timer Text on Controller EGP
        songTimer()
         if(PlayedTime >= SongTimeDecimal) {
            PlayedTime = 0
            PLAY = 1
            StreamURL = NextSongLink
             LastSongNumber = CurrentSongNumber
            CurrentSongNumber = NextSongNumber
             if(CurrentSongNumber == NumberOfSongs) {
                NextSongNumber = 1
            } else {
                NextSongNumber +=1
            }
        }
         timer("songtime",1000)
         infoSongs()
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎