XDCC Autoresume/Autoqueue Stealth Script — File Browser

XDCCAutoresumeAutoqueueStealthScriptv4.2.0 / XDCCAutoresumeAutoqueueStealthScriptv4.2.0 / XDCCStealthSettings.mrc

XDCCStealthSettings.mrc — 75.12 KB — Download this file

;-------------------------------------------------------------------------
;
; Name: XDCC Autoresume/Autoqueue Stealth Script
; File: XDCCStealthSettings.mrc
; Version: 4.1.5
; Author: Werecow
; Date: 23-02-2005
;
; Contents: The settings saving/loading methods, and a few setting toggle functions, plus
;           all the important settings variable identifiers and hash table access methods.
;
;
; WARNING: many channels will ban you for using XDCC leech scripts. While this is a silly rule,
; it is your responsibility. Use this wisely. Don't use it in such channels, or don't get caught.
; And play nice for the other people that want to use the XDCCs! If you leech em dry other people 
; may be unable to get on.
;
;-------------------------------------------------------------------------










;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------Hash Table Functions----------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------










;-------------------------------------------------------------------------
; /hashtable.init $1 $2:
; $1: Hash table name.
; $2: Hash table size.
; Loads a hash table if a file of name $1 exists, and creates a new table 
; if it doesn't exist.
;-------------------------------------------------------------------------
alias hashTable.init {
  if ($isFile($1)) { 
    hmake $1 $2
    /debuglog Hash File found: Made hash table $1 $2    
    hload $1 $1 
    /debuglog Loaded file $1
  }
  else {
    /debuglog No Hash File found: Made hash table $1 $2    
    hmake $1 $2
    /debuglog Saved file $1
    hsave -o $1 $1
  }
}
;-------------------------------------------------------------------------



;-------------------------------------------------------------------------
; Networks Hash Table identifiers and aliases:
; $networksTable, $networksTable.exists($1), /networksTable.init, 
; /networksTable.add $1, /networksTable.del $1, /networksTable.free:
; $1: Network name.
; Network hash table access methods and identifiers. Used primarily in 
; the hotlink event parsers.
;-------------------------------------------------------------------------
; Identifiers:
;-------------------------------------------------------------------------
alias networksTable { return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(servers.apf)) }
;-------------------------------------------------------------------------
alias networksTable.exists {
  if ($hget($networksTable,$1) != $null) { return $1 }
  else { return $null }
}
;-------------------------------------------------------------------------
; Aliases:
;-------------------------------------------------------------------------
alias networksTable.init { 
  if (!$exists($networksTable) && $exists(servers.ini)) {   
    hashTable.init $networksTable 40 
    var %startline = $read(servers.ini,wnt,[servers])
    var %i = $readn + 1
    while (%i < $lines(servers.ini)) {
      var %servername = $removecs($gettok($gettok($gettok($read(servers.ini,nt,%i),1,32),2,61),1,58),SERVER)
      if (%servername != $null && Random !isin %servername && !$networksTable.exists(%servername)) { $networksTable.add(%servername) }
      inc %i
    }
    /outputxdccinfo 
  }
  else { hashTable.init $networksTable 20 }
}
;-------------------------------------------------------------------------
alias networksTable.add {
  if (!$hget($networksTable)) { networksTable.init }
  hadd -m $networksTable $1 $1
  hsave -o $networksTable $networksTable
  /outputxdccinfo Created new hash table entry for network3 $1 $+ .
}
;-------------------------------------------------------------------------
alias networksTable.del {
  hdel $networksTable $1
  hsave -o $networksTable $networksTable
}
;-------------------------------------------------------------------------
alias networksTable.free { 
  hsave -o $networksTable $networksTable
  /hfree $networksTable
}
;-------------------------------------------------------------------------
alias networksTable.item { return $hget($networksTable,$1).item }
;-------------------------------------------------------------------------
alias networksTable.items { return $hget($networksTable,0).item }
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------




