D-mp3 Player — File Browser

D-mp3Playerv1.2 / D-mp3Playerv1.2 / dmp3 / dmp3.mrc

dmp3.mrc — 31.71 KB — Download this file

;-----------------------------------------------------------------------------------------
;  D-mp3 Player - Verson 1.2
;  By jel/DND
;-----------------------------------------------------------------------------------------
on *:load:{
  if ($version < 6.16) { duload }
  else { _dmp3help }
}
alias duload { echo -a D-mp3 Player requires mIRC version 6.16 or higher. Please upgrade to a newer version | .unload -rs $+(",$scriptdirdmp3.mrc,") }
alias -l mdxdialog return $scriptdirdialog.mdx
alias -l mdx return $dll($scriptdirmdx.dll,$1,$2-) 
alias -l ctl return $scriptdirctl_gen.mdx
alias -l dmp3.delfile { write -dl $+ %dmp3.r.file $+(",$scriptdirsonglist.txt,") | _dmp3.plcreate }
alias -l _dmp3.rep { _dmp3.play %dmp3.song }
alias -l dmp3.delall { write -c $+(",$scriptdirsonglist.txt,") | _dmp3.plcreate }
alias -l dmp3.sint { drawtext -nr @_dmp3.sinf $rgb(200,200,200) "Arial" $2 10 $1 $3- }
alias -l dmp3.rcl { window -Bfphdo +dL @_dmp3.rcl $mouse.dx $mouse.dy 150 90 | set %dmp3.r.file $1 | dmp3.rclm }
alias _dmp3player { if (!$dialog(dmp3player)) { dialog -m dmp3player dmp3player } }
alias _dmp3help { if (!$dialog(dmp3help)) { dialog -m dmp3help dmp3help } }
alias xdmp3player { if ($dialog(dmp3player)) { dialog -c dmp3player dmp3player } }
alias -l dmp3pops { 
  if ($1 == $mouse.x) && ($2 == $mouse.y) { if ($window(@_dmp3.sing)) { window -c @_dmp3.sinf } | dmp3.sinf $line(@_dmp3.buffer,$3) }
}
alias -l dmp3.sinl { 
  if ($2 < $width($3-,Arial,$1)) { return $width($3-,Arial,$1) }
  else { return $2 }
}
alias -l fmod {
  if ($isid) { return $dll($scriptdirfmod_mIRC.dll,$1,$2-) } 
  else { echo -s fmod: $dll($scriptdirfmod_mIRC.dll,$1,$2-) } 
}
alias -l fmod_start {
  if ($fmod(FMOD_Connect,$scriptdirfmod.dll)!=0) {
    if ($fmod(SOUND_Init,44100 64 0)) {
    }
    else { echo -s - fmod couldn't initialize...do you even have a sound card buddy? }
  }
}
alias -l dmp3.adddir {
  var %j = 1, %i = $sdir="Select Directory", %c = $findfile(%i,*.mp3,0)
  while (%j <= %c) { write $+(",$scriptdirsonglist.txt,") $findfile(%i,*.mp3,%j) | inc %j }
  _dmp3.plcreate
}
alias -l dmp3.addfile {
  var %i = $$file="Select Track"
  if (%i) {
    write $+(",$scriptdirsonglist.txt,") %i
    _dmp3.plcreate
  }
}
alias -l _dmp3.plcreate {
  _dmp3.bufferload
  $scrollbar(@_dmp3.playlist,139,0,15,89,$rgb(66,83,102),$rgb(171,195,210),$rgb(255,255,255),$rgb(50,50,150),@_dmp3.buffer,7)
  _dmp3.draw.buffer 1 1
}
alias -l _dmp3.play {
  unset %dmp3.pause
  var %file = $+(",$line(@_dmp3.buffer,%dmp3.song),")
  _dmp3.tupl $nopath($remove($line(@_dmp3.buffer,%dmp3.song),.mp3))
  var %_dmp3.1 $fmod(SOUND_Stream_Open,1 %file 1 $file(%file).size 0)
  var %_dmp3.2 $fmod(SOUND_Stream_Play,1 1)
  set %dmp3.slength $calc($mp3(%file).length / 1000)
  var %i = $gmt(%dmp3.slength,$iif(%dmp3.slength >= 3600,hh:nn:ss,nn:ss))
  set %dmp3.plength 0
  did -ra dmp3player 20 $+(00:00,/,%i)
  .timergettime -i 0 1 dmp3.gettime
}
alias -l _dmp3.pbut {
  if (%dmp3.pause) { _dmp3.pause | halt }
  elseif (%dmp3.plength == 0) { if (%dmp3.song) { _dmp3.play %dmp3.song } }
}
alias -l _dmp3.pause {
  if (%dmp3.pause) {
    unset %dmp3.pause
    .timergettime -r
    var %_dmp3.1 $fmod(SOUND_SetPaused,-3,0)
  }
  else {
    set %dmp3.pause on
    .timergettime -p
    var %_dmp3.2 $fmod(SOUND_SetPaused,-3,1)
  }
}
alias -l dmp3.gettime {
  inc %dmp3.plength
  var %i = $gmt(%dmp3.plength,$iif(%dmp3.plength >= 3600,hh:nn:ss,nn:ss))
  var %c = $gmt(%dmp3.slength,$iif(%dmp3.slength >= 3600,hh:nn:ss,nn:ss))
  did -ra dmp3player 20 $+(%i,/,%c)
  var %ii = $ceil($calc((%dmp3.plength / %dmp3.slength) * 100))
  var %iii = $ceil($calc((150 / 100) * %ii))
  _dmp3.trackbar %iii
  if (%i == %c) { .timergettime off | _dmp3.trackbar 0 | _dmp3.gnext }
}
alias -l _dmp3.stop {
  var %_dmp3.21 $fmod(SOUND_Stream_Stop,1) 
  var %_dmp3.22 $fmod(SOUND_Stream_Close,1)
  set %dmp3.plength 0
  .timergettime off
  _dmp3.trackbar 1
  unset %dmp3.pause
}
alias -l _dmp3.gnext {
  unset %dmp3.pause
  if (%dmp3.pst == ord) { _dmp3.ord }
  elseif (%dmp3.pst == ran) { _dmp3.ran }
  elseif (%dmp3.pst == rep) { _dmp3.rep }
  else { set %dmp3.pst ord | _dmp3.ord }
}
alias -l _dmp3.ord {
  inc %dmp3.song
  if (%dmp3.song > $line(@_dmp3.buffer,0)) { set %dmp3.song 1 }
  _dmp3.play %dmp3.song
}
alias -l _dmp3.ran {
  %dmp3.song = $rand(1,$line(@_dmp3.buffer,0))
  if (!%dmp3.ranl) { %dmp3.ranl = %dmp3.song }
  else { %dmp3.ranl = $+(%dmp3.ranl,:,%dmp3.song) }
  _dmp3.play %dmp3.song
}
alias -l _dmp3.gback {
  unset %dmp3.pause
  if (%dmp3.pst == ord) { _dmp3.bord }
  elseif (%dmp3.pst == ran) { _dmp3.bran }
  elseif (%dmp3.pst == rep) { _dmp3.rep }
  else { set %dmp3.pst ord | _dmp3.bord }
}
alias -l _dmp3.bord {
  dec %dmp3.song
  if (%dmp3.song < 1 ) { set %dmp3.song $line(@_dmp3.buffer,0) }
  _dmp3.play %dmp3.song
}
alias -l _dmp3.bran {
  var %i = $numtok(%dmp3.ranl,58)
  if (%i > 1) { %dmp3.ranl = $deltok(%dmp3.ranl,%i,58) | dec %i }
  %dmp3.song = $gettok(%dmp3.ranl,%i,58)
  _dmp3.play %dmp3.song
}
alias -l _dmp3.bufferload {
  clear @_dmp3.buffer
  var %c = 1, %i = $lines($+(",$scriptdirsonglist.txt,"))
  while (%c <= %i) {
    aline @_dmp3.buffer $read($+(",$scriptdirsonglist.txt,"),%c)
    inc %c
  }
}
alias -l scrollbar {
  if (!$isid) { return }
  else { 
    var %i = 1 
    if ($hget(scollbar. $+ $1)) { hfree -s scrollbar. $+ $1 }
    drawrect -rnf $1 $6 1 $2 $3 $4 $5 
    while ($hget(scrollbar. $+ $1,%i)) inc %i 
    hadd -m scrollbar. $+ $1 %i $+($2,/,$3,/,$4,/,$5,/,$6,/,$7,/,$8,/,$9,/,$10,/,$11) 
  }
}
alias -l _dmp3.pllc {
  set %dmp3.song $calc(%dmp3.y + $deltok($calc($1- / 13),2,46))
  if ($line(@_dmp3.buffer,%dmp3.song)) { _dmp3.play %dmp3.song }
}
alias -l _dmp3.pllca {
  var %c = $calc(%dmp3.y + $deltok($calc($2 / 13),2,46))
  if ($window(@_dmp3.sinf)) { window -c @_dmp3.sinf } 
  if ($line(@_dmp3.buffer,%c)) { .timerpops 1 1 dmp3pops $1 $2 %c }
}
alias -l _dmp3.pllrc {
  var %c = $calc(%dmp3.y + $deltok($calc($2 / 13),2,46))
  if ($window(@_dmp3.rcl)) { window -c @_dmp3.rcl } 
  dmp3.rcl %c
}
alias -l _dmp3.scroll.update {
  if ($active == @_dmp3.playlist) {
    if ($1 == 1) { _dmp3.draw.buffer $2 }
    if ($1 == 2) { _dmp3.draw.buffer $2 }
  }
}
alias -l _dmp3.draw.buffer {
  var %t = $2,%pos = $1
  if ($hget(scrollbar. $+ @_dmp3.playlist,1)) { tokenize 47 $ifmatch }
  if ($line(@_dmp3.buffer,0) <= 6) { set %dmp3.y $calc(($mouse.y - $2) / $4 * $line(@_dmp3.buffer,0)) }
  elseif ($line(@_dmp3.buffer,0) > 7) { set %dmp3.y $calc(($mouse.y - $2) / $4 * $calc($line(@_dmp3.buffer,0) - 5))) } 
  if (%genre.y == 0) { set %dmp3.y 1 }
  if (%t) { set %dmp3.y $ifmatch }
  set %dmp3.y $deltok(%dmp3.y,2,46)
  if ($window(@_dmp3.playlist)) {
    drawrect -nrf @_dmp3.playlist $rgb(66,83,102) 0 0 0 154 90
    if (%dmp3.y < 1) { set %dmp3.y 1 } 
    var %x2 = %dmp3.y
    var %x = 0
    while (%x <= 6) {
      if ($line(@_dmp3.buffer,%x2)) {
        drawtext -rnc @_dmp3.playlist $rgb(26,43,62) "arial" 9 4 $calc((13 * %x) + 2) 140 14 $nopath($remove($line(@_dmp3.buffer,%x2),.mp3))
        drawtext -rnc @_dmp3.playlist $rgb(99,168,245) "arial" 9 3 $calc((13 * %x) + 1) 140 14 $nopath($remove($line(@_dmp3.buffer,%x2),.mp3))  
      }
      inc %x
      inc %x2
    }
    if ($line(@_dmp3.buffer,0) > 6) {
      tokenize 47 $hget(scrollbar. $+ @_dmp3.playlist,1)
      var %sep = $calc($iif($line($9,0) <= $10 ,1,$iif($calc($10 / $line($9,0)) < 0.05,0.05,$calc($10/ $line($9,0)))))
      var %sh = $calc($8 + $rgb(20,20,20))
      var %x $1, %y $calc(((%pos / 100 * $4) * $calc(1 - %sep)) + $2), %w $3, %h $round($calc($4 * %sep),0) 
      drawrect -rnf @_dmp3.playlist $5 1 $1 $2 $3 $4
      drawrect -rnf @_dmp3.playlist $6 1 %x %y %w %h
      drawrect -rn @_dmp3.playlist $8 1 %x %y %w %h
      drawline -rnf @_dmp3.playlist $7 1 $calc(%x + 1) $calc((%y + %h) - 2) $calc(%x + 1) $calc(%y + 1) $calc((%x + %w) - 1) $calc(%y + 1)
      drawline -rnf @_dmp3.playlist %sh 1 $calc(%x + 1) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc((%y + %h) - 2) $calc((%x + %w) - 2) $calc(%y + 1)
    }
    drawdot @_dmp3.playlist
  }
} 
alias -l dmp3.sinf {
  var %y = 78, %x = 1
  var %dmp3.song = $remove($nopath($1-),.mp3), %dmp3.length = $calc($sound($1-).length / 1000)
  %dmp3.length = LENGTH: $gmt(%dmp3.length,$iif(%dmp3.length >= 3600,hh:nn:ss,nn:ss))
  var %dmp3.artist = ARTIST: $sound($1-).artist, %dmp3.album = ALBUM: $sound($1-).album
  var %dmp3.title = TITLE: $sound($1-).title, %dmp3.bitrate = BITRATE: $sound($1-).bitrate kbps
  var %dmp3.sample = SAMPLE: $round($calc($sound($1-).sample / 1000),2) khz
  var %dmp3.icom = %dmp3.length %dmp3.bitrate %dmp3.sample
  %x = $dmp3.sinl(9,%x,%dmp3.song)
  %x = $dmp3.sinl(9,%x,%dmp3.artist)
  %x = $dmp3.sinl(9,%x,%dmp3.album)
  %x = $dmp3.sinl(9,%x,%dmp3.title)
  %x = $dmp3.sinl(9,%x,%dmp3.icom)
  window -Bfphdo +dL @_dmp3.sinf $mouse.dx $mouse.dy $calc(%x + 20) %y
  drawrect -nr @_dmp3.sinf $rgb(255,255,255) 1 0 0 $calc(%x + 20) %y
  drawrect -nrf @_dmp3.sinf $rgb(66,83,157) 1 1 1 $calc(%x + 18) $calc(%y - 2)
  drawtext -nr @_dmp3.sinf $rgb(0,0,0) "Arial" 9 9 4 %dmp3.song
  drawtext -nr @_dmp3.sinf $rgb(0,0,0) "Arial" 9 9 6 %dmp3.song
  drawtext -nr @_dmp3.sinf $rgb(0,0,0) "Arial" 9 11 4 %dmp3.song
  drawtext -nr @_dmp3.sinf $rgb(0,0,0) "Arial" 9 11 6 %dmp3.song
  drawtext -nr @_dmp3.sinf $rgb(255,255,255) "Arial" 9 10 5 %dmp3.song
  dmp3.sint 20 9 %dmp3.artist
  dmp3.sint 33 9 %dmp3.album
  dmp3.sint 46 9 %dmp3.title
  dmp3.sint 59 9 %dmp3.icom
  drawdot @_dmp3.sinf 
}
alias -l dmp3.rclm {
  if ($window(@_dmp3.rcl)) {
    drawrect -nr @_dmp3.rcl $rgb(255,255,255) 1 0 0 150 90
    drawrect -nfr @_dmp3.rcl $rgb(68,83,157) 1 1 1 148 88
    if ($1) {
      if ($1 == 1) { drawrect -nfr @_dmp3.rcl $rgb(81,83,235) 1 5 6 140 18 }
      elseif ($1 == 2) { drawrect -nfr @_dmp3.rcl $rgb(81,83,235) 1 5 26 140 18 }
      elseif ($1 == 3) { drawrect -nfr @_dmp3.rcl $rgb(81,83,235) 1 5 46 140 18 }
      elseif ($1 == 4) { drawrect -nfr @_dmp3.rcl $rgb(81,83,235) 1 5 66 140 18 }
    }
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 8 Add Directory
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 10 Add Directory
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 8 Add Directory
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 10 Add Directory
    drawtext -nr @_dmp3.rcl $rgb(255,255,255) "Arial" 9 10 9 Add Directory
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 28 Add Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 30 Add Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 28 Add Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 30 Add Track
    drawtext -nr @_dmp3.rcl $rgb(255,255,255) "Arial" 9 10 29 Add Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 48 Delete Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 50 Delete Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 48 Delete Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 50 Delete Track
    drawtext -nr @_dmp3.rcl $rgb(255,255,255) "Arial" 9 10 49 Delete Track
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 68 Delete All
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 9 70 Delete All
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 68 Delete All
    drawtext -nr @_dmp3.rcl $rgb(0,0,0) "Arial" 9 11 70 Delete All
    drawtext -nr @_dmp3.rcl $rgb(255,255,255) "Arial" 9 10 69 Delete All
    drawdot @_dmp3.rcl
  }
}
alias -l _dmp3.trackbar {
  if ($window(@_dmp3.trackbar)) {
    var %i = $1
    if (%i < 5) { %i = 0 }
    elseif (%i > 140) { %i = 140 }
    else { %i = $calc(%i - 5) }
    drawrect -nfr @_dmp3.trackbar $rgb(66,83,102) 1 0 0 150 4
    drawrect -nfr @_dmp3.trackbar $rgb(171,195,210) 1 0 1 150 2
    drawrect -nfr @_dmp3.trackbar $rgb(81,83,235) 1 0 1 %i 2
    drawrect -nfrd @_dmp3.trackbar $rgb(200,0,0) 1 %i 0 10 4 2 2
    drawdot @_dmp3.trackbar
  }
}
alias -l _dmp3.search {
  .timergettime -p
  var %i = $ceil($calc((100 / 150) * $1)))
  set %dmp3.plength $ceil($calc((%dmp3.slength / 100) * %i)))
  var %_dmp3.1 $fmod(SOUND_Stream_SetTime,1,$calc(%dmp3.plength * 1000))
  .timergettime -r
}
alias -l dmp3.psbut {
  if ($window(@_dmp3.psset)) {
    drawrect -rnf @_dmp3.psset $rgb(171,195,210) 1 0 0 106 12
    drawline -rn @_dmp3.psset $rgb(255,255,255) 1 0 0 106 0 
    drawline -rn @_dmp3.psset $rgb(255,255,255) 1 0 1 0 11 
    drawline -rn @_dmp3.psset $rgb(50,50,150) 1 0 11 106 11
    drawline -rn @_dmp3.psset $rgb(50,50,150) 1 35 0 35 11
    drawline -rn @_dmp3.psset $rgb(255,255,255) 1 36 0 36 11 
    drawline -rn @_dmp3.psset $rgb(50,50,150) 1 70 0 70 11
    drawline -rn @_dmp3.psset $rgb(255,255,255) 1 71 0 71 11
    drawline -rn @_dmp3.psset $rgb(50,50,150) 1 105 0 105 11
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == ord,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 7 0 order
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == ran,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 38 0 random
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == rep,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 75 0 repeat
    drawdot @_dmp3.psset
  }
}
alias -l dmp3.psupd {
  if ($window(@_dmp3.psset)) {
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == ord,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 7 0 order
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == ran,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 38 0 random
    drawtext -rn @_dmp3.psset $iif(%dmp3.pst == rep,$rgb(255,0,0),$rgb(26,43,62)) "arial" 9 75 0 repeat
    drawdot @_dmp3.psset
  }
}
alias -l dmp3.vols {
  var %i = $calc(($vol(song) / 65535) * 100)
  if ($window(@_dmp3.vol)) {
    drawrect -rnf @_dmp3.vol $rgb(66,83,102) 1 0 0 $window(@_dmp3.vol).w $window(@_dmp3.vol).h
    drawpic -n @_dmp3.vol 0 2 $iif($vol(master).mute,$+(",$scriptdirmutea.bmp,"),$+(",$scriptdirmute.bmp,"))
    _dmp3.volld %i
    drawdot @_dmp3.vol 
  }
}
alias -l _dmp3.volld {
  var %bw = $calc($window(@_dmp3.vol).w -17), %cv = $calc((%bw / 100) * $1)
  if ($window(@_dmp3.vol)) {
    drawline -rn @_dmp3.vol $rgb(0,0,0) 1 15 12 15 3 $calc(%bw +16) 3
    drawline -rn @_dmp3.vol $rgb(255,255,255) 1 16 12 $calc(%bw +16) 12 $calc(%bw +16)  3
    drawrect -nfr @_dmp3.vol $rgb(171,195,210) 1 16 4 %bw 8
    drawrect -nfr @_dmp3.vol $rgb(81,83,235) 1 16 4 %cv 8
  }
}
menu @_dmp3.vol {
  mouse: {
    if ($mouse.key & 1) {
      if ($inrect($mouse.x,$mouse.y,16,4,40,8)) { 
        if ($mouse.x == 55) { var %i = 100 }
        else { var %i = $ceil($calc((($mouse.x - 16) / 40) * 100)) }
        vol -p $calc((65535 / 100) * %i)
        dmp3.vols
      }
    }
  }
  sclick: { 
    if ($inrect($mouse.x,$mouse.y,3,2,9,12)) { 
      $iif($vol(master).mute,vol -vu2, vol -vu1)
      dmp3.vols
    }
    if ($inrect($mouse.x,$mouse.y,16,4,40,8)) { 
      if ($mouse.x == 55) { var %i = 100 }
      else { var %i = $ceil($calc((($mouse.x - 16) / 40) * 100)) }
      vol -p $calc((65535 / 100) * %i)
      dmp3.vols
    }
  }
}
menu menubar {
  D-mp3 Player: _dmp3player
}
menu @_dmp3.trackbar {
  mouse: {
    if ($mouse.key & 1) {
      if ($inrect($mouse.x,$mouse.y,0,0,150,4)) { _dmp3.trackbar $mouse.x | _dmp3.search $mouse.x }
    }
  }
  sclick : {
    if ($inrect($mouse.x,$mouse.y,0,0,150,4)) { _dmp3.trackbar $mouse.x | _dmp3.search $mouse.x }
  }
}
menu @_dmp3.rcl {
  sclick: { 
    if ($inrect($mouse.x,$mouse.y,5,6,140,18)) { window -c @_dmp3.rcl | dmp3.adddir }
    elseif ($inrect($mouse.x,$mouse.y,5,26,140,18)) { window -c @_dmp3.rcl | dmp3.addfile } 
    elseif ($inrect($mouse.x,$mouse.y,5,46,140,18)) { window -c @_dmp3.rcl | if (%dmp3.r.file) { dmp3.delfile } } 
    elseif ($inrect($mouse.x,$mouse.y,5,66,140,18)) { window -c @_dmp3.rcl | dmp3.delall } 
    window -c @_dmp3.rcl 
    unset %dmp3.r.file
  }
  mouse: {
    if (($inrect($mouse.x,$mouse.y,5,6,140,18)) && (%rcl.sel != 1)) { dmp3.rclm 1 } 
    elseif (($inrect($mouse.x,$mouse.y,5,26,140,18)) && (%rcl.sel != 2)) { dmp3.rclm 2 } 
    elseif (($inrect($mouse.x,$mouse.y,5,46,140,18)) && (%rcl.sel != 3)) { dmp3.rclm 3 } 
    elseif (($inrect($mouse.x,$mouse.y,5,66,140,18)) && (%rcl.sel != 4)) { dmp3.rclm 4 } 
  }
  leave: {
    if ($window(@_dmp3.rcl)) { window -c @_dmp3.rcl } 
  }
}
menu @_dmp3.sinf {
  leave: {
    if ($window(@_dmp3.sinf)) { window -c @_dmp3.sinf } 
  }
  sclick: { window -c @_dmp3.sinf }
}
menu @_dmp3.playlist {
  mouse: {
    if ($window(@_dmp3.rcl)) { window -c @_dmp3.rcl }
    elseif ($inrect($mouse.x,$mouse.y,0,0,138,103)) { _dmp3.pllca $mouse.x $mouse.y } 
    elseif ($mouse.key & 1) {
      var %r = 1 
      while ($hget(scrollbar. $+ $active,%r)) {
        tokenize 47 $ifmatch 
        if ($inrect($mouse.x,$mouse.y,$1,$2,$3,$4)) { _dmp3.scroll.update %r $round($calc((($mouse.y - $2) / $4) * 100),0) }
        inc %r
      }
    }
  }
  sclick: {
    var %r = 1 
    while ($hget(scrollbar. $+ $active,%r)) {
      tokenize 47 $ifmatch 
      if ($inrect($mouse.x,$mouse.y,$1,$2,$3,$4)) { _dmp3.scroll.update %r $round($calc((($mouse.y - $2) / $4) * 100),0) }
      inc %r
    }
  }
  dclick { if ($inrect($mouse.x,$mouse.y,0,0,138,103)) { _dmp3.pllc $mouse.y } }
  rclick { if ($inrect($mouse.x,$mouse.y,0,0,138,103)) { _dmp3.pllrc $mouse.x $mouse.y } }
}
menu @_dmp3.psset {
  sclick : {
    if ($inrect($mouse.x,$mouse.y,1,1,34,10)) { %dmp3.pst = ord | dmp3.psupd }
    elseif ($inrect($mouse.x,$mouse.y,36,1,34,10)) { %dmp3.pst = ran | dmp3.psupd }
    elseif ($inrect($mouse.x,$mouse.y,71,1,34,10)) { %dmp3.pst = rep | dmp3.psupd }
  }
}
dialog dmp3player {
  title " "
  size -1 -1 95 113
  option dbu
  text "..", 1, 10 10 75 6, nowrap hide
  button "", 23, 10 10 75 6
  button "", 2, 10 24 75 22
  button "", 21, 10 47 75 2
  text "00:00/00:00", 20, 45 17 40 6, nowrap right
  button "",3 , 10 60 77 45
  button "", 22, 10 60 77 45,hide
  icon 4, 10 50 10 10, $scriptdirback.bmp, noborder
  icon 5, 19 50 10 10, $scriptdirplay.bmp, noborder
  icon 6, 28 50 10 10, $scriptdirpause.bmp, noborder
  icon 7, 37 50 10 10, $scriptdirstop.bmp, noborder
  icon 8, 46 50 10 10, $scriptdirforward.bmp, noborder
  button "vol ", 16, 57 50 28 8
  button " ", 15, 13 109 53 6
  icon 18, 75 108 10 10, $scriptdirclose1.bmp, noborder
  icon 19, 67 108 10 10, $scriptdirhelp.bmp, noborder
}
on *:dialog:dmp3player:*:*:{ 
  if ($devent == init) {
    $fmod_start 
    dll $shortfn($scriptdirimgdlg.dll) ImgDlg 1 1 $dialog($dname).hwnd $scriptdirbg1.bmp
    mdx SetMircVersion $version
    mdx MarkDialog $dname
    mdx SetFont $dname 1,20,23 12 100 Tahoma
    mdx SetColor $dname 1,20,23 text $rgb(99,168,245)
    mdx SetColor $dname 1,20,23 textbg $rgb(66,83,102)
    mdx SetColor $dname 1,20,23 background $rgb(66,83,102)
    window -hp @_dmp3.vol
    mdx SetControlMDX $dname 16 Window > $mdxdialog
    did -a $dname 16 grab $window(@_dmp3.vol).hwnd @_dmp3.vol
    dmp3.vols
    if (!%dmp3.pst) { set %dmp3.pst ord }
    window -hp @_dmp3.tupl
    mdx SetControlMDX $dname 23 Window > $mdxdialog
    did -a $dname 23 grab $window(@_dmp3.tupl).hwnd @_dmp3.tupl
    _dmp3.tupl
    window -hp @_dmp3.psset
    mdx SetControlMDX $dname 15 Window > $mdxdialog
    did -a $dname 15 grab $window(@_dmp3.psset).hwnd @_dmp3.psset
    dmp3.psbut
    window -hp @dmp3fmod
    mdx SetControlMDX $dname 2 Window > $mdxdialog
    did -a $dname 2 grab $window(@dmp3fmod).hwnd @dmp3fmod
    window -hp @_dmp3.playlist
    mdx SetControlMDX $dname 3 Window > $mdxdialog
    did -a $dname 3 grab $window(@_dmp3.playlist).hwnd @_dmp3.playlist
    drawrect -rf @_dmp3.playlist $rgb(66,83,102) 1 -1 -1 155 120
    window -hl @_dmp3.buffer
    mdx SetControlMDX $dname 22 Window > $mdxdialog
    did -a $dname 22 grab $window(@_dmp3.buffer).hwnd @_dmp3.buffer
    window -hp @_dmp3.trackbar
    mdx SetControlMDX $dname 21 Window > $mdxdialog
    did -a $dname 21 grab $window(@_dmp3.trackbar).hwnd @_dmp3.trackbar
    _dmp3.trackbar 1
    _dmp3.plcreate
    var %_dmp3.01 $fmod(Plugin_Load,1 $+(",$scriptdirfmm_vis_spectrum.dll,"))
    var %_dmp3.02 $fmod(Plugin_Send,1 Spectrum 1 1 @dmp3fmod 35)
    var %_dmp3.03 $fmod(Plugin_Send,1 Set_Color  1 171/195/210)
    var %_dmp3.04 $fmod(Plugin_Send,1 Set_Color  2 255/255/255)
    var %_dmp3.05 $fmod(Plugin_Send,1 Set_Color 0 99/168/245)
    var %_dmp3.06 $fmod(Plugin_Send,1 Set_NumFades 10)
    var %_dmp3.07 $fmod(Plugin_Send,1 Set_NumColors 3)
    var %_dmp3.08 $fmod(Plugin_Send,1 Set_HeightColoring 0)
    var %_dmp3.09 $fmod(Plugin_Send,1 Set_YSpace_Every 1)
    var %_dmp3.10 $fmod(Plugin_Send,1 Set_YSpace_Height 1)
    var %_dmp3.11 $fmod(Plugin_Send,1 Set_Barwidth 3)
    var %_dmp3.12 $fmod(Plugin_Send,1 Set_Barspace 2)
    var %_dmp3.13 $fmod(Plugin_Send,1 Set_Start 0)
    var %_dmp3.14 $fmod(Plugin_Send,1 Set_End 150)
    var %_dmp3.15 $fmod(Plugin_Send,1 Set_Avg 1)
    var %_dmp3.16 $fmod(Plugin_Send,1 Set_BounceRate 4.0)
    var %_dmp3.17 $fmod(Plugin_Send,1 Set_Dim 0 0 150 44)
    var %_dmp3.18 $fmod(Plugin_Send,1 Set_Bgcolor 66/83/102)
    did -f dmp3player 3 
    unset %dmp3.pause
    unset %dmp3.ranl
    set %dmp3.plength 0
    .timerdmp3.tusll -im 0 50 _dmp3.tusll
  }
  elseif ($devent == sclick) {
    if ($did == 18) {  _dmp3.stop | .timerdmp3.tusll off | dialog -x dmp3player }
    elseif ($did == 7) { _dmp3.stop }
    elseif ($did == 8) { _dmp3.gnext }
    elseif ($did == 4) { _dmp3.gback }
    elseif ($did == 5) { _dmp3.pbut }
    elseif ($did == 6) { _dmp3.pause }
    elseif ($did == 19) { _dmp3help }
  }
  elseif ($devent == close) {  
    var %_dmp3.19 $fmod(Plugin_UnLoad,1) 
    var %_dmp3.20 $fmod(Plugin_Send,1 Spectrum off)
  }
}
alias _dmp3.tupl {
  if ($window(@_dmp3.tupl)) {
    if (!$1) { %dmp3.tupl = D-mp3 Player... }
    else { %dmp3.tupl = $1- }
    %dmp3.tupllng = $width(%dmp3.tupl,Arial,9)
    %dmp3.tuplpos = $window(@_dmp3.tupl).w
  }
}
alias _dmp3.tusll {
  if ($window(@_dmp3.tupl)) {
    drawrect -nrf @_dmp3.tupl $rgb(66,83,102) 1 0 0 $window(@_dmp3.tupl).w $window(@_dmp3.tupl).h
    dec %dmp3.tuplpos 
    if (%dmp3.tuplpos < $calc(0 - %dmp3.tupllng)) { %dmp3.tuplpos = $window(@_dmp3.tupl).w }
    drawtext -nr @_dmp3.tupl $rgb(26,43,62) "arial" 9 $calc(%dmp3.tuplpos + 1) 1 %dmp3.tupl
    drawtext -nr @_dmp3.tupl $rgb(99,168,245) "arial" 9 %dmp3.tuplpos 0 %dmp3.tupl
    drawdot @_dmp3.tupl
  }
}
dialog dmp3help {
  title "D-mp3 Help"
  size -1 -1 230 160
  option dbu
  button "..", 1, 5 5 220 150
}
on *:dialog:dmp3help:*:*:{ 
  if ($devent == init) {
    mdx SetMircVersion $version
    mdx MarkDialog $dname
    window -hp @dmp3help
    mdx SetControlMDX $dname 1 Window > $mdxdialog
    did -a $dname 1 grab $window(@dmp3help).hwnd @dmp3help
    _dmp3help.win init
  }
}
alias -l _dmp3help.win {
  if ($window(@dmp3help)) {
    if ($1 == init) {
      drawrect -nrf @dmp3help $rgb(255,255,255) 1 0 0 $window(@dmp3help).w $window(@dmp3help).h
      drawrect -nrf @dmp3help $rgb(68,83,157) 1 1 1 $calc($window(@dmp3help).w -2) $calc($window(@dmp3help).h -2)
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 10 13 Click on the image for help with that section.
      drawpic -n @dmp3help 14 25 $+(",$scriptdirhelpimg.jpg,")
      _dmp3help.win.header Creds n Shit..
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 Lots of people to thank....so lets start with 
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 the makers of fmod, ImgDlg and mdx. It
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 wouldn't be possible to make this eye
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 candy mp3 player without them.
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 Next....tutorials on picture window list
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 96 boxes (Jynx) and SweDesignz content box
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 107 tutorial.  Also should mention VoP, as I
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 116 learnt a lot from his picture window
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 127 popups code.
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 151 Warrior and Sparkle who tested it for me.
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 173 Finally wanna thank JinXy, Cuch (the
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 184 man with the tunes) and the people of 
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 196 skylineIRC who've made IRC worth logging
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 207 onto again :)
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 234 220 jel/DND
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 236 220 jel/DND
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 235 219 jel/DND
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 235 221 jel/DND
      drawtext -nro @dmp3help $rgb(255,255,255) "Arial" 12 235 220 jel/DND
      drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 232 email: dnd@skylinebbs.com
    }
    else {
      drawrect -nrf @dmp3help $rgb(68,83,157) 1 233 1 $calc($window(@dmp3help).w -235) $calc($window(@dmp3help).h -2)
      if ($1 == cusong) {
        _dmp3help.win.header Current Song Info
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 What song is currently playing, how long
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 it is and how long has been playing for.
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 01.01.06 - Update
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 Added scroller so all of song name can
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 74 be viewed.
      }
      elseif ($1 == spec) {
        _dmp3help.win.header Spectrum Visualization
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 Visualizations provided by fmod.  Not much
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 to say about them other than cool aint it :p
      }
      elseif ($1 == trackbar) {
        _dmp3help.win.header Trackbar
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 By moving the trackbar you can scroll
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 barckarwds and forwards through the 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 song your listening to.  To move the bar
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 either left click to  the position you
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 74 want on the bar or hold the left mouse
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 button down and drag it to the position
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 96 you want
      }
      elseif ($1 == butts) {
        _dmp3help.win.header Play Controls
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 In the order they are in....
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 Back - move back one track
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 Play - start playing a track or if paused 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 unpause and resume play
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 74 Pause - Pause and unpause a track
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 Stop - Stop playing a track
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 96 Forward - Skip forward a track
      }
      elseif ($1 == vol) {
        _dmp3help.win.header Volume Control
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 01.01.06 - Update
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 Changed volume control hopefully to 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 make changing volume easier.
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 Click, or click and drag to on the bar
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 74 to increase, towards the right and 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 to the left to decrease.
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 107 Added mute control
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 118 Clicking on the speaker icon will now
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 129 mute and unmute volume
      }
      elseif ($1 == playlist) {
        _dmp3help.win.header Playlist
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 Right clicking in the playlist area brings 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 up options for adding songs, adding
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 directories, deleting songs or deleting
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 the whole playlist
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 Double clicking on a song will play it.
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 107 Hover over a song in the playlist brings
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 118 up details of that song, length, bitrate etc.
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 139 What some people have described as a
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 151 "blue button" on the right is in fact the
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 162 scoller.  Click and drag up or down to
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 173 scroll through the playlist
      }
      elseif ($1 == playorder) {
        _dmp3help.win.header Play Order
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 Pretty straight forward...three options for
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 playing your songs in.  Order so they 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 52 play through your playlist in the order you
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 63 loaded them.  Random to play them in a
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 74 random order and Repeat as in it plays 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 85 the same song over and over and over
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 96 Get the idea?
      }
      elseif ($1 == helpclose) {
        _dmp3help.win.header Help & Close
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 30 ? brings up the help file 
        drawtext -nr @dmp3help $rgb(255,255,255) "Arial" 10 234 41 X Closes the addon
      }
    }
    drawdot @dmp3help
  }
}
alias -l _dmp3help.win.header {
  if ($window(@dmp3help)) {
    if ($1) {
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 234 10 $1- 
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 236 10 $1-
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 235 9 $1- 
      drawtext -nro @dmp3help $rgb(0,0,0) "Arial" 12 235 11 $1-
      drawtext -nro @dmp3help $rgb(255,255,255) "Arial" 12 235 10 $1-
    }
  }
}
menu @dmp3help {
  sclick: { 
    if ($inrect($mouse.x,$mouse.y,34,47,149,23)) {  _dmp3help.win cusong }
    elseif ($inrect($mouse.x,$mouse.y,34,75,149,44)) { _dmp3help.win spec }
    elseif ($inrect($mouse.x,$mouse.y,34,121,150,4)) { _dmp3help.win trackbar }
    elseif ($inrect($mouse.x,$mouse.y,35,127,91,13)) { _dmp3help.win butts }
    elseif ($inrect($mouse.x,$mouse.y,133,128,50,14)) { _dmp3help.win vol }
    elseif ($inrect($mouse.x,$mouse.y,37,147,149,93)) { _dmp3help.win playlist }
    elseif ($inrect($mouse.x,$mouse.y,36,243,110,16)) { _dmp3help.win playorder }
    elseif ($inrect($mouse.x,$mouse.y,150,244,30,14)) { _dmp3help.win helpclose }
  }
}