Winamp ctrl

By Sasha on Mar 12, 2010

Screenshots

Hi, this is my first hawkee post :x
First of all, sorry for my crappy english.

So, this is some kind of Winamp/aimp controler, witch allows you to control winamp/aimp. Ha-ha? ;s
Important: This addon/snippet is using mWC.dll, so, many thanks to mWC's author.

Yes, I know, icons and mdx.dll (As well as bars.mdx) are unnecessary, but anyway, you need to use mWC.dll, so why not mdx and icons? :) Exterior is as much important as interior, if you understand.

Edited: I forgot to say. You can show/send now-playing message (Witch you can modify in setting) on channels (Listed, except listed, active or all) via (a)me/(a)msg (Witch you choose in settings, ofcourse) and so on.. ;)

Heres the code (But don't forget, you need dlls and icons (Or modifications) in order to use it. You can download package on http://www.speedyshare.com/files/21393240/winampctrl.zip (Unzip in mIRC's folder and load winamp.mrc script)).

dialog winamp {
  title "• Winamp kontroler.. •"
  size -1 -1 157 67
  option dbu
  list 1, 7 4 143 26, size
  check "Prikazi np na startu svake pesme?", 2, 9 206 91 10
  button "Podesavanja", 3, 7 49 39 12
  button "Prikazi pesmu", 4, 60 49 39 12
  button "Ok/ugasi..", 5, 111 49 39 12, ok
  box "Kanali:", 6, 5 69 71 81
  edit "", 7, 9 78 34 10, autohs
  button "+", 8, 45 78 13 10
  button "-", 9, 59 78 13 10
  list 11, 9 89 63 55, size
  box "Salji NP (Sta slusas) na:", 12, 80 69 73 57
  radio "Sve kanale", 13, 86 79 50 10, group
  radio "Na kanale s liste", 14, 86 90 50 10
  radio "Osim na kanale s liste", 15, 86 101 64 10
  radio "Samo aktivan prozor", 16, 86 112 61 10
  box "Salji kao:", 17, 80 127 73 23
  radio "/(a)me", 18, 88 136 28 10, group
  radio "/(a)msg", 19, 119 136 29 10
  box "Jezik:", 20, 105 198 47 21
  box "NP poruka:", 21, 5 152 148 45
  edit "", 22, 9 162 140 10, autohs
  text "<PS> = Izvodjac - Ime pesme", 23, 7 173 144 8, disable center
  text "<DZ> = Duzina pesme • <ST> = Status", 24, 7 180 144 8, disable center
  text "<BT> = Bitrate • <SR> Samplerate", 25, 7 187 144 8, disable center
  edit "", 10, 7 37 143 10, read autohs center
  box "Akcije:", 26, 4 29 149 35
  combo 27, 110 206 38 32, size drop
  box "Dodatno:", 28, 5 198 97 21
}