;-------------------------------------------------------------------------
; Trigger Hash Table Aliases:
;-------------------------------------------------------------------------
; /triggerHash.init, /triggerHash.add $1 $2 $3 $4 $5 $6-, 
; /triggerHash.updatePackSchemeNr $1 $2 $3, /triggerHash.del $1 $2, 
; /triggerHash.delmatch $1-, /triggerHash.free, /triggerHash.remove, 
; /triggerHash.restore:
; $1 (.add): $network.
; $2 (.add): $nick.
; $3 (.add): $chan.
; $4 (.add): Trigger Scheme Nr..
; $5 (.add): Pack Scheme Nr..
; $6-(.add): Trigger.
; $1 (.updatePackSchemeNr): $network.
; $2 (.updatePackSchemeNr): $nick.
; $3 (.updatePackSchemeNr): Pack Scheme Nr..
; $1 (.del): $network.
; $2 (.del): $nick.
; $1-(.delmatch): Wildcard string to be matched in DATA fields.
; Initiate/Create/Load, add items to, update pack scheme number for, 
; delete item from, find and delete item with wildcard match for, 
; free memory used for, remove file and free memory for, and recover
; broken table from backup file for Trigger Hash table.
;-------------------------------------------------------------------------
alias triggerHash.init { 
  hashTable.init $triggerHash 200 
  if ($triggerHash.items < $lines($triggerbackup)) {
    /outputxdccinfo 4ERROR: Less items in trigger file than in backup file -> Possible XDCC Trigger Hash file corruption. Adding items from backup file to trigger file.
    /triggerHash.restore
  }
  else {
    /outputxdccinfo Trigger Hash table loaded. No restore necessary.
  }
}
;-------------------------------------------------------------------------
alias triggerHash.add {
  if (!$hget($triggerHash)) { triggerHash.init }
  hadd -m $triggerHash $1 $+ ¦ $+ $2 $2 $1 $3 $4 $5 $6-
  hsave -o $triggerHash $triggerHash
  if (!$read($triggerbackup, wnt, $1 $2 *)) {
    /write -a $triggerbackup $1 $2 $3 $4 $5 $6-
  }
  elseif (!$read($triggerbackup, wnt, $1 $2 $3 $4 $5 $6-)) {
    /write -dw" $+ $1 $2 *" $triggerbackup
    /write -a $triggerbackup $1 $2 $3 $4 $5 $6-
  }
}
;-------------------------------------------------------------------------
alias triggerHash.updatePackSchemeNr {
  /triggerHash.add $1 $2 $triggerHash.getChan($1, $2) $triggerHash.getTsnr($1, $2) $3 $triggerHash.getTrigger($1, $2)
}
;-------------------------------------------------------------------------
alias triggerHash.updateChannel {
  if ($triggerHash.exists($1,$2) && $3 !isin $triggerHash.getChans($1, $2)) {
    if ($triggerHash.getChans($1, $2) != |UNKNOWN|) {
      /triggerHash.add $1 $2 $replace($remove($triggerHash.getChans($1, $2),|UNKNOWN|,|UNKNOWN|) $+  $+ $3,,) $triggerHash.getTsnr($1, $2) $triggerHash.getPsnr($1, $2) $triggerHash.getTrigger($1, $2) 
    }
    else {
      /triggerHash.add $1 $2 $3 $triggerHash.getTsnr($1, $2) $triggerHash.getPsnr($1, $2) $triggerHash.getTrigger($1, $2) 
    }
    /outputxdccinfo Updated channel for "3 $+ $1 7 $+ $2 $+ 12 $triggerHash.getChans($1, $2) ||5 " $+ $triggerHash.getTrigger($1, $2) $+ " 14(Trigger Scheme $triggerHash.getTsnr($1, $2) $+ ).
    /outputxdccinfo 
  } 
}
;-------------------------------------------------------------------------
alias triggerHash.del {
  hdel $triggerHash $1 $+ ¦ $+ $2
  hsave -o $triggerHash $triggerHash
  /write -dw" $+ $1 $2 *" $triggerbackup
  if ($botliston == TRUE && $fline(@XDCC_Info,$2,1,1)) { dline -lc7 @XDCC_Info $fline(@XDCC_Info,$2,1,1) }
}
;-------------------------------------------------------------------------
alias triggerHash.delMatch {
  set %botnick $triggerHash.findNick(* $+ $1- $+ *)
  hdel -w $triggerHash $1-
  hsave -o $triggerHash $triggerHash
  /write -dw"* $+ $1- $+ *" $triggerbackup
  if ($botliston == TRUE && $fline(@XDCC_Info,%botnick,1,1)) { dline -lc7 @XDCC_Info $fline(@XDCC_Info,%botnick,1,1) }
}
;-------------------------------------------------------------------------
alias triggerHash.free { 
  hsave -o $triggerHash $triggerHash
  /hfree $triggerHash 
}
;-------------------------------------------------------------------------
alias triggerHash.remove { 
  /hfree $triggerHash 
  .remove $triggerHash
  .remove $triggerbackup
  if ($botliston == TRUE && $fline(@XDCC_Info,$nick,1,1)) { /dline -lc7 @XDCC_Info 1- $+ $line(@XDCC_Info,0,1) }
}
;-------------------------------------------------------------------------
alias triggerHash.restore {
  /outputxdccinfo Adding all items in backup file to Trigger Hash file, please wait (this can take a while)5...
  var %i = 1   
  while (%i <= $lines($triggerbackup) && %i < 1000000) {
    /triggerHash.add $read($triggerbackup, nt, %i)
    inc %i
  }
  if ($triggerHash.items >= $lines($triggerbackup)) {
    /outputxdccinfo 4 $+ %i $+ : Restored Trigger Hash file from triggerbackup file (There should be at least $lines($triggerbackup) bots in the library right now).
  }
  else { /outputxdccinfo 4 $+ %i $+ : 4May Have Failed to Restore Trigger Hash file from triggerbackup file (less items in hash table than lines in backup file). }
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------



;-------------------------------------------------------------------------
; Trigger Hash Table Identifiers:
;-------------------------------------------------------------------------
; $triggerHash, $triggerHash.exists($1, $2), 
; $triggerHash.findAll[...]($1, $2-), $triggerHash.find[...]($1-), 
; $triggerHash.get[...]($1, $2), $triggerHash.network($1), 
; $triggerHash.item($1), $triggerHash.item.[...]($1), $triggerHash.items:
; $1 (.exists): $network.
; $2 (.exists): $nick.
; $1 (.findAll*): Item Number.
; $2-(.findAll*): Wildcard string to be matched in DATA fields.
; $1-(.find*): Wildcard string to be matched in DATA fields.
; $1 (.get*): $network.
; $2 (.get*): $nick.
; $1 (.network): $nick.
; $1 (.item): Trigger Hash Table Entry Number.
; $1 (.item.*): Trigger Hash Table Entry Number.
; Return filename, check for existance, find nr $1 that matches $2, find 
; first match for $2, retrieve data field from key, retrieve network for 
; nick, retrieve data for entry nr $1, retrieve specific item for entry 
; $1, retrieve total number of entries in Trigger Hash Table.
;-------------------------------------------------------------------------
alias triggerHash { return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdcctriggerfile)) }
;-------------------------------------------------------------------------
alias triggerHash.exists { 
  if ($hget($triggerHash, $1 $+ ¦ $+ $2) != $null) { return TRUE }
  else { return $null }
}
;-------------------------------------------------------------------------
alias triggerHash.findAllNetwork { return $gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 2, 32) }
alias triggerHash.findAllNick { return $gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 1, 32) }
alias triggerHash.findAllChans { return $replace($gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 3, 32),,$chr(32)) }
alias triggerHash.findAllChan { return $gettok($triggerHash.findAllChans($1, $2-), 1, 32) }
alias triggerHash.findAllTsnr { return $gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 4, 32) }
alias triggerHash.findAllTsnr { return $gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 5, 32) }
alias triggerHash.findAllTrigger { return $gettok($hget($triggerHash, $hfind($triggerHash, $2-, $1, w).data), 6-, 32) }
;-------------------------------------------------------------------------
alias triggerHash.findNetwork { return $gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 2, 32) }
alias triggerHash.findNick { return $gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 1, 32) }
alias triggerHash.findChans { return $replace($gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 3, 32),,$chr(32)) }
alias triggerHash.findChan { return $gettok($triggerHash.findChans($1-), 1, 32) }
alias triggerHash.findTsnr { return $gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 4, 32) }
alias triggerHash.findPsnr { return $gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 5, 32) }
alias triggerHash.findTrigger { return $gettok($hget($triggerHash, $hfind($triggerHash, $1-, 1, w).data), 6-, 32) }
;-------------------------------------------------------------------------
alias triggerHash.getNetwork { return $gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 2, 32) }
alias triggerHash.getNick { return $gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 1, 32) }
alias triggerHash.getChans { return $replace($gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 3, 32),,$chr(32)) }
alias triggerHash.getChan { return $gettok($triggerHash.getChans($1, $2), 1, 32) }
alias triggerHash.getTsnr { return $gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 4, 32) }
alias triggerHash.getPsnr { return $gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 5, 32) }
alias triggerHash.getTrigger { return $gettok($hget($triggerHash, $1 $+ ¦ $+ $2), 6-, 32) }
;-------------------------------------------------------------------------
alias triggerHash.network { 
  if (!$1) { return $null }
  elseif ($triggerHash.exists($network, $1) != $null) { return $network }
  else { return $triggerHash.findNetwork($1 *) }
}
;-------------------------------------------------------------------------
alias triggerHash.item { return $hget($triggerHash,$1).item }
;-------------------------------------------------------------------------
alias triggerHash.item.network { return $gettok($triggerHash.item($1), 1, 166) }
alias triggerHash.item.nick { return $gettok($triggerHash.item($1), 2, 166) }
alias triggerHash.item.chans { return $triggerHash.getChans($triggerHash.item.network($1), $triggerHash.item.nick($1)) }
alias triggerHash.item.chan { return $gettok($triggerHash.item.chans($1),1,32) }
alias triggerHash.item.tsnr { return $triggerHash.getTsnr($triggerHash.item.network($1), $triggerHash.item.nick($1)) }
alias triggerHash.item.tsnr { return $triggerHash.getPsnr($triggerHash.item.network($1), $triggerHash.item.nick($1)) }
alias triggerHash.item.trigger { return $triggerHash.getTrigger($triggerHash.item.network($1), $triggerHash.item.nick($1)) }
;-------------------------------------------------------------------------
alias triggerHash.items { return $hget($triggerHash,0).item }
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------









;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;--------------------------Identifiers Section----------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------









;-------------------------------------------------------------------------
; $xdccdir & $preventdoubleslash & $[filename]:
; $1 (in $networkfile($1)): Network.
; $1 (in $statsfile($1)): Stats file number.
; Returns the xdccdir or -file with illegal characters replaced and double
; directory slashes removed.
;-------------------------------------------------------------------------
alias xdccdir { 
  if (%XDCCdir == $null) { set %XDCCdir XDCC\ }
  return $replxdccdir(%XDCCdir) 
}
alias xdcctriggerfile { return $triggerHash }
alias autoconnectfile { 
  if (%autoconnectfile == $null) { set %autoconnectfile autoconnect.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%autoconnectfile)) 
}
alias triggerbackup { 
  if (%triggerbackup == $null) { set %triggerbackup triggerbackup.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%triggerbackup)) 
}
alias alternatebotsfile { 
  if (%alternatebotsfile == $null) { set %alternatebotsfile alternatebotsfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%alternatebotsfile)) 
}
alias autoresumedisablefile { 
  if (%autoresumedisablefile == $null) { set %autoresumedisablefile autoresumedisabled.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%autoresumedisablefile)) 
}
alias autoresumesenddisablefile { 
  if (%autoresumesenddisablefile == $null) { set %autoresumesenddisablefile autosenddisabled.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%autoresumesenddisablefile)) 
}
alias xdccsinprogress { 
  if (%xdccsinprogress == $null) { set %xdccsinprogress xdccsending.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccsinprogress)) 
}
alias xdcchandelingq { 
  if (%xdcchandelingq == $null) { set %xdcchandelingq xdcchandelingq.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdcchandelingq)) 
}
alias botqueuefile { 
  if (%botqueuefile == $null) { set %botqueuefile botqueuefile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%botqueuefile)) 
}
alias tempbotqueuefile { 
  if (%tempbotqueuefile == $null) { set %tempbotqueuefile tempbotqueuefile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%tempbotqueuefile)) 
}
alias networksendfile { 
  if (%networksendfile == $null) { set %networksendfile activenetworks.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%networksendfile))
}
alias xdccsessiongetfile { 
  if (%xdccsessiongetfile == $null) { set %xdccsessiongetfile sessiongets.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccsessiongetfile))
}
alias xdccsessionsendfile {
  if (%xdccsessionsendfile == $null) { set %xdccsessionsendfile sessionsends.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccsessionsendfile))
}
alias lastxdccsessiongetfile {
  if (%lastxdccsessiongetfile == $null) { set %lastxdccsessiongetfile lastxdccsessiongetfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%lastxdccsessiongetfile))
}
alias lastxdccsessionsendfile {
  if (%lastxdccsessionsendfile == $null) { set %lastxdccsessionsendfile lastxdccsessionsendfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%lastxdccsessionsendfile))
}
alias xdcctotalgetfile {
  if (%xdcctotalgetfile == $null) { set %xdcctotalgetfile xdcctotalgetfile.apf }
  return $preventdoubleslash($XDCCDir $+ \ $+ $replxdccfile(%xdcctotalgetfile))
}
alias xdcctotalsendfile {
  if (%xdcctotalsendfile == $null) { set %xdcctotalsendfile xdcctotalsendfile.apf }
  return $preventdoubleslash($XDCCDir $+ \ $+ $replxdccfile(%xdcctotalsendfile)) 
}
alias xdccsessionfailfile {
  if (%xdccsessionfailfile == $null) { set %xdccsessionfailfile xdccsessionfailfile.apf }
  return $preventdoubleslash($XDCCDir $+ \ $+ $replxdccfile(%xdccsessionfailfile))
}
alias lastsessionfailfile {
  if (%lastsessionfailfile == $null) { set %lastsessionfailfile lastsessionfailfile.apf }
  return $preventdoubleslash($XDCCDir $+ \ $+ $replxdccfile(%lastsessionfailfile))
}
alias totalfailfile {
  if (%totalfailfile == $null) { set %totalfailfile totalfailfile.apf }
  return $preventdoubleslash($XDCCDir $+ \ $+ $replxdccfile(%totalfailfile)) 
}
alias xdccqueueposfile { 
  if (%xdccqueueposfile == $null) { set %xdccqueueposfile queueposfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccqueueposfile)) 
}
alias networkfile { return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile($1) $+ .apq) }
alias chankeyfile { 
  if (%chankeyfile == $null) { set %chankeyfile chankeyfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%chankeyfile)) 
}
alias dccallownetworkfile { 
  if (%dccallownetworkfile == $null) { set %dccallownetworkfile dccallownetworkfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%dccallownetworkfile))
}
alias xdccdebugfile { 
  if (%xdccdebugfile == $null) { set %xdccdebugfile XDCCscriptLOG.log }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccdebugfile))
}
alias xdccwishlist { 
  if (%xdccwishlist == $null) { set %xdccwishlist xdccwishlist.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccwishlist))
}
alias alternatedccserverfile { 
  if (%alternatedccserverfile == $null) { set %alternatedccserverfile alternatedccserverfile.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%alternatedccserverfile))
}
alias statsfile { 
  if (%statsfile == $null) { set %statsfile xdccstatsfile }
  return $xdccdir $+ \ $+ $replxdccfile(%statsfile) $+ . $+ $1 $+ .stats 
}
alias xdccautomovepathfile {
  if (%xdccautomovepathfile == $null) { set %xdccautomovepathfile automove.apf }
  return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(%xdccautomovepathfile))
}
alias joinchansfile { return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile(join $+ $1 $+ chanlist) $+ .apf) }
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------



