DSQ - DCC Send Queue — File Browser

DSQ-DCCSendQueuev0.7 / DSQ-DCCSendQueuev0.7 / dcc_queue_v0.7.mrc

dcc_queue_v0.7.mrc — 7.64 KB — Download this file

;### DSQ - DCC Send Queue.
;#   by dramz 2004.


;### Read the dcc_queue_readme.txt for more information on this mIRC script.

;### Do not edit below this line if you don't know what you're doing!

alias dsq_Version { return 0.7 }

menu query,nicklist {
  $iif(!$dsq_Reciver($1,$active),$style(2)) DCC Send Queue $dsq_Version
  . $+($iif($send($dsq_Reciver($1,$active),0) >= 1,$style(2) S,Start s),ending files in queue, $chr(32), $chr(40),$iif($lines($dsq_QueueFile($dsq_Reciver($1,$active))) >= 1,$lines($dsq_QueueFile($dsq_Reciver($1,$active))),No) files in queue,$chr(41)) : dsq_DccSend $dsq_Reciver($1,$active) $read($dsq_QueueFile($dsq_Reciver($1,$active)),1)
  . $iif(!$send($dsq_Reciver($1,$active),0),$style(2)) Pause after current send : set %dsq_status_ [ $+ [ $dsq_Reciver($1,$active) ] ] paused | dsq_WinEcho $dsq_Reciver($1,$active) Pause after current send.
  .-
  .Add directory to queue : dsq_AddDirToQueue $dsq_Reciver($1,$active)
  .Add file(s) to queue : dsq_AddFileToQueue $dsq_Reciver($1,$active)
  .-
  .List files in queue : dsq_ListQueue $dsq_Reciver($1,$active)
  .Remove a file in queue : dsq_RemoveFileFromQueue $dsq_Reciver($1,$active)
  .Remove all files in queue : dsq_RemoveAllFilesInQueue $dsq_Reciver($1,$active)
  .-
  .DCC Send Speed Limit $+($chr(40),$dsq_SpeedLimit,$chr(41)) : dsq_SpeedLimit $dsq_Reciver($1,$active) $$input(Enter Speedlimit in kilobytes/s $crlf $+ (Max: 1240000000.  Min: 1.  Disable: off) $crlf $+ $crlf $+ Example: "20" for 20kilobytes/s or "off" for No Limit , e,Speed Limit)
  . $iif($group(#dsq_remotecommand) == on,$style(1)) Allow users to !pause,!resume and check !status for filesends : $iif($group(#dsq_remotecommand) == on,.disable #dsq_remotecommand,.enable #dsq_remotecommand)
}

alias dsq_Reciver {
  if (($1 == $2) || ($2 ischan)) { return $1 }
  else { return $2 }
}
alias dsq_QueueFile { return $+(",$scriptdirDCC_Queue_ [ $+ [ $replace($$1,\,_,/,_,|,_) ] $+ ] .txt,") }

alias dsq_SpeedLimit {
  if (!$2) { return $iif(%dsq_SpeedLimit isnum, $calc(%dsq_SpeedLimit / 8), No Limit) | return }
  else if ($2 == off) { unset %dsq_SpeedLimit | dsq_WinEcho $1 DCC Send Speed Limit is disabled. | return }
  else if ($2 isnum) { set %dsq_SpeedLimit $calc($2 * 8) | dsq_WinEcho $1 DCC Send Speed Limit is set to $2 kilobytes/s. | return }
  else { dsq_WinEcho $1 DCC Send Speed Limit: Invalid input. Please enter a number. }
}

alias dsq_DeleteQueue {
  linesep $$1
  if ($input(Sure you want to delete the queuefile for $$1 $+ ?,y,DCC Queue)) { 
    .remove $dsq_QueueFile($$1)
    dsq_WinEcho $$1 Deleted $$1 $+ 's queue.
  }
  else { dsq_WinEcho $$1 Queue delete cancelled. }
  linesep $$1
}
alias dsq_RemoveAllFilesInQueue {
  linesep $$1
  if ($input(Sure you want to delete ALL files in queue for $$1 $+ ?,y,DCC Queue)) {
    if ($send($$1,0) == 0) { .remove $dsq_QueueFile($$1) }
    else ($lines($dsq_QueueFile($$1)) >= 2) {
      var %dsq_tmp = $read($dsq_QueueFile($$1),1)
      .remove $dsq_QueueFile($$1)
      write $dsq_QueueFile($$1) %dsq_tmp
    }
    dsq_WinEcho $$1 Files in queue removed.
  }
  else { dsq_WinEcho $$1 Queue delete cancelled. }
  linesep $$1
}
alias dsq_RemoveFileFromQueue {
  if ($2 !isnum) { var %dsq_tmp = $input(Enter the queue number to remove from list. $+ $crlf (Use "List files in queue" to get the queue number),e,DCC Queue) }
  else { var %dsq_tmp = $2 }
  linesep $$1
  if ((%dsq_tmp isnum) && ($read($dsq_QueueFile($$1),%dsq_tmp) != $null)) { 
    var %dsq_tmp2 = $read($dsq_QueueFile($$1),%dsq_tmp)
    .write -dl [ $+ [ %dsq_tmp ] ] $dsq_QueueFile($$1)
    dsq_WinEcho $$1 Removed file %dsq_tmp2 with queue number %dsq_tmp from queue.
  }
  else { dsq_WinEcho $$1 Queue remove cancelled. }
  linesep $$1
}

alias dsq_AddDirToQueue {
  var %dsq_tmp = $sdir($iif($exists(%dsq_dir),%dsq_dir,C:\),DCC Queue)
  if ($exists(%dsq_tmp)) { set %dsq_dir $nofile(%dsq_tmp) }
  linesep $$1
  if ($exists(%dsq_tmp)) {
    dsq_WinEcho $$1 Adding %dsq_tmp to $$1 $+ 's queue...
    var %dsq_tmp2 = $findfile(%dsq_tmp,*.*,0)
    var %dsq_tmp3 = %dsq_tmp2
    while (%dsq_tmp2 >= 1) {
      dsq_AddToQueue $$1 $findfile(%dsq_tmp,*.*,%dsq_tmp2)
      dec %dsq_tmp2 1
    }
    dsq_WinEcho $$1 %dsq_tmp3 files added to queue. Total files in queue is $lines($dsq_QueueFile($$1)) $+ .
  }
  else { dsq_WinEcho $$1 No files added to queue. }
  linesep $$1
}
alias dsq_AddFileToQueue {
  var %dsq_tmp = $msfile($iif($exists(%dsq_dir),%dsq_dir,C:\),DCC Queue,Add)
  if ($exists(%dsq_tmp)) { set %dsq_dir $nofile(%dsq_tmp) }
  linesep $$1
  if ((%dsq_tmp isnum) && (%dsq_tmp >= 1)) {
    dsq_WinEcho $$1 Adding files to $$1 $+ 's queue...
    while (%dsq_tmp >= 1) {
      var %dsq_tmpfile = $msfile(%dsq_tmp)
      if ($exists(%dsq_tmpfile)) { set %dsq_dir $nofile(%dsq_tmpfile) }
      dsq_AddToQueue $$1 %dsq_tmpfile
      dec %dsq_tmp 1
    }
    dsq_WinEcho $$1 $msfile(0) files added to queue. Total files in queue is $lines($dsq_QueueFile($$1)) $+ .
  }
  else { dsq_WinEcho $$1 No files added to queue. }
  linesep $$1
}
alias dsq_AddToQueue { write $dsq_QueueFile($$1) $$2- }

alias dsq_ListQueue {
  var %dsq_tmp = $lines($dsq_QueueFile($$1))
  var %dsq_tmp2 = %dsq_tmp
  linesep $$1
  if (%dsq_tmp >= 1) {
    dsq_WinEcho $$1 Listing files in queue...
    while (%dsq_tmp >= 1) {
      echo $colour(info) $$1 $str($chr(160),3) %dsq_tmp - $read($dsq_QueueFile($$1),%dsq_tmp)
      dec %dsq_tmp 1
    }
    dsq_WinEcho $$1 Done. $+(,%dsq_tmp2,) files in queue.
  }
  else { dsq_WinEcho $$1 No files in queue. }
  linesep $$1
}
alias dsq_WinEcho {
  if (!$query($$1)) { query -n $$1 }
  echo $colour(info) $$1 $timestamp * $2-
}
alias dsq_DccSend {
  .dcc maxcps 9999999999
  if (!$exists($2-)) { dsq_WinEcho $$1 Requested file doesn't seem to exist. (You need to add files to queue in order to start sending.) }
  else { dcc send -cl0 $$1 $+(",$2-,") }
}
on *:FILESENT:*: {
  if ($filename == $read($dsq_QueueFile($nick),1)) {
    dsq_WinEcho $nick Sent $+(",$filename,".)
    linesep $nick
    unset %dsq_retry_ [ $+ [ $nick ] ]
    var %dsq_tmp = 1
    while (%dsq_tmp == 1) {
      .write -dl1 $dsq_QueueFile($nick)
      if (%dsq_status_ [ $+ [ $nick ] ] == paused) { dsq_WinEcho $nick Paused. | msg $nick Filsend is paused. | goto end }
      if ($lines($dsq_QueueFile($nick)) < 1) { dsq_WinEcho $nick No more files left in queue. Halt. | goto end }
      if (!$exists($read($dsq_QueueFile($nick),1))) { dsq_WinEcho $nick File doesn't seem to exist. Deleting it from queue. }
      else { dsq_WinEcho $nick $calc($lines($dsq_QueueFile($nick)) -1) files left in queue. | dsq_WinEcho $nick Sending: $+(",$read($dsq_QueueFile($nick),1),".) | %dsq_tmp = 0 | dsq_DccSend $nick $read($dsq_QueueFile($nick),1) } 
    }
  }
  :end
}
on *:SENDFAIL:*: {
  if ($filename == $read($dsq_QueueFile($nick),1)) {
    dsq_WinEcho $nick Failed to send $+(",$filename,".) 
    if (%dsq_retry_ [ $+ [ $nick ] ] >= 2) {
      dsq_WinEcho $nick Send failed after 3 retries.     
      dsq_WinEcho $nick Right-click in the window and select "Start sending files in queue" in the menu to resume sending.
    }
    else {
      inc %dsq_retry_ [ $+ [ $nick ] ] 1
      dsq_WinEcho $nick Trying to resend file in 30 seconds
      .timer 1 30 dsq_DccSend $nick $read($dsq_QueueFile($nick),1)
    }
  }
}

on *:NICK: {
  if ($exists($dsq_QueueFile($nick))) {
    if ($lines($dsq_QueueFile($nick)) >= 1) {
      dsq_WinEcho $newnick Nickchange: $nick -> $newnick $+ . Renamed DCC Send Queue-file to suit new nickname.
      .rename $dsq_QueueFile($nick) $dsq_QueueFile($newnick)
    }
    else {
      .remove $dsq_QueueFile($nick)
    }
  }
}


;#EOF