J-Script — File Browser

J-Scriptv2.2 / J-Scriptv2.2 / addons / aamp / aamp.mrc

aamp.mrc — 33.41 KB — Download this file

on *:load:aamp.init 1
on *:start:{
  if (!%aamp.nocheck) aampcheck 1
  if (%aamp.startup) aamp
}
alias aampversion {
  var %v = 2002.07.14a
  if ($1) return %v
  return argh-amp $+([,%v,])
}
alias aamp.init {
  if ($version < 6.01) {
    echo $colour(i) -a *** You need mIRC v6.01 or higher to use argh-amp.
    unload -rs " $+ $script $+ "
    return
  }
  if (!$lines($skn)) {
    write $skn 15k2q02025g0f4t040b0b55040b0b05220r0j0z220r0j1t220r0j2n220r0j3h220r0j4e220r0j050k500j05161k0j1s161q0j3l161k0j590k0521070k051t50050t0700000000007ir407ir4077gzc4dxtc5n2c085bdc8rvmo5ycgo6kwq000000000007ir400000000000000007ir40r0b0b0b0b6666tahomatahomatahomatahomaargh-amp
    write $skn 1592d0303530d04040b0b4u040b0b041q0r0j0x1q0r0j1q1q0r0j2j1q0r0j3c1q0r0j451q0r0j030h4u0g030x1k0j1n0x1q0j3d0x1k0j500h031t070f031j4u030t074p7y06nq961yib61yib63iwyi0000034tao34tao0000016azi2qpmu69mlc5oh3l1yib669mlc69mlc69mlc4p7y0t090b09098888terminalterminalterminalterminalargh-amp
    write $skn 15d2u0303570d4m040b0b4y040b0b05250q0k0w250q0k1n250q0k2e250q0k35250q0k41250q0k050j530h05121q0p1x151j0j3i15190j4x15081k0e06051t4m090t070s7bo000006nq967fxku3iwyi71tx034tao34tao62krf16azi2qpmu7fxku5oh3l1yib67mzer6us337mzer6nq96d090i090a7777verdanaverdanaverdanaverdanaargh-amp
    write $skn 15d2u0303570d4m040b0b4y040b0b05250q0k0w250q0k1n250q0k2e250q0k35250q0k41250q0k050j530h05121q0p1x151j0j3i15190j4x15081k0e06051t4m090t07007pq007pq00ieb00ieb00ieb00cn400fty00oqa00p5n006x400cg400khg00p6g006bk00lq000khg00p1p00iebb090i090a7777verdanaverdanaverdanaverdanaargh-amp
    write $skn 15d2u0303570d4m040b0b4y040b0b05250q0k0w250q0k1n250q0k2e250q0k35250q0k41250q0k050j530h05121q0p1x151j0j3i15190j4x15081k0e06051t4m090t0762gro62gro366go366go38zsr0ibd026x3z4i3bn5d2zb1yhb72ckz12vag42jyq9000006m7p61w03n1w03n366gob090i090a8777terminalverdanaverdanaverdanaboamp
    write $skn 19q0j03030a0d8w030d0d9a030d0d3h030e0d3v030e0d49030e0d4n030e0d51030e0d5h030e0d0e03300d05121q0p1x151j0j3i15190j7z070u05050d5y071y05050d00000000007ir407ir407ir400000050i2o8rvmo9zldr0000050i2o9zldr8rvmo7ir400000000000000007ir40b090i0909e777lucida consoleverdanaverdanaverdana
    write $skn 11a4f0404120e596h0b0b5l6h0b0b030j0j0k0g150q0k0g1q0q0k0g2b0q0k0o0j0j0k0g2w0q0k3s4v1a0f043i120h2j5l1j0j445l190j04431205040b0615062b0a0500000000005hf9o5hf9o4p7y01kenc34tao5hf9o7fxku16azi2qpmu7fxku5oh3l0s7bo7mzer6us337mzer5hf9ob0909090a8777terminalverdanaverdanaverdanatallamp
  }
  close -@ @aamp.temp
  window -hl @aamp.temp
  loadbuf @aamp.temp $skn
  var %x = $line(@aamp.temp,0)
  while (%x) {
    rline @aamp.temp %x $skin.decompress($line(@aamp.temp,%x))
    dec %x
  }
  savebuf @aamp.temp $skn
  close -@ @aamp.temp
  if (%aamp.skn !isnum) %aamp.skn = 1
  if (!%aamp.skin) %aamp.skin = $skin.decompress($read($skn,l,1))
  if (%aamp.startup) || ($1) aamp
  close -@ @argh-amp loaded
  window -k @argh-amp loaded -1 -1 -1 300
  var %e = echo $color(i) @argh-amp loaded
  %e Thanks for your interest in argh-amp.
  %e Please don't send me suggestions.  I'm very busy, and I'm getting stuff done when I have time.  Thanks.
  %e Be sure to view aamp.html for information on skinning, and everything else.
  %e Recent additions:
  %e - LEFT & RIGHT arrow key shortcuts (for seeking 5 seconds)
  %e - CTRL+C & CTRL+INSERT shortcut keys for copying skin to clipboard
  %e - Options enabling/disabling spam, and changing spam channels
  %e - Stopped window from re-opening when changing skin
  %e - It won't load the aamp playlist if "integrate with mp3stuff" is enabled. (It makes things faster.)
  %e - Hold down CTRL to move the window as if EasyMove were enabled.
  %e - Fixed bugs that appeared in mIRC 6.02
  %e - New skin format for copying to clipboard -> skins are about 100 bytes smaller <- (old skins still work) !!!! :)
}
alias -l skin.compress {
  if ($numtok($1-,9) != 48) return $1-
  var %skin = $1-, %i = 1, %out = 1, %temp, %names
  ; skin version %out = 1
  ; window 1 wwhh
  ; rect 2-14 xxyywwhh
  ; bar&knob 15-16 xxyywwhhwwhh
  while (%i < 17) {
    tokenize 32 $gettok(%skin,%i,9)
    if ($abs($1) > 1295) tokenize 32 1295 $2-
    if ($abs($2) > 1295) tokenize 32 $1 1295 $3-
    if ($abs($3) > 1295) tokenize 32 $1-2 1295 $4-
    if ($abs($4) > 1295) tokenize 32 $1-3 1295 $5-
    if (%i > 1) %out = $+(%out,$base10362($1),$base10362($2))
    %out = $+(%out,$base10362($3),$base10362($4))
    if (%i > 14) {
      if ($abs($5) > 1295) tokenize 32 $1-4 1295 $6
      if ($abs($6) > 1295) tokenize 32 $1-5 1295
      %out = $+(%out,$base10362($5),$base10362($6))
    }
    inc %i
  }
  ; color 30-47 ccccc
  %i = 30
  while (%i < 48) {
    %out = %out $+ $base($gettok(%skin,%i,9),10,36,5)
    inc %i
  }
  ; options 26-29,48 (combine)
  tokenize 32 26 27 28 29 48
  while ($1) {
    %temp = %temp $+ $gettok(%skin,$1,9)
    tokenize 32 $2-
  }
  %out = %out $+ $base(%temp,2,36)
  ; fontsize 18,20,22,24 ss
  %i = 18
  while (%i < 25) {
    %temp = $gettok(%skin,%i,9)
    if ($abs(%temp) > 1295) %temp = 1295
    %out = %out $+ $base10362(%temp)
    inc %i 2
  }
  ; font name lengths 17,19,21,23 l
  %i = 17
  while (%i < 24) {
    %names = %names $+ $left($gettok(%skin,%i,9),35)
    %temp = $len($gettok(%skin,%i,9))
    if (%temp > 35) %temp = 35
    %out = %out $+ $base(%temp,10,36)
    inc %i 2
  }
  ; font names and title 17,19,21,23,25 ?
  %out = $+($lower(%out),%names,$mid($gettok(%skin,25,9),2))
  return %out
}
alias -l base10362 {
  var %n
  if (-* iswm $1) %n = -
  return %n $+ $base($abs($1),10,36,2)
}
;----------------------------
; bytes*number
;     1*1 = version, v
;     4*1 = window, wwhh
;    8*14 = rectangle, xxyywwhh
;    12*2 = bar&knob, xxyywwhhwwhh
;    5*18 = color, ccccc
;     1*1 = 5 bin options, o
;     2*4 = fontsize, ss
;     1*4 = lengths of font names, l
; ?+?+?+? = font names
;       ? = title
; total 236+?
;----------------------------
alias -l skin.decompress {
  if ($numtok($1-,9) == 48) return $1-
  ; skin version = 1
  if ($left($1,1) != 1) return
  ; window 1 wwhh
  ; rect 2-14 xxyywwhh
  ; bar&knob 15-16 xxyywwhhwwhh
  var %skin = $1-, %out = $mid($str(	 ,48),2), %pos = 2, %i = 1, %j, %n, %w
  while (%i < 17) {
    %j = 1
    if (%i > 14) %n = 6
    elseif (%i == 1) %n = 2
    else %n = 4
    var %temp = $iif(%i == 1,0 0)
    while (%j <= %n) {
      if ($mid(%skin,%pos,1) == -) %w = 3
      else %w = 2
      %temp = %temp $base($mid(%skin,%pos,%w),36,10)
      %out = $puttok(%out,%temp,%i,9)
      inc %pos %w
      inc %j
    }
    inc %i
  }
  ; color 30-47 ccccc
  %i = 30
  while (%i < 48) {
    %out = $puttok(%out,$base($mid(%skin,%pos,5),36,10),%i,9)
    inc %pos 5
    inc %i
  }
  ; options 26-29,48 (combine 5 into 1 byte)
  %temp = $base($mid(%skin,%pos,1),36,2,5)
  inc %pos
  %i = 26
  while (%i < 49) {
    if (%i == 30) %i = 48
    %out = $puttok(%out,$left(%temp,1),%i,9)
    %temp = $mid(%temp,2)
    inc %i
  }
  ; fontsize 18,20,22,24 ss
  %i = 18
  while (%i < 25) {
    if ($mid(%skin,%pos,1) == -) %w = 3
    else %w = 2
    %out = $puttok(%out,$base($mid(%skin,%pos,%w),36,10),%i,9)
    inc %pos %w
    inc %i 2
  }
  ; font name lengths 17,19,21,23 l
  %temp =
  %i = 4
  while (%i) {
    %temp = %temp $base($mid(%skin,%pos,1),36,10)
    inc %pos
    dec %i
  }
  ; font names and title 17,19,21,23,25 ?
  tokenize 32 %temp
  %i = 17
  while (%i < 26) {
    if (%i == 25) %temp =   $+ $mid(%skin,%pos)
    else %temp = $mid(%skin,%pos,$1)
    %out = $puttok(%out,%temp,%i,9)
    inc %pos $1
    tokenize 32 $2-
    inc %i 2
  }
  return %out
}
alias aamp {
  if (%aamp.mp3stuff) %aamp.mp3stuff = $script(mp3stuff.mrc)
  if (* !iswm %aamp.spamchan) %aamp.spamchan = #argh
  %aamp./ =
  %aamp.down = drawbox 43 36 35 38 37
  if (!%aamp.file) %aamp.file = $mp3dir $+ argh-amp.mp3
  write $skn
  write $m3u
  if (	 isin $1-5) || ($len($1) > 236) {
    %aamp.skin = $1-
    %aamp.* = 1
    tokenize 32 1
  }
  elseif ($1 isnum 1-) {
    %aamp.skn = $1
    %aamp.* = $iif($2 > 1,1)
    tokenize 32 $isbit($2 +,3) $isbit($2 +,2) $read($skn,l,$1)
    if (!$3-) %aamp.skn = 1
    if ($1) || ($2) %aamp.skin = $+($deltok($iif($1,%aamp.skin,$3-),28-,9),	,$gettok($iif($1,$3-,%aamp.skin),28-,9))
    else %aamp.skin = $3-
  }
  %aamp.skin = $skin.decompress(%aamp.skin)
  if ($skin(0) != 48) || ($1- == 0) {
    %aamp.* = 1
    %aamp.skn = $n(1,%aamp.skn)
    %aamp.skin = 15d2u0303570d4m040b0b4y040b0b05250q0k0w250q0k1n250q0k2e250q0k35250q0k41250q0k050j530h05121q0p1x151j0j3i15190j4x15081k0e06051t4m090t078rvmo9zldr9zldr8rvmob090i09097777verdanaverdanaverdanaverdanaargh-amp
    %aamp.skin = $skin.decompress(%aamp.skin)
  }
  if (!%aamp.xy) %aamp.xy = -1 -1
  if (!$window(@aamp)) closeamp
  if (!$window(@aamp.pl)) && (!%aamp.mp3stuff) {
    window -lh @aamp.pl
    loadbuf @aamp.pl $m3u
  }
  if ($iif(%aamp.mdi,1,0) != $iif($window(@aamp).mdi,1,0)) close -@ @aamp
  if (!$window(@aamp)) {
    $window-(iBp) +d @aamp %aamp.xy $mid($skin(1),4) $+(",$mircexe,") 14
  }
  window -ar @aamp
  if (!$window(@aamp.title)) window -khpfB +d @aamp.title
  clear @aamp
  draw
}
alias -l window- return window $+(-zkn,$1,$iif(!%aamp.mdi,$iif(%aamp.ontop,hdo,hd)))
alias -l draw {
  window @aamp -1 -1 $mid($skin(1),5)
  if ($skin(27)) drawbox 34 37 38 35 36 $skin(1)
  else rect 34 $skin(1)
  var %x = 16
  while (%x > 2) {
    if (%x < 11) label %x
    else %aamp.down $skin(%x)
    dec %x
  }
  top 1
  update 1
}
alias -l top {
  if (!$timer(aamp.update)) update
  var %window = $iif($window(@aamp.playlist),window,null), %active = $iif($active == $$window(@aamp) && $appactive,1), %1 = $calc($1 -1)
  if ($appactive) {
    if (%aamp.ontop) || (!%aamp.neverontop) {
      if ($version != 6.02) || ($active == @aamp) {
        if ($version != 6.02) || ($active == @aamp.playlist) %window -o @aamp.playlist
        window -o @aamp
      }
    }
    if (!%aamp.ontop) && (!$window(@aamp.editor)) {
      %window -u @aamp.playlist
      window -u @aamp
    }
  }
  if (%1) && (%aamp.active == %active) return
  %aamp.active = %active
  tokenize 32 $skin(2)
  rect $calc(40-%active) $1-
  tokenize 32 $1- $centertext($1- $calc(42-%active) 24 $mid($skin(25),2))
  if ($skin(26)) $5-
  else $5 $1 $7-
  label 3
  label 4
  if (%1) drawpic @aamp
}
alias aampspam {
  var %colors = 3,6,7,10,12,14
  var %color = $gettok(%colors,$rand(1,$numtok(%colors,44)),44)
  var %input = <c>argh</c> [<song>] <c>-</c> (<length>/<kbps>kbps) <c>amp
  var %output = $replace(%input,<c>, $+ %color,</c>,99,<song>,$deltok($nopath($longfn($inmp3.fname)),-1,46),<length>,$remove($duration($int($calc($insong.length /1000))),ins,in,ecs,ec,rs,r,$chr(32)),<kbps>,$mp3($inmp3.fname).bitrate,<size>,$lower($bytes($lof($insong.fname),bkmgt3).suf))
  var %x = 1, %chan
  while ($gettok(%aamp.spamchan,%x,44)) {
    %chan = $ifmatch
    if ($chan(%chan)) && ($server) msg %chan %output
    inc %x
  }
}
alias -l null
alias -l center return $int($calc($2 /2- $3 /2+ $1))
alias -l skin return $gettok(%aamp.skin,$1,9)
alias -l setskin {
  %aamp.skin = $puttok(%aamp.skin,$2-,$1,9)
  %aamp.* = 1
}
alias -l rect drawrect -rfn @aamp $skin($1) 1 $2-5
alias -l n {
  if ($2 < $1) return $1
  if ($2 > $int($calc($3))) return $int($calc($3))
  return $2
}
alias -l width_ return $width($1,$skin($calc($2 -1)),$skin($2))
alias -l height_ return $height($1,$skin($calc($2 -1)),$skin($2))
alias -l name return $replace($left($nopath($longfn($1)),-4),_,$chr(32))
alias -l : return $+($mid($int($calc(100+$1 /60000% 100)),-2),:,$mid($int($calc(100+$1 /1000% 60)),-2))
alias -l m3u return $+(",$scriptdir,aamp.m3u")
alias -l skn return $+(",$scriptdir,aamp.skn")
alias -l pickfile return $sfile($nofile(%aamp.file) *.mp3)
alias -l drawbox {
  rect $1 $6-
  var %t 2
  while (%t) {
    dec %t
    drawrect -rn @aamp $skin($iif(%t,$2,$3)) 1 $6-9
    if (!$skin(28)) {
      var %x = $calc($7 -1+$9) $calc($6 -1+$8)
      drawline -rn @aamp $skin($iif(%t,$4,$5)) 1 $6 %x %x $calc($7 -1)
    }
    tokenize 32 $1-5 $calc(1+$6) $calc(1+$7) $int($calc($8 -2)) $int($calc($9 -2))
  }
}
alias -l triangle {
  $9- $1-4 $1-2
  $9- $int($calc($5)) $int($calc($6)) $1-2
  $9- $int($calc(.5+ $5)) $int($calc(.5+ $6)) $3-4
  drawfill -rn @aamp $12 $12 $7-8
}
alias -l label {
  if (!$2) drawbox 32 38 37 35 36 $skin($1)
  tokenize 32 $skin($1) $1-
  var %z = $iif($6 && $skin(29),1 +), %w = $n(5,$int($calc($3 *.4))), %h = $n(5,$int($calc($4 *.4)))
  var %x = %z $center($1,$3,%w), %y = %z $center($2,$4,%h), %l = drawline -rn @aamp $skin($calc(30+$6)) 1
  var %s = $int($calc(.8* %w)), %t = %w - %s, %u = %s + %x, %p = $int($calc(.4* %w)), %q = $int($calc(.8* %h))
  var %o = $int($calc(%y -.7+.6* %h)), %a = %x + %w, %b = %y + %h, %c = %a - 1, %d = %b - 1
  var %n = $calc((%d +%y)/2), %m = $calc((%c +%x)/2), %r = triangle %x %y %x %d %c %n $calc(1+%x) %n %l
  var %_ = rect $calc(30+$6) %x $int($calc(%y + %q)) %w $int($calc(%h - %q))
  goto $5
  :3
  %_
  return
  :4
  %l %x %y %a %b
  %l %c %y $calc(%x -1) %b
  return
  :5
  rect $calc(30+$6) %x %y %t %h
  triangle %c %y %c %d $int($calc(%x + %t)) %n $calc(%c -1) %n %l
  return
  :6
  %r
  return
  :7
  rect $calc(30+$6) %x %y %p %h
  rect $calc(30+$6) $int($calc(%x +.6* %w)) %y %p %h
  return
  :8
  rect $calc(30+$6) %x %y %w %h
  return
  :9
  rect $calc(30+$6) %u %y %t %h
  $puttok(%r,$calc(%u -1),6,32)
  return
  :10
  triangle %x %o %c %o %m %y %m $calc(%o -1) %l
  %_
}
alias -l in_rect {
  tokenize 32 $1- $skin($3)
  return $inrect($1,$2,$4,$5,$6,$7)
}
alias -l b {
  if ($timer(aamp.move)) || ($window(@aamp.editor)) return
  var %d = $3, %r, %/ = %aamp./, %t = 10
  while (%t > 2) {
    if ($in_rect($1,$2,%t)) {
      if (%t != %/) || (!%d) && (%/) {
        label %/
        %/ =
      }
      if (!%d) push %t
      elseif (%/ != %t) {
        drawbox $calc(32+%d) 35 36 35 36 $skin(%t)
        label %t 1
        %/ = %t
      }
      %r = 1
      break
    }
    dec %t
  }
  if (%/) && (!%r) label %/
  %aamp./ = $iif(%r,%/)
  drawpic @aamp
  return %r
}
alias -l pl.play {
  %aamp.plpos = $1
  while ($open($line(@aamp.pl,%aamp.plpos))) inc %aamp.plpos
}
alias -l inbar {
  tokenize 32 $1-2 $skin($3)
  tokenize 32 $1-6 $n($5,$7) $n($6,$8)
  return $inrect($1,$2,$center($3,$5,$7),$center($4,$6,$8),$7,$8)
}
alias -l mouse {
  top
  tokenize 32 $mouse.dx $mouse.dy $mouse.x $mouse.y
  if ($b($3,$4,1)) return
  if ($window(@aamp.editor)) {
    window -h @aamp.editor
    move g $1-
    return
  }
  if ($inbar($3,$4,15)) move 15 $1-
  elseif ($inbar($3,$4,16)) move 16 $1-
  elseif (%aamp.easymove) || ($mouse.key & 2) || ($in_rect($3,$4,2)) move 2 $calc($1 - $window(@aamp).x) $calc($2 - $window(@aamp).y)
}
alias -l edit {
  var %k $mouse.key,%l 1
  while ($sline(@aamp.editor,%l).ln < 17) {
    tokenize 32 $1-2 $ifmatch $sline(@aamp.editor,%l)

    ;change knob
    if (%k & 2) && ($9-) tokenize 32 $1-8 $n(2,$calc($9 -1+$1)) $n(2,$calc($10 -1+$2))

    ;change width/height
    elseif (%k & 4) tokenize 32 $1-6 $calc($7 -1+$1) $calc($8 -1+$2) $9-

    ;change actual "width/height" line
    elseif ($3 == 1) {
      if (!$sline(@aamp.editor,2).ln) {
        window @aamp $calc($1 -1+$window(@aamp).x) $calc($2 -1+$window(@aamp).y)
        return
      }
      tokenize 32 $1-4 0 0 $7-
    }

    ;change x/y
    else tokenize 32 $1-4 $calc($5 -1+$1) $calc($6 -1+$2) $7-

    rline -a @aamp.editor $3-
    setskin $3 $5-
    inc %l
  }
  if (%l > 1) draw
}
alias -l move {
  %aamp.? = $1
  var %k = $iif($mouse.key & 1,1), %timer = .timeraamp.move -o 1 0 move $1, %cmd = %timer $2-
  tokenize 32 $mouse.dx $mouse.dy $1-
  tokenize 32 $calc($1 +1- $4) $calc($2 +1- $5) $1-
  if ($window(@aamp.editor)) {
    edit $1-
    if (%k) %timer $3-4
    else window -wro @aamp.editor
    return
  }
  if ($5 == 2) {
    tokenize 32 $1-2 $iif(%aamp.mdi,-3,-1) $skin(1)
    %aamp.xy = $n(0,$calc($1 -1),$window($3).dw - $6) $n(0,$calc($2 -1),$window($3).dh - $7)
    window @aamp %aamp.xy
    if (%k) %cmd
    return
  }
  if ($5 == 15) || ($inmp3) {
    tokenize 32 $5 $skin($5) $calc($3 - $$window(@aamp).dx) $calc($4 - $window(@aamp).dy)
    if ($5 > $4) tokenize 32 $1 $3-
    tokenize 32 $1 $skin($1) $calc($8 -$6 /2-$2) $calc($4 - $6)
    tokenize 32 $1-7 $n(0,$8,$9) $9-
    drawbar $1-
    drawpic @aamp
    if ($1 == 15) vol -p $round($calc(65535*($iif($5 > $4,1-) $8 / $9)),0)
    if (%k) {
      %cmd
      return
    }
    if ($1 != 15) splay -p seek $round($calc($8 / $9 * $inmp3.length),0)
  }
}
alias -l drawbar {
  var %t = $1-, %x = $center($2,$4,$6), %y = $center($3,$5,$7)
  if ($6 > $4) tokenize 32 $1 %x $3 $6 $5-
  if ($7 > $5) tokenize 32 $1-2 %y $4 $7 $6-
  rect 34 $2-
  %aamp.down $skin($1)
  $11
  tokenize 32 %t
  $iif($skin(48),drawbox 47 38 37 35 36,rect 47) $iif($4 < $5,%x $int($calc($3 +( $5 - $7)*( $10 $8 / $9))),$int($calc($2 +( $4 - $6)* $8 / $9)) %y) $6-
}
alias -l update {
  null $$window(@aamp)
  if (!$timer(aamp.update)) .timeraamp.update -om 0 200 update
  var %t = --:--, %n = $1, %f = $inmp3.fname, %inmp3 = $inmp3, %pos = $inmp3.pos, %length = $inmp3.length
  if (!$timer(aamp.move)) %aamp.? =
  %aamp.paused = %inmp3
  if (%inmp3) {
    %t = $:(%pos)
    if (%aamp.u != %pos) {
      %aamp.u = %pos
      %aamp.paused = 0
    }
  }
  + $skin(12) 45 20 %t
  if (%aamp.? != 15) drawbar 15 $skin(15) $vol(s) 65535 1-
  if (%aamp.? != 16) drawbar 16 $skin(16) %pos %length + $iif(!%inmp3,return)
  if (%aamp.length != %length) || (%f != %aamp.file) && (%inmp3) || (%n) {
    if (%inmp3) {
      %aamp.file = %f
      %aamp.length = %length
    }
    %aamp.= =
    + $skin(13) 46 22 $mp3(%aamp.file).bitrate $+ kbps
    + $skin(14) 46 22 $left($mp3(%aamp.file).sample,-3) $+ kHz
    tokenize 32 $skin(11) $name(%aamp.file) ( $+ $:(%aamp.length) $+ )
    if ($calc($width_($5-,18) + 6) > $3) {
      tokenize 32 $width_($5- $+ 00,18) $1-
      %aamp.= = $1
      if (!$window(@aamp.editor)) %aamp.- = 0
      window @aamp.title 0 0 $int($calc(2* $1)) $calc(2+$5)
      clear @aamp.title
      drawfill -r @aamp.title $skin(43) $skin(43) 0 0
      tokenize 32 drawtext -rf @aamp.title $skin(44) $skin(18) $center(0,$int($calc($5 -4)),$height_(0,18)) $6-
      $1-4 $+(",$skin(17),") $5 0 $6-
      $1-4 $+(",$skin(17),") $5 %aamp.= $6-
    }
    else + $skin(11) 44 18 $5-
  }
  if (%aamp.=) {
    tokenize 32 $skin(11)
    if ($version < 6.02) drawcopy -n @aamp.title %aamp.- 0 $calc($3 -5) $calc($4 -5) @aamp $calc(2+$1) $calc(2+$2)
    else drawcopy -n @aamp.title %aamp.- 0 $calc($3 -4) $calc($4 -4) @aamp $calc(2+$1) $calc(2+$2)
    %aamp.- = $int($calc(( %aamp.- +5)% %aamp.=))
  }
  drawpic @aamp
}
alias -l _mouse if (%aamp./) || ($mouse.key & 1) b $mouse.x $mouse.y 1
alias -l + {
  tokenize 32 $calc(2+$1) $calc(2+$2) $int($calc($3 -4)) $int($calc($4 -4)) $5-
  rect 43 $1-
  $centertext($1-)
}
alias -l centertext {
  tokenize 32 $1
  tokenize 32 $height_($7-,$6) $1-
  return text $n($2,$center($2,$4,$width_($8-,$7))) $center($3,$5,$1) $4 $1 $6-
}
alias -l text if (* iswm $7) drawtext -nrc @aamp $skin($5) $+(",$skin($calc($6 -1)),") $skin($6) $1-4 $7-
alias -l closeamp {
  close -@ @aamp @aamp.editor @aamp.title
  pl.reload return
  .timeraamp.* off
  $iif(!$1,.timer -o 1 0 if ($script(aamp.mrc))) closeamp2
}
alias -l closeamp2 {
  if (!$window(@aamp)) {
    close -@ @aamp.pl @aamp.playlist
    if (%aamp.stop) splay stop
    if (%aamp.mp3stuff) && (%aamp.stopcont) && ($script(mp3stuff.mrc)) mp3stuff cont 0
  }
}
alias -l open {
  if ($isfile($1-)) {
    splay -p $+(",$1-,")
    if (%aamp.autospam) && (!%aamp.mp3stuff) aampspam
  }
  elseif (%aamp.plpos < $line(@aamp.pl,0)) return 1
}
alias -l input_ return $input($1,1,argh-amp,$2)
menu @aamp.editor {
  lbclick:{
    if ($1 < 17) return
    tokenize 32 $1 $line(@aamp.editor,$1)
    var %type = $2, %value = $3-, %input, %output
    if (Option.* iswm $2) %output = $iif(%value,0,1)
    elseif (Font.* iswm $2) %output = $input_(%type,%value)
    elseif (FontSize.* iswm $2) {
      %input = $input_(%type,%value)
      if (%input isnum) %output = %input
    }
    elseif (Color.* iswm %type) {
      var %hex = $base(%value,10,16,6)
      %input = $remove($input_(%type   $+($chr(35),$mid(%hex,-2),$mid(%hex,3,2),$left(%hex,2)),$rgb(%value)),$chr(32))
      if (%input == $cancel) return
      if ($numtok(%input,44) == 3) %output = $rgb( [ $deltok(%input,0,44) ] )
      elseif (#?????? iswm %input) {
        if ($base($+($mid(%input,-2),$mid(%input,4,2),$mid(%input,2,2)),16,10)) %output = $ifmatch
      }
      elseif ($calc(%input) isnum 0-16777215) %output = $ifmatch
    }
    elseif (Text.* iswm $2) {
      %input = $input_(%type,$mid(%value,2))
      if (* !iswm %input) if (!$?!="Clear %type ?") return
      %output =   $+ %input
    }
    %output = $remove(%output,	)
    if (* !iswm %output) return
    rline -a @aamp.editor $1 %type %output
    setskin $1 %output
    draw
  }
}
menu @aamp {
  mouse:_mouse
  sclick:{
    mouse
    .timeraamp.k -o 1 0 _mouse
  }
  dclick:mouse
  uclick:b $mouse.x $mouse.y
  leave:b -1 -1
}
menu @aamp.playlist {
  dclick:{
    %aamp.plpos = $1
    open $line(@aamp.pl,$1)
  }
}
menu @aamp,@aamp.editor,@aamp.playlist {
  Spa&m
  .&Spam now $iif(%aamp.mp3stuff,(/mp3stuff spam),(/aampspam)):{
    if (%aamp.mp3stuff) mp3stuff spam
    else aampspam
  }
  .-
  .$checkbox($iif(%aamp.mp3stuff,%mp3stuffplay,%aamp.autospam)) &Auto-spam on play:{
    if (%aamp.mp3stuff) mp3stuff t 0 play
    else %aamp.autospam = $iif(!%aamp.autospam,1)
  }
  .-
  .Set &channels... $+([,$iif(%aamp.mp3stuff,%mp3stuffplayto,%aamp.spamchan),]):{
    if (%aamp.mp3stuff) mp3stuff setchans
    else %aamp.spamchan = $$replace($input_($+(Enter spam channels,$chr(44),$chr(32),separated by commas),%aamp.spamchan),$chr(32),$chr(44))
  }
  -
  S&kin
  .&Previous skin  ( [ ):push 11
  .&Next skin  ( ] ):push 12
  .-
  .&Copy to clipboard  ( CTRL+C ):clipboard $skin.compress(%aamp.skin)
  .&GUI Editor:{
    clear @aamp.editor
    window -drolk +L @aamp.editor -1 -1 275 -1 fixedsys 15
    tokenize 32 Width/Height Titlebar Minimize Close Prev Play Pause Stop Next Eject Song Time kbps kHz Volume Position-Bar Font.Song FontSize.Song Font.Time FontSize.Time Font.Quality FontSize.Quality Font.Titlebar FontSize.Titlebar Text.Titlebar Option.Center-Title Option.Main-Border Option.Alt-Borders Option.Label-Move Color.Button-Label Color.Button-Label2 Color.Button Color.Button2 Color.Main Color.Frame Color.Shadow Color.3DLight Color.Hilight Color.Titlebar Color.Titlebar2 Color.Titlebar-Text Color.Titlebar-Text2 Color.Edit Color.Song Color.Time Color.Quality Color.Knob Option.KnobBorder
    var %l
    while ($1) {
      inc %l
      aline @aamp.editor $1 $skin(%l)
      tokenize 32 $2-
    }
  }
  .-
  .$iif(%aamp.*,&Reload skin (Undo changes)):aamp %aamp.skn
  .-
  .$iif(%aamp.*,&Save current skin):{
    write $skn %aamp.skin
    aamp $lines($skn)
  }
  .$iif(!%aamp.* && %aamp.skn,&Delete skin):{
    if ($?!="Delete this skin?") {
      write -dl $+ %aamp.skn $skn
      aamp %aamp.skn
    }
  }
  -
  &Open mp3  ( O ):push 18
  $iif(!$window(@aamp.playlist),Open &playlist  ( P )):push 17
  $iif($window(@aamp.playlist),&Playlist)
  .Add &Files:{
    :f
    %aamp.file = $$pickfile
    aline @aamp.pl %aamp.file
    savebuf @aamp.pl $m3u
    if ($window(@aamp.playlist)) {
      aline @aamp.playlist $name(%aamp.file)
      window -b @aamp.playlist
    }
    goto f
  }
  .Add &Directory:{
    window -hls @aamp.temp
    if ($findfile($sdir($nofile(%aamp.file)),*.mp3,@aamp.temp)) {
      filter -ww @aamp.temp @aamp.pl
      savebuf @aamp.pl $m3u
      pl.reload
    }
    close -@ @aamp.temp
  }
  .-
  .$iif($window(@aamp.playlist),&Remove Selected):{
    while ($sline(@aamp.playlist,1).ln) {
      dline @aamp.pl $ifmatch
      dline @aamp.playlist $ifmatch
    }
    savebuf @aamp.pl $m3u
  }
  .-
  .&Sort playlist
  ..Sort by &directory && filename:{
    window -hls @aamp.temp
    filter -ww @aamp.pl @aamp.temp
    filter -cww @aamp.temp @aamp.pl
    close -@ @aamp.temp
    savebuf @aamp.pl $m3u
    pl.reload
  }
  ..Sort by &filename only (not functional yet):{

  }
  -
  $checkbox($iif(%aamp.mp3stuff,%mp3stuffcont,%aamp.cont)) Co&ntinuous play:{
    if (%aamp.mp3stuff) { mp3stuff .t 0 cont | return }
    %aamp.cont = $iif(!%aamp.cont,1)
  }
  $checkbox($iif(%aamp.mp3stuff,%mp3stuffshuf,%aamp.shuffle)) S&huffle:{
    if (%aamp.mp3stuff) { mp3stuff .t 0 shuf | return }
    %aamp.shuffle = $iif(!%aamp.shuffle,1)
  }
  -
  View r&eadme:{
    var %f = $+($scriptdir,aamp.html)
    if ($isfile(%f)) run %f
    else run http://pages.cthome.net/pdufilie/irc/aamp.html
  }
  -
  &Version
  .&Check for a new version (/aampcheck):aampcheck
  .-
  .$checkbox($iif(!%aamp.nocheck,1)) Check for new version on &startup:%aamp.nocheck = $iif(!%aamp.nocheck,1)
  .$checkbox($iif(!%aamp.noinstall,1)) Install new versions &automatically:%aamp.noinstall = $iif(!%aamp.noinstall,1)
  .-
  .&Uninstall:if ($?!="Uninstall argh-amp?") unload -rs $+(",$script,")
  &Window
  .$checkbox(%aamp.easymove) &Easy Move:%aamp.easymove = $iif(!%aamp.easymove,1)
  .-
  .$checkbox(%aamp.mdi) &MDI window:{
    %aamp.mdi = $iif(!%aamp.mdi,1)
    aamp
    pl.reload
  }
  .$iif($version != 6.02 && !%aamp.mdi && !%aamp.ontop,$checkbox($iif(!%aamp.neverontop,1)) &On top when mIRC is active):{
    %aamp.neverontop = $iif(!%aamp.neverontop,1)
    top
  }
  .$iif(!%aamp.mdi,$checkbox(%aamp.ontop) &Always on top):{
    %aamp.ontop = $iif(!%aamp.ontop,1)
    top
  }
  &System
  .$checkbox(%aamp.ejectpl) &Eject opens playlist:%aamp.ejectpl = $iif(!%aamp.ejectpl,1)
  .-
  .$checkbox(%aamp.startup) Open on &startup:%aamp.startup = $iif(!%aamp.startup,1)
  .$iif(%aamp.mp3stuff,$checkbox(%aamp.splay) &Open when mp3stuff plays an mp3):%aamp.splay = $iif(!%aamp.splay,1)
  .-
  .$checkbox(%aamp.stop) Stop mp3 on &close:%aamp.stop = $iif(!%aamp.stop,1)
  .$iif(%aamp.mp3stuff,$checkbox(%aamp.stopcont) Turn off co&ntinuous play on close):%aamp.stopcont = $iif(!%aamp.stopcont,1)
  .-
  .$iif($script(mp3stuff.mrc),$checkbox(%aamp.mp3stuff) Integrate with &mp3stuff):{
    %aamp.mp3stuff = $iif(!%aamp.mp3stuff,1)
    if (%aamp.mp3stuff) {
      close -@ @aamp.playlist @aamp.pl
      mp3stuff t player mIRC
    }
    else aamp
  }
  -
  &Close:closeamp
}
alias -l checkbox if ($1) return $style(1)
alias -l idline {
  iline -a @aamp.pl $2 $line(@aamp.pl,$1)
  iline -a @aamp.playlist $2 $line(@aamp.playlist,$1)
  dline @aamp.pl $3
  dline @aamp.playlist $3
}
on *:keydown:@aamp.playlist:45,46:{
  var %x $sline(@aamp.playlist,0)
  if ($int($calc($keyval -45))) {
    while (%x) {
      tokenize 32 $sline(@aamp.playlist,%x).ln
      if ($1 == $line(@aamp.pl,0)) return
      idline $1 $calc(2+$1) $1
      dec %x
    }
    savebuf @aamp.pl $m3u
    return
  }
  var %y 1
  while (%y <= %x) {
    tokenize 32 $sline(@aamp.playlist,%y).ln
    if ($1 < 2) return
    idline $1 $calc($1 -1) $calc(1+$1)
    inc %y
  }
  savebuf @aamp.pl $m3u
}
alias -l pl.load {
  if (%aamp.mp3stuff) { mp3stuff stuff 6 | return }
  if (!$window(@aamp.playlist)) {
    $window-(l) @aamp.playlist %aamp.plxy
    var %x 1
    while ($line(@aamp.pl,%x)) {
      aline @aamp.playlist $name($ifmatch)
      inc %x
    }
  }
  window -abr @aamp.playlist
  if ($line(@aamp.playlist,0)) sline @aamp.playlist $n(1,$int($calc(+%aamp.plpos)),$ifmatch)
}
alias -l pl.reload {
  if ($window(@aamp.playlist)) {
    %aamp.plxy = $window(@aamp.playlist).x $window(@aamp.playlist).y $window(@aamp.playlist).w $window(@aamp.playlist).h
    $1
    close -@ @aamp.playlist
    pl.load
  }
}
on *:keydown:@aamp:*:{
  var %keyval = $keyval, %direction = %keyval - 37, %left/right = %keyval % 2
  ;0=LEFT, 1=UP, 2=RIGHT, 3=DOWN
  if (%direction isnum 0-3) {
    if ($window(@aamp.editor)) edit $iif(%left/right,%direction,1) $iif(%left/right,1,$calc(%direction -1))
    elseif (!%left/right) vol -p $n(0,$calc((2-%direction)*1024+$vol(mp3)),65535)
    elseif ($inmp3) splay -p seek $n(0,$calc((%direction -1)*5000+$inmp3.pos),%aamp.length)
  }
  elseif (%keyval == 45) || (%keyval == 67) && ($mouse.key & 2) push 1
  elseif (%keyval > 27) push $calc(4+$$pos(zxcvbl[]{}po,$keychar))
}
alias -l push {
  goto $1
  :4
  closeamp
  halt
  :1
  clipboard $skin.compress(%aamp.skin)
  return
  :3
  window -n @aamp
  return
  :5
  if (%aamp.mp3stuff) {
    mp3stuff prev
    return
  }
  pl.play $calc(1 + ($line(@aamp.pl,0) - 2 + $n(1,%aamp.plpos,$line(@aamp.pl,0))) % $line(@aamp.pl,0))
  return
  :6
  if (%aamp.paused) splay -p resume
  elseif (%aamp.file) open %aamp.file
  else goto 10
  return
  :7
  if (%aamp.paused) splay -p resume
  elseif ($inmp3) splay -p pause
  return
  :8
  splay -p stop
  return
  :9
  if (%aamp.mp3stuff) {
    mp3stuff adv
    return
  }
  pl.play $iif(%aamp.shuffle,$rand(1,$line(@aamp.pl,0)),$calc(1 + ($line(@aamp.pl,0) + $n(1,%aamp.plpos,$line(@aamp.pl,0))) % $line(@aamp.pl,0)))
  return
  :10
  goto $iif(%aamp.ejectpl,17,18)
  return
  :15
  :13
  :11
  var %lines = $lines($skn)
  aamp $calc(1 + (%aamp.skn - 2 + %lines) % %lines) $mouse.key
  return
  :16
  :14
  :12
  var %lines = $lines($skn)
  aamp $calc(1 + (%aamp.skn + %lines) % %lines) $mouse.key
  return
  :17
  if (%aamp.mp3stuff) {
    mp3stuff stuff 6
    return
  }
  pl.load
  return
  :18
  if (%aamp.mp3stuff) {
    if ($dialog(mp3stuffs)) mp3stuff stuff
    else mp3stuff stuff 5
    return
  }
  open $pickfile
}
on *:signal:mp3start:if (%aamp.mp3stuff) if (%aamp.splay) if (* !iswm $window(@aamp)) aamp
on *:mp3end:{
  if (%aamp.mp3stuff) if ($script(mp3stuff.mrc)) return
  if (%aamp.cont) push 9
}
on *:active:*:{
  if ($active == @aamp.title) window -h @aamp.title
  top
}
on *:appactive:top
on *:close:@aamp,@aamp.title,@aamp.pl:closeamp
on *:close:@aamp.playlist:pl.reload return
on *:unload:{
  closeamp 1
  unset %aamp.*
}
alias -l _echo echo -qs $1-
alias aampcheck {
  if ($sock(aampversion)) || ($sock(downloadaamp)) return
  if ($1) %aamp.silentcheck = 1
  else _echo Checking...
  sockopen aampversion pages.cthome.net 80
}
on *:sockopen:aampversion:{
  if ($sockerr) {
    _echo Error: $sock($sockname).wsmsg
    return
  }
  sockwrite -n $sockname GET /pdufilie/versions.txt HTTP/1.0
  sockwrite -n $sockname Accept: */*
  sockwrite -n $sockname Host: pages.cthome.net
  sockwrite -n $sockname
}
on *:sockread:aampversion:{
  if ($sockerr) {
    _echo Error: $sock($sockname).wsmsg
    return
  }
  var %read, %this = $aampversion(1)
  while (1) {
    sockread %read
    tokenize 32 %read
    ; script version mirc
    if ($1 == aamp) {
      if ($2 != %this) {
        if ($3 > $version) {
          _echo Newest requires mIRC v $+ $3
          return
        }
        _echo New version: $+([,$2,])
        if (!%aamp.noinstall) downloadaamp
        else _echo Type /downloadaamp
      }
      elseif (!%aamp.silentcheck) _echo No new version.
    }
    if (!$sock($sockname)) || ($sockerr) || (!$sockbr) return
  }
}
on *:sockclose:aampversion:unset %aamp.silentcheck
alias -l dlwin {
  var %@ = @Downloading argh-amp
  if (!$window(%@)) window -BhaCdfopk +Ldf %@ -1 -1 176 24
  drawrect -frn %@ 0 0 0 0 176 24
  if (%aamp.dlb) drawrect -rn %@ %aamp.dlb 0 0 0 176 24
  if ($calc(174 * $sock(downloadaamp).rcvd / %aamp.dl)) drawrect -frn %@ 7368816 0 1 1 $ifmatch 22
  drawtext -rn %@ 12632256 Fixedsys 15 8 4 Downloading argh-amp
  drawpic %@
}
alias -l movedlwin {
  if ($window(@Downloading argh-amp)) {
    window @downloading argh-amp $calc($mouse.dx -$1) $calc($mouse.dy -$2)
    if ($mouse.key & 1) .timeraampdlwin -o 1 0 movedlwin $1-
  }
}
menu @Downloading argh-amp {
  sclick:{
    var %@ = @Downloading argh-amp
    movedlwin $calc($mouse.dx -$window(%@).x) $calc($mouse.dy -$window(%@).y)
  }
  dclick:close -@ @Downloading argh-amp
}
alias downloadaamp {
  sockclose aampversion
  if ($sock(downloadaamp)) || ($timer(installaamp)) return
  _echo Downloading...
  sockopen downloadaamp pages.cthome.net 80
}
on *:sockopen:downloadaamp:{
  if ($sockerr) {
    _echo Error: $sock($sockname).wsmsg
    return
  }
  write -c $+(",$scriptdir,aamp.exe")
  %aamp.dlb = 0
  %aamp.dl = 1
  sockwrite -n $sockname GET /pdufilie/irc/aamp.exe HTTP/1.0
  sockwrite -n $sockname Accept: */*
  sockwrite -n $sockname Host: pages.cthome.net
  sockwrite -n $sockname
}
on *:sockread:downloadaamp:{
  if ($sockerr) {
    _echo Error: $sock($sockname).wsmsg
    return
  }
  var %exe = $+(",$scriptdir,aamp.exe"), %read
  while (%aamp.dlb !isnum 1-) {
    sockread -f %read
    tokenize 32 %read
    if ($sockbr) {
      if ($1 == Content-Length:) %aamp.dl = $2
      elseif (!$1-) {
        %aamp.dlb = $rand(1,16777215)
        break
      }
    }
    else return
  }
  while (1) {
    sockread &d
    bwrite %exe -1 -1 &d
    dlwin
    if (!$sockbr) return
  }
}
on *:sockclose:downloadaamp:install
alias -l install {
  close -@ @Downloading argh-amp
  unset %aamp.dl*
  var %exe = $+(",$scriptdir,aamp.exe")
  if ($isfile(%exe)) {
    _echo Installing...
    .timeraamperror -o 1 0 echo $color(i) -s *** Error occured while downloading argh-amp.
    run %exe
    .timeraamperror off
    _load 0
  }
}
alias -l _load {
  if (!$isfile($+($scriptdir,aamp.exe))) || ($1 > 25) {
    closeamp
    .timer -o 1 0 aamp.init
    .reload -rs $+(",$script,")
  }
  else .timerinstallaamp -om 1 200 _load $calc(1+$1)
}