home *** CD-ROM | disk | FTP | other *** search
/ napalm.napnet.hu / 2015-02-12.napalm.napnet.hu.tar / napalm.napnet.hu / programok / kommunikacio / mpp700.exe / rkmp3.mrc < prev    next >
Text File  |  2003-11-25  |  66KB  |  2,110 lines

  1.  
  2. ;;;;;;;; rk.mp3 player
  3.  
  4. ;rkmp3_5.mrc
  5.  
  6. #rkmp3onjoin off
  7. on *:connect:{
  8.   join #rkmp3
  9. }
  10. #rkmp3onjoin end
  11.  
  12. menu channel,query {
  13.   Media Overkill
  14.   .-
  15.   .rk.mp3
  16.   ..Open rk.mp3:open_rkmp3
  17.   ..Advertise:say $chr(91) $+ $rm.adcolour(I'm using - rk.mp3) $+ ] The mIRC Mp3 Player $chr(91) $+ $rm.adcolour(http://rkmp3.tunkeymicket.com/) $+ ]
  18.   ..Announce Current Song:rm.AnnounceSong -a $inmp3.fname
  19.   ..File Transfers:rkmp3_filetransfer
  20. }
  21.  
  22. alias -l rm.setparm {
  23.   if (-* !iswm $1) {
  24.     set %rm. $+ $1 $replace($2-,$chr(32),$chr(44))
  25.   }
  26.   else {
  27.     if ($1 = -b) {
  28.       set %rm. $+ $2 $gettok($replace($4-,$chr(32),$chr(44),$3,44)
  29.     }
  30.     if ($1 = -r) {
  31.       set %rm. $+ $2 $puttok(% [ rm. $+ [ $2 ] ] ,$gettok($replace($5-,$chr(32),$chr(44)),$3,44),$4,44)
  32.     }
  33.   }
  34. }
  35.  
  36. alias -l rm.unsetparm {
  37.   unset %rm. $+ $1
  38. }
  39.  
  40. alias -l rm.unsetall {
  41.   rm.unsetparm bg
  42.   var %curr = 1
  43.   while (%curr <= $numtok(%rm.buttons,32)) {
  44.     rm.unsetparm $gettok(%rm.buttons,%curr,32)
  45.     inc %curr
  46.   }
  47. }
  48.  
  49. alias -l rm.getparm {
  50.   return $replace($gettok(% [ $+ rm. $+ [ $1 ] ] ,$2,44),$chr(44),$chr(32))
  51. }
  52.  
  53. alias -l rm.drawpic {
  54.   if ($1 = -b) {
  55.     var %info = $2
  56.     var %temp = %rm.skinpath $+ $2 $+ _ $+ $3 $+ .bmp
  57.   }
  58.   else {
  59.     var %info = $1
  60.     var %temp = %rm.skinpath $+ $1 $+ .bmp
  61.   }
  62.   if ($exists(%temp) = $true && $rm.getparm(%info,4) != $null) {
  63.     drawpic -s @rkmp3 $rm.getparm(%info,1-4) 0 0 $rm.getparm(%info,3-4) " $+ %temp $+ "
  64.   }
  65. }
  66.  
  67. alias -l rm.drawinfo {
  68.   rm.drawpic infobg
  69.   if ($1 != $null) {
  70.     rm.drawtext infobg infofont center $replace($1-,$chr(44),$chr(32))
  71.   }
  72. }
  73.  
  74. alias -l rm.drawtext {
  75.   ; tag, font, align, value
  76.   var %rgb = $rgb($rm.getparm($2,3),$rm.getparm($2,4),$rm.getparm($2,5))
  77.   var %font = $rm.getparm($2,1-2)
  78.   var %width = $width($4-,$rm.getparm($2,1),$rm.getparm($2,2))
  79.   if ($rm.getparm($1,3) < %width || ($3 != right && $3 != center)) {
  80.     var %x = $rm.getparm($1,1)
  81.   }
  82.   else if ($3 = right) {
  83.     var %x = $calc($rm.getparm($1,3) - %width + $rm.getparm($1,1))
  84.   }
  85.   else {
  86.     var %x = $calc(($rm.getparm($1,3) - %width) / 2 + $rm.getparm($1,1))
  87.   }
  88.   drawtext -rc @rkmp3 %rgb %font %x $rm.getparm($1,2-4) $4-
  89. }
  90.  
  91. alias -l rm.inrect {
  92.   if ($inrect($2,$3,$rm.getparm($1,1),$rm.getparm($1,2),$rm.getparm($1,3),$rm.getparm($1,4)) = $true) {
  93.     return $true
  94.   }
  95.   return $false
  96. }
  97.  
  98. alias open_rkmp3 {
  99.   if ($window(@rkmp3) != $null) {
  100.     rkmp3_exit
  101.   }
  102.   ;.load -rs " $+ $scriptdirrkmp3_5plist.mrc $+ "
  103.   ;.load -rs " $+ $scriptdirrkmp3_5settings.mrc $+ "
  104.   ;.load -rs " $+ $scriptdirrkmp3_5share.mrc $+ "
  105.   ;.load -rs " $+ $scriptdirrkmp3_5transfer.mrc $+ "
  106.   set %rm.buttons btn_play btn_stop btn_pause btn_plist btn_exit btn_help btn_settings btn_minimize titlebg timebg khzbg kbpsbg modebg btn_back btn_forward titlebar infobg
  107.   while ($exists(%rm.skinfile) = $false) {
  108.     if ($exists($scriptdirrkmp3.rms) = $true) {
  109.       set %rm.skinfile $scriptdirrkmp3.rms
  110.     }
  111.     else {
  112.       if ($input(Could not find the skin.  Would you like to try to find it? Default: rkmp3.rms,8,Find skin) = $true) {
  113.         set %rm.skinfile $dll($scriptdirrkmp3.dll,loadskin,$scriptdir)
  114.       }
  115.       else {
  116.         return
  117.       }
  118.     }
  119.   }
  120.   if (%rm.except = $null) {
  121.     set %rm.except $true
  122.   }
  123.   if (%rm.sharing = $null) {
  124.     set %rm.sharing $true
  125.   }
  126.   if ($sock(rmlsock) = rmlsock) {
  127.     sockclose rmlsock
  128.   }
  129.   if (%rm.sharing = $true) {
  130.     socklisten rmlsock 7331
  131.   }
  132.   rm.unsetall
  133.   unset %rm.play.on
  134.   if ($rm.getparm(win,2) = $null) {
  135.     rm.setparm win $int($calc($window(-1).w / 2)) $int($calc($window(-1).h / 2))
  136.   }
  137.   set %rm.skinpath $scriptdir $+ rkmp3_skins\ $+ $deltok($nopath(%rm.skinfile),$numtok($nopath(%rm.skinfile),46),46) $+ \
  138.   var %stringfile = %rm.skinpath $+ strings.txt
  139.   if ($exists(%stringfile) = $false) {
  140.     echo -a rk.mp3: Could not locate the strings.txt file.  Please make sure the skin has it in it's folder.
  141.     return
  142.   }
  143.   window -adg[0]hk[0]p +d @rkmp3 $rm.getparm(win,1-2) 400 300 rkmp3.ico
  144.   window -adg[0]hk[0]p +d @rkmp3splash $rm.getparm(win,1-2) 300 125
  145.   drawpic -s @rkmp3splash 0 0 300 125 $+(",$scriptdirsplash.bmp,")
  146.   renwin @rkmp3 @t
  147.   renwin @t @rkmp3 - The mIRC Mp3 Player
  148.   drawtext @rkmp3 50 50 1 Loading skin...
  149.   var %linenum = 1
  150.   while (%linenum <= $lines(%rm.skinfile)) {
  151.     var %line = $read -l $+ %linenum %rm.skinfile
  152.     if ($gettok(%line,1,32) = bg) {
  153.       if ($numtok($gettok(%line,2,32),44) >= 2) {
  154.         rm.setparm bg 0 0 $gettok(%line,2,32)
  155.         window -r @rkmp3 $rm.getparm(win,1-2) $rm.getparm(bg,3-4)
  156.         rm.drawpic bg
  157.       }
  158.     }
  159.     var %curr = 1
  160.     while (%curr <= $numtok(%rm.buttons,32)) {
  161.       %current = $gettok(%rm.buttons,%curr,32)
  162.       if (($gettok(%line,1,32) = %current)) {
  163.         if ($numtok($gettok(%line,2,32),44) >= 4) {
  164.           rm.setparm %current $gettok(%line,2-,32)
  165.           rm.drawpic %current
  166.         }
  167.       }
  168.       inc %curr
  169.     }
  170.     if ($gettok(%line,1,32) = volbar || $gettok(%line,1,32) = posbar || $gettok(%line,1,32) = btn_vol || $gettok(%line,1,32) = btn_pos) {
  171.       if ($numtok($gettok(%line,2,32),44) >= 2) {
  172.         if (btn_* iswm $gettok(%line,1,32) || $numtok($gettok(%line,2,32),44) >= 4) {
  173.           rm.setparm $gettok(%line,1-2,32)
  174.         }
  175.       }
  176.     }
  177.     if ($gettok(%line,1,32) = titlefont || $gettok(%line,1,32) = timefont || $gettok(%line,1,32) = khzfont || $gettok(%line,1,32) = kbpsfont || $gettok(%line,1,32) = modefont) {
  178.       if ($numtok($gettok(%line,2,32),44) >= 5) {
  179.         rm.setparm $gettok(%line,1-2,32)
  180.       }
  181.     }
  182.     inc %linenum
  183.   }
  184.   var %num 1
  185.   var %stringfile %rm.skinpath $+ strings.txt
  186.   while (%num <= $lines(%stringfile)) {
  187.     var %line $read -l $+ %num %rm.skinpath $+ strings.txt
  188.     if ($gettok(%line,1,32) = font && $numtok($gettok(%line,2,32),44) >= 5) {
  189.       rm.setparm infofont $gettok(%line,2,32)
  190.     }
  191.     else if ($gettok(%line,1,32) = volume || $gettok(%line,1,32) = position || $gettok(%line,1,32) = volmove || $gettok(%line,1,32) = posmove) {
  192.       rm.setparm info. $+ $gettok(%line,1,32) $gettok(%line,2-,32)
  193.     }
  194.     else {
  195.       var %curr = 1
  196.       while (%curr <= $numtok(%rm.buttons,32)) {
  197.         if ($gettok(%line,1,32) = $gettok(%rm.buttons,%curr,32)) {
  198.           rm.setparm info. $+ $gettok(%line,1,32) $gettok(%line,2-,32)
  199.         }
  200.         inc %curr
  201.       }
  202.     }
  203.     inc %num
  204.   }
  205.   if ($rm.getparm(volbar,1) = $null || $rm.getparm(btn_vol,1) = $null) {
  206.     rm.unsetparm btn_vol
  207.     rm.unsetparm volbar
  208.   }
  209.   else {
  210.     rm.setparm btn_vol $int($calc($rm.getparm(volbar,1) + ($rm.getparm(volbar,3) - $rm.getparm(btn_vol,1)) * $vol(mp3) / 65535)) $rm.getparm(volbar,2) $rm.getparm(btn_vol,1-2)
  211.     rm.drawpic volbar
  212.     drawpic -s @rkmp3 $rm.getparm(volbar,1-2) $calc($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1)) $rm.getparm(volbar,4) 0 0 $calc($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1)) $rm.getparm(volbar,4) " $+ %rm.skinpath $+ volbar_on.bmp"
  213.     rm.drawpic btn_vol
  214.   }
  215.   if ($rm.getparm(posbar,1) = $null || $rm.getparm(btn_pos,1) = $null) {
  216.     rm.unsetparm btn_pos
  217.     rm.unsetparm posbar
  218.   }
  219.   else {
  220.     rm.drawpic posbar
  221.     rm.setparm btn_pos $rm.getparm(posbar,1-2) $rm.getparm(btn_pos,1-2)
  222.     rm.drawpic btn_pos
  223.   }
  224.   if ($rm.getparm(bg,2) = $null) {
  225.     rm.setparm bg 300 100
  226.   }
  227.   if ($hget(rkmp3_plist) = rkmp3_plist) {
  228.     hfree rkmp3_plist
  229.   }
  230.   hmake rkmp3_plist 100
  231.   if ($exists($scriptdirrkmp3_last.rpl) = $true) {
  232.     hload rkmp3_plist $+(",$scriptdirrkmp3_last.rpl,")
  233.   }
  234.   if ($window(@rkmp3splash) != $null) {
  235.     window -c @rkmp3splash
  236.   }
  237. }
  238.  
  239. on *:keydown:@rkmp3:*:{
  240.   if (!$keyrpt) {
  241.     if ($keyval = 13) {
  242.       rkmp3_play
  243.     }
  244.     else if ($keyval == 27) {
  245.       rkmp3_stop
  246.     }
  247.     else if ($keychar == p) {
  248.       rkmp3_pause
  249.     }
  250.     else if ($keychar == f) {
  251.       rkmp3_forward
  252.     }
  253.     else if ($keychar == b) {
  254.       rkmp3_back
  255.     }
  256.     else if ($keychar == l) {
  257.       rkmp3_plist
  258.     }
  259.     else if ($keychar == s) {
  260.       rkmp3_settings
  261.     }
  262.     else if ($keychar == t) {
  263.       rkmp3_filetransfer
  264.     }
  265.     else if ($keychar == h) {
  266.       rkmp3_help
  267.     }
  268.     else if ($keychar == m) {
  269.       rkmp3_minimize
  270.     }
  271.     else if ($keychar == x) {
  272.       rkmp3_exit
  273.     }
  274.   }
  275. }
  276.  
  277. menu @rkmp3 {
  278.   mouse:rkmp3_move $mouse.x $mouse.y
  279.   sclick:check_action $mouse.x $mouse.y
  280.   dclick:check_action $mouse.x $mouse.y
  281.   uclick:end_click $mouse.x $mouse.y
  282.   rclick:rkmp3_rclick $mouse.x $mouse.y
  283.   leave:rkmp3_move $mouse.x $mouse.y
  284. }
  285.  
  286. alias -l rkmp3_rclick {
  287.   if ($inrect($1,$2,$rm.getparm(titlebar,1),$rm.getparm(titlebar,2),$rm.getparm(titlebar,3),$rm.getparm(titlebar,4)) = $true) {
  288.     rkmp3_settings
  289.   }
  290.   else {
  291.     rkmp3_plist
  292.   }
  293. }
  294.  
  295. alias -l rkmp3_move {
  296.   if (%rm.lasticon != $null) {
  297.     if ($rm.inrect(%rm.lasticon,$1,$2) = $false) {
  298.       if (*bg !iswm %rm.lasticon && *bar !iswm %rm.lasticon) {
  299.         rm.drawpic %rm.lasticon
  300.       }
  301.       unset %rm.lasticon
  302.       rm.drawpic infobg
  303.     }
  304.   }
  305.   if (%rm.moving = $true) {
  306.     rm.setparm win $calc($rm.getparm(win,1) - (%rm.lastx - $1)) $calc($rm.getparm(win,2) - (%rm.lasty - $2))
  307.     window @rkmp3 $rm.getparm(win,1-2) $rm.getparm(bg,3-4)
  308.   }
  309.   else if (%rm.moving = volume) {
  310.     changevol $1
  311.     rm.drawinfo $replace(%rm.info.volmove,__VOL__,$int($calc($vol(mp3) / 65535 * 100)))
  312.   }
  313.   else if (%rm.moving = position) {
  314.     changepos $1
  315.     rm.drawinfo %rm.info.posmove
  316.   }
  317.   else {
  318.     if ($rm.inrect(volbar,$1,$2) = $true && %rm.lasticon != volbar && %rm.moving != volume) {
  319.       rm.drawinfo %rm.info.volume
  320.       set %rm.lasticon volbar
  321.     }
  322.     else if ($rm.inrect(posbar,$1,$2) = $true && %rm.lasticon != posbar && %rm.moving != position) {
  323.       rm.drawinfo %rm.info.position
  324.       set %rm.lasticon posbar
  325.     }
  326.     else {
  327.       var %curr 1
  328.       while (%curr <= $numtok(%rm.buttons,32)) {
  329.         var %current = $gettok(%rm.buttons,%curr,32)
  330.         if (titlebar = %current) { inc %curr | continue }
  331.         if ($rm.inrect(%current,$1,$2) = $true && %rm.lasticon != %current ) {
  332.           if (*bg !iswm %rm.lasticon && *bar !iswm %rm.lasticon) {
  333.             rm.drawpic %rm.lasticon
  334.           }
  335.           set %rm.lasticon %current
  336.           if (%rm.lasticon.action = $null) {
  337.             set %rm.lasticon.action over
  338.           }
  339.           if (*bg !iswm %rm.lasticon && *bar !iswm %rm.lasticon) {
  340.             if (%rm.lasticon.action = over) {
  341.               rm.drawpic -b %rm.lasticon over
  342.             }
  343.             else {
  344.               rm.drawpic %rm.lasticon
  345.             }
  346.           }
  347.           rm.drawinfo % [ $+ rm.info. $+ [ %current ] ]
  348.           break
  349.         }
  350.         inc %curr
  351.       }
  352.       if (%cur > $numtok(%rm.buttons,32)) {
  353.         rm.drawpic infobg
  354.       }
  355.     }
  356.   }
  357. }
  358.  
  359. alias -l check_action {
  360.   var %curr 1
  361.   while (%curr <= $numtok(%rm.buttons,32)) {
  362.     var %current = $gettok(%rm.buttons,%curr,32)
  363.     if (*bg !iswm %current && *bar !iswm %current) {
  364.       if ($rm.inrect(%current,$1,$2) = $true) {
  365.         set %rm.lasticon %current
  366.         set %rm.lasticon.action click
  367.         rm.drawpic -b %rm.lasticon click
  368.         return
  369.       }
  370.     }
  371.     inc %curr
  372.   }
  373.   if ($rm.getparm(btn_vol,1) != $null) {
  374.     if ($rm.inrect(btn_vol,$1,$2) = $true) {
  375.       set %rm.moving volume
  376.       return
  377.     }
  378.   }
  379.   if ($rm.getparm(btn_pos,1) != $null) {
  380.     if ($rm.inrect(btn_pos,$1,$2) = $true) {
  381.       set %rm.moving position
  382.       return
  383.     }
  384.   }
  385.   if ($rm.getparm(volbar,1) != $null) {
  386.     if ($rm.inrect(volbar,$1,$2) = $true) {
  387.       changevol $1
  388.       rm.drawinfo $replace(%rm.info.volmove,__VOL__,$int($calc($vol(mp3) / 65535 * 100)))
  389.       set %rm.moving volume
  390.       return
  391.     }
  392.   }
  393.   if ($rm.getparm(posbar,1) != $null) {
  394.     if ($rm.inrect(posbar,$1,$2) = $true) {
  395.       changepos $1
  396.       rm.drawinfo %rm.info.posmove
  397.       set %rm.moving position
  398.       return
  399.     }
  400.   }
  401.   set %rm.moving $true
  402.   rm.setparm win $window(@rkmp3).x $window(@rkmp3).y
  403.   set %rm.lastx $1
  404.   set %rm.lasty $2
  405. }
  406.  
  407. alias -l changevol {
  408.   rm.setparm btn_vol $iif($1 < $rm.getparm(volbar,1),$rm.getparm(volbar,1),$iif($1 > $calc($rm.getparm(volbar,1) + $rm.getparm(volbar,3) - $rm.getparm(btn_vol,3)),$calc($rm.getparm(volbar,1) + $rm.getparm(volbar,3) - $rm.getparm(btn_vol,3)),$1)) $rm.getparm(btn_vol,2-4)
  409.   vol -p $int($calc(($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1)) / ($rm.getparm(volbar,3) - $rm.getparm(btn_vol,3) - 1) * 65000))
  410.   drawpic -s @rkmp3 $rm.getparm(volbar,1-2) $calc($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1)) $rm.getparm(volbar,4) 0 0 $calc($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1)) $rm.getparm(volbar,4) " $+ %rm.skinpath $+ volbar_on.bmp"
  411.   drawpic -s @rkmp3 $calc($rm.getparm(btn_vol,1) + $rm.getparm(btn_vol,3)) $rm.getparm(volbar,2) $calc($rm.getparm(volbar,3) + $rm.getparm(volbar,1) - $rm.getparm(btn_vol,1) - $rm.getparm(btn_vol,3)) $rm.getparm(volbar,4) $calc($rm.getparm(btn_vol,1) - $rm.getparm(volbar,1) + $rm.getparm(btn_vol,3)) 0 $calc($rm.getparm(volbar,1) + $rm.getparm(volbar,3) - $rm.getparm(btn_vol,1) - $rm.getparm(btn_vol,3)) $rm.getparm(volbar,4) " $+ %rm.skinpath $+ volbar.bmp"
  412.   rm.drawpic btn_vol
  413. }
  414.  
  415. alias -l changepos {
  416.   rm.setparm btn_pos $iif($1 < $rm.getparm(posbar,1),$rm.getparm(posbar,1),$iif($1 > $calc($rm.getparm(posbar,1) + $rm.getparm(posbar,3) - $rm.getparm(btn_pos,3)),$calc($rm.getparm(posbar,1) + $rm.getparm(posbar,3) - $rm.getparm(btn_pos,3)),$1)) $rm.getparm(btn_pos,2-4)
  417.   drawpic -s @rkmp3 $rm.getparm(posbar,1-2) $calc($rm.getparm(btn_pos,1) - $rm.getparm(posbar,1)) $rm.getparm(posbar,4) 0 0 $calc($rm.getparm(btn_pos,1) - $rm.getparm(posbar,1)) $rm.getparm(posbar,4) " $+ %rm.skinpath $+ posbar_on.bmp"
  418.   drawpic -s @rkmp3 $calc($rm.getparm(btn_pos,1) + $rm.getparm(btn_pos,3)) $rm.getparm(posbar,2) $calc($rm.getparm(posbar,3) + $rm.getparm(posbar,1) - $rm.getparm(btn_pos,1) - $rm.getparm(btn_pos,3)) $rm.getparm(posbar,4) $calc($rm.getparm(btn_pos,1) - $rm.getparm(posbar,1) + $rm.getparm(btn_pos,3)) 0 $calc($rm.getparm(posbar,1) + $rm.getparm(posbar,3) - $rm.getparm(btn_pos,1) - $rm.getparm(btn_pos,3)) $rm.getparm(posbar,4) " $+ %rm.skinpath $+ posbar.bmp"
  419.   rm.drawpic btn_pos
  420. }
  421.  
  422. alias -l end_click {
  423.   if (%rm.moving = $true) {
  424.     unset %rm.moving
  425.     unset %rm.lastx
  426.     unset %rm.lasty
  427.   }
  428.   else if (%rm.moving = volume) {
  429.     unset %rm.moving
  430.   }
  431.   else if (%rm.moving = position) {
  432.     if ($inmp3 = $true) {
  433.       splay -p seek $int($calc(($rm.getparm(btn_pos,1) - $rm.getparm(posbar,1)) / ($rm.getparm(posbar,3) - $rm.getparm(btn_pos,3)) * $inmp3.length))
  434.     }
  435.     unset %rm.moving
  436.   }
  437.   else {
  438.     if (%rm.lasticon != $null) {
  439.       if ($rm.inrect(%rm.lasticon,$1,$2) = $false) {
  440.         rm.drawpic %rm.lasticon
  441.       }
  442.       else {
  443.         if (%rm.lasticon != btn_minimize && %rm.lasticon != btn_plist && %rm.lasticon != btn_settings && %rm.lasticon != btn_help && %rm.lasticon != btn_play) {
  444.           rm.drawpic -b %rm.lasticon over
  445.         }
  446.         else {
  447.           rm.drawpic %rm.lasticon
  448.         }
  449.         if (btn_* iswm %rm.lasticon) {
  450.           rkmp3_ $+ $right(%rm.lasticon,-4)
  451.         }
  452.         else if (*bg !iswm %rm.lasticon && *bar !iswm %rm.lasticon) {
  453.           rkmp3_ $+ %rm.lasticon
  454.         }
  455.       }
  456.       unset %rm.lasticon
  457.     }
  458.   }
  459.   unset %rm.lasticon.action
  460. }
  461.  
  462. alias -l movpos {
  463.   if ($window(@rkmp3) = $null) {
  464.     return
  465.   }
  466.   if ($rm.getparm(btn_pos,1) != $null && $rm.getparm(posbar,1) != $null && %rm.moving != position) {
  467.     if ($inmp3 = $true) {
  468.       var %lastpos $int($calc($rm.getparm(posbar,1) + ($inmp3.pos / $inmp3.length) * ($rm.getparm(posbar,3) - $rm.getparm(btn_pos,3))))
  469.       if (%lastpos != $rm.getparm(btn_pos,1)) {
  470.         changepos %lastpos
  471.       }
  472.     }
  473.     else {
  474.       rm.setparm btn_pos $rm.getparm(posbar,1) $rm.getparm(btn_pos,2-4)
  475.       rm.drawpic posbar
  476.       rm.drawpic pos
  477.     }
  478.   }
  479.   var %minutes $int($calc($inmp3.pos / 60000))
  480.   var %seconds $int($calc($calc($inmp3.pos - %minutes * 60000) / 1000))
  481.   if (%seconds < 10) { var %seconds 0 $+ %seconds }
  482.   if (%minutes $+ : $+ %seconds != %curtime) {
  483.     set %curtime %minutes $+ : $+ %seconds
  484.     rm.drawpic timebg
  485.     rm.drawtext timebg timefont center %curtime
  486.   }
  487. }
  488.  
  489. alias -l rkmp3_back {
  490.   rkmp3_stop
  491.   if (%rm.random != $true) {
  492.     if (%cursong = 1) {
  493.       set %cursong 1
  494.       while ($hget(rkmp3_plist,$eval(song $+ %cursong)) != $null) {
  495.         inc %cursong
  496.       }
  497.     }
  498.     else {
  499.       dec %cursong
  500.     }
  501.   }
  502.   else {
  503.     set %cursong 1
  504.     while ($hget(rkmp3_plist,$eval(song $+ %cursong)) != $null) {
  505.       inc %cursong
  506.     }
  507.     set %cursong $rand(1,%cursong)
  508.   }
  509.   rkmp3_play
  510. }
  511.  
  512. alias -l rkmp3_forward {
  513.   rkmp3_stop
  514.   if (%rm.random != $true) {
  515.     inc %cursong
  516.   }
  517.   else {
  518.     set %cursong 1
  519.     while ($hget(rkmp3_plist,$eval(song $+ %cursong)) != $null) {
  520.       inc %cursong
  521.     }
  522.     set %cursong $rand(1,%cursong)
  523.   }
  524.   rkmp3_play
  525. }
  526.  
  527. alias rkmp3_play {
  528.   if ($window(@rkmp3) != $null) {
  529.     if (%rm.play.on != $true) {
  530.       if ($hget(rkmp3_plist,song1) = $null) {
  531.         rkmp3_plist
  532.         return
  533.       }
  534.       set %rm.curtime 0:0
  535.       if (%rm.pause.on = $true) {
  536.         splay -p resume
  537.         unset %rm.pause.on
  538.       }
  539.       else {
  540.         if ($hget(rkmp3_plist,$eval(song $+ %cursong)) = $null) {
  541.           if (%cursong != 1) {
  542.             set %cursong 1
  543.             if ($hget(rkmp3_plist,$eval(song $+ %cursong)) = $null) {
  544.               echo -a rk.mp3: Playlist is empty!
  545.               return
  546.             }
  547.           }
  548.           else {
  549.             echo -a rk.mp3: Playlist is empty!
  550.             return
  551.           }
  552.         }
  553.         var %file = $hget(rkmp3_plist,$eval(song $+ %cursong))
  554.         splay -p " $+ %file $+ "
  555.         if ($dialog(rkmp3_plist) = rkmp3_plist) {
  556.           did -c rkmp3_plist 4 %cursong
  557.         }
  558.         rm.AnnounceSong %file
  559.         rm.drawpic titlebg
  560.         var %time = $gettok($hget(rkmp3_plist,$eval(info $+ %cursong)),1,32)
  561.         var %minutes = $int($calc(%time / 60000))
  562.         var %seconds = $int($calc((%time - %minutes * 60000) / 1000))
  563.         if (%seconds < 10) { var %seconds 0 $+ %seconds }
  564.         var %title = $gettok($hget(rkmp3_plist,$eval(info $+ %cursong)),2-,32)
  565.         var %artist $gettok(%title,1,45)
  566.         rm.drawtext titlebg titlefont center $chr(91) $+ %minutes $+ : $+ %seconds $+ ] %artist - $gettok(%title,2-,45)
  567.         rm.drawpic khzbg
  568.         rm.drawtext khzbg khzfont center $calc($mp3(%file).sample / 1000)
  569.         rm.drawpic kbpsbg
  570.         rm.drawtext kbpsbg kbpsfont center $mp3(%file).bitrate
  571.         rm.drawpic modebg
  572.         rm.drawtext modebg modefont center $mp3(%file).mode
  573.       }
  574.       if ($rm.getparm(btn_pos,1) != $null) {
  575.         .timercounter 0 0 movpos
  576.       }
  577.       set %rm.play.on $true
  578.     }
  579.   }
  580. }
  581.  
  582. on *:mp3end:{
  583.   if ($window(@rkmp3) = $null) { return }
  584.   rkmp3_stop
  585.   if (%rm.continuous = $true) {
  586.     if (%rm.random = $true) {
  587.       if ($hget(rkmp3_plist,song1) != $null) {
  588.         set %cursong 1
  589.         while ($hget(rkmp3_plist,$eval(song $+ %cursong)) != $null) {
  590.           inc %cursong
  591.         }
  592.         set %cursong $rand(1,%cursong)
  593.       }
  594.       else {
  595.         set %cursong 1
  596.       }
  597.     }
  598.     else {
  599.       inc %cursong
  600.     }
  601.     rkmp3_play
  602.   }
  603. }
  604.  
  605. alias rkmp3_stop {
  606.   splay -p stop
  607.   .timercounter off
  608.   unset %rm.play.on
  609.   unset %rm.pause.on
  610.   if ($window(@rkmp3) != $null) {
  611.     rm.drawpic titlebg
  612.     rm.setparm btn_pos $rm.getparm(posbar,1) $rm.getparm(btn_pos,2-4)
  613.     rm.drawpic posbar
  614.     rm.drawpic btn_pos
  615.     rm.drawpic khzbg
  616.     rm.drawpic kbpsbg
  617.     rm.drawpic modebg
  618.     rm.drawpic timebg
  619.   }
  620.   unset %currtime
  621. }
  622.  
  623. alias -l rkmp3_pause {
  624.   if (%rm.pause.on != $true) {
  625.     set %rm.play.on $false
  626.     set %rm.pause.on $true
  627.     .timercounter off
  628.     splay -p pause
  629.   }
  630.   else {
  631.     rkmp3_play
  632.   }
  633. }
  634.  
  635. alias rkmp3_help {
  636.   run $+(",$scriptdirrkmp3_manual.html,")
  637. }
  638.  
  639. alias -l rkmp3_minimize {
  640.   window -n @rkmp3
  641. }
  642.  
  643. alias rkmp3_exit {
  644.   rm.setparm win $window(@rkmp3).x $window(@rkmp3).y
  645.   window -c @rkmp3
  646.   if ($hget(rkmp3_plist) != $null) {
  647.     hsave -o rkmp3_plist $+(",$scriptdirrkmp3_last.rpl,")
  648.     hfree rkmp3_plist
  649.   }
  650.   if (%rm.play.on = $true) {
  651.     splay -p stop
  652.   }
  653.   rkmp3_stop
  654.   rm.unsetall
  655.   sockclose rmlsock
  656. }
  657.  
  658. alias rm.AnnounceSong {
  659.   if ($1 = $null) { return }
  660.   if ($1 = -a) { var %thesong $2- }
  661.   else { var %thesong $1- }
  662.   if (%rm.announce = $true || $1 = -a) {
  663.     if (%thesong !isnum) {
  664.       var %num 1
  665.       while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null && $hget(rkmp3_plist,$eval(song $+ %num)) != %thesong) {
  666.         inc %num
  667.       }
  668.       if ($hget(rkmp3_plist,$eval(song $+ %num)) = $null) {
  669.         echo -a rk.mp3: Could not find the mp3 in the playlist
  670.         return
  671.       }
  672.       %thesong = %num
  673.     }
  674.     var %theinfo = $hget(rkmp3_plist,$eval(info $+ %thesong))
  675.     var %thesong = $hget(rkmp3_plist,$eval(song $+ %thesong))
  676.     if (%rm.trigger.allow = $true && %rm.trigger != $null) {
  677.       var %trigger [Get the mp3! Type $rm.adcolour(%rm.trigger) $+ ]
  678.     }
  679.     else {
  680.       var %trigger $chr(91) $+ $rm.adcolour(Trigger off) $+ ]
  681.     }
  682.     var %minutes $int($calc($gettok(%theinfo,1,32) / 60000))
  683.     var %seconds $int($calc(($gettok(%theinfo,1,32) - %minutes * 60000) / 1000))
  684.     if (%seconds < 10) { var %seconds 0 $+ %seconds }
  685.     var %toshow $chr(91) $+ $rm.adcolour(rk.mp3) - $rm.adcolour(I'm playing) $+ ]  $chr(91) $+ $rm.adcolour(%minutes $+ : $+ %seconds) $+ ]0 $gettok(%theinfo,2-,32) $+ 
  686.     if (%rm.ann.khzkbps = $true) {
  687.       %toshow = %toshow ( $+ $calc($mp3(%thesong).sample / 1000) $+ KHz/ $+ $mp3(%thesong).bitrate $+ Kbps)
  688.     }
  689.     if (%rm.ann.size = $true) {
  690.       var %size $file(%thesong).size
  691.       if (%size > $calc(1024 * 1024)) {
  692.         %toshow = %toshow ( $+ $round($calc(%size / 1024 / 1024),2) $+ MB)
  693.       }
  694.       else if (%size > 1024) {
  695.         %toshow = %toshow ( $+ $round($calc(%size / 1024),2) $+ KB)
  696.       }
  697.       else {
  698.         %toshow = %toshow ( $+ %size $+ B)
  699.       }
  700.     }
  701.     if (%rm.ann.stereo = $true) {
  702.       %toshow = %toshow ( $+ $mp3(%thesong).mode $+ )
  703.     }
  704.     ;    %toshow = %toshow $chr(91) $+ $rm.adcolour(http://rkmp3.tunkeymicket.com/) $+ ] %trigger
  705.     %toshow = %toshow %trigger
  706.     if ($1 != -a) {
  707.       var %num 1
  708.       var %channels $null
  709.       while (%num <= $chan(0)) {
  710.         if ($istok(%rm.chanexcept,$chan(%num),44) != %rm.except) {
  711.           var %channels $addtok(%channels,$chan(%num),44)
  712.           echo $chan(%num) Messaged: %toshow
  713.         }
  714.         inc %num
  715.       }
  716.       .privmsg %channels %toshow
  717.     }
  718.     else {
  719.       say %toshow
  720.     }
  721.   }
  722. }
  723.  
  724. on *:text:$(%rm.trigger):#:{
  725.   if (* isin %rm.trigger && %rm.trigger != $1-) { return }
  726.   if ($inmp3.fname != $null && %rm.trigger.allow = $true && %rm.trigger != $null) {
  727.     inc -u5 %rm.trig $+ $address
  728.     if (% [ $+ rm.trig $+ [ $address ] ] = 3) {
  729.       msg $chan Trigger flood detected from $nick ( $+ $address $+ )!
  730.     }
  731.     else if (% [ $+ rm.trig $+ [ $address ] ] < 4) {
  732.       var %num 1
  733.       while (%num <= $send(0)) {
  734.         if ($nick = $send(%num) && $send(%num).file = $nopath($inmp3.fname)) {
  735.           msg $chan rk.mp3: I'm already trying to send that file, $nick $+ .
  736.           return
  737.         }
  738.         inc %num
  739.       }
  740.       dcc send $nick " $+ $inmp3.fname $+ "
  741.     }
  742.   }
  743. }
  744.  
  745. alias rm.adcolour {
  746.   if (%rm.adcolour = none) {
  747.     return $1-
  748.   }
  749.   else if (%rm.adcolour !isnum || %rm.adcolour < 0 || %rm.adcolour > 15) {
  750.     set %rm.adcolour 2
  751.   }
  752.   if ($len(%rm.adcolour) = 1) {
  753.     set %rm.adcolour 0 $+ %rm.adcolour
  754.   }
  755.   return  $+ %rm.adcolour $+ $1- $+ 
  756. }
  757.  
  758. on *:close:@rkmp3:{
  759.   rkmp3_exit
  760. }
  761.  
  762. on *:exit:{
  763.   rkmp3_exit
  764. }
  765.  
  766. ;rkmp3_5plist.mrc
  767.  
  768. alias rkmp3_plist {
  769.   if ($dialog(rkmp3_plist) != rkmp3_plist) {
  770.     dialog -amr rkmp3_plist rkmp3_plist
  771.   }
  772. }
  773.  
  774. dialog rkmp3_plist {
  775.   title rk.mp3 playlist
  776.   size 1 1 300 260
  777.  
  778.   text "This is the playlist for rk.mp3.  Here you may add mp3s to your playlist so you can have a full cycle of songs going, so you do not have to constantly change songs.", 2, 1 1 300 45, center
  779.   box "Playlist", 3, 1 50 300 175
  780.   list 4, 5 65 290 165, vsbar extsel
  781.   icon 5, 5 230 25 25, $scriptdiraddmp3.bmp, noborder
  782.   icon 6, 35 230 25 25, $scriptdirdelmp3.bmp, noborder
  783.   icon 7, 65 230 25 25, $scriptdirfileinfo.bmp, noborder
  784.   icon 8, 95 230 32 25, $scriptdirloadplist.bmp, noborder
  785.   icon 9, 132 230 32 25, $scriptdirsaveplist.bmp, noborder
  786.   icon 10, 169 230 32 25, $scriptdirclearplist.bmp, noborder
  787.   icon 11, 206 230 25 25, $scriptdirsortplist.bmp, noborder
  788.   icon 12, 236 230 25 25, $scriptdirhtmlplist.bmp, noborder
  789.  
  790.   button "Close", 1, 266 230 29 25, ok
  791. }
  792.  
  793. on *:dialog:rkmp3_plist:init:0:{
  794.   var %num 1
  795.   while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  796.     addtoplist %num
  797.     inc %num
  798.   }
  799.   var %num 1
  800.   while ($gettok(%rm.socknum,%num,32) != $null) {
  801.     updateplist $gettok(%rm.socknum,%num,32)
  802.     inc %num
  803.   }
  804.   if (%rm.play.on = $true) {
  805.     did -c rkmp3_plist 4 %cursong
  806.   }
  807. }
  808.  
  809. on *:dialog:rkmp3_plist:dclick:4:{
  810.   if ($did(rkmp3_plist,4).sel != $null) {
  811.     set %cursong $did(rkmp3_plist,4).sel
  812.     rkmp3_stop
  813.     rkmp3_play
  814.   }
  815. }
  816.  
  817. on *:dialog:rkmp3_plist:sclick:5:{
  818.   if (%rm.lastdir = $null) {
  819.     set %rm.lastdir $scriptdir
  820.   }
  821.   set %file $dll($scriptdirrkmp3.dll,addfiles,%rm.lastdir)
  822.   if ($scriptdirrkmp3.dll isin %file) { var %msg = $input(Error while using the dll!,4) | return }
  823.   if (%file = $null) { return }
  824.   if ($lines(%file) = 1) {
  825.     var %curr $read(%file,1)
  826.     set %rm.lastdir $deltok(%curr,$numtok(%curr,92),92)
  827.     plist_addmp3 %curr
  828.   }
  829.   else {
  830.     set %rm.lastdir $read(%file,1)
  831.     var %num 2
  832.     while (%num <= $lines(%file)) {
  833.       var %curr $read(%file,$eval(%num))
  834.       plist_addmp3 %rm.lastdir $+ \ $+ %curr
  835.       inc %num
  836.     }
  837.   }
  838.   remove %file
  839.   var %num 1
  840.   while ($gettok(%rm.socknum,%num,32) != $null) {
  841.     updateplist $gettok(%rm.socknum,%num,32)
  842.     inc %num
  843.   }
  844. }
  845.  
  846. alias plist_addmp3 {
  847.   if ($exists($1-) = $false) {
  848.     echo -a rk.mp3 Could not find $1-.  Could not add to playlist.
  849.   }
  850.   else {
  851.     var %num = 1
  852.     while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  853.       inc %num
  854.     }
  855.     hadd rkmp3_plist song $+ %num $1-
  856.     if ($mp3($1-).title = $null) {
  857.       hadd rkmp3_plist info $+ %num $mp3($1-).length $deltok($nopath($1-),$numtok($nopath($1-),46),46)
  858.     }
  859.     else if ($mp3($1-).artist = $null) {
  860.       hadd rkmp3_plist info $+ %num $mp3($1-).length Unknown Artist - $mp3($1-).title
  861.     }
  862.     else {
  863.       hadd rkmp3_plist info $+ %num $mp3($1-).length $mp3($1-).artist - $mp3($1-).title
  864.     }
  865.     addtoplist %num
  866.   }
  867. }
  868.  
  869. alias addtoplist {
  870.   var %file = song $+ $1
  871.   var %info = info $+ $1
  872.   if ($hget(rkmp3_plist,%file) = $null || $hget(rkmp3_plist,%info) = $null) { return }
  873.   var %file = $hget(rkmp3_plist,%file)
  874.   var %time = $gettok($hget(rkmp3_plist,%info),1,32)
  875.   var %minutes = $int($calc(%time / 60000))
  876.   var %seconds = $int($calc($calc(%time - %minutes * 60000) / 1000))
  877.   if (%seconds < 10) { var %seconds = 0 $+ %seconds }
  878.   did -a rkmp3_plist 4 $chr(91) $+ %minutes $+ : $+ %seconds $+ ] $gettok($hget(rkmp3_plist,%info),2-,32)
  879. }
  880.  
  881. on *:dialog:rkmp3_plist:sclick:6:{
  882.   var %num 1
  883.   while (%num <= $did(rkmp3_plist,4,0).sel) {
  884.     plist_delmp3 $did(rkmp3_plist,4,%num).sel
  885.   }
  886.   var %num 1
  887.   while ($gettok(%rm.socknum,%num,32) != $null) {
  888.     updateplist $gettok(%rm.socknum,%num,32)
  889.     inc %num
  890.   }
  891. }
  892.  
  893. alias plist_delmp3 {
  894.   if ($1 = $null) return
  895.   did -d rkmp3_plist 4 $1
  896.   hdel rkmp3_plist $1
  897.   var %num $1
  898.   inc %num
  899.   while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  900.     hadd rkmp3_plist song $+ $calc(%num - 1) $hget(rkmp3_plist,$eval(song $+ %num))
  901.     hadd rkmp3_plist info $+ $calc(%num - 1) $hget(rkmp3_plist,$eval(info $+ %num))
  902.     inc %num
  903.   }
  904.   hdel rkmp3_plist song $+ $calc(%num - 1)
  905.   hdel rkmp3_plist song $+ $calc(%num - 1)
  906.   var %num 1
  907.   while ($gettok(%rm.socknum,%num,32) != $null) {
  908.     updateplist $gettok(%rm.socknum,%num,32)
  909.     inc %num
  910.   }
  911. }
  912.  
  913. dialog rkmp3_fileinfo {
  914.   title "rk.mp3 Mp3 File Information"
  915.   size -1 -1 300 205
  916.  
  917.   text "Artist:",1, 1 4 30 15
  918.   edit "",2, 35 1 260 20
  919.   text "Title:",3, 1 24 25 15
  920.   edit "",4, 30 21 265 20
  921.   text "Album:",5,1 44 31 15
  922.   edit "",6, 36 41 259 20
  923.   text "Year:",7, 1 64 25 15
  924.   edit "",8, 30 61 115 20
  925.   text "Genre:",9, 1 84 31 15
  926.   combo 10, 35 81 109 120, drop
  927.   text "Version:",11, 1 104 37 15
  928.   text "",12, 42 104 103 15
  929.   text "Mode:",13, 1 119 29 15
  930.   text "",14, 34 119 121 15
  931.   text "Copyright:",15, 1 134 46 15
  932.   text "",16, 51 134 99 15
  933.   text "Private:",17, 1 149 35 15
  934.   text "",18, 40 149 110 15
  935.   text "Track:",19, 150 64 30 15
  936.   edit "",20, 185 61 110 20
  937.   text "Length:",21, 150 84 35 15
  938.   text "",22, 190 84 110 15
  939.   text "Bitrate:",23, 150 104 32 15
  940.   text "",24, 187 104 113 15
  941.   text "Var. Bitrate:",25, 150 119 55 15
  942.   text "",26, 210 119 90 15
  943.   text "Sample:",27, 150 134 37 15
  944.   text "",28, 192 134 108 15
  945.   text "CRC:",29, 150 149 25 15
  946.   text "",30, 180 149 120 15
  947.   text "Comment:",31, 1 166 50 15
  948.   edit "",32, 55 162 240 20
  949.   text "",33,500 500 0 0
  950.   button "Sa&ve",666, 1 185 150 20, ok
  951.   button "&Cancel",667, 150 185 150 20, cancel
  952. }
  953.  
  954. alias genre {
  955.   if ($1 == 0) { return Blues }
  956.   else if ($1 == 1) { return Classic Rock }
  957.   else if ($1 == 2) { return Country }
  958.   else if ($1 == 3) { return Dance }
  959.   else if ($1 == 4) { return Disco }
  960.   else if ($1 == 5) { return Funk }
  961.   else if ($1 == 6) { return Grunge }
  962.   else if ($1 == 7) { return Hip-Hop }
  963.   else if ($1 == 8) { return Jazz }
  964.   else if ($1 == 9) { return Metal }
  965.   else if ($1 == 10) { return New Age }
  966.   else if ($1 == 11) { return Oldies }
  967.   else if ($1 == 12) { return Other }
  968.   else if ($1 == 13) { return Pop }
  969.   else if ($1 == 14) { return R&B }
  970.   else if ($1 == 15) { return Rap }
  971.   else if ($1 == 16) { return Reggae }
  972.   else if ($1 == 17) { return Rock }
  973.   else if ($1 == 18) { return Techno }
  974.   else if ($1 == 19) { return Industrial }
  975.   else if ($1 == 20) { return Alternative }
  976.   else if ($1 == 21) { return Ska }
  977.   else if ($1 == 22) { return Death Metal }
  978.   else if ($1 == 23) { return Pranks }
  979.   else if ($1 == 24) { return SoundTrack }
  980.   else if ($1 == 25) { return Euro Techno }
  981.   else if ($1 == 26) { return Ambient }
  982.   else if ($1 == 27) { return Triphop }
  983.   else if ($1 == 28) { return Vocal }
  984.   else if ($1 == 29) { return Jazz Funk }
  985.   else if ($1 == 30) { return Fusion }
  986.   else if ($1 == 31) { return Trance }
  987.   else if ($1 == 32) { return Classical }
  988.   else if ($1 == 33) { return Instrumental }
  989.   else if ($1 == 34) { return Acid }
  990.   else if ($1 == 35) { return House }
  991.   else if ($1 == 36) { return Game }
  992.   else if ($1 == 37) { return Sound Clip }
  993.   else if ($1 == 38) { return Gospel }
  994.   else if ($1 == 39) { return Noise }
  995.   else if ($1 == 40) { return Alternative Rock }
  996.   else if ($1 == 41) { return Bass }
  997.   else if ($1 == 42) { return Soul }
  998.   else if ($1 == 43) { return Punk }
  999.   else if ($1 == 44) { return Space }
  1000.   else if ($1 == 45) { return Meditative }
  1001.   else if ($1 == 46) { return Instrumental Pop }
  1002.   else if ($1 == 47) { return Instrumental Rock }
  1003.   else if ($1 == 48) { return Ethnic }
  1004.   else if ($1 == 49) { return Gothic }
  1005.   else if ($1 == 50) { return Darkwave }
  1006.   else if ($1 == 51) { return Techno Industrial }
  1007.   else if ($1 == 52) { return Electronic }
  1008.   else if ($1 == 53) { return Pop Folk }
  1009.   else if ($1 == 54) { return Euro Dance }
  1010.   else if ($1 == 55) { return Dream }
  1011.   else if ($1 == 56) { return Southern Rock }
  1012.   else if ($1 == 57) { return Comedy }
  1013.   else if ($1 == 58) { return Cult }
  1014.   else if ($1 == 59) { return Gangsta Rap }
  1015.   else if ($1 == 60) { return Top 40 }
  1016.   else if ($1 == 61) { return Christian Rap }
  1017.   else if ($1 == 62) { return Pop Funk }
  1018.   else if ($1 == 63) { return Jungle }
  1019.   else if ($1 == 64) { return Native American }
  1020.   else if ($1 == 65) { return Cabaret }
  1021.   else if ($1 == 66) { return New Wave }
  1022.   else if ($1 == 67) { return Psychedelic }
  1023.   else if ($1 == 68) { return Rave }
  1024.   else if ($1 == 69) { return Showtunes }
  1025.   else if ($1 == 70) { return Trailer }
  1026.   else if ($1 == 71) { return Lo Fi }
  1027.   else if ($1 == 72) { return Tribal }
  1028.   else if ($1 == 73) { return Acid Punk }
  1029.   else if ($1 == 74) { return Acid Jazz }
  1030.   else if ($1 == 75) { return Polka }
  1031.   else if ($1 == 76) { return Retro }
  1032.   else if ($1 == 77) { return Musical }
  1033.   else if ($1 == 78) { return Rock 'n Roll }
  1034.   else if ($1 == 79) { return Hard Rock }
  1035.   else if ($1 == 80) { return Folk }
  1036.   else if ($1 == 81) { return Folk Rock }
  1037.   else if ($1 == 82) { return National Folk }
  1038.   else if ($1 == 83) { return Swing }
  1039.   else if ($1 == 84) { return Fast Fusion }
  1040.   else if ($1 == 85) { return Bebop }
  1041.   else if ($1 == 86) { return Latin }
  1042.   else if ($1 == 87) { return Revival }
  1043.   else if ($1 == 88) { return Celtic }
  1044.   else if ($1 == 89) { return Bluegrass }
  1045.   else if ($1 == 90) { return Avantgarde }
  1046.   else if ($1 == 91) { return Gothic Rock }
  1047.   else if ($1 == 92) { return Progressive Rock }
  1048.   else if ($1 == 93) { return Psychedelic Rock }
  1049.   else if ($1 == 94) { return Symphonic Rock }
  1050.   else if ($1 == 95) { return Slow Rock }
  1051.   else if ($1 == 96) { return Big Band }
  1052.   else if ($1 == 97) { return Chorus }
  1053.   else if ($1 == 98) { return Easy Listening }
  1054.   else if ($1 == 99) { return Acoustic }
  1055.   else if ($1 == 100) { return Humour }
  1056.   else if ($1 == 101) { return Speech }
  1057.   else if ($1 == 102) { return Chanson }
  1058.   else if ($1 == 103) { return Opera }
  1059.   else if ($1 == 104) { return Chamber Music }
  1060.   else if ($1 == 105) { return Sonata }
  1061.   else if ($1 == 106) { return Symphony }
  1062.   else if ($1 == 107) { return Booty Bass }
  1063.   else if ($1 == 108) { return Primus }
  1064.   else if ($1 == 109) { return Porn Groove }
  1065.   else if ($1 == 110) { return Satire }
  1066.   else if ($1 == 111) { return Slow Jam }
  1067.   else if ($1 == 112) { return Club }
  1068.   else if ($1 == 113) { return Tango }
  1069.   else if ($1 == 114) { return Samba }
  1070.   else if ($1 == 115) { return Folklore }
  1071.   else if ($1 == 116) { return Ballad }
  1072.   else if ($1 == 117) { return Power Ballad }
  1073.   else if ($1 == 118) { return Rhythmic Soul }
  1074.   else if ($1 == 119) { return Freestyle }
  1075.   else if ($1 == 120) { return Duet }
  1076.   else if ($1 == 121) { return Punk Rock }
  1077.   else if ($1 == 122) { return Drum Solo }
  1078.   else if ($1 == 123) { return Acapella }
  1079.   else if ($1 == 124) { return Euro House }
  1080.   else if ($1 == 125) { return Dance Hall }
  1081.   else if ($1 == 126) { return Goa }
  1082.   else if ($1 == 127) { return Drum & Bass }
  1083.   else if ($1 == 128) { return Club-House }
  1084.   else if ($1 == 129) { return Hardcore }
  1085.   else if ($1 == 130) { return Terror }
  1086.   else if ($1 == 131) { return Indie }
  1087.   else if ($1 == 132) { return Britpop }
  1088.   else if ($1 == 133) { return Negerpunk }
  1089.   else if ($1 == 134) { return Polsk Punk }
  1090.   else if ($1 == 135) { return Beat }
  1091.   else if ($1 == 136) { return Christian Gangsta Rap }
  1092.   else if ($1 == 137) { return Heavy Metal }
  1093.   else if ($1 == 138) { return Black Metal }
  1094.   else if ($1 == 139) { return Crossover }
  1095.   else if ($1 == 140) { return Contemporary Christian }
  1096.   else if ($1 == 141) { return Christian Rock }
  1097.   else if ($1 == 142) { return Merengue }
  1098.   else if ($1 == 143) { return Salsa }
  1099.   else if ($1 == 144) { return Trash Metal }
  1100.   else if ($1 == 145) { return Anime }
  1101.   else if ($1 == 146) { return JPop }
  1102.   else if ($1 == 147) { return Synthpop }
  1103.   else { return Unknown }
  1104. }
  1105.  
  1106. on *:dialog:rkmp3_fileinfo:init:0:{
  1107.   var %num = 0
  1108.   while (%num <= 147) {
  1109.     did -a rkmp3_fileinfo 10 $genre(%num)
  1110.     inc %num
  1111.   }
  1112.   did -a rkmp3_fileinfo 10 Unknown
  1113.   if ($did(rkmp3_plist,4,0).sel > 0) {
  1114.     var %filename = $hget(rkmp3_plist,$eval(song $+ $did(rkmp3_plist,4,1).sel))
  1115.     did -a rkmp3_fileinfo 2 $mp3(%filename).artist
  1116.     did -a rkmp3_fileinfo 4 $mp3(%filename).title
  1117.     did -a rkmp3_fileinfo 6 $mp3(%filename).album
  1118.     did -a rkmp3_fileinfo 8 $mp3(%filename).year
  1119.     var %temp = $didwm(rkmp3_fileinfo,10,$mp3(%filename).genre)
  1120.     if (%temp >= 1 && %temp <= 148) {
  1121.       did -c rkmp3_fileinfo 10 %temp
  1122.     }
  1123.     else {
  1124.       did -c rkmp3_fileinfo 10 149
  1125.     }
  1126.     did -a rkmp3_fileinfo 12 $mp3(%filename).version
  1127.     did -a rkmp3_fileinfo 14 $mp3(%filename).mode
  1128.     did -a rkmp3_fileinfo 16 $right($mp3(%filename).copyright,-1)
  1129.     did -a rkmp3_fileinfo 18 $right($mp3(%filename).private,-1)
  1130.     did -a rkmp3_fileinfo 20 $mp3(%filename).track
  1131.     did -a rkmp3_fileinfo 22 $duration($calc($mp3(%filename).length / 1000))
  1132.     did -a rkmp3_fileinfo 24 $mp3(%filename).bitrate $+ Kbps
  1133.     did -a rkmp3_fileinfo 26 $right($mp3(%filename).vbr,-1)
  1134.     did -a rkmp3_fileinfo 28 $calc($mp3(%filename).sample / 1000) $+ KHz
  1135.     did -a rkmp3_fileinfo 30 $right($mp3(%filename).crc,-1)
  1136.     did -a rkmp3_fileinfo 32 $mp3(%filename).comment
  1137.     did -a rkmp3_fileinfo 33 $did(rkmp3_plist,4,1).sel %filename
  1138.     var %num = 2
  1139.     while (%num <= 30) {
  1140.       if ($did(rkmp3_fileinfo,%num).text = $null) {
  1141.         did -a rkmp3_fileinfo %num Unknown
  1142.       }
  1143.       %num = $calc(%num + 2)
  1144.     }
  1145.   }
  1146. }
  1147.  
  1148. on *:dialog:rkmp3_fileinfo:sclick:666:{
  1149.   var %file = $gettok($did(rkmp3_fileinfo,33).text,2-,32)
  1150.   if ($inmp3.fname = %file) {
  1151.     echo -a $rm.adcolour(rk.mp3:) You can't modify a file while it's playing!
  1152.     return
  1153.   }
  1154.   if ($mp3(%file).version = MPEG 1.0 Layer 3) {
  1155.     .bread " $+ %file $+ " $calc($file(%file).size - 128) 3 &id3tag
  1156.     if ($bvar(&id3tag,1-3).text != TAG) {
  1157.       .bwrite " $+ %file $+ " $calc($file(%file).size - 128) 3 TAG
  1158.       .bset &temp 125 0
  1159.       .bwrite " $+ %file $+ " $calc($file(%file).size - 125) 124 &temp
  1160.       .bunset &temp
  1161.     }
  1162.     var %id = 4 2 6 8 32 20
  1163.     var %num = 1
  1164.     while (%num <= $numtok(%id,32)) {
  1165.       if ($did(rkmp3_fileinfo,$gettok(%id,%num,32)) = $null) {
  1166.         did -a rkmp3_fileinfo $gettok(%id,%num,32) Unknown
  1167.       }
  1168.       inc %num
  1169.     }
  1170.     .bset &var30 30 3
  1171.     .bset &var4 4 4
  1172.     .bset &var28 28 2
  1173.     .bset &genre 1 $calc($did(rkmp3_fileinfo,10).sel - 1)
  1174.     .bset &track 1 $did(rkmp3_fileinfo,20).text
  1175.     .bwrite " $+ %file $+ " $calc($file(%file).size - 125) 30 &var30
  1176.     .bwrite " $+ %file $+ " $calc($file(%file).size - 95) 30 &var30
  1177.     .bwrite " $+ %file $+ " $calc($file(%file).size - 65) 30 &var30
  1178.     .bwrite " $+ %file $+ " $calc($file(%file).size - 35) 4 &var4
  1179.     .bwrite " $+ %file $+ " $calc($file(%file).size - 31) 28 &var28
  1180.     .bwrite " $+ %file $+ " $calc($file(%file).size - 125) 30 $did(rkmp3_fileinfo,4).text
  1181.     .bwrite " $+ %file $+ " $calc($file(%file).size - 95) 30 $did(rkmp3_fileinfo,2).text
  1182.     .bwrite " $+ %file $+ " $calc($file(%file).size - 65) 30 $did(rkmp3_fileinfo,6).text
  1183.     .bwrite " $+ %file $+ " $calc($file(%file).size - 35) 4 $did(rkmp3_fileinfo,8).text
  1184.     .bwrite " $+ %file $+ " $calc($file(%file).size - 31) 29 $left($did(rkmp3_fileinfo,32).text,28)
  1185.     if ($did(rkmp3_fileinfo,20).text isnum && $did(rkmp3_fileinfo,20).text >= 0 && $did(rkmp3_fileinfo,20).text <= 255) {
  1186.       .bwrite " $+ %file $+ " $calc($file(%file).size - 2) 1 &track
  1187.     }
  1188.     .bwrite " $+ %file $+ " $calc($file(%file).size - 1) 1 &genre
  1189.     .bunset &var30
  1190.     .bunset &var4
  1191.     .bunset &var28
  1192.     .bunset &genre
  1193.     var %info = info $+ $gettok($did(rkmp3_fileinfo,33).text,1,32)
  1194.     .hadd rkmp3_plist %info $gettok($hget(rkmp3_plist,%info),1,32) $left($did(rkmp3_fileinfo,2).text,30) - $left($did(rkmp3_fileinfo,4).text,30)
  1195.     did -o rkmp3_plist 4 $right(%info,-4) $gettok($did(rkmp3_plist,4,$right(%info,-4)).text,1,32) $left($did(rkmp3_fileinfo,2).text,30) - $left($did(rkmp3_fileinfo,4).text,30)
  1196.   }
  1197. }
  1198.  
  1199. on *:dialog:rkmp3_plist:sclick:7:{
  1200.   if ($dialog(rkmp3_fileinfo) = rkmp3_fileinfo) {
  1201.     dialog -x rkmp3_fileinfo
  1202.   }
  1203.   dialog -amd rkmp3_fileinfo rkmp3_fileinfo
  1204. }
  1205.  
  1206. on *:dialog:rkmp3_plist:sclick:8:{
  1207.   if ($isdir(%rm.lastdir) != $true) {
  1208.     set %rm.lastdir $scriptdir
  1209.   }
  1210.   plist_load $sfile(%rm.lastdir,Load rk.mp3 playlist $chr(40) $+ .rpl $+ $chr(41),Load)
  1211. }
  1212.  
  1213. alias plist_load {
  1214.   if ($1 = $null) { return }
  1215.   if ($exists($1-) = $true) {
  1216.     set %rm.lastdir $deltok($1-,$numtok($1-,92),92)
  1217.     if ($ini($1-,[rm_plist_v1]) != 0) {
  1218.       echo -a rk.mp3 Invalid playlist
  1219.       return
  1220.     }
  1221.     plist_clear
  1222.     hload rkmp3_plist $1-
  1223.     rkmp3_plist_refresh
  1224.   }
  1225.   else {
  1226.     echo -a rk.mp3 No such file
  1227.     return
  1228.   }
  1229.   var %num 1
  1230.   while ($gettok(%rm.socknum,%num,32) != $null) {
  1231.     updateplist $gettok(%rm.socknum,%num,32)
  1232.     inc %num
  1233.   }
  1234. }
  1235.  
  1236. alias rkmp3_plist_refresh {
  1237.   var %num = 1
  1238.   while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  1239.     addtoplist %num
  1240.     inc %num
  1241.   }
  1242. }
  1243.  
  1244. on *:dialog:rkmp3_plist:sclick:9:{
  1245.   :getfile
  1246.   if ($isdir(%rm.lastdir) != $true) {
  1247.     set %rm.lastdir $scriptdir
  1248.   }
  1249.   var %file = $sfile(%rm.lastdir,Save rk.mp3 playlist $chr(40) $+ .rpl $+ $chr(41),Save)
  1250.   if (%file != $null) {
  1251.     if ($exists(%file) = $true) {
  1252.       if (!$input(Do you want to overwrite the file?,264,rk.mp3 - Are you sure?)) {
  1253.         goto getfile
  1254.       }
  1255.       window -a @rkmp3
  1256.       dialog -v rkmp3_plist
  1257.     }
  1258.     rkmp3_save %file
  1259.   }
  1260. }
  1261.  
  1262. alias rkmp3_save {
  1263.   hsave -o rkmp3_plist $1-
  1264. }
  1265.  
  1266. on *:dialog:rkmp3_plist:sclick:10:{
  1267.   plist_clear
  1268. }
  1269.  
  1270. on *:dialog:rkmp3_plist:sclick:11:{
  1271.   var %max = 1
  1272.   while ($hget(rkmp3_plist,$eval(song $+ %max)) != $null) {
  1273.     inc %max
  1274.   }
  1275.   dec %max
  1276.   var %start = 1
  1277.   while (%start <= %max) {
  1278.     var %other = %max
  1279.     while (%other >= %start) {
  1280.       if ($gettok($hget(rkmp3_plist,$eval(info $+ %start)),2-,32) > $gettok($hget(rkmp3_plist,$eval(info $+ %other)),2-,32) || %other = %start) {
  1281.         var %tempsong = $hget(rkmp3_plist,$eval(song $+ %other))
  1282.         var %tempinfo = $hget(rkmp3_plist,$eval(info $+ %other))
  1283.         hadd rkmp3_plist song $+ %other $hget(rkmp3_plist,$eval(song $+ %start))
  1284.         hadd rkmp3_plist info $+ %other $hget(rkmp3_plist,$eval(info $+ %start))
  1285.         hadd rkmp3_plist song $+ %start %tempsong
  1286.         hadd rkmp3_plist info $+ %start %tempinfo
  1287.         break
  1288.       }
  1289.       dec %other
  1290.     }
  1291.     if (%other <= %start) {
  1292.       inc %start
  1293.     }
  1294.   }
  1295.   if ($dialog(rkmp3_plist) = rkmp3_plist) {
  1296.     did -r rkmp3_plist 4
  1297.     rkmp3_plist_refresh
  1298.   }
  1299. }
  1300.  
  1301. on *:dialog:rkmp3_plist:sclick:12:{
  1302.   if (!$isdir(%rm.lastdir)) {
  1303.     set %rm.lastdir $scriptdir
  1304.   }
  1305.   var %file $sfile($scriptdir,Conver to HTML Playlist $chr(40) $+ .html $+ $chr(41),Convert)
  1306.   var %num = 1
  1307.   var %file = $+(",%file,")
  1308.   write -c %file
  1309.   write %file <html><head><title>rk.mp3 playlist</title></head><body bgcolor=#000040 text=#FFFFFF link=#999999 alink=#999999 vlink=#999999>
  1310.   write %file <center><font face=verdana size=+2><font color=#FFB005><b>rk.mp3 plist</b></font></u>
  1311.   write %file <hr width=300 color=white noshade>
  1312.   %num = 1
  1313.   var %length = 0
  1314.   while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  1315.     write %file <font color=#FFB005><b> $+ %num $+ .</font> <i> $+ $gettok($gettok($hget(rkmp3_plist,$eval(info $+ %num)),1,45),2-,32) $+ </i></b> - <font color=#FFB005> $+ $gettok($hget(rkmp3_plist,$eval(info $+ %num)),2-,45) $+ </font> <i>( $+ $duration($calc($gettok($hget(rkmp3_plist,$eval(info $+ %num)),1,32) / 1000)) $+ )</i><br>
  1316.     %length = $calc(%length + $mp3($hget(rkmp3_plist,$eval(song $+ %num))).length)
  1317.     inc %num
  1318.   }
  1319.   write -il4 %file <font size=-2>There are <font color=#FFB005><i> $+ $calc(%num - 1) $+ </i></font> songs in the playlist, totaling <font color=#FFB005><i> $+ $duration($calc(%length / 1000)) $+ </i></font> of play.</font></center><font face=verdana size=-1><br><ul>
  1320.   write %file </ul></body></html>
  1321.   echo -a rk.mp3: Converted playlist to %file
  1322. }
  1323.  
  1324. on *:filercvd:*.mp3:{
  1325.   if (%rm.autoadd = $true || %rm.autoadd = $null) {
  1326.     set %rm.autoadd $true
  1327.     plist_addmp3 $filename
  1328.     if (%rm.autoplay = $true) {
  1329.       var %i = 1
  1330.       while ($hget(rkmp3_plist,$eval(song $+ %i)) != $null) {
  1331.         inc %i
  1332.       }
  1333.       set %cursong $calc(%i - 1)
  1334.       rkmp3_stop
  1335.       rkmp3_play
  1336.     }
  1337.   }
  1338. }
  1339.  
  1340. alias plist_clear {
  1341.   var %num 1
  1342.   while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  1343.     hdel rkmp3_plist song $+ %num
  1344.     hdel rkmp3_plist info $+ %num
  1345.     inc %num
  1346.   }
  1347.   did -r rkmp3_plist 4
  1348.   var %num 1
  1349.   while ($gettok(%rm.socknum,%num,32) != $null) {
  1350.     updateplist $gettok(%rm.socknum,%num,32)
  1351.     inc %num
  1352.   }
  1353. }
  1354.  
  1355. ;rkmp3_5settings.mrc
  1356.  
  1357. alias rkmp3_settings {
  1358.   if ((%rmset.lastx < 0) || (%rmset.lastx > $window(-1).w) || (%rmset.lastx = $null)) {
  1359.     set %rmset.lastx 100
  1360.   }
  1361.   if ((%rmset.lasty < 0) || (%rmset.lasty > $window(-1).h) || (%rmset.lasty = $null)) {
  1362.     set %rmset.lasty 50
  1363.   }
  1364.   dialog -amd rkmp3_set rkmp3_set
  1365. }
  1366.  
  1367. dialog rkmp3_set {
  1368.   title rk.mp3 settings 
  1369.   size %rmset.lastx %rmset.lasty 400 173
  1370.  
  1371.   tab "Playlist", 1, 0 0 400 158
  1372.   tab "Announcements", 2
  1373.   tab "About", 3
  1374.  
  1375.   ;tab 1
  1376.   box "After song ends", 11, 1 26 120 50, tab 1
  1377.   check "Play continuously", 111, 5 40 100 15, tab 1
  1378.   check "Pick random song", 112, 5 58 105 15, tab 1
  1379.   box "Mp3 Playlist sharing", 12, 1 77 120 70, tab 1
  1380.   check "Enable sharing", 121, 5 91 90 15, tab 1
  1381.   check "Auto-add mp3", 122, 5 109 105 15, tab 1
  1382.   check "Auto-play", 1222, 5 128 90 15, tab 1
  1383.  
  1384.   box "rk.mp3 Skins",1231, 130 26 111 50, tab 1
  1385.   button "Load Skin", 123, 140 45 90 20, tab 1 disable
  1386.   box "On Connect",1111, 250 26 145 50, tab 1
  1387.   check "Join #rkmp3",1112, 280 47 80 15, tab 1
  1388.  
  1389.   box "Message Colour", 124, 130 77 265 70, tab 1
  1390.   icon 130, 202 97 19 17, $scriptdircolour0.bmp, tab 1 noborder
  1391.   icon 131, 223 97 19 17, $scriptdircolour1.bmp, tab 1 noborder
  1392.   icon 132, 244 97 19 17, $scriptdircolour2.bmp, tab 1 noborder
  1393.   icon 133, 265 97 19 17, $scriptdircolour3.bmp, tab 1 noborder
  1394.   icon 134, 286 97 19 17, $scriptdircolour4.bmp, tab 1 noborder
  1395.   icon 135, 307 97 19 17, $scriptdircolour5.bmp, tab 1 noborder
  1396.   icon 136, 328 97 19 17, $scriptdircolour6.bmp, tab 1 noborder
  1397.   icon 137, 349 97 19 17, $scriptdircolour7.bmp, tab 1 noborder
  1398.   text "Colour:",126, 136 108 35 15, tab 1
  1399.   text "",125, 173 108 24 15, tab 1 center
  1400.   icon 138, 202 116 19 17, $scriptdircolour8.bmp, tab 1 noborder
  1401.   icon 139, 223 116 19 17, $scriptdircolour9.bmp, tab 1 noborder
  1402.   icon 1310, 244 116 19 17, $scriptdircolour10.bmp, tab 1 noborder
  1403.   icon 1311, 265 116 19 17, $scriptdircolour11.bmp, tab 1 noborder
  1404.   icon 1312, 286 116 19 17, $scriptdircolour12.bmp, tab 1 noborder
  1405.   icon 1313, 307 116 19 17, $scriptdircolour13.bmp, tab 1 noborder
  1406.   icon 1314, 328 116 19 17, $scriptdircolour14.bmp, tab 1 noborder
  1407.   icon 1315, 349 116 19 17, $scriptdircolour15.bmp, tab 1 noborder
  1408.   icon 1316, 370 97 11 37, $scriptdircolournone.bmp, tab 1 noborder
  1409.  
  1410.   ;tab 2
  1411.   check "Announce Song On Play",31, 5 26 140 15, tab 2
  1412.   check "Allow Mp3 Download Trigger",32, 5 44 155 15, tab 2
  1413.   text "Trigger:",33, 5 62 35 15, tab 2
  1414.   edit "",34, 45 59 80 20, tab 2
  1415.   button "All channels but... (separate with ,)",35, 5 85 175 20, tab 2
  1416.   edit "",36, 30 105 365 20, tab 2
  1417.   check "Show (Kbps/Khz)",37, 200 26 120 15, tab 2
  1418.   check "Show Size",38, 200 44 80 15, tab 2
  1419.   check "Show Mono/Stereo",39, 200 62 130 15, tab 2
  1420.  
  1421.   ;tab 3
  1422.   text "About rk.mp3",41, 5 26 390 15, tab 3
  1423.   text "", 42, 5 41 390 105, tab 3
  1424.  
  1425.   link "http://rkmp3.tunkeymicket.com/", 664, 0 158 163 15
  1426.   text "- rk.mp3 website", 665, 166 158 90 15
  1427.   button "OK", 666, 350 158 50 15, ok
  1428. }
  1429.  
  1430. on *:dialog:rkmp3_set:init:0:{
  1431.   if (%rm.continuous = $true) {
  1432.     did -c rkmp3_set 111
  1433.   }
  1434.   else {
  1435.     did -b rkmp3_set 112
  1436.   }
  1437.   if (%rm.random = $true) {
  1438.     did -c rkmp3_set 112
  1439.   }
  1440.   did -a rkmp3_set 34 %rm.trigger
  1441.   did -a rkmp3_set 36 %rm.chanexcept
  1442.   if (%rm.sharing = $true || %rm.sharing = $null) {
  1443.     set %rm.sharing $true
  1444.     did -c rkmp3_set 121
  1445.   }
  1446.   else {
  1447.     did -b rkmp3_set 122
  1448.     did -b rkmp3_set 1222
  1449.   }
  1450.   if (%rm.autoadd = $true || %rm.autoadd = $null) {
  1451.     set %rm.autoadd $true
  1452.     did -c rkmp3_set 122
  1453.   }
  1454.   else {
  1455.     did -b rkmp3_set 1222
  1456.   }
  1457.   if (%rm.autoplay = $true) {
  1458.     did -c rkmp3_set 1222
  1459.   }
  1460.   if ($group(#rkmp3onjoin).status = on) {
  1461.     did -c rkmp3_set 1112
  1462.   }
  1463.   if (%rm.announce = $true) {
  1464.     did -c rkmp3_set 31
  1465.   }
  1466.   else {
  1467.     did -b rkmp3_set 35
  1468.     did -b rkmp3_set 36
  1469.   }
  1470.   if (%rm.trigger.allow = $true) {
  1471.     did -c rkmp3_set 32
  1472.   }
  1473.   else {
  1474.     did -b rkmp3_set 34
  1475.   }
  1476.   if (%rm.ann.khzkbps = $true) {
  1477.     did -c rkmp3_set 37
  1478.   }
  1479.   if (%rm.ann.size = $true) {
  1480.     did -c rkmp3_set 38
  1481.   }
  1482.   if (%rm.ann.stereo = $true) {
  1483.     did -c rkmp3_set 39
  1484.   }
  1485.   if (%rm.except = $false) {
  1486.     did -r rkmp3_set 35
  1487.     did -a rkmp3_set 35 Only channels... (seperate with ,)
  1488.   }
  1489.   if ((%rm.adcolour !isnum || %rm.adcolour < 0 || %rm.adcolour > 15) && %rm.adcolour != none) {
  1490.     set %rm.adcolour 2
  1491.   }
  1492.   did -a rkmp3_set 42 rk.mp3 is a project I (rkzad) have been working on for quite a while now. It went $&
  1493.     through many different versions... a normal dialog... a dialog with pictures, and then $&
  1494.     finally (and eventually) this, which I find is much better.  I always had limitations with $&
  1495.     the other ones, but this one (although it's harder to do) is much better. Please tell $&
  1496.     me what you think and do not rip it off.  I'd also like to thank SilentSound, ]2aven, $&
  1497.     Bulk, Knowledge, Endless, Slyder, minux, snake, freaK, bigguy, and Parsec for $&
  1498.     helping me test it.  If you have any comments, suggestions, complaints, questions $&
  1499.     or compliments ;) please feel free to e-mail me at rkzad@valveworld.com.
  1500.   did -a rkmp3_set 125 %rm.adcolour
  1501. }
  1502.  
  1503. on *:dialog:rkmp3_set:sclick:121:{
  1504.   if ($did(rkmp3_set,121).state = 1) {
  1505.     set %rm.sharing $true
  1506.     did -e rkmp3_set 122
  1507.     if (%rm.autoadd = $true) {
  1508.       did -e rkmp3_set 1222
  1509.     }
  1510.     socklisten rmlsock 7331
  1511.   }
  1512.   else {
  1513.     set %rm.sharing $false
  1514.     sockclose rmlsock
  1515.     while (%rm.socknum != $null) {
  1516.       unset % [ $+ rm.sock $+ [ $gettok(%rm.socknum,1,32) ] ]
  1517.       rmclsockclose $gettok(%rm.socknum,1,32)
  1518.       sockclose rm.sock $+ $gettok(%rm.socknum,1,32)
  1519.       set %rm.socknum $gettok(%rm.socknum,2-,32)
  1520.     }
  1521.     did -b rkmp3_set 122
  1522.     did -b rkmp3_set 1222
  1523.   }
  1524. }
  1525.  
  1526. on *:dialog:rkmp3_set:sclick:122:{
  1527.   if ($did(rkmp3_set,122).state = 1) {
  1528.     set %rm.autoadd $true
  1529.     did -e rkmp3_set 1222
  1530.   }
  1531.   else {
  1532.     set %rm.autoadd $false
  1533.     did -b rkmp3_set 1222
  1534.   }
  1535. }
  1536.  
  1537. on *:dialog:rkmp3_set:sclick:1222:{
  1538.   if ($did(rkmp3_set,1222).state = 1) {
  1539.     set %rm.autoplay $true
  1540.   }
  1541.   else {
  1542.     set %rm.autoplay $false
  1543.   }
  1544. }
  1545.  
  1546. on *:dialog:rkmp3_set:sclick:123:{
  1547.   if (!$isdir(%rm.lastdir)) {
  1548.     set %rm.lastdir $scriptdir
  1549.   }
  1550.   var %thefile $sfile(%rm.lastdir,Load Skin $chr(40) $+ .rms $+ $chr(41),Load)
  1551.   if (%thefile != $null) {
  1552.     set %rm.skinfile %thefile
  1553.     rkmp3_exit
  1554.     rkmp3_open
  1555.   }
  1556. }
  1557.  
  1558. on *:dialog:rkmp3_set:sclick:111:{
  1559.   if ($did(rkmp3_set,111).state = 1) {
  1560.     set %rm.continuous $true
  1561.     did -e rkmp3_set 112
  1562.   }
  1563.   else {
  1564.     unset %rm.continuous
  1565.     did -b rkmp3_set 112
  1566.   }
  1567. }
  1568.  
  1569. on *:dialog:rkmp3_set:sclick:112:{
  1570.   if ($did(rkmp3_set,112).state = 1) {
  1571.     set %rm.random $true
  1572.   }
  1573.   else {
  1574.     unset %rm.random
  1575.   }
  1576. }
  1577.  
  1578. on *:dialog:rkmp3_set:sclick:1112:{
  1579.   if ($did(rkmp3_set,1112).state = 1) {
  1580.     .enable #rkmp3onjoin
  1581.   }
  1582.   else {
  1583.     .disable #rkmp3onjoin
  1584.   }
  1585. }
  1586.  
  1587. on *:dialog:rkmp3_set:sclick:130: changeadcolour $did
  1588. on *:dialog:rkmp3_set:sclick:131: changeadcolour $did
  1589. on *:dialog:rkmp3_set:sclick:132: changeadcolour $did
  1590. on *:dialog:rkmp3_set:sclick:133: changeadcolour $did
  1591. on *:dialog:rkmp3_set:sclick:134: changeadcolour $did
  1592. on *:dialog:rkmp3_set:sclick:135: changeadcolour $did
  1593. on *:dialog:rkmp3_set:sclick:136: changeadcolour $did
  1594. on *:dialog:rkmp3_set:sclick:137: changeadcolour $did
  1595. on *:dialog:rkmp3_set:sclick:138: changeadcolour $did
  1596. on *:dialog:rkmp3_set:sclick:139: changeadcolour $did
  1597. on *:dialog:rkmp3_set:sclick:1310: changeadcolour $did
  1598. on *:dialog:rkmp3_set:sclick:1311: changeadcolour $did
  1599. on *:dialog:rkmp3_set:sclick:1312: changeadcolour $did
  1600. on *:dialog:rkmp3_set:sclick:1313: changeadcolour $did
  1601. on *:dialog:rkmp3_set:sclick:1314: changeadcolour $did
  1602. on *:dialog:rkmp3_set:sclick:1315: changeadcolour $did
  1603. on *:dialog:rkmp3_set:sclick:1316: changeadcolour none
  1604.  
  1605. alias -l changeadcolour {
  1606.   if ($1 != none) {
  1607.     set %rm.adcolour $right($1,-2)
  1608.   }
  1609.   else {
  1610.     set %rm.adcolour none
  1611.   }
  1612.   did -r rkmp3_set 125
  1613.   did -a rkmp3_set 125 %rm.adcolour
  1614. }
  1615.  
  1616. on *:dialog:rkmp3_set:sclick:31:{
  1617.   if ($did(rkmp3_set,31).state = 1) {
  1618.     set %rm.announce $true
  1619.     if (%rm.trigger.allow = $true) {
  1620.       did -e rkmp3_set 34
  1621.     }
  1622.     did -e rkmp3_set 35
  1623.     did -e rkmp3_set 36
  1624.   }
  1625.   else {
  1626.     unset %rm.announce
  1627.     did -b rkmp3_set 35
  1628.     did -b rkmp3_set 36
  1629.   }
  1630. }
  1631.  
  1632. on *:dialog:rkmp3_set:sclick:32:{
  1633.   if ($did(rkmp3_set,32).state = 1) {
  1634.     set %rm.trigger.allow $true
  1635.     did -e rkmp3_set 34
  1636.   }
  1637.   else {
  1638.     unset %rm.trigger.allow
  1639.     did -b rkmp3_set 34
  1640.   }
  1641. }
  1642.  
  1643. on *:dialog:rkmp3_set:edit:34:{
  1644.   var %temp = $did(rkmp3_set,34).text
  1645.   did -r rkmp3_set 34
  1646.   did -a rkmp3_set 34 $replace(%temp,*,_)
  1647. }
  1648.  
  1649. on *:dialog:rkmp3_set:sclick:35:{
  1650.   if (%rm.except = $true) {
  1651.     set %rm.except $false
  1652.     did -r rkmp3_set 35
  1653.     did -a rkmp3_set 35 Only channels... (seperate with ,)
  1654.   }
  1655.   else {
  1656.     set %rm.except $true
  1657.     did -r rkmp3_set 35
  1658.     did -a rkmp3_set 35 All channels but... (seperate with ,)
  1659.   }
  1660. }
  1661.  
  1662. on *:dialog:rkmp3_set:sclick:37:{
  1663.   if ($did(rkmp3_set,37).state = 1) {
  1664.     set %rm.ann.khzkbps $true
  1665.   }
  1666.   else {
  1667.     unset %rm.ann.khzkbps
  1668.   }
  1669. }
  1670.  
  1671. on *:dialog:rkmp3_set:sclick:38:{
  1672.   if ($did(rkmp3_set,38).state = 1) {
  1673.     set %rm.ann.size $true
  1674.   }
  1675.   else {
  1676.     unset %rm.ann.size
  1677.   }
  1678. }
  1679.  
  1680. on *:dialog:rkmp3_set:sclick:39:{
  1681.   if ($did(rkmp3_set,39).state = 1) {
  1682.     set %rm.ann.stereo $true
  1683.   }
  1684.   else {
  1685.     unset %rm.ann.stereo
  1686.   }
  1687. }
  1688.  
  1689. on *:dialog:rkmp3_set:sclick:664:{
  1690.   run http://rkmp3.tunkeymicket.com/
  1691. }
  1692.  
  1693. on *:dialog:rkmp3_set:sclick:666:{
  1694.   set %rm.trigger $did(rkmp3_set,34).text
  1695.   set %rm.chanexcept $did(rkmp3_set,36).text
  1696. }
  1697.  
  1698. ;rkmp3_5share.mrc
  1699.  
  1700. menu nicklist {
  1701.   Media Overkill
  1702.   .rk.mp3
  1703.   ..Open rk.mp3:open_rkmp3
  1704.   ..File Transfers:rkmp3_filetransfer
  1705.   ..-
  1706.   ..View $1 $+ 's Playlist:rkmp3_vplist $$1 $chan
  1707. }
  1708.  
  1709. alias rkmp3_vplist {
  1710.   if (%rm.adcolour !isnum || %rm.adcolour < 0 || %rm.adcolour > 15) { set %rm.adcolour 2 }
  1711.   if ($address($1,0) = $null) {
  1712.     echo -a $rm.adcolour(rk.mp3:) Could not resolve $1 $+ 's address.  Please type /ial on, then reconnect to the server.
  1713.     return
  1714.   }
  1715.   if ($dialog(rkmp3_vplist) = rkmp3_vplist) {
  1716.     echo -a $rm.adcolour(rk.mp3:) Dialog already open.
  1717.     return
  1718.   }
  1719.   if ($sock(rmsock) = rmsock) {
  1720.     sockclose rmsock
  1721.   }
  1722.   sockopen rmsock $gettok($address($1,0),2,64) 7331
  1723.   dialog -md rkmp3_vplist rkmp3_vplist
  1724. }
  1725.  
  1726. dialog rkmp3_vplist {
  1727.   title rk.mp3 remote playlist viewer
  1728.   size -1 -1 300 260
  1729.  
  1730.   text "This is somebody else's playlist for rk.mp3.  From here you may request songs from the other user.", 2, 1 1 300 30, center
  1731.   text "Connecting to user...", 3, 1 30 300 15, center
  1732.   box "Playlist", 4, 1 50 300 175
  1733.   list 5, 5 65 290 165, vsbar extsel
  1734.   icon 6, 100 230 100 25, $scriptdirrequestmp3.bmp, noborder
  1735.  
  1736.   button "", 1, 0 0 0 0, ok
  1737. }
  1738.  
  1739. on *:sockopen:rmsock:{
  1740.   if ($dialog(rkmp3_vplist) = rkmp3_vplist) {
  1741.     did -r rkmp3_vplist 3
  1742.     if ($sockerr) {
  1743.       did -a rkmp3_vplist 3 Could not connect!!
  1744.     }
  1745.     else {
  1746.       did -a rkmp3_vplist 3 Connected to user, sending info...
  1747.       sockwrite -tn rmsock rkmp3 0 5 16 $me
  1748.     }
  1749.   }
  1750.   else {
  1751.     if (%rm.adcolour !isnum || %rm.adcolour < 0 || %rm.adcolour > 15) { set %rm.adcolour 2 }
  1752.     echo -a $rm.adcolour(rk.mp3:) You closed the dialog before I could connect!
  1753.     sockclose rmsock
  1754.   }
  1755. }
  1756.  
  1757. on *:sockread:rmsock:{
  1758.   if ($sockerr > 0) return
  1759.   sockread %read
  1760.   while ($sockbr != 0) {
  1761.     parsermsock %read
  1762.     sockread %read
  1763.   }
  1764. }
  1765.  
  1766. alias parsermsock {
  1767.   if ($dialog(rkmp3_vplist) != rkmp3_vplist) {
  1768.     sockclose rmsock
  1769.     return
  1770.   }
  1771.   did -r rkmp3_vplist 3
  1772.   if ($1 = close) {
  1773.     did -a rkmp3_vplist 3 Connection lost: $2-
  1774.     sockclose rmsock
  1775.   }
  1776.   else if ($1 = dnscheck) {
  1777.     did -a rkmp3_vplist 3 Server attempting DNS...
  1778.   }
  1779.   else if ($1 = ok) {
  1780.     did -a rkmp3_vplist 3 DNS Finished! Requesting playlist...
  1781.     sockwrite -tn rmsock reqlist
  1782.   }
  1783.   else if ($1 = mp3) {
  1784.     did -a rkmp3_vplist 3 Adding song # $+ $did(rkmp3_vplist,4,0).sel $+ ...
  1785.     did -a rkmp3_vplist 5 $2-
  1786.   }
  1787.   else if ($1 = finlist) {
  1788.     did -a rkmp3_vplist 3 Updated list.
  1789.   }
  1790.   else if ($1 = clear) {
  1791.     did -r rkmp3_vplist 5
  1792.     did -a rkmp3_vplist 3 Cleared list, checking for update
  1793.     sockwrite -tn rmsock reqlist
  1794.   }
  1795. }
  1796.  
  1797. on *:dialog:rkmp3_vplist:init:0:{
  1798.   if ($sock(rmsock) != rmsock) {
  1799.     dialog -x rkmp3_vplist
  1800.   }
  1801. }
  1802.  
  1803. on *:dialog:rkmp3_vplist:dclick:5:{
  1804.   if ($sock(rmsock) = rmsock) {
  1805.     sockwrite -tn rmsock req $did(rkmp3_vplist,5,1).sel
  1806.   }
  1807.   else {
  1808.     dialog -x rkmp3_vplist
  1809.   }
  1810. }
  1811.  
  1812. on *:dialog:rkmp3_vplist:sclick:6:{
  1813.   if ($sock(rmsock) = rmsock) {
  1814.     var %num 1
  1815.     while (%num <= $did(rkmp3_vplist,5,0).sel) {
  1816.       sockwrite -tn rmsock req $did(rkmp3_vplist,5,%num).sel
  1817.       inc %num
  1818.     }
  1819.   }
  1820.   else {
  1821.     dialog -x rkmp3_vplist
  1822.   }
  1823. }
  1824.  
  1825. on *:socklisten:rmlsock:{
  1826.   var %num 1
  1827.   while ($istok(%rm.socknum,%num,32) = $true) {
  1828.     inc %num
  1829.   }
  1830.   sockaccept rmclsock $+ %num
  1831.   set %rm.socknum %num %rm.socknum
  1832.   .timerrmclsock $+ %num 1 900 timeoutrmclsock %num
  1833. }
  1834.  
  1835. alias timeoutrmclsock {
  1836.   if ($sock(rmclsock $+ $1).lr < 900) {
  1837.     .timerrmclsock $+ $1 1 $calc(900 - $sock(rmclsock $+ $1).lr) timeoutrmclsock $1
  1838.   }
  1839.   else if ($sock(rmclsock $+ $1) = rmclsock $+ $1) {
  1840.     sockwrite -tn rmclsock $+ $1 close Timed out.
  1841.     rmclsockclose rmclsock $+ $1
  1842.   }
  1843. }
  1844.  
  1845. on *:sockread:rmclsock*:{
  1846.   if ($sockerr > 0) return
  1847.   sockread %read
  1848.   while ($sockbr != 0) {
  1849.     parsermclsock $right($sockname,-8) $address %read
  1850.     sockread %read
  1851.   }
  1852. }
  1853.  
  1854. alias parsermclsock {
  1855.   if ($3-6 = rkmp3 0 5 16) {
  1856.     sockwrite -tn rmclsock $+ $1 dnscheck
  1857.     dns $7
  1858.     set %rm.clsock $+ $1 $2 $7
  1859.   }
  1860.   else if ($gettok(%rm.clsock $+ $1,2,32) != $null) { return }
  1861.   if ($3 = reqlist) {
  1862.     var %num 1
  1863.     while ($hget(rkmp3_plist,$eval(song $+ %num)) != $null) {
  1864.       var %thesong = $hget(rkmp3_plist,$eval(song $+ %num))
  1865.       var %theinfo = $hget(rkmp3_plist,$eval(info $+ %num))
  1866.       var %minutes $int($calc($gettok(%theinfo,1,32) / 60000))
  1867.       var %seconds $int($calc(($gettok(%theinfo,1,32) - %minutes * 60000) / 1000))
  1868.       if (%seconds < 10) { var %seconds 0 $+ %seconds }
  1869.       sockwrite -tn rmclsock $+ $1 mp3 $chr(91) $+ %minutes $+ : $+ %seconds $+ ] $gettok(%theinfo,2-,32)
  1870.       inc %num
  1871.     }
  1872.     sockwrite -tn rmclsock $+ $1 finlist
  1873.   }
  1874.   else if ($3 = req) {
  1875.     dcc send % [ $+ rm.clsock $+ [ $1 ] ] $hget(rkmp3_plist,$eval(song $+ $4))
  1876.   }
  1877. }
  1878.  
  1879. on *:sockclose:rmclsock*:{
  1880.   rmclsockclose $sockname
  1881. }
  1882.  
  1883. alias rmclsockclose {
  1884.   set %rm.socknum $deltok(%rm.socknum,$findtok(%rm.socknum,$right($1,-8),1,32),32)
  1885.   unset %rm.clsock $+ $right($1,-8)
  1886. }
  1887.  
  1888. on *:dns:{
  1889.   var %num 1
  1890.   while (%num <= $numtok(%rm.socknum,32)) {
  1891.     if ($nick = $gettok(% [ $+ rm.clsock $+ [ %num ] ] ,2,32)) {
  1892.       if ($iaddress = $gettok(% [ $+ rm.clsock $+ [ %num ] ] ,1,32)) {
  1893.         set %rm.clsock $+ %num $gettok(% [ $+ rm.clsock $+ [ %num ] ] ,2,32)
  1894.         sockwrite -tn rmclsock $+ %num ok
  1895.       }
  1896.       else {
  1897.         sockwrite -tn rmclsock $+ %num close Nickname Spoof Attempt!!
  1898.         rmclsockclose rmclsock $+ %num
  1899.       }
  1900.     }
  1901.     inc %num
  1902.   }
  1903. }
  1904.  
  1905. on *:exit:{
  1906.   if ($sock(rmsock) = rmsock) { sockclose rmsock }
  1907.   while (%rm.socknum != $null) {
  1908.     rmclsockclose $gettok(%rm.socknum,1,32)
  1909.     sockclose rmclsock $+ $gettok(%rm.socknum1,32) Server closed mIRC
  1910.     set %rm.socknum $gettok(%rm.socknum,2-,32)
  1911.   }
  1912.   sockclose rmlsock
  1913. }
  1914.  
  1915. alias updateplist {
  1916.   var %temp rmclsock $+ $1
  1917.   if ($sock(%temp) = %temp) {
  1918.     sockwrite -tn %temp clear
  1919.   }
  1920. }
  1921.  
  1922. ;rkmp3_5transfer.mrc
  1923.  
  1924. alias rkmp3_filetransfer {
  1925.   if ($dialog(rkmp3_filetransfer) = rkmp3_filetransfer) {
  1926.     dialog -x rkmp3_filetransfer rkmp3_filetransfer
  1927.   }
  1928.   dialog -amd rkmp3_filetransfer rkmp3_filetransfer
  1929. }
  1930.  
  1931. dialog rkmp3_filetransfer {
  1932.   title "rk.mp3 File Transfer Dialog"
  1933.   size -1 -1 500 164
  1934.  
  1935.   list 11, 1 1 250 166, extsel vsbar
  1936.  
  1937.   box "Trasnfer Information", 21, 250 1 250 121
  1938.   text "Filename:", 22, 255 15 44 15
  1939.   text "", 23, 304 15 181 15
  1940.   text "Transfer Type:", 24, 255 30 69 15
  1941.   text "", 25, 329 30 166 15
  1942.   text "User:", 26, 255 45 24 15
  1943.   text "", 27, 284 45 211 15
  1944.   text "Address:", 28, 255 60 42 15
  1945.   text "", 29, 302 60 193 15
  1946.   text "Filesize:", 210, 255 75 38 15
  1947.   text "", 211, 298 75 78 15
  1948.   text "Sent:", 212, 255 90 25 15
  1949.   text "", 213, 285 90 91 15
  1950.   text "Status:", 214, 255 105 34 15
  1951.   text "", 215, 294 105 86 15
  1952.   text "CPS:", 216, 375 75 23 15
  1953.   text "", 217, 403 75 95 15
  1954.   text "Time:", 218, 375 90 27 15
  1955.   text "", 219, 407 90 91 15
  1956.  
  1957.   button "Clear Selected", 12, 252 124 246 18, ok
  1958.   button "Close", 13, 252 144 246 18, ok
  1959. }
  1960.  
  1961. alias timer {
  1962.   .timer $1-
  1963. }
  1964.  
  1965. on *:dialog:rkmp3_filetransfer:init:0:{
  1966.   .timer 1 0 rm.fts_updatetimer $dname
  1967. }
  1968.  
  1969. alias rm.fts_updatetimer {
  1970.   if ($dialog($1) = $1 && $1 != $null) {
  1971.     rm.fts_update
  1972.     rm.fts_refresh
  1973.     .timer 1 0 rm.fts_updatetimer $1
  1974.   }
  1975. }
  1976.  
  1977. alias fts_did {
  1978.   if ($1 = -l) {
  1979.     if ($did(rkmp3_filetransfer,$2,$3) != $4-) {
  1980.       did -o rkmp3_filetransfer $2-
  1981.     }
  1982.   }
  1983.   else if ($did(rkmp3_filetransfer,$1) != $2-) {
  1984.     did -o rkmp3_filetransfer $1 1 $2-
  1985.   }
  1986. }
  1987.  
  1988. alias rm.fts_update {
  1989.   if ($dialog(rkmp3_filetransfer) = rkmp3_filetransfer) {
  1990.     var %num = 1
  1991.     var %line = 1
  1992.     while (%num <= $get(0)) {
  1993.       fts_did -l 11 %line (RECV %num $+ ) $get(%num) $+ : $get(%num).file
  1994.       inc %num
  1995.       inc %line
  1996.     }
  1997.     var %num = 1
  1998.     while (%num <= $send(0)) {
  1999.       fts_did -l 11 %line (SEND %num $+ ) $send(%num) $+ : $send(%num).file
  2000.       inc %num
  2001.       inc %line
  2002.     }
  2003.     while (%line <= $did(rkmp3_filetransfer,11).lines) {
  2004.       did -d rkmp3_filetransfer 11 %line
  2005.       inc %line
  2006.     }
  2007.   }
  2008. }
  2009.  
  2010. alias rm.fts_refresh {
  2011.   if ($dialog(rkmp3_filetransfer) = rkmp3_filetransfer) {
  2012.     var %toget = $did(rkmp3_filetransfer,11,1).seltext
  2013.     if (%toget != $null) {
  2014.       %toget = $left($right($gettok(%toget,1-2,32),-1),-1)
  2015.       var %num = $gettok(%toget,2,32)
  2016.       fts_did 25 $gettok(%toget,1,32)
  2017.       if ($gettok(%toget,1,32) = RECV) {
  2018.         fts_did 23 $get(%num).file
  2019.         fts_did 27 $get(%num)
  2020.         fts_did 29 $get(%num).ip
  2021.         fts_did 211 $get(%num).size
  2022.         fts_did 213 $get(%num).rcvd
  2023.         if ($get(%num).status = active) {
  2024.           fts_did 215 (Active) $round($calc($get(%num).rcvd / $get(%num).size * 100),1) $+ %
  2025.         }
  2026.         else if ($get(%num).status = inactive) {
  2027.           fts_did 215 Inactive
  2028.         }
  2029.         else if ($get(%num).status = waiting) {
  2030.           fts_did 215 Waiting...
  2031.         }
  2032.         fts_did 217 $get(%num).cps
  2033.         fts_did 219 $duration($get(%num).secs)
  2034.       }
  2035.       else if ($gettok(%toget,1,32) = SEND) {
  2036.         fts_did 23 $send(%num).file
  2037.         fts_did 27 $send(%num)
  2038.         fts_did 29 $send(%num).ip
  2039.         fts_did 211 $send(%num).size
  2040.         fts_did 213 $send(%num).sent
  2041.         if ($send(%num).status = active) {
  2042.           fts_did 215 (Active) $round($calc($send(%num).sent / $send(%num).size * 100),1) $+ %
  2043.         }
  2044.         else if ($send(%num).status = inactive) {
  2045.           fts_did 215 Inactive
  2046.         }
  2047.         else if ($send(%num).status = waiting) {
  2048.           fts_did 215 Waiting...
  2049.         }
  2050.         fts_did 217 $send(%num).cps
  2051.         fts_did 219 $duration($send(%num).secs)
  2052.       }
  2053.     }
  2054.     else {
  2055.       did -r rkmp3_filetransfer 23
  2056.       did -r rkmp3_filetransfer 25
  2057.       did -r rkmp3_filetransfer 27
  2058.       did -r rkmp3_filetransfer 29
  2059.       did -r rkmp3_filetransfer 211
  2060.       did -r rkmp3_filetransfer 213
  2061.       did -r rkmp3_filetransfer 215
  2062.       did -r rkmp3_filetransfer 217
  2063.       did -r rkmp3_filetransfer 219
  2064.     }
  2065.   }
  2066. }
  2067.  
  2068. on *:dialog:rkmp3_filetransfer:sclick:12:{
  2069.   var %send, %num = 1, %sel
  2070.   while (%num <= $did(rkmp3_filetransfer,11,0).sel) {
  2071.     %sel = %sel $did(rkmp3_filetransfer,11,%num).sel
  2072.     if (%send = $null && $chr(40) $+ SEND * iswm $did(rkmp3_filetransfer,11,%num).seltext) {
  2073.       %send = %num
  2074.     }
  2075.     inc %num
  2076.   }
  2077.   if (%send = $null) { %send = 0 }
  2078.   while (%sel != $null) {
  2079.     if ($gettok(%sel,1,32) >= %send) {
  2080.       var %danum = 1, %num = 1
  2081.       while (%num < $calc($gettok(%sel,1,32) - %send + 1)) {
  2082.         if ($send(%num) = $send($calc($gettok(%sel,1,32) - %send + 1))) {
  2083.           inc %danum
  2084.         }
  2085.         inc %num
  2086.       }
  2087.       close -s $+ %danum $send($calc($gettok(%sel,1,32) - %send + 1))
  2088.     }
  2089.     else {
  2090.       var %danum = 1, %num = 1
  2091.       while (%num < $gettok(%sel,1,32)) {
  2092.         if ($get(%num) = $get($gettok(%sel,1,32))) {
  2093.           inc %danum
  2094.         }
  2095.         inc %num
  2096.       }
  2097.       close -g $+ %danum $get($gettok(%sel,1,32))
  2098.       dec %send
  2099.     }
  2100.     rm.fts_update
  2101.     %sel = $gettok(%sel,2-,32)
  2102.     var %num = 1
  2103.     while (%num <= $numtok(%sel,32)) {
  2104.       %sel = $puttok(%sel,$calc($gettok(%sel,%num,32) - 1),%num,32)
  2105.       inc %num
  2106.     }
  2107.   }
  2108.   rm.fts_refresh
  2109. }
  2110.