;-------------------------------------------------------------------------
; $getpfffilenm($1, $2), $getqfilenm($1, $2) & $getoldfilenm($1, $2):
; $1: Botnetwork.
; $2: Botnick.
; Return the .pff/.q/.old filename in the XDCCdir based on $network and 
; $nick input strings. Illegal characters are replaced.
;-------------------------------------------------------------------------
alias getpfffilenm { return $preventdoubleslash($xdccdir $+ \ $+ $replxdccfile($1 $+ ¦ $+ $2 $+ .pff)) }
alias getqfilenm { return $replace($getpfffilenm($1, $2),.pff,.q) }
alias getfpffilenm { return $replace($getpfffilenm($1, $2),.pff,.fpf) }
alias getoldfilenm { return $getpfffilenm($1, $2) $+ .old }
alias getqtopfffilenm { return $preventdoubleslash($xdccdir $+ \ $+ $replace($nopath($1),.q,.pff)) }
alias getqtooldfilenm { return $preventdoubleslash($xdccdir $+ \ $+ $replace($nopath($1),.q,.pff.old)) }
alias getpfftoqfilenm { return $preventdoubleslash($xdccdir $+ \ $+ $replace($nopath($1),.pff,.q)) }
alias getpfftooldfilenm { return $preventdoubleslash($xdccdir $+ \ $+ $nopath($1) $+ .old) }
alias getoldtopfffilenm { return $preventdoubleslash($xdccdir $+ \ $+ $remove($nopath($1),.old)) }
alias getoldtoqfilenm { return $preventdoubleslash($xdccdir $+ \ $+ $replace($nopath($1),.pff.old,.q)) }
alias specalternatebotsfile { return $replace($getpfffilenm($1, $2),.pff,.aq) }
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------