alias winamp { dialog $iif(!$dialog(winamp),-m,-v) winamp winamp }
alias sshmdx { return $dll($scriptdirmdx.dll,$1,$2-) }
on *:start:{
  $iif(!$hget(winamp),hmake winamp 100)
  $iif(!$exists(winamp.hsh),hsave winamp winamp.hsh)
  hload winamp winamp.hsh
}
on *:dialog:winamp:*:*:{
  if ($devent == sclick) {
    if ($did == 2) {
      if ($did(2).state == 1) {
        hadd winamp start da
        noop $input($iif($hget(winamp,jezik) == srpski,Prikazaces sta slusas SAMO ako je ovaj dijalog otvoren $chr(40) $+ Iz sigurnosnih razloga ;p $+ $chr(41) $+ .,You will send np ONLY if winamp controler is running $chr(40) $+ Safety reasons ;p $+ $chr(41) $+ .),oi,Info.)
      }
      else { hdel winamp start }
    }
    if ($did == 27) {
      if ($did(27).sel == 1) && ($hget(winamp,jezik) != srpski) { hadd winamp jezik srpski | dialog -x $dname | winamp }
      if ($did(27).sel == 2) && ($hget(winamp,jezik) != english) { hadd winamp jezik english | dialog -x $dname | winamp }
      hsave winamp winamp.hsh
    }
    if ($did == 3) {
      if ($hget(winamp,prosireno) == ne) {
        dialog -bs winamp -1 -1 157 222
        did -ra $dname 3 $iif($hget(winamp,jezik) == srpski,Snimi/smanji,Save/minim.)
        hadd winamp prosireno da
      }
      else {
        if ($did(22) != $null) {
          hadd winamp poruka $did(22)
        }
        else {
          hadd winamp poruka np: [ <PS> ] • [ <DZ> ] • [ <BT>kbps|<SR>kHz ]
          did -a $dname 22 $hget(winamp,poruka)
        }
        dialog -bs winamp -1 -1 157 67
        did -ra $dname 3 $iif($hget(winamp,jezik) == srpski,Podesavanja,Settings)
        hadd winamp prosireno ne
      }
      hsave winamp winamp.hsh
    }
    if ($did == 4) { nplej }
    if ($did == 8) {
      if ($did(7) != $null) && ($chr(32) !isin $did(7)) && ($chr(35) isin $did(7)) && (!$istok($hget(winamp,kanali),$did(7),32)) {
        hadd winamp kanali $addtok($hget(winamp,kanali),$did(7),32)
        did -a $dname 11 $did(7)
        did -r $dname 7
      }
    }
    if ($did == 9) {
      if ($did(11).seltext != $null) {
        hadd winamp kanali $remtok($hget(winamp,kanali),$did(11).seltext,32))
        did -d $dname 11 $did(11).sel
      }
    }
    if ($did == 13) { hadd winamp spamna svi }
    if ($did == 14) { hadd winamp spamna lista }
    if ($did == 15) { hadd winamp spamna nelista }
    if ($did == 16) { hadd winamp spamna aktivni }
    if ($did == 18) { hadd winamp nacin ame }
    if ($did == 19) { hadd winamp nacin amsg }

    if ($did == 1) {
      if ($did(1).sel == 2) { prosla }
      if ($did(1).sel == 3) { pauziraj }
      if ($did(1).sel == 4) { stopiraj }
      if ($did(1).sel == 5) { plej }
      if ($did(1).sel == 6) { slijedeca }
    }
  }
  if ($devent == init) { 
    sshmdx SetMircVersion $version
    sshmdx MarkDialog $dname
    sshmdx SetBorderStyle $dname 3,4,5,8,9 staticedge
    sshmdx SetBorderStyle $dname 1,7,10,11,22 dlgframe
    sshmdx SetDialog $dname bgcolor $rgb(0,127,255)
    sshmdx SetColor $dname 23,24,25 textbg $rgb(0,127,255)
    sshmdx SetColor $dname 1,2,3,4,5,6,8,9,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28 background $rgb(0,127,255)
    sshmdx SetBorderStyle 1
    sshmdx SetControlMDX $dname 1 toolbar arrows nodivider flat wrap noresize > $scriptdirbars.mdx
    didtok $dname 11 32 $hget(winamp,kanali)
    didtok $dname 27 44 Srpski,English
    if ($hget(winamp,jezik) == srpski) { did -c $dname 27 1 }
    else { did -c $dname 27 2 }
    hadd winamp prosireno ne
    did -a $dname 10 •  $iif($hget(winamp,jezik) == srpski,Ucitavanje..,Loading..) •
    $iif($hget(winamp,start) == da,did -c $dname 2)
    $iif($hget(winamp,spamna) == svi,did -c $dname 13)
    $iif($hget(winamp,spamna) == lista,did -c $dname 14)
    $iif($hget(winamp,spamna) == nelista,did -c $dname 15)
    $iif($hget(winamp,spamna) == aktivni,did -c $dname 16)
    $iif($hget(winamp,nacin) == ame,did -c $dname 18,did -c $dname 19)
    $iif($dll(mWC.dll,getStatus,'') == 1,hadd winamp pocetna $dll(mWC.dll,getTitle,''),hadd winamp neradi da)
    did -a $dname 22 $hget(winamp,poruka)
    did -i $dname 1 1 bmpsize 32 32
    did -i $dname 1 1 setimage +nh icon large $scriptdirPrethodna.ico
    did -i $dname 1 1 setimage +nh icon large $scriptdirPauza.ico
    did -i $dname 1 1 setimage +nh icon large $scriptdirStop.ico
    did -i $dname 1 1 setimage +nh icon large $scriptdirPlay.ico
    did -i $dname 1 1 setimage +nh icon large $scriptdirSlijedeca.ico
    did -a $dname 1 +b 1 Prethodna $+ $chr(9) $+ Prethodna pjesma
    did -a $dname 1 +b 2 Pauziraj $+ $chr(9) $+ Pauziraj pjesmu
    did -a $dname 1 +b 3 Stopiraj. $+ $chr(9) $+ Stopiraj pjesmu
    did -a $dname 1 +b 4 Pevaj! :p $+ $chr(9) $+ Pusti pesmu
    did -a $dname 1 +b 5 Sledeca $+ $chr(9) $+ Sledeca pesma
    if ($hget(winamp,jezik) == english) { engleski }
    ; nprefres
    .timerwinamp 0 1 nprefres
  }
  if ($devent == close) {
    .timerwinamp off
  }
}
; I know my english is crappy :)
alias -l engleski {
  did -ra $dname 2 Send NP on every song's start?
  did -ra $dname 3 Settings
  did -ra $dname 4 Show np
  did -ra $dname 5 Ok/close..
  did -ra $dname 6 Channels
  did -ra $dname 12 Send NP on:
  did -ra $dname 13 All channels
  did -ra $dname 14 Listed channels
  did -ra $dname 15 Except listed channels
  did -ra $dname 16 Only active window
  did -ra $dname 17 Send as:
  did -ra $dname 20 Language:
  did -ra $dname 21 NP message:
  did -ra $dname 23 <PS> = Artist - Song
  did -ra $dname 24 <DZ> = Song lenght • <ST> = Status
  did -ra $dname 26 Actions:
  did -ra $dname 28 Advanced:
  dialog -t $dname • Winamp controler.. •
  did -r $dname 1
  did -a $dname 1 +b 1 Previous $+ $chr(9) $+ Previous track
  did -a $dname 1 +b 2 Pause $+ $chr(9) $+ Pause track
  did -a $dname 1 +b 3 Stop $+ $chr(9) $+ Stop player
  did -a $dname 1 +b 4 Sing! :p $+ $chr(9) $+ Play track
  did -a $dname 1 +b 5 Next track $+ $chr(9) $+ Next track
}
alias slijedeca { dll $scriptdirmWC.dll forward }
alias prosla { dll $scriptdirmWC.dll previous }
alias plej { dll $scriptdirmWC.dll play }
alias stopiraj { dll $scriptdirmWC.dll stop }
alias pauziraj { dll $scriptdirmWC.dll pause }
alias -l p.duzina {
  $iif($1 < 10,return 0 $+ $1,return $1)
}
alias nprefres {
  if ($dll(mWC.dll,getStatus,'') == 1) {
    if ($hget(winamp,neradi) != $null) {
      hdel winamp neradi
      did -ra winamp 10 • $+($remove($npstatus,.),:) $plejtrenutno •
      hadd winamp pocetna $dll(mWC.dll,getTitle,'')
      goto kraj
    }
    if ($hget(winamp,pocetna) != $dll(mWC.dll,getTitle,'')) {
      did -ra winamp 10 • $+($remove($npstatus,.),:) $plejtrenutno •
      hadd winamp pocetna $dll(mWC.dll,getTitle,'')
      $iif($hget(winamp,start) == da,nplej)
      goto kraj
    }
    if ($hget(winamp,pocetna) == $dll(mWC.dll,getTitle,'')) {
      did -ra winamp 10 • $+($remove($npstatus,.),:) $plejtrenutno •
      goto kraj
    }
  }
  else {
    hadd winamp neradi da
    if ($dialog(winamp)) {
      dialog -x winamp
      .timerwinamp off
      noop $input($iif($hget(winamp,jezik) == srpski,Cini mi se da plejer $chr(40) $+ Winamp $+ $chr(44) Aimp.. $+ $chr(41) nije pokrenut. Ako zelis koristiti ovaj addon $+ $chr(44) prvo pokreni plejer. :p,It seems that pleyer $chr(40) $+ Winamp $+ $chr(44) Aimp etc.. $+ $chr(41) is not running. If you want to use winamp controler $+ $chr(44) turn on your player. :p),wo,Info.)
    }
  }
  :kraj
}
alias plejtrenutno {
  var %pjesma $dll(mWC.dll,getTitle,'') 
  var %duzinapjesme $dll(mWC.dll,getTrackLen,'')
  if (%duzinapjesme == -1) {
    var %duzinapjesme Radio
  } 
  else {
    var %minuti $int($calc(%duzinapjesme / 60))
    var %sekunde $calc(%duzinapjesme - (%minuti * 60))
    var %duzinapjesme $p.duzina(%minuti) $+ : $+ $p.duzina(%sekunde)
  }
  return %pjesma  $+([,%duzinapjesme,])
}
alias npstatus {
  if ($dll(mWC.dll,isPlaying,'') == 1) {
    var %np.status $iif($hget(winamp,jezik) == srpski,Plejing,Playing)
  }
  elseif ($dll(mWC.dll,isPlaying,'') == 3) {
    var %np.status $iif($hget(winamp,jezik) == srpski,Pauzirano,Paused)
  }
  elseif ($dll(mWC.dll,isPlaying,'') == 0) {
    var %np.status $iif($hget(winamp,jezik) == srpski,Stopirano,Stopped)
  }
  return $+(%np.status,..)
}
alias nplej {
  if ($dll(mWC.dll,getStatus,'') == 1) {
    var %pjesma $dll(mWC.dll,getTitle,'')
    var %srejt $dll(mWC.dll,getSamplerate,'')
    var %brejt $dll(mWC.dll,getBitrate,'')
    var %npstatus $npstatus
    var %duzinapjesme $dll(mWC.dll,getTrackLen,'')
    if (%duzinapjesme == -1) {
      var %duzinapjesme Radio
    } 
    else {
      var %minuti $int($calc(%duzinapjesme / 60))
      var %sekunde $calc(%duzinapjesme - (%minuti * 60))
      var %duzinapjesme $p.duzina(%minuti) $+ : $+ $p.duzina(%sekunde)
    }
    if ($status != disconnected) && ($active != status window) {
      if ($hget(winamp,spamna) == svi) {
        $hget(winamp,nacin) $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
        goto kraj
      }
      if ($hget(winamp,spamna) == lista) {
        var %zaspam 1
        while (%zaspam <= $comchan($me,0)) {
          if ($istok($hget(winamp,kanali),$comchan($me,%zaspam),32)) {
            if ($hget(winamp,nacin) == ame) {
              describe $comchan($me,%zaspam) $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
            }
            if ($hget(winamp,nacin) == amsg) {
              msg $comchan($me,%zaspam) $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
            }
          }
          inc %zaspam
        }
        goto kraj
      }
      if ($hget(winamp,spamna) == nelista) {
        var %stabo 1
        while (%stabo <= $comchan($me,0)) {
          if (!$istok($hget(winamp,kanali),$comchan($me,%stabo),32)) {
            if ($hget(winamp,nacin) == ame) {
              describe $comchan($me,%stabo) $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
            }
            if ($hget(winamp,nacin) == amsg) {
              msg $comchan($me,%stabo) $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
            }
          }
          inc %stabo
        }
        goto kraj
      }
      if ($hget(winamp,spamna) == aktivni) {
        if ($hget(winamp,nacin) == ame) {
          describe $active $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
        }
        if ($hget(winamp,nacin) == amsg) {
          msg $active $replace($hget(winamp,poruka),<PS>,%pjesma,<DZ>,%duzinapjesme,<ST>,%npstatus,<BT>,%brejt,<SR>,%srejt)
        }
      }
    } 
  }
  :kraj
}
menu menubar {
  -
  • Winamp ctrl. •:winamp
  -
}
on *:load:{
  $iif(!$hget(winamp),hmake winamp 100)
  $iif(!$exists(winamp.hsh),hsave winamp winamp.hsh)
  hload winamp winamp.hsh
  hadd winamp poruka np: [ <PS> ] • [ <DZ> ] • [ <BT>kbps|<SR>kHz ]
  hadd winamp jezik english
  hadd winamp kanali #Ok #Smor
  hadd winamp spamna svi
  hadd winamp nacin ame
  hadd winamp start da
  echo -a • Loaded Winamp Controler $+($chr(40),$script,$chr(41),..)
}
; Kf

Comments

Sign in to comment.
agence   -  Jul 03, 2010

thank you

 Respond  
Sasha   -  Mar 13, 2010

I guess you could download plugin for wmp from http://windows.microsoft.com/en-US/windows/downloads/wmplugins ..

 Respond  
Jenny   -  Mar 13, 2010

Is there anything like this that works with Windows Media Player?

 Respond  
Sasha   -  Mar 12, 2010

I know :D

 Respond  
[DX]   -  Mar 12, 2010

U brate, mLogo si zaebat :D

 Respond  
Sasha   -  Mar 12, 2010

Ima "lang" opcija za engleski u dijalogu :P

 Respond  
[DX]   -  Mar 12, 2010

Translate this code to english. :)

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.