All pastes #446133 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-04-18 09:26 UTC
rendered paste body
on *:CONNECT:{ echo -s 12SysReset WinAmp Scanner v1.17 Plugin Running | loadwinamp  }
on *:LOAD:{ echo -s 12SysReset WinAmp Scanner v1.17 Plugin Running | loadwinamp }
on *:UNLOAD:{ unset %mp3play }
alias -l loadwinamp { 
  unset %mp3play
  if (%mp3on == $null || $numtok(%mp3on,127) != 3) { set %mp3on 0 $+ $chr(127) $+ queue $+ $chr(127) $+ is playing: :0. :2 - :1 - :3 - :6 - :4 - :5 - :a - :t }
  ;;All Commands:
  ;;FILEINFO / FILENAME / DISPNAME
  ;;TRACKPLAY (#, 0 = repeat current track, otherwise seek to # and play) ie: $dll(..., TRACKPLAY, 15)
  ;;TRACKPAUSE / TRACKLAST / TRACKNEXT / TRACKSTOP
}
alias amp { /mp3 $1- }
alias mp3 {
  unset %mp3play
  var %tmp = $dll(" $+ $mircdiraddons\wamp.dll $+ ", FILEINFO, 0)
  if ($gettok(%tmp,1,32) == ERR || !%tmp) {
    var %err $gettok(%tmp,2,32)
    if (%err == 1) { echo -a 12WinAmp Scanner: WinAmp isn't running. | halt }
    elseif (%err == 2) { echo -a 12WinAmp Scanner: WinAmp version mismatch. | halt }
    elseif (%err == 3) { echo -a 12WinAmp Scanner: WinAmp isn't playing at the moment.  Please start a song. | halt }
    else { echo -a 12WinAmp Scanner: Unknown Error. | halt }
  }

  var %filepath = " $+ $mid($dll(" $+ $mircdiraddons\wamp.dll $+ ", FILENAME, 0),1,-1) $+ "
  if (!%filepath) { echo -a 12WinAmp Scanner: WinAmp filename lookup failed. | halt }

  if (http isin %filepath) { 
    var %mp3ext = http
    var %filepath = $+(%col1,$chr(40),%col2,$remove($remove(%filepath,http:),/),%col1,$chr(41))
    var %filesize = $mid($dll(" $+ $mircdiraddons\wamp.dll $+ ", DISPNAME, 0),2)
    if (%filesize) { var %filepath = %filesize %filepath }
  }
  else {
    var %mp3ext = $remove($right($nopath(%filepath),3),.)
    var %filesize = $file(%filepath).size
    if (%filesize == 0 || %filesize == $null) { echo -a 12WinAmp Scanner: File Access Error | halt }
  }

  var %mp3out = %col1 $+ $replace($gettok(%mp3on,3,127),-,$chr(127))
  var %mp3out = $replace(%mp3out,$chr(127) $+ $chr(127),-)
  if (:0 isin %mp3out) { var %mp3wtrack $gettok(%tmp,2,32) }

  if (%mp3ext == mid) { var %mp3ext MIDI }
  elseif (%mp3ext == ogg) {
    ;;OGG Vorbis
    bread %filepath 0 4 &head
    if ($bvar(&head,1,4) == 79 103 103 83) {
      bread %filepath 28 128 &id3
      var %tmp.oggstart = $calc($bfind(&id3, 1, 3 118 111 114 98 105 115) + 34)
      bread %filepath %tmp.oggstart 4 &id3

      inc %tmp.oggstart $calc($txtconvhex($bvar(&id3,1,4)) + 4)

      bread %filepath %tmp.oggstart 4 &id3
      var %tmp.oggitems = $txtconvhex($bvar(&id3,1,20)), %tmp.oggloop = 1
      inc %tmp.oggstart 4
      while (%tmp.oggloop <= %tmp.oggitems) {
        bread %filepath %tmp.oggstart 4 &id3
        inc %tmp.oggstart 4
        var %tmp.offlooplen = $txtconvhex($bvar(&id3,1,20))
        bread %filepath %tmp.oggstart %tmp.offlooplen &id3
        inc %tmp.oggstart %tmp.offlooplen
        inc %tmp.oggloop
        var %tmp.oggunit = $bvar(&id3,1,%tmp.offlooplen).text
        if ($gettok(%tmp.oggunit,1,61) == TITLE) { var %mp3title = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == ARTIST) { var %mp3artist = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == ALBUM) { var %mp3album = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == GENRE) { var %mp3genre = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == DATE) { var %mp3year = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == COMMENT) { var %mp3comment = $gettok(%tmp.oggunit,2-,61) }
        if ($gettok(%tmp.oggunit,1,61) == TRACKNUMBER) { var %mp3track = $gettok(%tmp.oggunit,2-,61) }
      }
    }
  }
  elseif (%mp3ext == mp3) {
    ;;ID3 Version 2
    bread %filepath 0 3 &head
    if ($bvar(&head,1,3) == 73 68 51) {
      bread %filepath 0 10 &id3
      ;;ID3V2 Version, not used (bad form, I know)
      ;;var %id3version = ID3V2. $+ $bvar(&id3,4) $+ . $+ $bvar(&id3,5)
      ;;ID3V2 Flags, not used
      ;;var %flags $base($bvar(&id3,9),10,2,8)
      var %id32size $txtconv($bvar(&id3,7,4))
      bread %filepath 10 %id32size &id3
      var %mp3title = $id32pull(TIT2), %mp3artist = $id32pull(TPE1), %mp3album = $id32pull(TALB), %mp3genre = $id32pull(TCON), %mp3year = $id32pull(TYER), %mp3comment = $id32pull(COMM), %mp3track = $id32pull(TRCK), %mp3origional = $id32pull(TOPE)
      var %mp3genre = $mid(%mp3genre,$calc($pos(%mp3genre,$chr(41)) + 1))
      if (!%mp3origional) { var %mp3origional = $id32pull(TCOM) }
      dec %filesize %id32size
    }

    ;;ID3 Version 1
    bread %filepath $calc($file(%filepath).size - 128) 3 &head
    if ($bvar(&head,1,3) == 84 65 71)  {
      bread %filepath $calc($file(%filepath).size - 128) 128 &id3
      if (!%mp3title) { var %mp3title = $id3pull(4,33,&id3) }
      if (!%mp3artist) { var %mp3artist = $id3pull(34,63,&id3) }
      if (!%mp3album) { var %mp3album = $id3pull(64,93,&id3) }
      if (!%mp3year) { var %mp3year = $id3pull(94,97,&id3) }
      if (!%mp3comment) { var %mp3comment = $id3pull(98,126,&id3) }
      if (!%mp3track) { var %mp3track = $asc($id3pull(126,127,&id3)) }
      if (!%mp3genre) { var %mp3genre = $genre($bvar(&id3,128,1)) }
      dec %filesize 128
    }
    if (!%mp3artist && ((%mp3ablum && :3 isin %mp3out) || (%mp3genre && :6 isin %mp3out) || (%mp3year && :4 isin %mp3out) || (%mp3comment && :5 isin %mp3out))) { var %mp3artist Unknown Artist }
  }
  if (:t isin %mp3out) {
    var %mp3time2 $gettok(%tmp,1,32)
    if ($left(%mp3ext,2) == mp || $left(%mp3ext,3) == ogg) { var %mp3bitrate = $int($calc(%filesize * 8 / %mp3time2 / 1000)) $+ kbps }
    else { var %mp3bitrate $upper(%mp3ext) }
    if (%mp3ext != http) {
      var %mp3time 0
      while ($calc(%mp3time2 - 60) >= 0) {
        dec %mp3time2 60
        inc %mp3time
      }
      if (%mp3time2 < 10) { var %mp3time2 0 $+ %mp3time2 }
      var %mp3time = $+(%mp3time,%col1,:,%col2,%mp3time2) %col1 $+ -
    }
    var %mp3time = %mp3time %col2 $+ %mp3bitrate
  }

  if (%mp3ext == mod) { bread %filepath 0 20 &mod | var %mp3title $id3pull(1,20,&mod) }
  elseif (%mp3ext == s3m || %mp3ext == ptm) { bread %filepath 0 27 &mod | var %mp3title $id3pull(1,27,&mod) }
  elseif (%mp3ext == mtm) { bread %filepath 4 20 &mod | var %mp3title $id3pull(1,20,&mod) }
  elseif (%mp3ext == 669) { bread %filepath 2 107 &mod | var %mp3title = $id3pull(1,107,&mod) }
  elseif (%mp3ext == it) { bread %filepath 4 25 &mod | var %mp3title = $id3pull(1,25,&mod) }
  elseif (%mp3ext == xm) { bread %filepath 17 20 &mod | var %mp3title $id3pull(1,20,&mod) }

  if (%mp3ext == http) {
    var %mp3file = $remove(%filepath,")
  }
  else {
    var %mp3file $nopath(%filepath)
    if (. isin $right(%mp3file,3)) { var %mp3file $mid(%mp3file,1,$calc($len(%mp3file) - 3)) }
    else { var %mp3file $mid(%mp3file,1,$calc($len(%mp3file) - 4)) }
    var %mp3file $replace(%mp3file,_,$chr(32))
  }

  if (!%mp3title) { var %mp3title = %mp3file }
  var %mp3title $replace(%mp3title,_,$chr(32))

  if ($gettok(%mp3on,1,127) > 0 && $channelcheck(%adok,$chan) > 0 && %active != Off && %active != Send) {
    var %usequeue = $gettok(%mp3on,2,127), %filepath = $shortfn($nofile(%filepath)) $+ $nopath(%filepath), %out
    set %mp3play $+(%filepath,$chr(127),%mp3title)
    var %tmp.out = %tmp.out %col1 $+ - TDCC $+(Trigger:,%col1,$chr(91),%col2,/ctcp) $me $+(winamp,%col1,$chr(93))
    var %tmp.out = %tmp.out - $+(Size:[,%col2,$size($file(%filepath).size),%col1,$chr(93))
    var %tmp.out = %tmp.out - $+(Sends:[,%col2,$sendp(%usequeue),/,$gettok(% [ $+ [ %usequeue ] ],2,127),%col1,$chr(93))
    if ($gettok(% [ $+ [ %usequeue ] ],4,127) > 0 ) { var %tmp.out = %tmp.out - $+(Queues:[,%col2,[ % [ $+ [ %usequeue ] $+ ] s ],/,$gettok(% [ $+ [ %usequeue ] ],4,127),%col1,$chr(93)) }
    if ($chr(127) isin %mp3out) { var %mp3out = %mp3out $replace(%tmp.out,-,$chr(127)) } | else { var %mp3out = %mp3out %tmp.out }
  }

  var %mp3out = $mp3title(%mp3out,:s,SysReset %ver), %mp3out = $replace(%mp3out,.,%col1 $+ . $+ %col2), %mp3out = $mp3title(%mp3out,:0,%mp3wtrack)
  var %mp3out = $mp3title(%mp3out,:2,%mp3title), %mp3out = $mp3title(%mp3out,:1,%mp3artist), %mp3out = $mp3title(%mp3out,:3,%mp3album)
  var %mp3out = $mp3title(%mp3out,:6,%mp3genre), %mp3out = $mp3title(%mp3out,:7,%mp3file), %mp3out = $mp3title(%mp3out,:4,%mp3year)
  var %mp3out = $mp3title(%mp3out,:5,%mp3comment), %mp3out = $mp3title(%mp3out,:a,%mp3track), %mp3out = $mp3title(%mp3out,:t,%mp3time)
  var %mp3out = $mp3title(%mp3out,:o,%mp3origional)

  if ($1 == x || $1 == quiet || !$server) { echo -a %mp3out }
  elseif (c isin $gettok($chan($active).mode,1,32)) { /me $strip(%mp3out) }
  else { /me %mp3out }
}
alias -l mp3title {
  if ($2 isin $1) {
    if ($3) { return $replace($1,$2,%col2 $+ $3 $+ %col1) }
    else { return $deltok($1,$calc($findtok($1,$matchtok($1,$2,1,32),32) -1) - $findtok($1,$matchtok($1,$2,1,32),32),32) }
  }
  else { return $1 }
}
alias -l id3pull {
  if (!$1 || !$2 || !$3) { halt }
  var %loop = $1, %return
  while (%loop <= $bvar($3,0) && %loop <= $2) {
    var %var = $bvar($3,%loop).text
    if ($asc(%var) == 32) { var %return %return $chr(32) }
    else { var %return %return $+ %var }
    inc %loop
  }
  return %return
}
alias -l id32pull {
  var %start $bfind(&id3,1,$1)
  if (!%start) { return }
  inc %start 4
  var %size = $txtconv($bvar(&id3,%start,4))
  inc %start 6 | dec %size
  if ($1 == COMM) { inc %start 4 | dec %size 4 }
  return $id3pull(%start,$calc(%start + %size),&id3)
}

alias -l genre {
  ;; ACK! Winamp isn't standard!
  if ($1 == $null || $1 > 147 || $1 < 0) { return }
  if ($1 == 0) { return Blues }
  elseif ($1 == 1) { return Classic Rock }
  elseif ($1 == 2) { return Country }
  elseif ($1 == 3) { return Dance }
  elseif ($1 == 4) { return Disco }
  elseif ($1 == 5) { return Funk }
  elseif ($1 == 6) { return Grunge }
  elseif ($1 == 7) { return Hip-Hop }
  elseif ($1 == 8) { return Jazz }
  elseif ($1 == 9) { return Metal }
  elseif ($1 == 10) { return New Age }
  elseif ($1 == 11) { return Oldies }
  elseif ($1 == 12) { return Other }
  elseif ($1 == 13) { return Pop }
  elseif ($1 == 14) { return R&B }
  elseif ($1 == 15) { return Rap }
  elseif ($1 == 16) { return Reggae }
  elseif ($1 == 17) { return Rock }
  elseif ($1 == 18) { return Techno }
  elseif ($1 == 19) { return Industrial }
  elseif ($1 == 20) { return Alternative }
  elseif ($1 == 21) { return Ska }
  elseif ($1 == 22) { return Death Metal }
  elseif ($1 == 23) { return Pranks }
  elseif ($1 == 24) { return Soundtrack }
  elseif ($1 == 25) { return Euro-Techno }
  elseif ($1 == 26) { return Ambient }
  elseif ($1 == 27) { return Trip-Hop }
  elseif ($1 == 28) { return Vocal }
  elseif ($1 == 29) { return Jazz+Funk }
  elseif ($1 == 30) { return Fusion }
  elseif ($1 == 31) { return Trance }
  elseif ($1 == 32) { return Classical }
  elseif ($1 == 33) { return Instrumental }
  elseif ($1 == 34) { return Acid }
  elseif ($1 == 35) { return House }
  elseif ($1 == 36) { return Game }
  elseif ($1 == 37) { return Sound Clip }
  elseif ($1 == 38) { return Gospel }
  elseif ($1 == 39) { return Noise }
  elseif ($1 == 40) { return Alt. Rock }
  elseif ($1 == 41) { return Bass }
  elseif ($1 == 42) { return Soul }
  elseif ($1 == 43) { return Punk }
  elseif ($1 == 44) { return Space }
  elseif ($1 == 45) { return Meditative }
  elseif ($1 == 46) { return Instrumental Pop }
  elseif ($1 == 47) { return Instrumental Rock }
  elseif ($1 == 48) { return Ethnic }
  elseif ($1 == 49) { return Gothic }
  elseif ($1 == 50) { return Darkwave }
  elseif ($1 == 51) { return Techno-Industrial }
  elseif ($1 == 52) { return Electronic }
  elseif ($1 == 53) { return Pop-Folk }
  elseif ($1 == 54) { return Eurodance }
  elseif ($1 == 55) { return Dream }
  elseif ($1 == 56) { return Southern Rock }
  elseif ($1 == 57) { return Comedy }
  elseif ($1 == 58) { return Cult }
  elseif ($1 == 59) { return Gangsta Rap }
  elseif ($1 == 60) { return Top 40 }
  elseif ($1 == 61) { return Christian Rap }
  elseif ($1 == 62) { return Pop/Funk }
  elseif ($1 == 63) { return Jungle }
  elseif ($1 == 64) { return Native American }
  elseif ($1 == 65) { return Cabaret }
  elseif ($1 == 66) { return New Wave }
  elseif ($1 == 67) { return Psychadelic }
  elseif ($1 == 68) { return Rave }
  elseif ($1 == 69) { return Showtunes }
  elseif ($1 == 70) { return Trailer }
  elseif ($1 == 71) { return Lo-Fi }
  elseif ($1 == 72) { return Tribal }
  elseif ($1 == 73) { return Acid Punk }
  elseif ($1 == 74) { return Acid Jazz }
  elseif ($1 == 75) { return Polka }
  elseif ($1 == 76) { return Retro }
  elseif ($1 == 77) { return Musical }
  elseif ($1 == 78) { return Rock & Roll }
  elseif ($1 == 79) { return Hard Rock }
  elseif ($1 == 80) { return Folk }
  elseif ($1 == 81) { return Folk/Rock }
  elseif ($1 == 82) { return National Folk }
  elseif ($1 == 83) { return Swing }
  elseif ($1 == 84) { return Fast Fusion }
  elseif ($1 == 85) { return Bebob }
  elseif ($1 == 86) { return Latin }
  elseif ($1 == 87) { return Revival }
  elseif ($1 == 88) { return Celtic }
  elseif ($1 == 89) { return Bluegrass }
  elseif ($1 == 90) { return Avantgarde }
  elseif ($1 == 91) { return Gothic Rock }
  elseif ($1 == 92) { return Progressive Rock }
  elseif ($1 == 93) { return Psychedelic Rock }
  elseif ($1 == 94) { return Symphonic Rock }
  elseif ($1 == 95) { return Slow Rock }
  elseif ($1 == 96) { return Big Band }
  elseif ($1 == 97) { return Chorus }
  elseif ($1 == 98) { return Easy Listening }
  elseif ($1 == 99) { return Acoustic }
  elseif ($1 == 100) { return Humour }
  elseif ($1 == 101) { return Speech }
  elseif ($1 == 102) { return Chanson }
  elseif ($1 == 103) { return Opera }
  elseif ($1 == 104) { return Chamber Music }
  elseif ($1 == 105) { return Sonata }
  elseif ($1 == 106) { return Symphony }
  elseif ($1 == 107) { return Booty Bass }
  elseif ($1 == 108) { return Primus }
  elseif ($1 == 109) { return Porn Groove }
  elseif ($1 == 110) { return Satire }
  elseif ($1 == 111) { return Slow Jam }
  elseif ($1 == 112) { return Club }
  elseif ($1 == 113) { return Tango }
  elseif ($1 == 114) { return Samba }
  elseif ($1 == 115) { return Folklore }
  elseif ($1 == 116) { return Ballad }
  elseif ($1 == 117) { return Power Ballad }
  elseif ($1 == 118) { return Rhythmic Soul }
  elseif ($1 == 119) { return Freestyle }
  elseif ($1 == 120) { return Duet }
  elseif ($1 == 121) { return Punk Rock }
  elseif ($1 == 122) { return Drum Solo }
  elseif ($1 == 123) { return A Capella }
  elseif ($1 == 124) { return Euro-House }
  elseif ($1 == 125) { return Dance Hall }
  elseif ($1 == 126) { return Goa }
  elseif ($1 == 127) { return Drum & Bass }
  elseif ($1 == 128) { return Club-House }
  elseif ($1 == 129) { return Hardcore }
  elseif ($1 == 130) { return Terror }
  elseif ($1 == 131) { return Indie }
  elseif ($1 == 132) { return BritPop }
  elseif ($1 == 133) { return Negerpunk }
  elseif ($1 == 134) { return Polsk Punk }
  elseif ($1 == 135) { return Beat }
  elseif ($1 == 136) { return Christian Gangsta Rap }
  elseif ($1 == 137) { return Heavy Metal }
  elseif ($1 == 138) { return Black Metal }
  elseif ($1 == 139) { return Crossover }
  elseif ($1 == 140) { return Contemporary Christian }
  elseif ($1 == 141) { return Christian Rock }
  elseif ($1 == 142) { return Merengue }
  elseif ($1 == 143) { return Salsa }
  elseif ($1 == 143) { return Thrash Metal }
  elseif ($1 == 145) { return Anime }
  elseif ($1 == 146) { return JPop }
  elseif ($1 == 147) { return SynthPop }
  else { return }
}
alias txtconv {
  var %num = $numtok($1-,32), %loop = 1, %return
  while (%loop <= %num) { var %return = %return $+ $base($gettok($1-,%loop,32),10,2,8) | inc %loop }
  return $base(%return,2,10)
}
alias txtconvhex {
  var %loop = $numtok($1-,32), %tmp
  while (%loop > 0) { var %tmp = %tmp $+ $base($gettok($1-,%loop,32),10,16,2) | dec %loop }
  return $base(%tmp,16,10)
}
dialog winamp_scanner {
  title "WinAmp Scanner Setup"
  size -1 -1 311 289

  box "Output Formatting:", 1002, 3 0 305 258
  edit "", 1, 11 14 288 22, autohs
  text ":0 = WinAmp Track Number", 100, 11 39 140 13
  text ":1 = Artist", 101, 11 54 140 13
  text ":2 = Track Title / Filename", 102, 11 69 140 13
  text ":3 = Album", 103, 11 84 140 13
  text ":4 = Year", 104, 11 99 140 13
  text ":5 = Comments Field", 105, 11 115 140 13
  text ":6 = Genre", 112, 163 39 140 13
  text ":7 = Filename Only", 106, 163 54 140 13
  text ":a = Internal Track Number", 107, 163 69 140 13
  text ":t = Time and Bitrate", 108, 163 84 140 13
  text ":o = Original Artist/Composer", 109, 163 99 144 13
  text ":s = SysReset Version", 110, 163 115 140 13
  text "Use -- to get a dash,", 120, 32 130 110 12
  text "instead of a square", 121, 32 142 110 13
  button "Reset to Default", 25, 166 135 132 20

  box "WinAmp TDCC:", 1000, 3 156 305 102
  check "Enabled", 20, 10 179 64 20
  check "Voice or Ops Only", 21, 10 198 108 20
  text "Use Queue:", 1001, 161 166 58 13
  list 22, 160 179 142 73, size

  button "&OK", 500, 165 264 70 22, default ok
  button "&Cancel", 501, 238 264 70 22, cancel
}
on *:dialog:winamp_scanner:init:*:{
  did -a $dname 22 Default
  did -c $dname 22 1

  if ($numtok(%queuepool,127) > 0) {
    var %abcabc 1
    while (%abcabc <= $numtok(%queuepool,127)) {
      did -a $dname 22 $gettok(%queuepool,%abcabc,127)
      if ($gettok(%mp3on,2,127) == $gettok(%queuepool,%abcabc,127)) did -c $dname 22 $calc(%abcabc + 1)
      inc %abcabc
    }
  }

  if ($gettok(%mp3on,1,127) == 1) did -c $dname 20
  elseif ($gettok(%mp3on,1,127) == 2) did -c $dname 20,21
  else { did -b $dname 21,22 }
  did -ra $dname 1 $gettok(%mp3on,3,127)
}
on *:dialog:winamp_scanner:sclick:25:{ did -ra $dname 1 is playing: :0. :2 - :1 - :3 - :6 - :4 - :5 - :a - :t }
on *:dialog:winamp_scanner:sclick:20:{ if ($did(20).state == 1) { did -e $dname 21,22 } | else { did -b $dname 21,22 } }
on *:dialog:winamp_scanner:sclick:500:{
  if ($did(21).state == 1 && $did(20).state == 1) { set %mp3on 2 $+ $chr(127) }
  elseif ($did(20).state == 1) set %mp3on 1 $+ $chr(127)
  else { set %mp3on 0 $+ $chr(127) }

  var %queue $did(22).seltext
  if (%queue == Default) { var %queue queue }
  set %mp3on %mp3on $+ %queue $+ $chr(127)

  set %mp3on %mp3on $+ $did(1)
}
Menu Channel,Query {
  Show Current WinAmp Information:/mp3
}
Menu Menubar {
  WinAmp Scanner Setup:/opendialog winamp_scanner
}
ctcp *:WINAMP:{
  if ($ulevel == 11) { haltdef | halt }
  if ($ulist($address($nick,5),banned,1) != $null) { .notice $nick %col1 $+ WinAmp TDCC: Sorry $nick, you're %col2 $+ banned %col1 $+ from my servers. Reason: %col2 $+ $gettok(% [ $+ [ $ulist($address($nick,5),banned,1) ] $+ ] ban,3,127) %col1 $+ -=SysReset %ver $+ =- }
  elseif ($gettok(%mp3on,1,127) == 0) { notice $nick %col1 $+ Sorry %col2 $+ WinAmp TDCC %col1 $+ is disabled. -=SysReset %ver $+ =- }
  else { 
    if ($userchan($nick,%adok) == 0) { .notice $nick %col1 $+ WinAmp TDCC: You're not in a channel where I'm serving. | halt }
    elseif ($gettok(%mp3on,1,127) == 2) {
      var %loops 1 | var %openok 0
      while (%loops <= $chan(0) && %openok == 0) { if ($nick isop $chan(%loops) || $nick isvoice $chan(%loops) || $nick ishop $chan(%loops)) { var %openok 1 } | inc %loops }
      if (%openok != 1) { notice $nick %col1 $+ TDCC: Sorry %col2 $+ WinAmp TDCC %col1 $+ is a voice restricted trigger. -=SysReset %ver $+ =- | halt }
    }

    var %usequeue $gettok(%mp3on,2,127)
    var %queueadd $add_queue(%usequeue,$nick,$gettok(%mp3play,1,127),$iif($network,$network,$gettok($server,-2-,46)))
    var %file %col2 $+ $gettok(%mp3play,2,127) $+ %col1

    if (%queueadd == 0) { .notice $nick %col1 $+ WinAmp TDCC: Sending %file $+ . }
    elseif (%queueadd == 1) { .notice $nick %col1 $+ WinAmp TDCC: Sorry, all of your queue slots are full. }
    elseif ($left(%queueadd,1) == 2) { .notice $nick %col1 $+ WinAmp TDCC: %file has already been queued in slot $+ %col2 $mid(%queueadd,2,$len(%queueadd)) $+ %col1 $+ ! }
    elseif (%queueadd == 3) { .notice $nick %col1 $+ WinAmp TDCC: %file is already sending! }
    elseif (%queueadd == 4) { .notice $nick %col1 $+ WinAmp TDCC: Sorry, all send and queue slots are full. }
    elseif ($left(%queueadd,1) == 5) { .notice $nick %col1 $+ WinAmp TDCC: Adding %file to queue slot $+ %col2 $mid(%queueadd,2) $+ %col1 $+ . The file will send when the next send slot is open. }
    elseif (%queueadd == 6) { .notice $nick %col1 $+ WinAmp TDCC: Sorry, you already have %file queued in another pool. }
    elseif (%queueadd == 7) { .notice $nick %col1 $+ WinAmp TDCC: Sorry, this file is above the maximum sent file size limits. }
    else { .notice $nick %col1 $+ WinAmp TDCC: Server Error. Cannot Comply. }
    if (%queueadd == $null) { var %queueadd ERROR }
    else { var %queueadd OK - %queueadd }
    haltdef
    echo -s %col1 $+ WinAmp TDCC: %col2 $+ $nick Requested a file. Result: %queueadd
  }
}