;-------------------------------------------------------------------------
; Identifiers to retrieve the settings variables.
;-------------------------------------------------------------------------
alias resumedelay {
  if (%resumedelay == $null) { set %resumedelay 900 }
  return %resumedelay
}
alias sendresumedelay {
  if (%sendresumedelay == $null) { set %sendresumedelay 200 }
  return %sendresumedelay 
}
alias minresumedelay {
  if (%minresumedelay == $null) { set %minresumedelay 1 }
  return %minresumedelay 
}
alias maxresumedelay {
  if (%maxresumedelay == $null) { set %maxresumedelay 30 }
  return %maxresumedelay 
}
alias minautoqdelay {
  if (%minautoqdelay == $null) { set %minautoqdelay 1 }
  return %minautoqdelay 
}
alias maxautoqdelay {
  if (%maxautoqdelay == $null) { set %maxautoqdelay 120 }
  return %maxautoqdelay 
}
alias minqfulldelay {
  if (%minqfulldelay == $null) { set %minqfulldelay 120 }
  return %minqfulldelay 
}
alias maxqfulldelay {
  if (%maxqfulldelay == $null) { set %maxqfulldelay 3600 }
  return %maxqfulldelay 
}
alias minnoconnect {
  if (%minnoconnect == $null) { set %minnoconnect 60 }
  return %minnoconnect 
}
alias maxnoconnect {
  if (%maxnoconnect == $null) { set %maxnoconnect 600 }
  return %maxnoconnect 
}
alias startresumeoffset {
  if (%startresumeoffset == $null) { set %startresumeoffset 90 }
  return %startresumeoffset 
}
alias sendresumetime {
  if (%sendresumetime == $null) { set %sendresumetime 15 }
  return %sendresumetime 
}
alias statisticstime {
  if (%statisticstime == $null) { set %statisticstime 900 }
  return %statisticstime 
}
alias packchangechecktime {
  if (%packchangechecktime == $null) { set %packchangechecktime 60 }
  return %packchangechecktime 
}
alias liblimitdate {
  if (%liblimitdate == $null) { set %liblimitdate 40 }
  return %liblimitdate 
}
alias sendlimit {
  if (%sendlimit == $null) { set %sendlimit Unlimited }
  return %sendlimit 
}
alias maxnumberresumes {
  if (%maxnumberresumes == $null) { set %maxnumberresumes Unlimited }
  return %maxnumberresumes
}
alias maxtransfers {
  if (%maxtransfers == $null) { set %maxtransfers Unlimited }
  return %sendlimit 
}
alias mintransfers {
  if (%mintransfers == $null) { set %mintransfers 0 }
  return %mintransfers 
}
alias maxbandwidth {
  if (%maxbandwidth == $null) { set %maxbandwidth $floor($calc($connectionbandwidth * 0.75)) }
  return %maxbandwidth 
}
alias minbandwidth {
  if (%minbandwidth == $null) { set %minbandwidth 0 }
  return %minbandwidth 
}
alias connectionbandwidth {
  if (%connectionbandwidth == $null) { set %connectionbandwidth 1 }
  return %connectionbandwidth
}
alias botqueuemode {
  if (%botqueuemode == $null) { set %botqueuemode number of transfers }
  return %botqueuemode 
}
alias infochoise {
  if (%infochoise == $null) { set %infochoise special window }
  return %infochoise 
}
alias xdccfont {
  if (%xdccfont == $null) { set %xdccfont @XDCC_Info 12 Verdana }
  return %xdccfont 
}
alias showbotlist {
  if (%showbotlist == $null) { set %showbotlist on }
  return %showbotlist 
}
alias colorbotlist {
  if (%colorbotlist == $null) { set %colorbotlist on }
  return %colorbotlist 
}
alias botqueuehandling {
  if (%botqueuehandling == $null) { set %botqueuehandling on }
  return %botqueuehandling 
}
alias testnumoftransferspeed {
  if (%testnumoftransferspeed == $null) { set %testnumoftransferspeed off }
  return %testnumoftransferspeed 
}
alias comparepacks {
  if (%comparepacks == $null) { set %comparepacks off }
  return %comparepacks 
}
alias multisourcehandling {
  if (%multisourcehandling == $null) { set %multisourcehandling off }
  return %multisourcehandling 
}
alias autocleanatstart {
  if (%autocleanatstart == $null) { set %autocleanatstart off }
  return %autocleanatstart 
}
alias clearallqueuesoncomplete {
  if (%clearallqueuesoncomplete == $null) { set %clearallqueuesoncomplete off }
  return %clearallqueuesoncomplete 
}
alias debugxdccinfo {
  if (%debugxdccinfo == $null) { set %debugxdccinfo off }
  return %debugxdccinfo 
}
alias connectxdccnetsatstart {
  if (%connectxdccnetsatstart == $null) { set %connectxdccnetsatstart off }
  return %connectxdccnetsatstart 
}
alias connectnetsatstart {
  if (%connectnetsatstart == $null) { set %connectnetsatstart on }
  return %connectnetsatstart 
}
alias xdccpreemptivejoin {
  if (%preemptivejoin == $null) { set %preemptivejoin off }
  return %preemptivejoin
}
alias maxnumberresumes {
  if (%maxnumberresumes == $null) { set %maxnumberresumes unlimited }
  return %maxnumberresumes 
}
alias xdccscriptversion {
  if (%xdccscriptversion == $null) { set %xdccscriptversion 4.1.5 }
  return %xdccscriptversion 
}
alias xdccscriptauthor {
  if (%scriptauthor == $null) { set %scriptauthor werecow }
  return %scriptauthor 
}
alias filessenttotal {
  if (%filessenttotal == $null) { set %filessenttotal 0 }
  return %filessenttotal 
}
alias filesgettotal {
  if (%filesgettotal == $null) { set %filesgettotal 0 }
  return %filesgettotal 
}
alias xdccautoextraction {
  if (%xdccautoextraction == $null) { set %xdccautoextraction off }
  return %xdccautoextraction
}
alias xdccextractpath {
  if (%xdccextractpath == $null) { set %xdccextractpath $getdir }
  return %xdccextractpath 
}
alias winrarexe {
  return %winrarexe
}
alias ed2kpath {
  return %ed2kpath
}
alias unrarflags {
  return %unrarflags --
}
alias xdccautomove {
  if (%xdccautomove == $null) { set %xdccautomove off }
  return %xdccautomove
}
alias installdate {
  if (%installdate == $null) { set %installdate Unknown (Variable Crash) }
  return %installdate 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------







;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;---------------------------Settings Section------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------








;-------------------------------------------------------------------------
; /reverttodefaults & /reverttodefaults2:
; This reverts all settings to their default values, including file and 
; directory names, timer settings, and group enabling settings. It also 
; creates the default XDCC folder. Uses 1 popup yes/no query box.
;-------------------------------------------------------------------------
alias reverttodefaults {
  if ($?!="Revert all settings to defaults (this includes directory/filename and group settings)?") {
    /reverttodefaults2
    /outputxdccinfo 14Timer variables set. File and directory names set. Directory $xdccdir created. Groups AutoQueue, AutoRemove, AutoSendResume, AutoChangeDetect, TrackQueuePos, AutoCleanAtStart and AutoResumeAtStart disabled. Window options set to " $+ $infochoise $+ ".
    /outputxdccinfo 
  }
}
alias reverttodefaults2 {
  set %XDCCdir XDCC\
  set %xdcctriggerfile xdcctriggerfile.apf
  set %triggerbackup triggerbackup.apf
  set %xdccsinprogress xdccsending.apf
  set %autoresumedisablefile autoresumedisabled.apf
  set %autoresumesenddisablefile autosenddisabled.apf
  set %botqueuefile botqueuefile.apf
  set %tempbotqueuefile tempbotqueuefile.apf
  set %xdccsessiongetfile sessiongets.apf
  set %xdccsessionsendfile sessionsends.apf
  set %lastxdccsessiongetfile lastxdccsessiongetfile.apf
  set %lastxdccsessionsendfile lastxdccsessionsendfile.apf
  set %xdcctotalgetfile xdcctotalgetfile.apf
  set %xdcctotalsendfile xdcctotalsendfile.apf
  set %lastsessionfailfile lastsessionfailfile.apf
  set %xdccsessionfailfile xdccsessionfailfile.apf
  set %totalfailfile totalfailfile.apf
  set %networksendfile activenetworks.apf
  set %xdccqueueposfile queueposfile.apf
  set %chankeyfile chankeyfile.apf
  set %dccallownetworkfile dccallownetworkfile.apf
  set %autoconnectfile autoconnectfile.apf
  set %alternatedccserverfile alternatedccserverfile.apf
  set %xdccwishlist xdccwishlist.apf
  set %alternatebotsfile alternatebotsfile.apf
  set %statsfile xdccstatsfile
  set %xdccdebugfile XDCCscriptLOG.log
  set %resumedelay 900
  set %sendresumedelay 200
  set %minresumedelay 1
  set %maxresumedelay 30
  set %minautoqdelay 1
  set %maxautoqdelay 120
  set %minqfulldelay 120
  set %maxqfulldelay 3600
  set %minnoconnect 60
  set %maxnoconnect 600
  set %startresumeoffset 90
  set %sendresumetime 15
  set %statisticstime 900
  set %packchangechecktime 60
  set %liblimitdate 40
  set %sendlimit Unlimited
  set %maxnumberresumes unlimited
  set %maxtransfers unlimited
  set %mintransfers 0
  set %connectionbandwidth 1
  set %maxbandwidth $floor($calc($connectionbandwidth * 0.75))
  set %minbandwidth 0
  set %botqueuemode number of transfers
  set %infochoise special window
  set %xdccfont @XDCC_Info 12 Verdana
  set %showbotlist ON
  set %colorbotlist on
  set %multisourcehandling off
  set %botqueuehandling on
  set %testnumoftransferspeed off
  set %comparepacks off
  set %autocleanatstart off
  set %clearallqueuesoncomplete off
  set %connectnetsatstart on
  set %connectxdccnetsatstart off
  set %preemptivejoin off
  set %debugxdccinfo off
  set %xdccautoextraction off
  set %unrarflags -ibck -kb -o- -ad -y
  set %winrarexe $null
  set %xdccextractpath $getdir
  set %xdccautomove off
  set %xdccautomovepathfile automove.apf
  .enable #groupctrlkeys
  .enable #groupautoxdccresume
  .enable #groupautoxdccresumejoin
  .enable #groupautoxdccq
  .enable #groupautoresumeatstart
  .enable #groupautoresumestart
  .enable #groupautojoinxdcc
  .enable #groupnonewconnects
  .disable #groupnickchangedetect 
  .disable #groupautoremove 
  .disable #groupautosendresume
  .disable #grouppackchangedetect
  .enable #grouptrackqueuepos
  .mkdir $xdccdir
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------


;-------------------------------------------------------------------------
; /savexdccscriptsettings $1:
; $1: settings file name.
; This should save the settings to file $1 using a key for each setting 
; and the value behind it separated by a space.
;-------------------------------------------------------------------------
alias savexdccscriptsettings {
  if (!$exists($1 $+ .set) || $?!="File exists, overwrite?") {
    if ($exists($1 $+ .set)) {
      .remove $1 $+ .set
    }
    /write -a $1 $+ .set XDCCdir $XDCCdir
    /write -a $1 $+ .set xdcctriggerfile $nopath($triggerHash)
    /write -a $1 $+ .set triggerbackup $nopath($triggerbackup)
    /write -a $1 $+ .set xdccsinprogress $nopath($xdccsinprogress)
    /write -a $1 $+ .set autoresumedisablefile $nopath($autoresumedisablefile)
    /write -a $1 $+ .set autoresumesenddisablefile $nopath($autoresumesenddisablefile)
    /write -a $1 $+ .set xdccsessiongetfile $nopath($xdccsessiongetfile)
    /write -a $1 $+ .set xdccsessionsendfile $nopath($xdccsessionsendfile)
    /write -a $1 $+ .set lastxdccsessiongetfile $nopath($lastxdccsessiongetfile)
    /write -a $1 $+ .set lastxdccsessionsendfile $nopath($lastxdccsessionsendfile)
    /write -a $1 $+ .set xdcctotalgetfile $nopath($xdcctotalgetfile)
    /write -a $1 $+ .set xdcctotalsendfile $nopath($xdcctotalsendfile)
    /write -a $1 $+ .set lastsessionfailfile $nopath($lastsessionfailfile)
    /write -a $1 $+ .set xdccsessionfailfile $nopath($xdccsessionfailfile)
    /write -a $1 $+ .set totalfailfile $nopath($totalfailfile)
    /write -a $1 $+ .set networksendfile $nopath($networksendfile)
    /write -a $1 $+ .set botqueuefile $nopath($botqueuefile)
    /write -a $1 $+ .set tempbotqueuefile $nopath($tempbotqueuefile)
    /write -a $1 $+ .set alternatebotsfile $nopath($alternatebotsfile)
    /write -a $1 $+ .set queueposfile $nopath($xdccqueueposfile)
    /write -a $1 $+ .set alternatedccserverfile $nopath($alternatedccserverfile)
    /write -a $1 $+ .set dccallownetworkfile $nopath($dccallownetworkfile)
    /write -a $1 $+ .set autoconnectfile $nopath($autoconnectfile)
    /write -a $1 $+ .set chankeyfile $nopath($chankeyfile)
    /write -a $1 $+ .set xdccdebugfile $nopath($xdccdebugfile)
    /write -a $1 $+ .set xdccwishlist $nopath($xdccwishlist)
    /write -a $1 $+ .set xdccstatsfile %statsfile
    /write -a $1 $+ .set resumedelay $resumedelay 
    /write -a $1 $+ .set sendresumedelay $sendresumedelay 
    /write -a $1 $+ .set minresumedelay $minresumedelay 
    /write -a $1 $+ .set maxresumedelay $maxresumedelay 
    /write -a $1 $+ .set minautoqdelay $minautoqdelay 
    /write -a $1 $+ .set maxautoqdelay $maxautoqdelay 
    /write -a $1 $+ .set minqfulldelay $minqfulldelay 
    /write -a $1 $+ .set maxqfulldelay $maxqfulldelay 
    /write -a $1 $+ .set minnoconnect $minnoconnect 
    /write -a $1 $+ .set maxnoconnect $maxnoconnect 
    /write -a $1 $+ .set startresumeoffset $startresumeoffset 
    /write -a $1 $+ .set sendresumetime $sendresumetime 
    /write -a $1 $+ .set packchangechecktime $packchangechecktime 
    /write -a $1 $+ .set liblimitdate $liblimitdate 
    /write -a $1 $+ .set sendlimit $sendlimit 
    /write -a $1 $+ .set maxtransfers $maxtransfers
    /write -a $1 $+ .set mintransfers $mintransfers
    /write -a $1 $+ .set connectionbandwidth $connectionbandwidth
    /write -a $1 $+ .set minbandwidth $minbandwidth
    /write -a $1 $+ .set maxbandwidth $maxbandwidth
    /write -a $1 $+ .set botqueuemode $botqueuemode
    /write -a $1 $+ .set testnumoftransferspeed $testnumoftransferspeed
    /write -a $1 $+ .set infochoise $infochoise 
    /write -a $1 $+ .set xdccfont $xdccfont 
    /write -a $1 $+ .set showbotlist $showbotlist 
    /write -a $1 $+ .set colorbotlist $colorbotlist
    /write -a $1 $+ .set botqueuehandling $botqueuehandling
    /write -a $1 $+ .set multisourcehandling $multisourcehandling
    /write -a $1 $+ .set statisticstime $statisticstime 
    /write -a $1 $+ .set comparepacks $comparepacks 
    /write -a $1 $+ .set autocleanatstart $autocleanatstart 
    /write -a $1 $+ .set clearallqueuesoncomplete $clearallqueuesoncomplete
    /write -a $1 $+ .set debugxdccinfo $debugxdccinfo
    /write -a $1 $+ .set xdccautoextraction $xdccautoextraction
    /write -a $1 $+ .set unrarflags $unrarflags
    /write -a $1 $+ .set winrarexe $winrarexe
    /write -a $1 $+ .set ed2kpath $ed2kpath
    /write -a $1 $+ .set xdccextractpath $xdccextractpath
    /write -a $1 $+ .set xdccautomove $xdccautomove
    /write -a $1 $+ .set xdccautomovepathfile $xdccautomovepathfile
    /write -a $1 $+ .set connectnetsatstart $connectnetsatstart
    /write -a $1 $+ .set connectxdccnetsatstart $connectxdccnetsatstart
    /write -a $1 $+ .set preemptivejoin $xdccpreemptivejoin
    /write -a $1 $+ .set #groupautoxdccresume $group(#groupautoxdccresume)
    /write -a $1 $+ .set #groupautoxdccresumejoin $group(#groupautoxdccresumejoin)
    /write -a $1 $+ .set #groupautoxdccq $group(#groupautoxdccq)
    /write -a $1 $+ .set #groupautoresumeatstart $group(#groupautoresumeatstart)
    /write -a $1 $+ .set #groupautoresumestart $group(#groupautoresumestart)
    /write -a $1 $+ .set #groupautojoinxdcc $group(#groupautojoinxdcc)
    /write -a $1 $+ .set #groupnonewconnects $group(#groupnonewconnects)
    /write -a $1 $+ .set #groupautoremove $group(#groupautoremove)
    /write -a $1 $+ .set #groupautosendresume $group(#groupautosendresume)
    /write -a $1 $+ .set #groupnickchangedetect $group(#groupnickchangedetect)
    /write -a $1 $+ .set #grouppackchangedetect $group(#grouppackchangedetect)
    /write -a $1 $+ .set #grouptrackqueuepos $group(#grouptrackqueuepos)
    /write -a $1 $+ .set #groupctrlkeys $group(#groupctrlkeys)
    /outputxdccinfo 14Saved settings to profile $nopath($1) ( $+ $1 $+ .set).
  }
  else { /outputxdccinfo 4ERROR: Not overwriting existing profile. } 
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------


;-------------------------------------------------------------------------
; /loadxdccscriptsettings $1:
; $1: settings file name.
; This should load the settings from file $1.set. If no value is found for 
; a certain setting, default value if used.
;-------------------------------------------------------------------------
alias loadxdccscriptsettings {
  if ($exists($1 $+ .set)) {
    if ($read($1 $+ .set, snt,XDCCdir) != $null) { set %XDCCdir $read($1 $+ .set, snt,XDCCdir) }
    else { 
      set %XDCCdir $scriptdir $+ XDCC\
      /outputxdccinfo 14Can't find setting for XDCC dir, using default setting.    
    }
    if ($read($1 $+ .set, snt,xdcctriggerfile) != $null) { set %xdcctriggerfile $read($1 $+ .set, snt,xdcctriggerfile) }
    else {
      set %xdcctriggerfile xdcctriggerfile.apf 
      /outputxdccinfo 14Can't find setting for xdcc trigger file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccsinprogress) != $null) { set %xdccsinprogress $read($1 $+ .set, snt,xdccsinprogress) }
    else { 
      set %xdccsinprogress xdccsending.apf 
      /outputxdccinfo 14Can't find setting for xdccs in progress file, using default setting.
    }
    if ($read($1 $+ .set, snt,triggerbackup) != $null) { set %triggerbackup $read($1 $+ .set, snt,triggerbackup) }
    else {
      set %triggerbackup triggerbackup.apf 
      /outputxdccinfo 14Can't find setting for backup trigger file, using default setting.
    }
    if ($read($1 $+ .set, snt,autoresumedisablefile) != $null) { set %autoresumedisablefile $read($1 $+ .set, snt,autoresumedisablefile) }
    else { 
      set %autoresumedisablefile autoresumedisabled.apf 
      /outputxdccinfo 14Can't find setting for auto resume disable file, using default setting.
    }
    if ($read($1 $+ .set, snt,autoresumesenddisablefile) != $null) { set %autoresumesenddisablefile $read($1 $+ .set, snt,autoresumesenddisablefile) }
    else {
      set %autoresumesenddisablefile autosenddisabled.apf 
      /outputxdccinfo 14Can't find setting for auto resume send disable file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccsessiongetfile) != $null) { set %xdccsessiongetfile $read($1 $+ .set, snt,xdccsessiongetfile) }
    else {
      set %xdccsessiongetfile sessiongets.apf 
      /outputxdccinfo 14Can't find setting for xdcc session get file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccsessionsendfile) != $null) { set %xdccsessionsendfile $read($1 $+ .set, snt,xdccsessionsendfile) }
    else { 
      set %xdccsessionsendfile sessionsends.apf 
      /outputxdccinfo 14Can't find setting for xdcc session send file, using default setting.
    }
    if ($read($1 $+ .set, snt,lastxdccsessiongetfile) != $null) { set %lastxdccsessiongetfile $read($1 $+ .set, snt,lastxdccsessiongetfile) }
    else { 
      set %lastxdccsessiongetfile lastxdccsessiongetfile.apf 
      /outputxdccinfo 14Can't find setting for previous xdcc session get file, using default setting.
    }
    if ($read($1 $+ .set, snt,lastxdccsessionsendfile) != $null) { set %lastxdccsessionsendfile $read($1 $+ .set, snt,lastxdccsessionsendfile) }
    else { 
      set %lastxdccsessionsendfile lastxdccsessionsendfile.apf 
      /outputxdccinfo 14Can't find setting for previous xdcc session send file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdcctotalgetfile) != $null) { set %xdcctotalgetfile $read($1 $+ .set, snt,xdcctotalgetfile) }
    else { 
      set %xdcctotalgetfile xdcctotalgetfile.apf 
      /outputxdccinfo 14Can't find setting for xdcc total get file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdcctotalsendfile) != $null) { set %xdcctotalsendfile $read($1 $+ .set, snt,xdcctotalsendfile) }
    else { 
      set %xdcctotalsendfile xdcctotalsendfile.apf 
      /outputxdccinfo 14Can't find setting for xdcc total send file, using default setting.
    }
    if ($read($1 $+ .set, snt,lastsessionfailfile) != $null) { set %lastsessionfailfile $read($1 $+ .set, snt,lastsessionfailfile) }
    else { 
      set %lastsessionfailfile lastsessionfailfile.apf 
      /outputxdccinfo 14Can't find setting for previous xdcc session failed transfers file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccsessionfailfile) != $null) { set %xdccsessionfailfile $read($1 $+ .set, snt,xdccsessionfailfile) }
    else { 
      set %xdccsessionfailfile xdccsessionfailfile.apf 
      /outputxdccinfo 14Can't find setting for xdcc session failed transfers file, using default setting.
    }
    if ($read($1 $+ .set, snt,totalfailfile) != $null) { set %totalfailfile $read($1 $+ .set, snt,totalfailfile) }
    else { 
      set %totalfailfile totalfailfile.apf 
      /outputxdccinfo 14Can't find setting for total failed transfers file, using default setting.
    }
    if ($read($1 $+ .set, snt,networksendfile) != $null) { set %networksendfile $read($1 $+ .set, snt,networksendfile) }
    else {
      set %networksendfile activenetworks.apf
      /outputxdccinfo 14Can't find setting for network sends file, using default setting.
    }
    if ($read($1 $+ .set, snt,botqueuefile) != $null) { set %botqueuefile $read($1 $+ .set, snt,botqueuefile) }
    else {
      set %botqueuefile botqueuefile.apf
      /outputxdccinfo 14Can't find setting for bot queue file, using default setting.
    }    
    if ($read($1 $+ .set, snt,tempbotqueuefile) != $null) { set %tempbotqueuefile $read($1 $+ .set, snt,tempbotqueuefile) }
    else {
      set %tempbotqueuefile tempbotqueuefile.apf
      /outputxdccinfo 14Can't find setting for temp bot queue file, using default setting.
    }
    if ($read($1 $+ .set, snt,alternatebotsfile) != $null) { set %alternatebotsfile $read($1 $+ .set, snt,alternatebotsfile) }
    else {
      set %alternatebotsfile alternatebotsfile.apf
      /outputxdccinfo 14Can't find setting for general alternate sources file, using default setting.
    }
    if ($read($1 $+ .set, snt,queueposfile) != $null) { set %xdccqueueposfile $read($1 $+ .set, snt,queueposfile) }
    else {
      set %xdccqueueposfile queueposfile.apf
      /outputxdccinfo 14Can't find setting for xdcc queue position file, using default setting.
    }
    if ($read($1 $+ .set, snt,chankeyfile) != $null) { set %chankeyfile $read($1 $+ .set, snt,chankeyfile) }
    else {
      set %chankeyfile chankeyfile.apf
      /outputxdccinfo 14Can't find setting for channel key file, using default setting.
    }
    if ($read($1 $+ .set, snt,dccallownetworkfile) != $null) { set %dccallownetworkfile $read($1 $+ .set, snt,dccallownetworkfile) }
    else {
      set %dccallownetworkfile dccallownetworkfile.apf
      /outputxdccinfo 14Can't find setting for dccallow network support file, using default setting.
    }
    if ($read($1 $+ .set, snt,autoconnectfile) != $null) { set %autoconnectfile $read($1 $+ .set, snt,autoconnectfile) }
    else {
      set %autoconnectfile autoconnectfile.apf
      /outputxdccinfo 14Can't find setting for network auto connect file, using default setting.
    }
    if ($read($1 $+ .set, snt,alternatedccserverfile) != $null) { set %alternatedccserverfile $read($1 $+ .set, snt,alternatedccserverfile) }
    else {
      set %alternatedccserverfile alternatedccserverfile.apf
      /outputxdccinfo 14Can't find setting for alternate dcc server bot file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccstatsfile) != $null) { set %statsfile $read($1 $+ .set, snt,xdccstatsfile) }
    else {
      set %statsfile xdccstatsfile
      /outputxdccinfo 14Can't find setting for statistics files, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccwishlist) != $null) { set %xdccwishlist $read($1 $+ .set, snt,xdccwishlist) }
    else {
      set %xdccwishlist xdccwishlist.apf
      /outputxdccinfo 14Can't find setting for wishlist file, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccdebugfile) != $null) { set %xdccdebugfile $read($1 $+ .set, snt,xdccdebugfile) }
    else {
      set %xdccdebugfile XDCCscriptLOG.log
      /outputxdccinfo 14Can't find setting for xdcc queue position file, using default setting.
    }
    if ($read($1 $+ .set, snt,resumedelay) != $null) { set %resumedelay $read($1 $+ .set, snt,resumedelay) }
    else {
      set %resumedelay 900 
      /outputxdccinfo 14Can't find setting for autoresume reactivation time delay, using default setting.
    }
    if ($read($1 $+ .set, snt,sendresumedelay) != $null) { set %sendresumedelay $read($1 $+ .set, snt,sendresumedelay) }
    else {
      set %sendresumedelay 200 
      /outputxdccinfo 14Can't find setting for send autoresume reactivation time delay, using default setting.
    }
    if ($read($1 $+ .set, snt,minresumedelay) != $null) { set %minresumedelay $read($1 $+ .set, snt,minresumedelay) }
    else {
      set %minresumedelay 1 
      /outputxdccinfo 14Can't find setting for min auto resume delay, using default setting.
    }
    if ($read($1 $+ .set, snt,maxresumedelay) != $null) { set %maxresumedelay $read($1 $+ .set, snt,maxresumedelay) }
    else { 
      set %maxresumedelay 30
      /outputxdccinfo 14Can't find setting for max auto resume delay, using default setting.
    }
    if ($read($1 $+ .set, snt,minautoqdelay) != $null) { set %minautoqdelay $read($1 $+ .set, snt,minautoqdelay) }
    else { 
      set %minautoqdelay 1
      /outputxdccinfo 14Can't find setting for min auto queue delay, using default setting.
    }
    if ($read($1 $+ .set, snt,maxautoqdelay) != $null) { set %maxautoqdelay $read($1 $+ .set, snt,maxautoqdelay) }
    else { 
      set %maxautoqdelay 120 
      /outputxdccinfo 14Can't find setting for max auto queue delay, using default setting.
    }
    if ($read($1 $+ .set, snt,minqfulldelay) != $null) { set %minqfulldelay $read($1 $+ .set, snt,minqfulldelay) }
    else { 
      set %minqfulldelay 120 
      /outputxdccinfo 14Can't find setting for min queue full request delay, using default setting.
    }
    if ($read($1 $+ .set, snt,maxqfulldelay) != $null) { set %maxqfulldelay $read($1 $+ .set, snt,maxqfulldelay) }
    else { 
      set %maxqfulldelay 3600 
      /outputxdccinfo 14Can't find setting for max queue full request delay, using default setting.
    }
    if ($read($1 $+ .set, snt,minnoconnect) != $null) { set %minnoconnect $read($1 $+ .set, snt,minnoconnect) }
    else {
      set %minnoconnect 60 
      /outputxdccinfo 14Can't find setting for min no connect request delay, using default setting.
    }
    if ($read($1 $+ .set, snt,maxnoconnect) != $null) { set %maxnoconnect $read($1 $+ .set, snt,maxnoconnect) }
    else {
      set %maxnoconnect 600 
      /outputxdccinfo 14Can't find setting for max no connect request delay, using default setting.
    }
    if ($read($1 $+ .set, snt,startresumeoffset) != $null) { set %startresumeoffset $read($1 $+ .set, snt,startresumeoffset) }
    else {
      set %startresumeoffset 90 
      /outputxdccinfo 14Can't find setting for resume at start offset, using default setting.
    }
    if ($read($1 $+ .set, snt,sendresumetime) != $null) { set %sendresumetime $read($1 $+ .set, snt,sendresumetime) }
    else {
      set %sendresumetime 15
      /outputxdccinfo 14Can't find setting for maximum send resume time, using default setting.
    }
    if ($read($1 $+ .set, snt,statisticstime) != $null) { set %statisticstime $read($1 $+ .set, snt,statisticstime) }
    else {
      set %statisticstime 900
      /outputxdccinfo 14Can't find setting for transfer number check time, using default setting.
    }
    if ($read($1 $+ .set, snt,packchangechecktime) != $null) { set %packchangechecktime $read($1 $+ .set, snt,packchangechecktime) }
    else {
      set %packchangechecktime 300
      /outputxdccinfo 14Can't find setting for pack change check time, using default setting.
    }
    if ($read($1 $+ .set, snt,liblimitdate) != $null) { set %liblimitdate $read($1 $+ .set, snt,liblimitdate) }
    else { 
      set %liblimitdate 40
      /outputxdccinfo 14Can't find setting for library expiration time, using default setting.
    }
    if ($read($1 $+ .set, snt,sendlimit) != $null) { set %sendlimit $read($1 $+ .set, snt,sendlimit) }
    else {
      set %sendlimit Unlimited 
      /outputxdccinfo 14Can't find setting for send limit, using default setting.
    }
    if ($read($1 $+ .set, snt,maxtransfers) != $null) { set %maxtransfers $read($1 $+ .set, snt,maxtransfers) }
    else {
      set %maxtransfers Unlimited 
      /outputxdccinfo 14Can't find setting for simultaneous transfers upper limit, using default setting.
    }
    if ($read($1 $+ .set, snt,mintransfers) != $null) { set %mintransfers $read($1 $+ .set, snt,mintransfers) }
    else {
      set %mintransfers 0
      /outputxdccinfo 14Can't find setting for simultaneous transfers lower limit, using default setting.
    }
    if ($read($1 $+ .set, snt,maxbandwidth) != $null) { set %maxbandwidth $read($1 $+ .set, snt,maxbandwidth) }
    else {
      set %maxbandwidth $floor($calc($connectionbandwidth * 0.75))
      /outputxdccinfo 14Can't find setting for upper bandwidth limit, using default setting.
    }
    if ($read($1 $+ .set, snt,minbandwidth) != $null) { set %minbandwidth $read($1 $+ .set, snt,minbandwidth) }
    else {
      set %minbandwidth 0
      /outputxdccinfo 14Can't find setting for lower bandwidth limit, using default setting.
    }
    if ($read($1 $+ .set, snt,connectionbandwidth) != $null) { set %connectionbandwidth $read($1 $+ .set, snt,connectionbandwidth) }
    else {
      set %connectionbandwidth 1
      /outputxdccinfo 14Can't find setting for user connection speed, using default setting.
    }
    if ($read($1 $+ .set, snt,botqueuemode) != $null) { set %botqueuemode $read($1 $+ .set, snt,botqueuemode) }
    else {
      set %botqueuemode number of transfers
      /outputxdccinfo 14Can't find setting for bot queue mode setting, using default setting.
    }
    if ($read($1 $+ .set, snt,infochoise) != $null) { set %infochoise $read($1 $+ .set, snt,infochoise) }
    else { 
      set %infochoise special window 
      /outputxdccinfo 14Can't find setting for info output choise, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccfont) != $null) { set %xdccfont $read($1 $+ .set, snt,xdccfont) }
    else { 
      set %xdccfont @XDCC_Info 12 Verdana 
      /outputxdccinfo 14Can't find setting for xdcc window font, using default setting.
    }
    if ($read($1 $+ .set, snt,showbotlist) != $null) { set %showbotlist $read($1 $+ .set, snt,showbotlist) }
    else {
      set %showbotlist ON 
      /outputxdccinfo 14Can't find setting for botlist showing, using default setting.
    }
    if ($read($1 $+ .set, snt,colorbotlist) != $null) { set %colorbotlist $read($1 $+ .set, snt,colorbotlist) }
    else {
      set %colorbotlist on 
      /outputxdccinfo 14Can't find setting for botlist coloring, using default setting.
    }
    .mkdir $xdccdir
    if ($read($1 $+ .set, snt,botqueuehandling) != $null) { set %botqueuehandling $read($1 $+ .set, snt,botqueuehandling) }
    else { 
      set %botqueuehandling on 
      /outputxdccinfo 14Can't find setting for bot queue handling, using default setting.
    }
    if ($read($1 $+ .set, snt,multisourcehandling) != $null) { set %multisourcehandling $read($1 $+ .set, snt,multisourcehandling) }
    else { 
      set %multisourcehandling off 
      /outputxdccinfo 14Can't find setting for multi source download handling, using default setting.
    }
    if ($read($1 $+ .set, snt,testnumoftransferspeed) != $null) { set %testnumoftransferspeed $read($1 $+ .set, snt,testnumoftransferspeed) }
    else { 
      set %testnumoftransferspeed off 
      /outputxdccinfo 14Can't find setting for bot queue test on timer, using default setting.
    }
    if ($read($1 $+ .set, snt,comparepacks) != $null) { set %comparepacks $read($1 $+ .set, snt,comparepacks) }
    else {
      set %comparepacks off 
      /outputxdccinfo 14Can't find setting for compare packfiles, using default setting.
    }
    if ($read($1 $+ .set, snt,autocleanatstart) != $null) { set %autocleanatstart $read($1 $+ .set, snt,autocleanatstart) }
    else { 
      set %autocleanatstart off 
      /outputxdccinfo 14Can't find setting for auto clean at start, using default setting.
    }
    if ($read($1 $+ .set, snt,clearallqueuesoncomplete) != $null) { set %clearallqueuesoncomplete $read($1 $+ .set, snt,clearallqueuesoncomplete) }
    else { 
      set %clearallqueuesoncomplete off 
      /outputxdccinfo 14Can't find setting for clear all bots from complete pack, using default setting.
    }
    if ($read($1 $+ .set, snt,debugxdccinfo) != $null) { set %debugxdccinfo $read($1 $+ .set, snt,debugxdccinfo) }
    else { 
      set %debugxdccinfo off 
      /outputxdccinfo 14Can't find setting for debug log creation, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccautoextraction) != $null) { set %xdccautoextraction $read($1 $+ .set, snt,xdccautoextraction) }
    else { 
      set %xdccautoextraction off
      /outputxdccinfo 14Can't find setting for auto extraction, using default setting.
    }
    if ($read($1 $+ .set, snt,unrarflags) != $null) { set %unrarflags $read($1 $+ .set, snt,unrarflags) }
    else { 
      set %unrarflags -ibck -kb -o- -ad -y
      /outputxdccinfo 14Can't find setting for unrar flags, using default setting.
    }
    if ($read($1 $+ .set, snt,winrarexe) != $null) { set %winrarexe $read($1 $+ .set, snt,winrarexe) }
    else { 
      set %winrarexe $null
      /outputxdccinfo 14Can't find setting for winrar exe, using null setting.
    }
    if ($read($1 $+ .set, snt,ed2kpath) != $null) { set %ed2kpath $read($1 $+ .set, snt,ed2kpath) }
    else { 
      set %ed2kpath $null
      /outputxdccinfo 14Can't find setting for ed2k exe, using null setting.
    }
    if ($read($1 $+ .set, snt,xdccextractpath) != $null) { set %xdccextractpath $read($1 $+ .set, snt,xdccextractpath) }
    else { 
      set %xdccextractpath $getdir
      /outputxdccinfo 14Can't find setting for auto extraction path, using default setting.
    }
    if ($read($1 $+ .set, snt,xdccautomove) != $null) { set %xdccautomove $read($1 $+ .set, snt,xdccautomove) }
    else { 
      set %xdccautomove off
      /outputxdccinfo 14Can't find setting for auto move files on complete, using default setting.    
    }
    if ($read($1 $+ .set, snt,xdccautomovepathfile) != $null) { set %xdccautomovepathfile $read($1 $+ .set, snt,xdccautomovepathfile) }
    else { 
      set %xdccautomovepathfile automove.apf
      /outputxdccinfo 14Can't find setting for auto-move on complete dir, using default setting.    
    }
    if ($read($1 $+ .set, snt,connectnetsatstart) != $null) { set %connectnetsatstart $read($1 $+ .set, snt,connectnetsatstart) }
    else { 
      set %connectnetsatstart on 
      /outputxdccinfo 14Can't find setting for connecting to networks in networks file at start, using default setting.
    }
    if ($read($1 $+ .set, snt,connectxdccnetsatstart) != $null) { set %connectxdccnetsatstart $read($1 $+ .set, snt,connectxdccnetsatstart) }
    else { 
      set %connectxdccnetsatstart off 
      /outputxdccinfo 14Can't find setting for connecting to XDCC nets at start, using default setting.
    }
    if ($read($1 $+ .set, snt,preemptivejoin) != $null) { set %preemptivejoin $read($1 $+ .set, snt,preemptivejoin) }
    else { 
      set %preemptivejoin off 
      /outputxdccinfo 14Can't find setting for preemptive join, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupctrlkeys) != $null) { 
      if ($read($1 $+ .set, snt,#groupctrlkeys) == ON) { .enable #groupctrlkeys }
      elseif ($read($1 $+ .set, snt,#groupctrlkeys) == OFF) { .disable #groupctrlkeys }
    }
    else { 
      .enable #groupctrlkeys
      /outputxdccinfo 14Can't find setting for @XDCC_Info window keyboard shortcuts, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoxdccresume) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoxdccresume) == ON) { .enable #groupautoxdccresume }
      elseif ($read($1 $+ .set, snt,#groupautoxdccresume) == OFF) { .disable #groupautoxdccresume }
    }
    else { 
      .enable #groupautoxdccresume 
      /outputxdccinfo 14Can't find setting for auto xdcc resume, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoxdccresumejoin) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoxdccresumejoin) == ON) { .enable #groupautoxdccresumejoin }
      elseif ($read($1 $+ .set, snt,#groupautoxdccresumejoin) == OFF) { .disable #groupautoxdccresumejoin }
    }
    else {
      .enable #groupautoxdccresumejoin 
      /outputxdccinfo 14Can't find setting for auto xdcc resume on join, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupnonewconnects) != $null) { 
      if ($read($1 $+ .set, snt,#groupnonewconnects) == ON) { .enable #groupnonewconnects }
      elseif ($read($1 $+ .set, snt,#groupnonewconnects) == OFF) { .disable #groupnonewconnects }
    }
    else {
      .enable #groupnonewconnects
      /outputxdccinfo 14Can't find setting for auto handle no new connects, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoxdccq) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoxdccq) == ON) { .enable #groupautoxdccq }
      elseif ($read($1 $+ .set, snt,#groupautoxdccq) == OFF) { .disable #groupautoxdccq }
    }
    else { 
      .enable #groupautoxdccq 
      /outputxdccinfo 14Can't find setting for auto xdcc queueing, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoresumeatstart) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoresumeatstart) == ON) { .enable #groupautoresumeatstart }
      elseif ($read($1 $+ .set, snt,#groupautoresumeatstart) == OFF) { .disable #groupautoresumeatstart }
    }
    else { 
      .enable #groupautoresumeatstart 
      /outputxdccinfo 14Can't find setting for auto resume at start (group 1), using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoresumestart) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoresumestart) == ON) { .enable #groupautoresumestart }
      elseif ($read($1 $+ .set, snt,#groupautoresumestart) == OFF) { .disable #groupautoresumestart }
    }
    else { 
      .enable #groupautoresumestart 
      /outputxdccinfo 14Can't find setting for auto resume start (group 2), using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautojoinxdcc) != $null) { 
      if ($read($1 $+ .set, snt,#groupautojoinxdcc) == ON) { .enable #groupautojoinxdcc }
      elseif ($read($1 $+ .set, snt,#groupautojoinxdcc) == OFF) { .disable #groupautojoinxdcc }
    }
    else { 
      .enable #groupautojoinxdcc 
      /outputxdccinfo 14Can't find setting for auto join on bot request, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupautoremove) != $null) { 
      if ($read($1 $+ .set, snt,#groupautoremove) == ON) { .enable #groupautoremove }
      elseif ($read($1 $+ .set, snt,#groupautoremove) == OFF) { .disable #groupautoremove }
    }
    else { 
      /outputxdccinfo 14Can't find setting for auto remove at bot removal, using default setting.
      .disable #groupautoremove 
    }
    if ($read($1 $+ .set, snt,#groupautosendresume) != $null) { 
      if ($read($1 $+ .set, snt,#groupautosendresume) == ON) { .enable #groupautosendresume }
      elseif ($read($1 $+ .set, snt,#groupautosendresume) == OFF) { .disable #groupautosendresume }
    }
    else { 
      .disable #groupautosendresume 
      /outputxdccinfo 14Can't find setting for auto send resume, using default setting.
    }
    if ($read($1 $+ .set, snt,#grouppackchangedetect) != $null) { 
      if ($read($1 $+ .set, snt,#grouppackchangedetect) == ON) { .enable #grouppackchangedetect }
      elseif ($read($1 $+ .set, snt,#grouppackchangedetect) == OFF) { .disable #grouppackchangedetect }
    }
    else { 
      .disable #grouppackchangedetect 
      /outputxdccinfo 14Can't find setting for pack change detection, using default setting.
    }
    if ($read($1 $+ .set, snt,#groupnickchangedetect) != $null) { 
      if ($read($1 $+ .set, snt,#groupnickchangedetect) == ON) { .enable #groupnickchangedetect }
      elseif ($read($1 $+ .set, snt,#groupnickchangedetect) == OFF) { .disable #groupnickchangedetect }
    }
    else { 
      .disable #groupnickchangedetect
      /outputxdccinfo 14Can't find setting for nick change detection, using default setting.
    }
    if ($read($1 $+ .set, snt,#grouptrackqueuepos) != $null) { 
      if ($read($1 $+ .set, snt,#grouptrackqueuepos) == ON) { .enable #grouptrackqueuepos }
      elseif ($read($1 $+ .set, snt,#grouptrackqueuepos) == OFF) { .disable #grouptrackqueuepos }
    }
    else {
      .enable #grouptrackqueuepos 
      /outputxdccinfo 14Can't find setting for track queue position, using default setting.
    }
    /outputxdccinfo 14Loaded profile $1 from file $1 $+ .set (Default values used where no setting was found). Directory $xdccdir created if not found.
  }
  else { /outputxdccinfo 4ERROR: No such XDCC Settings profile ( $+ $1 $+ ) in $xdccdir ( $+ $1 $+ .set). }
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------







;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;---------------------------Switches Section------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------







;-------------------------------------------------------------------------
; /generalswitch, /resumeswitch, /autoqswitch, /autoremoveswitch, 
; /autojoinxdccswitch, /autostartswitch, /automultisourceswitch & 
; /autoresendswitch:
; Toggles autoresume function, autoqueue function, autoremove function, 
; autojoin function, autoresume at start function, multi source support 
; or auto resend function respectively. All can be triggered from the 
; channel menu. Each uses 1 popup yes/no querybox.
;-------------------------------------------------------------------------
alias generalswitch {
  if ($group($1) == on) { /disable $1 }
  elseif ($group($1) == off) { /enable $1 }
}
;-------------------------------------------------------------------------
alias resumeswitch {
  /generalswitch #groupautoxdccresume
  /outputxdccinfo 14Auto Resume is now $group(#groupautoxdccresume) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias resumejoinswitch {
  /generalswitch #groupautoxdccresumejoin
  /outputxdccinfo 14Auto Resume On Bot Rejoin is now $group(#groupautoxdccresumejoin) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autoqswitch {
  /generalswitch #groupautoxdccq
  /outputxdccinfo 14Auto Queueing is now $group(#groupautoxdccq) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autostartswitch {
  if ($group(#groupautoresumeatstart) == on) { 
    /disable #groupautoresumeatstart 
    /disable #groupautoresumestart
  }
  elseif ($group(#groupautoresumeatstart) == off) { 
    /enable #groupautoresumeatstart 
    /enable #groupautoresumestart
  }
  /outputxdccinfo 14Auto Resume At Start is now $group(#groupautoresumeatstart) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autoremoveswitch {
  /generalswitch #groupautoremove
  /outputxdccinfo 14Auto Remove is now $group(#groupautoremove) $+ .
  /outputxdccinfo 
} 
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autojoinxdccswitch {
  /generalswitch #groupautojoinxdcc
  /outputxdccinfo 14Auto Join is now $group(#groupautojoinxdcc) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autoresendswitch {
  /generalswitch #groupautosendresume
  /outputxdccinfo 14Auto Send Resume is now $group(#groupautosendresume) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autononewconnectswitch {
  /generalswitch #groupnonewconnects
  /outputxdccinfo 14Auto retry on No New Connections notice is now $group(#groupnonewconnects) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias groupnickchangedetectswitch {
  /generalswitch #groupnickchangedetect 
  /outputxdccinfo 14Nickname change detection is now $group(#groupnickchangedetect) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias groupdccpendingerrorswitch {
  /generalswitch #groupdccpendingerror
  /outputxdccinfo 14Auto suspend on DCC Pending error is now $group(#groupdccpendingerror) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias botqueuehandlingswitch {
  if ($botqueuehandling == off) { set %botqueuehandling on }
  else { 
    /timexdcctransferstestoff 
    set %botqueuehandling off 
  }
  /outputxdccinfo 14Bot Queue Handling is now $botqueuehandling $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias connectxdccnetsatstartswitch {
  if ($connectxdccnetsatstart == off) { set %connectxdccnetsatstart on }
  else { set %connectxdccnetsatstart off }
  /outputxdccinfo 14Connect to all XDCC nets at IRC Start is now $connectxdccnetsatstart $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias connectnetsatstartswitch {
  if ($connectnetsatstart == off) { set %connectnetsatstart on }
  else { set %connectnetsatstart off }
  /outputxdccinfo 14Auto Connect to networks at IRC Start is now $connectnetsatstart $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias preemptivejoinswitch {
  if ($xdccpreemptivejoin == off) { set %preemptivejoin on }
  else { set %preemptivejoin off }
  /outputxdccinfo 14Preemptive join is now $xdccpreemptivejoin $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias automultisourceswitch {
  if ($multisourcehandling  == on) { set %multisourcehandling off }
  else { set %multisourcehandling on }
  /outputxdccinfo 14Multi Source Download Support is now $multisourcehandling $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias timerbotqueuetestswitch {
  if ($testnumoftransferspeed == off) { 
    /timexdcctransferstest 
    set %testnumoftransferspeed on
  }
  else { 
    /timexdcctransferstestoff 
    set %testnumoftransferspeed off
  }
  /outputxdccinfo 14Bot Queue Handling Timed Test is now $testnumoftransferspeed $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias comparepacksswitch {
  if ($comparepacks == off) { set %comparepacks on }
  else { set %comparepacks off }
  if ($group(#grouppackchangedetect) == on) { /disable #grouppackchangedetect }
  elseif ($group(#grouppackchangedetect) == off) { /enable #grouppackchangedetect }
  /outputxdccinfo 14Packfile Tracking is now $comparepacks $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias trackqueueposswitch {
  /generalswitch #grouptrackqueuepos
  /outputxdccinfo 14Track Queue Position From Bot Notices is now $group(#grouptrackqueuepos) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias autocleanatstartswitch {
  if ($autocleanatstart == off) { set %autocleanatstart on }
  else { set %autocleanatstart off }
  /outputxdccinfo 14Auto Clean Bot Library At Start is now $autocleanatstart $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias clearallqueuesoncompleteswitch {
  if ($clearallqueuesoncomplete == off) { set %clearallqueuesoncomplete on }
  else { set %clearallqueuesoncomplete off }
  /outputxdccinfo 14Auto Attempt to Clean All Bot Queues on Pack Complete is now $clearallqueuesoncomplete $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias colorbotlistswitch {
  if ($colorbotlist == on) { set %colorbotlist off }
  else { set %colorbotlist on }
  /outputxdccinfo 14Bot list coloring at bot Join/Part/Connect/Disconnect/Quit $colorbotlist $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias xdccautoextractionswitch {
  if ($xdccautoextraction == on) { set %xdccautoextraction off }
  else { set %xdccautoextraction on }
  /outputxdccinfo 14Automatically extract archives on file completion is now $xdccautoextraction $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias keyshortcutsswitch {
  if ($group(#groupctrlkeys) == off) { .enable #groupctrlkeys }
  else { .disable #groupctrlkeys }
  /outputxdccinfo 14Shortcut keys for XDCC window are now $group(#groupctrlkeys) $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
alias debugxdccswitch {
  if ($debugxdccinfo == off) { set %debugxdccinfo on }
  else { set %debugxdccinfo off }
  /outputxdccinfo 14Debugging log writing is now $debugxdccinfo $+ .
  /outputxdccinfo 
}
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------