XDCC Browser — File Browser

XDCCBrowserv3.41 / XDCCBrowserv3.41 / XDCCb.mrc

XDCCb.mrc — 244.04 KB — Download this file

raw 5:*: {
  var %network = $gettok($network,1,46)
  if (SAFELIST isin $2-) && ( (!$ini(xdccgets.ini,DCCÿAllow,%network)) || ( $ini(xdccgets.ini,DCCÿAllow,%network) = 0) ) Writeini -n xdccgets.ini DCCÿAllow %network %network
}
raw 421:*: {
  var %network = $gettok($network,1,46)
  if (DCCALLOW == $2) && ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) {
    remini -n xdccgets.ini DCCÿAllow %network
    haltdef
  }
}
raw 481:*: {
  var %network = $gettok($network,1,46)
  if (Permission Denied* IRC operator* iswm $2-) && ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) {
    remini -n xdccgets.ini DCCÿAllow %network
    haltdef
  }
}
ctcp *:*:*:{
  var %file = $nopath($filename)
  if ($readini(xdccgets.ini,ôOptionsô,DCC-Fix) = on) {
    if (dcc resume * iswm $1-) && ($nick = $me) {
      var %a = 1
      while (%a <= $Get($me,0)) {
        if ($get($me,%a).status = waiting) && ($get($me,%a).resume) {
          .raw PRIVMSG $hfind(Xdcc-dcc-fix,$get($me,%a).file,1,w).data $+(:,$chr(1),$1-,$chr(1))
          halt
        }
        inc %a
      }
    }
    if ($nick == $me) return
    if (dcc accept * iswm $1-) {
      var %a = 1
      while (%a <= $Get($me,0)) {
        if ($get($me,%a).status = waiting) && ($get($me,%a).resume) {
          .raw PRIVMSG $me $+(:,$chr(1),$1-,$chr(1)) 
          halt 
        }
        inc %a
      }
    }
  }
  if (dcc send * !iswm $1-)  return
  var %network = $gettok($network,1,46)
  var %file2 = $+(Xdccb-queues-,%network,.txt)
  if ($read(%file2,s,$nick )) {
    while ($read(%file2,s,$nick )) {
      write $+(-dl,$calc($readn +1)) %file2
      dec %lines    
    }
    var %line = $read(%file2,w,$nick)
    write $+(-dl,$calc($readn +1)) %file2
    write -l0 %file2 $calc($read(%file2,0) - 1)
    if ($lines(%file2) < 2) .remove $+(",%file2,")
  }
  if ($len(%file) >= $calc(255 - $len($nick))) {
    linesep
    Echo -ts $+(,$color(info)) $nick $+(,$color(highlight)) tried to send you an exploit file to crash your mIRC !
    Echo -ts Stoping send connection!
    linesep
    halt
  }
  if ($readini(xdccgets.ini,ôOptionsô,DCC-Fix) = on) {
    if ($gettok($address($nick,5),-1,64)) var %site = $v1 
    else %site = $site
    var %lip = $gettok($1-,-3,32) 
    var %port = $gettok($1-,-2,32) 
    var %size = $gettok($1-,-1,32)
    if (%lip !isnum) return
    if (%port == 0) return
    if ((%lip >= 167772160) && (%lip <= 184549375)) || ((%lip >= 3232235520) && (%lip <= 3232301055)) || ((%lip >= 2886729728) && (%lip <= 2887778303)) {
      Echo -ts $nick sent an invalid DCC request, trying to fix it...
      if ($gettok(%site,-1,46) isnum) { 
        var %ip = %site
        Echo -ts Trying get Ip from address 
        fixdcc $nick $longip(%ip) %port %size %file 
      }
      elseif ($hget(dccfix,%site)) { 
        Echo -ts Trying to fix from dns cache 
        fixdcc $nick $v1 %port %size %file 
      }
      else {
        if (!$window(@dccfix)) window -hn @dccfix
        aline @dccfix %site $nick %lip %port %size %file
        .dns %site
      }
      halt
    }
  }
}
on *:active:*: if ($dialog(xdccb)) dialog -t xdccb XDCC Browser v3.41 ... Active network: $iif($network,$gettok($network,1,46),None)
on *:chat:*: {
  if ($readini(xdccgets.ini,ôOptionsô,Fserv-Browser) != on) return
  var %dialog = $+(Xdccb-Fserv,=$nick)
  if (mIRC* v* File Server* iswm $1-) {
    dialog -m %dialog Xdccb-Fserv
    unset $+(%,=$nick,Start)
    dialog -t $+(Xdccb-Fserv,=$nick) $+($nick,'s) File Server (XDCC Browser v3.41)
    .msg =$nick Dir
    did -a %dialog 27 +seb 2 2 [..\]
    did -c %dialog 27 2
  }
  if (!$dialog(%dialog)) return
  if ($1- = ['C' for more, 'S' to stop]) {
    .msg =$nick S
    .msg =$nick dir
  }
  elseif ($+([*\,$chr(42),.,$chr(42),]) iswm $1-) {
    set $+(%,=$nick,Start) Start
    dialog -t $+(Xdccb-Fserv,=$nick) $+($nick,'s) File Server (XDCC Browser v3.41)
    $+(.timer,%dialog) off
    did -ra %dialog 29 $1-
  }
  elseif (Closing Idle connection in * seconds iswm $1-) {
    dialog -t %dialog $+($nick,'s) File Server (XDCC Browser v3.41) ... Closing in $5 Seconds
    $+(.timer,%dialog) 1 1 Xdccb-Fservtimer %dialog
    return
  }
  elseif (End of list = $1-) || (End of list. = $1-) {
    var %window = $+(@Xdccb-fserv-,%dialog)
    if (!$window(%window)) window -hn %window
    filter -criw $+(2-,$did(%dialog,28).lines) %dialog 28 %window *
    filter -aco %window %dialog 28 Xdccb-filter-Fserv
    unset $+(%,=$nick,Start) 
    close -@ %window
  }
  if ($eval($+(%,=$nick,Start),2) = Start) && ($1-) && ($+(*,$chr(42),.,$chr(42),]) !iswm $1-) && (.. != $1-) {
    if ($isupper($1-)) {
      var %loc = $did-tree(%dialog,27).sel
      if (%loc) did -i %dialog 27 1 cb root $v1 
      if (!$find-branch(%dialog,27,$replace($1-,$chr(32),$chr(160)),%loc)) did -a %dialog 27 +eb 1 1 $replace($iif($1- isnum,$+($1-,$chr(160)),$1-),$chr(32),$chr(160))
    }
    else {
      var %end = $gettok($gettok($1-,-3,32),-1,46)
      var %icon = $Xdccb-fileicon(%end)
      var %type = $regread($+(HKEY_CLASSES_ROOT\.,%end,\)) 
      if ($regread($+(HKEY_CLASSES_ROOT\,%type,\))) var %type = $v1
      did -a %dialog 28 1 + %icon $replace($gettok($1-,$+(1-,$calc($numtok($1-,32) -2)),32),$chr(32),$chr(160)) $chr(9) $remove($gettok($1-,-2-,32),$chr(32)) $chr(9) %type
    }
  }
}
On *:close:=: {
  if ($hget(xdccfserv)) hdel xdccfserv =$nick
  if ($dialog($+(Xdccb-Fserv,=$nick))) dialog -x $v1
  var %window = $+(@Xdccb-fserv-,$+(Xdccb-Fserv,=$nick))
  if ($window(%window)) close -@ %window
  var %a = 1
  while ($dialog(%a)) {
    var %dialog = $v1
    if (Xdccb-Fserv=* iswm %dialog) return
    inc %a
  }
  if ($hget(Xdccb-FileIcons)) .hfree Xdccb-FileIcons
}
on *:connect: {
  if ($readini(xdccgets.ini,ôOptionsô,Sessions) = on) $+(.timerXdcc-sessions,$gettok($network,1,46)) 1 43200 Xdccb-Session
  if ($readini(xdccgets.ini,ôOptionsô,Join-channels) = yes) {
    var %a = 1
    while ($ini(xdccgets.ini,%a)) {
      var %nick = $v1
      var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
      var %chan = $readini(xdccgets.ini,%nick,chan)
      if (%network = $gettok($network,1,46)) && ($istok(%chans,%chan,255) = $false) {
        var %chans = $addtok(%chans,%chan,44)
      }
      inc %a
    }
    if (%chans) .join %chans
  }
  if ($dialog(XDCCb)) {
    var %network = $gettok($network,1,46)
    var %root = $Find-branch(xdccb,27,%Network)
    if (!%root) did -a xdccb 27 +eb 1 1 %Network $chr(9) Click on the network for a list of channels.
  }
}
on *:ctcpreply:VERSION*: {
  var %net = $gettok($network,1,46)
  if ($readini(xdccgets.ini,ôOptionsô,XDCC-Requestlist) = on) && (!$hfind($+(XDCCb-,%net),$+($nick,*),1,w)) && ((iroffer isin $2-) || (Invision isin $2-)) /.msg $nick XDCC list
}
on *:disconnect: {
  var %network = $gettok($network,1,46)
  var %file = $+(Xdccb-queues-,%network,.txt)
  if ($exists(%file)) .remove %file
  var %root = $Find-branch(xdccb,27,%Network)
  if (%root) && (!$hget($+(XDCCb-,%network))) did -d xdccb 27 %root
  elseif ($readini(xdccgets.ini,ôOptionsô,XDCCDelete-hash) = on) {
    if ($hget($+(XDCCb-,%network))) {
      if ($dialog(XDCCb)) did -d xdccb 27 %root
      .hfree $+(XDCCb-,%network)
    }
  }
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 0) return
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    if ($readini(xdccgets.ini,%nick,Network) = %network) .dcc trust -r $+($replace(%nick,$chr(255),[,$chr(251),]),!*@*) 
    inc %a 
  }
}
on *:dns:{
  var %i = $dns(0)
  if (%i = 0) && ($window(@dccfix)) {
    var %t = $dns(0).addr
    if ($fline(@dccfix,%t *,1)) {
      tokenize 32 $line(@dccfix,$v1)
      dline @dccfix $v1
      if ($line(@dccfix,0) == 0) window -c @dccfix
      Echo -ts Couldn't resolve $dns(%i).addr - can't fix DCC request
      linesep 
      return
    }
  }
  while (%i) {
    var %t = $dns(%i).addr
    if ($fline(@dccfix,%t *,1)) {
      tokenize 32 $line(@dccfix,$v1)
      dline @dccfix $v1
      if ($line(@dccfix,0) == 0) window -c @dccfix
      if (?*.?*.?*.?* !iswm $dns(%i).ip) { 
        Echo -ts Couldn't resolve $dns(%i).addr - can't fix DCC request 
        linesep 
        return 
      }
      else { 
        Echo -ts Fixing DCC from dns results 
        hadd -mu3600 dccfix $dns(%i).addr $longip($dns(%i).ip) 
        fixdcc $2 $longip($dns(%i).ip) $4- 
        return 
      }
    }
    dec %i
  }
}
on ^*:HOTLINK:*:#:{
  if ($gettok($hotlinepos,1,32) < 4) && ($chr(35) isin $1-2) return
  halt
}
on *:HOTLINK:*:#: {
  if ($window($active).stamp) && ($replace($timestampfmt,h,*,y,*,m,*,d,*,H,*,t,*,T,*,n,*,o,*,s,*,z,*) iswm $gettok($hotline,1,32)) var %place = 2
  else var %place = 1
  if ($xPack($gettok($hotline,$+($calc(%place + 1),-),32))) {
    var %Pack = $v1
    var %nick = $remove($gettok($hotline,%place,32),@,+,$chr(37),!,$chr(42))
    var %a = 0
    while (%a <= $calc($len(%nick) /2)) {
      if ($left($right($gettok($hotline,%place,32),$+(-,%a)),$+(-,%a)) ison $chan) {
        var %nick = $v1
        break
      }
      inc %a
    }
    if (%nick ison $chan) {
      var %network = $gettok($network,1,46)
      saveinfo %nick %Pack %network
      var %scid = $XDCCb-network(%network)
      var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
      if ($readini(xdccgets.ini,%nick2,Get) >= $readiniwm(xdccgets.ini,%nick2,pack*,0)) XDCCb-request-Pack %nick $+($chr(35),$remove($gettok(%Pack,2,9),$chr(32))) %scid %network %Pack
    }
  }
}
on *:input:*: {
  if ($hget(xdccfserv,$active)) {
    if ($1 = Get) && ($2) {
      var %pack
      var %a = 1
      var %nick = $remove($active,=)
      while ($hget(%a)) {
        var %if = $v1
        if (Xdccb- isin %if) {
          var %pack = $hget(%if,$+(%nick,$chr(255),$hget(%if,$+(%nick,$chr(255),Fserv-use))))
          if (%pack) break
        }
        inc %a
      }
      var %network = $gettok(%if,2-,45)
      if (%pack) {
        Saveinfo %nick %Pack %network
        var %scid = $XDCCb-network(%network)
        if ($ini(xdccgets.ini,DCCÿAllow,$gettok(%network,1,46))) && ($ini(xdccgets.ini,DCCÿAllow,$gettok(%network,1,46)) != 0) scid -t1 %scid /.DCCALLOW $+(+,%user)
        if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust $+(%user,!*@*)
      }
    }
    return
  }
  if (/ !isin $1) || ( ($remove($1,/) != msg) && ($remove($1,/) != ctcp) ) return
  if (!$chan) && (!$xdccb-changet($cid,$2)) return
  var %pack = [ [ $+($,$0) ] ]
  if ($left(%pack,1) != $chr(35) ) || ($right(%pack,-1) !isnum) return
  var %network = $gettok($network,1,46)
  var %line = [ [ $+($,2-,$calc($0 -1)) ] ]
  var %usage = $hget($+(XDCCb-,%network),$+($2,$chr(255),Usage))
  var %pack = $remove(%pack,$chr(35))
  if ($remove($1,/.,/) %line = $remove($gettok(%usage,1,32),/.,/) $gettok(%usage,2-,32) ) || ( (!%usage) && ($3-4 = XDCC Send) ) {
    if (!%usage) hadd -m $+(XDCCb-,%network) $+($2,$chr(255),Usage) $replace($1,//,/.,/,/.) %line
    saveinfo $2 Requesting Pack no. $+($chr(35),%Pack) $chr(9) %pack $chr(9) n/a %network
    XDCCb-request-Pack $2 $+($chr(35),%Pack) $cid $network Requesting Pack no. %Pack $chr(9) %pack $chr(9) n/a
    halt
  }
}
on *:join:*: {
  if ($nick = $me) {
    if ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) .Timer 1 5 XDCCb-onme-join $chan
    if ($readini(xdccgets.ini,ôOptionsô,XDCC-Requestlist) = on) .Timer 1 5 XDCC-RequestList $chan
    if ($chan = #incomplete) && ($readini(xdccgets.ini,ôOptionsô,Auto-Corrupt) = yes) {
      var %a = $ini(XDCCb-corrupt.ini,0)
      while (%a != 0) {
        var %file = $ini(XDCCb-corrupt.ini,%a)
        if (!$Readini(XDCCb-corrupt.ini,%file,$network)) msg $chan !request %file / $Readini(XDCCb-corrupt.ini,%file,desc)
        dec %a
      }
    }
    if ($dialog(xdccb)) {
      var %network = $gettok($network,1,46)
      var %root = $find-branch(xdccb,27,%network)
      if (!$find-branch(xdccb,27,$chan,%root)) {
        did -i xdccb 27 1 cb root %root
        did -a xdccb 27 + 2 2 $chan $chr(9) Click on the channel for a list of nicks.
      }
    }
    return
  }
  elseif ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) {
    var %nick = $replace($nick,[,$chr(255),],$chr(251))
    if ($ini(xdccgets.ini,%nick)) {
      var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
      var %chan = $readini(xdccgets.ini,%nick,chan)
      var %get = $readini(xdccgets.ini,%nick,get)
      var %Pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
      if (%network = $gettok($network,1,46)) && ($chan = %chan) && (%Pack) $+(.TimerXDCCB-,$nick) 1 $calc($rand(60,180)) XDCCb-request-Pack $nick $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) $cid %network %Pack
    }
  }
}
on *:load: {
  XDCCB-Setup
  if ($readini(xdccgets.ini,DCCÿAllow,Networks)) { 
    var %networks = $readini(xdccgets.ini,DCCÿAllow,Networks)
    var %a = 1
    while ($gettok(%networks,%a,255)) {
      writeini -n xdccgets.ini DCCÿAllow $v1 $v1
      inc %a
    }
    remini -n xdccgets.ini DCCÿAllow Networks
  }
  if ($gettok($readini(mirc.ini,options,n6),28,44) != 2) || ($sreq != auto) {
    var %check = $input(Do you want XDCC Browser to set your mIRC client to automaticaly accept all files except for these types ? $crlf $replace($readini(mirc.ini,text,ignore),$chr(44),$chr(32)) $crlf From trusted users ?,yq,XDCC Browser)
    if (%check = $true) {
      .dcc ignore ignore 
      .sreq +m auto
    }
  }
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 0) {
    var %check = $input(Do you want XDCC Browser to set your mIRC client to recieve files only from a list of "Trusted" users ?,yq,XDCC Browser)
    if (%check = $true) {
      .sreq +m auto
      .dcc trust on
    }
  }
  remini -n xdccgets.ini ôOptionsô Sock-net
  remini -n xdccgets.ini ôOptionsô Line
  remini -n xdccgets.ini ôOptionsô Sock-start
  remini -n xdccgets.ini ôOptionsô Sock-serv
  remini -n xdccgets.ini ôOptionsô Sock-nick
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    if (%nick != DCCÿAllow) && (%nick != ôOptionsô) {
      if ($readini(xdccgets.ini,%nick,Pack)) {
        var %Packs = $v1
        var %Dates = $readini(xdccgets.ini,%nick,Date)
        var %Times = $readini(xdccgets.ini,%nick,Time)
        var %b = 1
        while ($gettok(%Packs,%b,255)) {
          var %Pack = $v1
          var %num = $gettok(%Pack,1,46)
          writeini -n xdccgets.ini %nick $+(Pack,%num) %Pack
          writeini -n xdccgets.ini %nick $+(Date,%num) $gettok(%Dates,%b,255)
          writeini -n xdccgets.ini %nick $+(Time,%num) $gettok(%Times,%b,255)
          inc %b
        }
        remini -n xdccgets.ini %nick Pack
        remini -n xdccgets.ini %nick Date
        remini -n xdccgets.ini %nick Time
      }
      if ($readini(xdccgets.ini,%nick,Network)) {
        writeini -n xdccgets.ini %nick Network $gettok($readini(xdccgets.ini,%nick,Network),1,46)
        if ($readini(xdccgets.ini,%nick,Server))  .server -a $readini(xdccgets.ini,%nick,Server) $iif($readini(xdccgets.ini,%nick,Port),-p $v1) -g $readini(xdccgets.ini,%nick,Network)
      }
    }
    inc %a
  }
  var %a = 1
  while ($hget(%a)) {
    var %if = $v1
    if (Xdccb- isin %if) {
      .hfree %if
      dec %a
    }
    inc %a
  }
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    if (%nick != DCCÿAllow) && (%nick != ôOptionsô) {
      var %b = 1
      while ($readiniwm(xdccgets.ini,%nick,Pack*,%b).sec) {
        var %section = $v1
        var %pack = $readini(xdccgets.ini,%nick,%section)
        if ($chr(9) isin %pack) return
        writeini -n xdccgets.ini %nick %section $gettok(%pack,$+(2-,$calc($numtok(%pack,32) -1)),32) $chr(9) $calc($remove($gettok(%pack,1,32),.)) $chr(9) $remove($gettok(%pack,2,171),$chr(187))
        inc %b
      }
    }
    inc %a
  }
  var %a = 1
  while ($findfile($mircdir,Xdccb-queues-*.txt,%a)) {
    var %file = $v1
    if ($numtok($nopath(%file),46) > 2) .rename $+(",%file,") $+(",$nofile(%file),$gettok($nopath(%file),1,46),.txt")
    inc %a
  }
  var %check = $?!="Do you want the XDCC Browser to control IRC:\\ Links from the web ?"
  Xdccb-Make-reg
  run regedit /s /c XdccB.reg
  if (%check = $true) writeini -n xdccgets.ini ôOptionsô Links on
  else .timer 1 1 .remove XdccB.reg
  linesep
  Echo -ats $+(,$color(info)) Finished loading XDCC Browser v3.41
  Echo -ats $+(,$color(action)) Right click, and choose XDCC Browser to use the script.
  linesep
}
on ^*:notice:*:*: {
  if (!$network) return
  if ($1-2 = DCC Fserve) {
    hadd -m Xdccfserv =$nick 1
    return
  }
  var %listing = $readini(xdccgets.ini,ôOptionsô,Listing)
  if ($gettok(%listing,1,32) = 1) { 
    if ($chr(35) isin $1-2) {
      if ($xPack($1-)) {
        var %Pack = $puttok($v1,$replace($gettok($v1,1,9),$chr(32),$chr(160)),1,9)
        if ($chr(43) = $left($gettok(%pack,1,32),1)) var %pack = $replace($gettok(%pack,1,32),$chr(43),$chr(45)) $gettok(%pack,2-,32)
        if ($comchan($nick,1)) addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %Pack
        if ($readini(xdccgets.ini,ôOptionsô,Hide-Packs) = on) haltdef
        return
      }
    }
    if ($Xdccdata($1-)) return
  }
  if ($gettok(%listing,2,32) = 1) && (Trigger isin $1-) {
    if ($fpack($1-)) {
      if ($readini(xdccgets.ini,ôOptionsô,Hide-Fserv) = on) haltdef
      else return
    }
  }
  if ($gettok(%listing,3,32) = 1) && (FTP isin $1-) if ($ftppack($1-)) return
  if ((/ctcp isin $1-) || (/msg isin $1-)) {
    if (Position type isin $1-) && (been listed isin $1-) && (queue isin $1-) $iif(/msg isin $1-,/.msg,/.ctcp) $nick xdcc queues
    if ($XUsage($nick,$1-) && ($readini(xdccgets.ini,ôOptionsô,Hide-Packs) = on)) haltdef
  }
  if ($3 = $null) return
  var %nick = $replace($nick,[,$chr(255),],$chr(251))
  if ($ini(xdccgets.ini,%nick)) {
    var %file = $+(Xdccb-queues-,$gettok($network,1,46),.txt)
    if (!$exists(%file)) write -l0 %file 0
    var %lines = $lines(%file)
    var %nicks = $calc($read(%file,0))
    if (!$read(%file,w,$nick,$calc(%lines - %nicks))) {
      write %file $nick
      write -l1 %file $calc($read(%file,0) +1)
    }
    write -il2 %file $nick $strip($1-) $cTime
    if ((All Slots Full isin $1-) && (Try Again Later isin $1-) && (Denied !isin $1-)) || ((There are too many send isin $1- ) && ( all queue slots are used isin $1- )) $&
      || (*There are too many send* all* queue slots* iswm $1-) {
      var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
      var %chan = $readini(xdccgets.ini,%nick,chan)
      var %get = $readini(xdccgets.ini,%nick,get)
      var %Pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
      if (%network = $gettok($network,1,46)) && ($nick ison %chan) && (%Pack) $+(.TimerXDCCB-,$nick) 1 $readini(xdccgets.ini,ôOptionsô,Request-Timer) XDCCb-request-Pack $nick $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) $cid $network %Pack
    }
  }
}
on ^*:open:?:*: if ($1- = You Don't Appear To Be In A Queue) haltdef
on *:part:*: {
  var %network = $gettok($network,1,46)
  if ($dialog(XDCCb)) {
    var %root = $find-branch(xdccb,27,%network)
    var %loc = %root $find-branch(xdccb,27,$chan,%root)
    if ($nick = $me) && (%loc) && ($did-tree(xdccb,27,%loc).lines = 0) {
      did -i xdccb 27 1 cb root %root
      did -d xdccb 27 $find-branch(xdccb,27,$chan,%root)
    }
  }
  if ($readini(xdccgets.ini,ôOptionsô,Delete) != on) return
  if ($nick = $me) {
    var %a = 1
    while ($hget(%hash,%a).item) {
      var %item = $v1
      if (*ÿChan iswm %item) {
        if ($hget($+(XDCCb-,%network),%item) = $chan) {
          hdel -w $+(XDCCb-,%network) $+($gettok(%item,1,255),ÿ*)
          dec %a
        }
      }
      inc %a
    }
  }
  elseif ($hmatch($+(XDCCb-,%network),$+($nick,$chr(255),*),1)) {
    if ($comchan($nick,0) = 0) { 
      hdel -w $+(XDCCb-,%network) $+($nick,$chr(255),*)
      if ($dialog(XDCCb)) uPackno  
    }
  }
}
on *:quit: {
  var %network = $gettok($network,1,46)
  if ($readini(xdccgets.ini,ôOptionsô,Delete) = on) && ($hmatch($+(XDCCb-,%network),$+($nick,$chr(255),*),1)) {
    if ($dialog(XDCCb)) {
      var %loc = $find-branch(xdccb,27,%network)
      var %loc = %loc $find-branch(xdccb,27,$hget($+(XDCCb-,%network),$+($nick,$chr(255),chan)),%loc)
      if (!%loc) return
      did -i xdccb 27 1 cb root %loc
      if ($Find-branch(XDCCb,27,$nick,%loc)) did -d XDCCb 27 $v1 
      if ($did-tree(xdccb,27,%loc).lines = 0) did -d xdccb 27 %loc
      uPackno
    }
    hdel -w $+(XDCCb-,%network) $+($nick,$chr(255),*) 
    if ($Timer($+(XDCCB-,$nick))) $+(.TimerXDCCB-,$nick) off
  }
}
On *:Signal:Mpopup.XDCCB*: {
  ;Join
  if ($1 = 1) {
    var %chan
    if ($signal = Mpopup.XDCCB207) {
      var %line = $did(XDCCb,207).seltext
      var %line = $did-list(1-,%line)
      var %network = $remove($gettok(%line,9,9),$chr(32))
      var %chan = $gettok(%line,8,9)
      var %server = $gettok($gettok(%line,10,9),1,4)
    }
    elseif ($signal = Mpopup.XDCCB308) {
      var %nick = $replace($did-list(6,$did(xdccb,308).seltext),[,$chr(255),],$chr(251))
      var %network = $did-list(8,$did(xdccb,308).seltext)
      var %server = $readini(xdccgets.ini,%nick,server)
      var %chan = $readini(xdccgets.ini,%nick,chan)
    }
    else {
      var %network = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
      var %server = $hget($+(xdccb-,%network),$hfind($+(xdccb-,%network),*ÿServer,1,w))
      if ($did-tree(xdccb,27,$gettok($did-tree(xdccb,27).sel,1-2,32)) != %network) var %chan = $v1
    }
    Xdccb-Join %network %server %chan
  }
  ;Remove
  if ($1 = 2) {
    if ($did-tree(xdccb,27).root) var %network = $did-tree(xdccb,27,$v1)
    if ($signal = Mpopup.XDCCB28) {
      while ($did(xdccb,28,1).sel) {
        if (!$did-tree(xdccb,27)) {
          var %nick = $gettok($hfind($+(%name,$gettok($network,1,46)),$did(XDCCb,28,1).seltext,1,w).DATA,1,255)
          var %Pack = $+($gettok($hfind($+(%name,$gettok($network,1,46)),$did(XDCCb,28,1).seltext,1,w).DATA,2,255),.) $did(xdccb,28).seltext
        }
        else {
          if ($numtok($did-tree(xdccb,27).sel,32) = 2) var %nick = $did-list(7,$gettok($did(xdccb,28).seltext,1,4))
          else var %nick = $did-tree(xdccb,27)
          var %Pack = $did(xdccb,28,1).seltext
        }
        var %Pack = $did-list(2,%Pack)
        if (List* !iswm %Pack) var %Pack = $calc(%Pack)
        hdel -w $+(xdccb-,%network) $+(%nick,$chr(255),%Pack)
        did -d XDCCb 28 $did(xdccb,28,1).sel
        var %loc = $did-tree(xdccb,27).sel
        if ($did(xdccb,28).lines < 2) did -d XDCCb 27 $gettok(%loc,3,32)
        if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) {
          .hfree $+(xdccb-,$did-tree(xdccb,27))
          goto end2
        }
      }
    }
    elseif ($signal = Mpopup.XDCCB27) {
      var %loc = $did-tree(xdccb,27).sel
      var %depth = $numtok(%loc,32)
      if (%depth = 1) {
        if ($hget($+(xdccb-,%network))) .hfree $+(xdccb-,%network)
        var %scid = $XDCCb-network(%network)
        if (!%scid) {
          did -i xdccb 27 1 cb root
          did -d xdccb 27 %loc
          goto end2
        }
        did -i xdccb 27 1 cb root %loc
        var %a = 2
        while ($did-tree(xdccb,27,%loc %a)) {
          var %chan = $v1
          did -d xdccb 27 %a
          if ($XDCCb-onchan(%scid,%chan)) did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
          inc %a
        }
      }
      elseif (%depth = 2) {
        var %a = 1
        while ($hfind($+(xdccb-,%network),*ÿChan,%a,w)) {
          var %item = $v1
          if ($hget($+(xdccb-,%network),%item) = $did-tree(xdccb,27)) {
            hdel -w $+(xdccb-,%network) $+($gettok(%item,1,255),ÿ*)
            dec %a
          }
          inc %a
        }
        did -i xdccb 27 1 cb root $did-tree(xdccb,27).root
        var %chan = $did-tree(xdccb,27)
        var %scid = $XDCCb-network(%network)
        did -d xdccb 27 $gettok(%loc,2,32)
        if ($XDCCb-onchan(%scid,%chan)) {
          did -i xdccb 27 1 cb root $gettok(%loc,1,32)
          did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        }
        if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) {
          .hfree $+(xdccb-,%network)
          if (!%scid) {
            did -i xdccb 27 1 cb root
            did -d xdccb 27 %loc
          }
          goto end2
        }
      }
      elseif (%depth = 3) {
        hdel -w $+(xdccb-,%network) $+($did-tree(xdccb,27),$chr(255),*)
        did -i xdccb 27 1 cb root $gettok(%loc,1-2,32)
        did -d XDCCb 27 $gettok(%loc,3,32) 
        did -r xdccb 28
        var %chan = $did-tree(xdccb,27)
        var %scid = $XDCCb-network(%network)
        if ($did-tree(xdccb,27,$gettok(%loc,1-2,32)).lines < 1) && (!$XDCCb-onchan(%scid,%chan)) {
          did -d xdccb 27 $gettok(%loc,2,32)
          did -i xdccb 27 1 cb root $gettok(%loc,1,32)
          did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        }
        if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) {
          .hfree $+(xdccb-,%network)
          if (!%scid) {
            did -i xdccb 27 1 cb root
            did -d xdccb 27 %loc
          }
        }
      }
    }
    :end2
    var %loc = $did-tree(xdccb,27).sel
    var %depth = $numtok(%loc,32)
    if (%depth = 3) XDCCb28
    filter -criw $+(2-,$did(xdccb,28).lines) xdccb 28 @tmpXdccb28 *
    filter -cot 1 9 @tmpXdccb28 xdccb 28 * 
    uPackno
  }
  ;Request
  if ($1 = 3) {
    if ($signal = Mpopup.XDCCB308) var %id = 308
    elseif ($signal = Mpopup.XDCCB207) var %id = 207
    else var %id = 28
    var %b = 1
    while ($did(xdccb,%id,%b).sel) {
      if (%id = 207)  {
        var %match
        var %line-num = $did(XDCCb,207,%b).sel
        var %line = $did(XDCCb,207,%line-num).text
        var %line = $did-list(1-,%line)
        var %Pack = $gettok(%line,1-4,9)
        var %nick = $remove($gettok(%line,7,9),$chr(32))
        var %num = $+($chr(35),$remove($gettok(%line,2,9),$chr(32)))
        var %net = $gettok($remove($gettok(%line,9,9),$chr(32)),1,46)
        var %scid = $XDCCb-network(%net)
        var %Pack-num = $remove($gettok(%line,2,9),$chr(32))
        if (!$hget($+(Xdccb-,%net),$+(%nick,$chr(255),%Pack-num))) {
          var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
          var %Server = $remove($gettok($gettok(%line,10,9),1,4),$chr(32))
          var %port = 6667
          var %chan = $+($remove($gettok(%line,8,9),$chr(32)))
          var %Pack = $gettok(%line,1-4,9)
          var %a = 1
          while ($readiniwm(xdccgets.ini,%nick2,Pack*,%a)) {
            var %temp-Pack = $v1 
            if (%temp-Pack = %Pack) var %match = %Pack
            inc %a
          }
          if (!%match) {
            writeini -n xdccgets.ini %nick2 $+(Pack,%Pack-num) %Pack
            writeini -n xdccgets.ini %nick2 $+(Date,%Pack-num) $Date
            writeini -n xdccgets.ini %nick2 $+(Time,%Pack-num) $Time
            writeini -n xdccgets.ini %nick2 Chan %chan
            var %usage = $gettok(%line,2,4)
            writeini -n xdccgets.ini %nick2 Usage $gettok(%usage,$+(1-,$calc($numtok(%usage,35) -1)),35)
            if ($read($+(",$mircdirservers.ini"),w,*= $+ %net $+ : Random serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,3,58)
            elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %Net *serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
            elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Net,.,*,Group:,*,%net))) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
            else {
              writeini -n xdccgets.ini %nick2 Server %server
              .server -a %server -p %port -g %net
            }
            writeini -n xdccgets.ini %nick2 Network %net
            writeini -n xdccgets.ini %nick2 Port %port
            if (!$readini(xdccgets.ini,%nick2,get)) writeini -n xdccgets.ini %nick2 Get 1
            if ($dialog(XDCCb)) {
              if ( $didwm(xdccb,308,$+(*,$replace(%pack,$chr(9),$+(*,$chr(9),*)),*,%nick,*),1) = 0 ) {
                var %get = $readini(xdccgets.ini,%nick2,get)
                var %packs = $readiniwm(xdccgets.ini,%nick2,Pack*,0)
                var %order = $iif($calc(%packs - %get +1) > 0,$v1,Finished)
                var %stat = $Xdccb-stats(%nick,%net,%chan,%order)
                if ($numtok(%pack,9) = 2) var %pack = %pack $chr(9) n/a
                did -a XDCCb 308 $gettok(%pack,1-3,9) $chr(9) %stat $chr(9) $ord(%order) $chr(9) %nick $chr(9) %chan $chr(9) %net $chr(9) %server
              } 
            }
            inc %b 
            continue
          }
        }
        elseif (File server !isin %pack) {
          Saveinfo %nick %Pack %net
          var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
          if ($readini(xdccgets.ini,%nick2,Get) >= $readiniwm(xdccgets.ini,%nick2,pack*,0)) $+(.TimerXDCCB-,%nick) 1 2 XDCCb-request-Pack %nick $+($chr(35),$remove($gettok(%Pack,2,9),$chr(32))) %scid %net %Pack
          inc %b
          continue
        }
      }
      elseif (%id = 308) {
        if (!$did(xdccb,308).seltext) return
        var %line = $did(XDCCb,308,%b).sel
        var %nick = $did-list(6,$did(xdccb,308,%line).text)
        var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
        var %net = $gettok($readini(xdccgets.ini,%nick2,network),1,46)
        var %scid = $XDCCb-network(%net)
        var %chan = $readini(xdccgets.ini,%nick2,chan)
        var %pack = $gettok($did(xdccb,308,%line).text,1-3,9)
      }
      else {
        var %line = $did(XDCCb,28,%b).sel
        var %net = $Xdccb-getscid
        var %scid = $gettok(%net,1,32)
        var %net = $gettok(%net,2,32)
        var %loc = $did-tree(xdccb,27).sel
        if ($numtok(%loc,32) = 3) {
          var %nick = $did-tree(xdccb,27)
          var %Pack = $gettok($did(xdccb,28,%line).text,1,4)
        }
        else {
          var %nick = $gettok($did-list(7,$did(xdccb,28,%line).text),1,4)
          var %Pack = $gettok($did(xdccb,28,%line).text,1-4,9)
        }
      }
      if (list* iswm $gettok(%Pack,1,46)) {
        scid -t1 %scid $+(/.,$gettok(%Pack,2-,46))
        return 
      }
      if (*File server*:* iswm $gettok(%pack,6,32)) {
        var %pack = $did-list(1-,%pack)
        hadd $+(XDCCb-,%net) $+(%nick,$chr(255),Fserv-use) $+(File server,$calc($gettok(%pack,2,9)))
        Xdccb-request-fserv %nick %net %scid $gettok(%pack,1,9)
      }
      elseif (FTP Site: = $gettok(%pack,6,32)) {
        run $+(FTP://,$gettok(%pack,7,32))
        return
      }
      elseif ($signal = Mpopup.XDCCB28) Saveinfo %nick %Pack %net
      var %pack = $did-list(1-,%pack)
      var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
      if (%scid != no) {
        var %chan = $hget($+(xdccb-,%net),$+(%nick,$chr(255),chan))
        if (!$XDCCb-onchan(%scid,%chan)) Xdccb-joinuser %nick %net
        else {
          var %get = $readini(xdccgets.ini,%nick2,Get)
          var %pack = $readiniwm(xdccgets.ini,%nick2,pack*,%get)
          if ($readini(xdccgets.ini,%nick2,Get) >= $readiniwm(xdccgets.ini,%nick2,pack*,0))  $+(.TimerXDCCB-,%nick) 1 2 XDCCb-request-Pack %nick $+($chr(35),$remove($gettok(%Pack,2,9),$chr(32))) %scid %net %Pack
        }
      }
      else Xdccb-joinuser %nick %net
      inc %b
    }
  }
  ;Add
  if ($1 = 4) {
    if ($signal != Mpopup.XDCCB207) && ((!$did(xdccb,28).sel) || (FTP: = $gettok($did(xdccb,28).seltext,1,32)) || (List* iswm $gettok($did(xdccb,28).seltext,1,32))) return
    if ($signal = Mpopup.XDCCB207) && (!$did(xdccb,207).sel) return
    var %net = $Xdccb-getscid
    var %scid = $gettok(%net,1,32)
    var %net = $gettok(%net,2,32)
    var %match
    var %a = 1
    if ($signal = Mpopup.XDCCB207) var %id = 207
    else var %id = 28
    while (%a <= $did(xdccb,%id,0).sel) {
      if ($signal = Mpopup.XDCCB207) {
        var %line-num = $did(XDCCb,207,%a).sel
        var %line = $did(XDCCb,207,%line-num).text
        var %line = $did-list(1-,%line)
        var %Pack = $gettok($did(XDCCb,207,%line-num).text,1-4,9)
        var %nick = $remove($gettok(%line,7,9),$chr(32))
        var %num = $+($chr(35),$remove($gettok(%line,2,9),$chr(32)))
        var %net = $gettok($remove($gettok(%line,9,9),$chr(32)),1,46)
        var %scid = $XDCCb-network(%net)
        var %Pack-num = $remove($gettok(%line,2,9),$chr(32))
        if (!$hget($+(Xdccb-,%net),$+(%nick,$chr(255),%Pack-num))) {
          var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
          var %Server = $remove($gettok($gettok(%line,10,9),1,4),$chr(32))
          var %port = 6667
          var %chan = $+($remove($gettok(%line,8,9),$chr(32)))
          var %Pack = $gettok(%line,1-3,9)
          var %b = 1
          while ($readiniwm(xdccgets.ini,%nick2,Pack*,%b)) {
            var %temp-Pack = $v1 
            if (%temp-Pack = %Pack) var %match = %Pack
            inc %b
          }
          if (!%match) {
            writeini -n xdccgets.ini %nick2 $+(Pack,%Pack-num) %Pack
            writeini -n xdccgets.ini %nick2 $+(Date,%Pack-num) $Date
            writeini -n xdccgets.ini %nick2 $+(Time,%Pack-num) $Time
            writeini -n xdccgets.ini %nick2 Chan %chan
            var %usage = $gettok(%line,2,4)
            writeini -n xdccgets.ini %nick2 Usage $gettok(%usage,$+(1-,$calc($numtok(%usage,35) -1)),35)
            if ($read($+(",$mircdirservers.ini"),w,*= $+ %net $+ : Random serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,3,58)
            elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %Net *serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
            elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Net,.,*,Group:,*,%net))) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
            else {
              writeini -n xdccgets.ini %nick2 Server %server
              .server -a %server -p %port -g %net
            }
            writeini -n xdccgets.ini %nick2 Network %net
            writeini -n xdccgets.ini %nick2 Port %port
            if (!$readini(xdccgets.ini,%nick2,get)) writeini -n xdccgets.ini %nick2 Get 1
            if ($dialog(XDCCb)) {
              if ( $didwm(xdccb,308,$+(*,$replace(%pack,$chr(9),$+(*,$chr(9),*)),*,$1,*),1) = 0 ) {
                var %get = $readini(xdccgets.ini,%nick,get)
                var %c = $readiniwm(xdccgets.ini,%nick,Pack*,0)
                var %order = $iif($calc(%c - %get +1) > 0,$v1,Finished)
                var %stat = $Xdccb-stats(%nick,%net,%chan,%order)
                did -a XDCCb 308 %pack $chr(9) %stat $chr(9) $ord(%order) $chr(9) %nick $chr(9) %chan $chr(9) %net $chr(9) %server
              } 
            }
          }
        }
        elseif (File server !isin %pack) Saveinfo %nick %Pack %net
      }
      else {
        var %line = $did(XDCCb,28,%a).sel
        if (!$did-tree(xdccb,27).sel) {
          var %nick = $gettok($hfind($+(XDCCb-,%net),$did(xdccb,28,%line).text,1,w).DATA,1,255)
          var %Pack = $+($gettok($hfind($+(XDCCb-,%net),$did(xdccb,28,%line).text,1,w).DATA,2,255),.) $did(xdccb,28,%line).text
        }
        else {
          if ($numtok($did-tree(xdccb,27).sel,32) = 3) var %nick = $did-tree(xdccb,27)
          else var %nick = $gettok($did-list(7,$did(xdccb,28,%line)),1,4)
          var %Pack = $gettok($did(xdccb,28,%line).text,1-4,9) $gettok($did(xdccb,28,%line).text,2,4)
        }
      }
      if ($signal = Mpopup.XDCCB28) Saveinfo %nick %Pack %net
      inc %a
    }
  }
  ;Network Channel List
  if ($1 = 10) {
    if ($signal = Mpopup.XDCCB207) {
      var %line = $did(XDCCb,207).seltext
      var %line = $did-list(1-,%line)
      var %network = $remove($gettok(%line,9,9),$chr(32))
    }
    else var %network = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
    var %scid = $XDCCb-network(%network)
    scid -t1 %scid /list -min 10
  }
  ;Remove Offline packs
  if ($1 = 11) {
    var %a = 1
    var %blah
    while ($hget(%a)) {
      var %hash = $v1
      if (Xdccb- isin %hash) {
        var %net = $gettok(%hash,2-,45))
        if (!$XDCCb-network(%net)) && (%net) {
          .hfree %hash
          var %blah = $Find-branch(xdccb,27,%net)
          if (%blah) did -d xdccb 27 %blah
          dec %a
        }
      }
      inc %a
    }
    var %a = 2
    while ($did-tree(xdccb,27,%a)) {
      var %net = $v1
      var %scid = $XDCCb-network(%net)
      var %b = 2
      while ($did-tree(xdccb,27,%a %b)) {
        var %chan = $v1
        if (!$XDCCb-onchan(%scid,%chan)) var %match = yeap
        else var %match = no
        var %c = $calc($did-tree(xdccb,27,%a %b).lines +1)
        while ($did-tree(xdccb,27,%a %b %c) ) {
          var %nick = $v1
          if (%match = yeap) || (!$XDCCb-onchan(%scid,%chan,%nick)) {
            hdel -w $+(xdccb-,%net) $+(%nick,$chr(255),*)
            did -i xdccb 27 1 cb root %a %b
            did -d xdccb 27 %c
          }
          dec %c
        }
        if ($did-tree(xdccb,27,%a %b).lines < 1) {
          did -i xdccb 27 1 cb root %a
          did -d xdccb 27 %b
          if ($XDCCb-onchan(%scid,%chan)) {
            did -i xdccb 27 1 cb root %a
            did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
          }
          ;dec %b
        }
        inc %b
      }
      inc %a
    }
    upackno
  }
  ;Quit / Part
  if ($1 = 12) {
    var %loc = $did-tree(xdccb,27).sel
    var %depth = $numtok(%loc,32)
    var %network = $did-tree(xdccb,27,$gettok(%loc,1,32))
    var %scid = $XDCCb-network(%network)
    if (%scid) {
      var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
      if (%depth = 2) {
        scid -t1 %scid /part $did-tree(xdccb,27) %message
      }
      else {
        scid -t1 %scid /quit %message
        scid %scid /window -c "Status Window" 
      }
    }
    if (!$hget($+(XDCCb-,%network))) did -d xdccb 27 %loc
  }
  ;Save selected
  if ($1 = 13) {
    var %ontop
    if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
      dialog -n xdccb
      var %ontop = yeap
    }
    var %text = $did-tree(xdccb,27)
    var %file = $sfile($+(",$scriptdir,%text,.xcb"),Save as..,Save)
    if (%ontop) dialog -o xdccb
    if (!%file) return
    if ($gettok(%file,-1,46) != xcb) var %file = $+(%file,.xcb)
    var %loc = $did-tree(xdccb,27).sel
    var %depth = $numtok(%loc,32)
    var %network = $did-tree(xdccb,27,$gettok(%loc,1,32))
    var %hash = $+(Xdccb-,%network)
    var %num = $iif(%depth = 1,$hget(%hash,0).item,$iif(%depth = 2,$hfind(%hash,%text,0).data,$hfind(%hash,$+(%text,$chr(255),*),0,w)) )
    if (%depth = 2) {
      var %a = 1
      while (($hfind(%hash,%text,%a).data) && (%num < 700) ) {
        inc %num $hfind(%hash,$+($gettok($hfind(%hash,%text,%a).data,1,255),$chr(255),*),0,w)
        inc %a 
      }
    }
    .remove $+(",%file,")
    if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
    dialog -t Xdccb-Processbar Saving list - %text ...
    did -a Xdccb-Processbar 1 0 0 %num
    window -h @Xdccb-save
    aline @Xdccb-save $+([,%hash,]) 
    var %a = 1
    if (%depth = 1) {
      while ($Hget(%hash,%a).item) {
        var %ifmatch = $v1
        aline @Xdccb-save $+($replace(%ifmatch,[,$chr(250),],$chr(251)),=,$hget(%hash,%ifmatch))
        inc %a 
        did -a Xdccb-Processbar 1 %a
      }
    }
    elseif (%depth = 2) {
      var %packs = 0
      while ($hfind(%hash,%text,%a).data) {
        var %ifmatch = $v1
        var %b = 1
        while ($hfind(%hash,$+($gettok(%ifmatch,1,255),$chr(255),*),%b,w)) {
          aline @Xdccb-save $+($replace($v1,[,$chr(250),],$chr(251)),=,$hget(%hash,$v1))
          inc %b
          inc %packs
          did -a Xdccb-Processbar 1 %packs
        }
        inc %a
      }
    }
    else {
      while ($hfind(%hash,$+(%text,$chr(255),*),%a,w)) {
        aline @Xdccb-save $+($replace($v1,[,$chr(250),],$chr(251)),=,$hget(%hash,$v1))
        inc %a
        did -a Xdccb-Processbar 1 %a
      }
    }
    if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar 
    savebuf @Xdccb-save $+(",%file,")
    window -c @Xdccb-save
    var %check = $input(Finished saving the XDCC data,oi,XDCC Browser)
  }
  ;Autosave 
  if ($1 = 14) {
    var %ontop
    if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
      dialog -n xdccb
      var %ontop = yeap
    }
    var %check = $sfile($+(",$scriptdir,%text,$+($did-tree(xdccb,27),.xcb)"),Save to:,Save)
    if (%ontop) dialog -o xdccb
    if (!%check) return
    var %loc = $did-tree(xdccb,27).sel
    var %depth = $numtok(%loc,32)
    var %net = $did-tree(xdccb,27,$gettok(%loc,1,32))
    if (%depth = 1) {
      var %a = 1
      while ($ini(Xdccb-Autosave.ini,%net,%a)) {
        var %item = $v1
        if ($readini(Xdccb-Autosave.ini,%net,%item) = %check) {
          remini -n Xdccb-Autosave.ini %net %item
          dec %a
        }
        inc %a
      }
      writeini -n Xdccb-Autosave.ini %net File %check
    }
    else writeini -n Xdccb-Autosave.ini %net $did-tree(xdccb,27) %check
    if ($dialog(xdccb-lists)) XDCCb-autosave-load
  }
  ;Join All
  if ($1 = 371) {
    set %xdccb-Join-All .
    var %a = 2
    if ($signal = Mpopup.XDCCB27) {
      while ($did-tree(xdccb,27,%a)) {
        var %network = $v1
        var %b = 2
        while ($did-tree(xdccb,27,%a %b)) {
          var %chan = $v1
          var %nick = $did-tree(xdccb,27,%a %b 2)
          var %server = $hget($+(xdccb-,%network),$+(%nick,$chr(255),Server))
          Xdccb-join %network %server %chan Joinall
          inc %b
        }
        inc %a
      }
    }
    elseif ($signal = Mpopup.XDCCB207) {
      while ($did(xdccb,207,%a)) {
        var %line = $v1
        var %network = $did-list(9,%line)
        var %server = $gettok($did-list(10,%line),1,4)
        var %chan = $+($did-list(8,%line))
        Xdccb-join %network %server %chan Joinall
        inc %a
      }
    }   
    else {
      while ($did-list(6,$did(xdccb,308,%a))) {
        var %nick = $v1
        var %network = $did-list(8,$did(xdccb,308,%a))
        var %scid = $XDCCb-network(%network)
        var %chan = $did-list(7,$did(xdccb,308,%a))
        if (!$XDCCb-onchan(%scid,%chan)) Xdccb-joinuser %nick Joinall
        inc %a
      }
    }
    unset %xdccb-Join-All
  }
  ;Request All
  if ($1 = 372) {
    var %a = 2
    var %sends = 0
    While ($did(xdccb,308,%a)) {
      var %line = $v1
      if ($did-list(5,%line) = 1st) {
        var %nick = $did-list(6,%line)
        var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
        var %get = $readini(xdccgets.ini,%nick2,get)
        var %Pack = $readiniwm(xdccgets.ini,%nick2,Pack*,%get)
        var %network = $gettok($readini(xdccgets.ini,%nick2,network),1,46)
        var %scid = $XDCCb-network(%network)
        var %comchan = $xdccb-changet(%scid,%nick)
        var %active-gets = 0
        if (%comchan) && (%Pack) {
          var %b = 1
          while ($get(%nick,0) => %b) {
            if ($Get(%nick,%b).status = active) var %gets = active
            inc %b
            inc %active-gets
          }
          if (%gets != active) {
            if (%scid) $+(.TimerXDCCB-,%nick) 1 %a XDCCb-request-Pack %nick $+($chr(35),$right($readiniwm(xdccgets.ini,%nick2,Pack*,%get).sec,-4)) %scid %network %Pack
            inc %sends
          }
          var %gets = not active
        }
      }
      inc %a
    }
    if (%sends = 0) {
      if (%active-gets = 0) return $input(There's no one online ,124, Can't request - No one online)
      else return $input(You are already getting from whoever's Online ,124, Can't request - Already getting)
    }
  }
  ;Remove Requests
  if ($1 = 373) {
    if (!$did(Xdccb,308).sel) return
    var %num = $did(xdccb,308,0).sel
    var %a = %num
    while (%a > 0) {
      var %comchan,%server
      var %line = $did(xdccb,308,$did(xdccb,308,%a).sel)
      var %stats = $did-list(5,%line)
      var %user = $did-list(6,%line)
      var %nick = $replace(%user,[,$chr(255),],$chr(251))
      var %get = $readini(xdccgets.ini,%nick,get)
      var %network = $did-list(8,%line)
      var %scid = $XDCCb-network(%network)
      var %file = $+(Xdccb-queues-,%network,.txt)
      var %lines = $lines(%file)
      var %nicks = $calc($read(%file,0) -1)
      if (%scid) {
        var %comchan = $xdccb-changet(%scid,%user)
        var %server = $Xdccb-getserverip(%scid)
      }
      if ($readiniwm(xdccgets.ini,%nick,Pack*,0) > 1) {
        var %pack = $remove($did-list(5,%line),st,nd,rd,th)   
        if (%Pack < %get) {
          dec %get 
          writeini -n xdccgets.ini %nick get %get
        }
        var %pack-num = $did-list(2,%line)
        remini -n xdccgets.ini %nick $+(Pack,%Pack-num)
        remini -n xdccgets.ini %nick $+(Date,%Pack-num)
        remini -n xdccgets.ini %nick $+(Time,%Pack-num)
        if (%stats = 1st) && (%scid) scid %scid close -g* %user
        did -d XDCCb 308 $did(xdccb,308,%a).sel
        var %b = 2
        var %new-pos
        while ($did(xdccb,308,%b)) {
          var %v1 = $v1
          if ($did-list(6,%v1) = %user) {
            if ($remove($did-list(5,%v1),st,nd,rd,th) > %pack) {
              var %new-pos = $ord($calc($v1 -1))
              did -o xdccb 308 %b $puttok($did-list(1-,%v1),$+($Chr(32),%new-pos,$chr(32)),5,9)
              if (s isin $gettok(%v1,2,32)) did -kc XDCCb 308 %b 
            }
            if (%new-pos = 1st) && (%pack = 1) {
              if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
              elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) $+(.timerxdccb-remove-,%User) 1 1 scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
              $+(.timerxdccb-,%User) 1 2 XDCCb-request-Pack %user $did-list(2,%v1) %scid %network $did-list(1,%v1)
            }
          }
          var %new-pos
          inc %b
        }
      }
      else {
        if (%server) && (%comchan) && ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) scid -t1 %scid /.DCCALLOW $+(-,%user)
        if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust -r $+(%user,!*@*)
        if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
        elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
        remini -n xdccgets.ini %nick
        if (%stats != Finished) && (%scid) scid %scid close -g* %user
        did -d XDCCb 308 $did(xdccb,308,%a).sel
      }
      dec %a
    }
    if ($read(%file,s,%user)) {
      while ($read(%file,s,%user )) {
        write $+(-dl,$calc($readn +1)) %file
        dec %lines    
      }
      var %line = $read(%file,w,%user)
      write $+(-dl,$calc($readn +1)) %file
      write -l0 %file $calc($read(%file,0) - 1)
      if ($lines(%file) < 2) .remove $+(",%file,")
    }
    elseif ($lines(%file) < 2) .remove $+(",%file,")
  }
  ;Quit irrelevant 
  if ($1 = 374) {
    var %a = $scon(0)
    while ($scon(%a)) {
      var %scid = $v1
      if (%a = 0) return  
      var %network = $gettok($scid(%scid).network,1,46)
      var %b = 1
      var %loc
      while ($did(xdccb,308,%b)) {
        if ($did-list(8,$v1) = %network) var %loc = $v1 
        inc %b 
      }
      if (!%loc) && (!$XDCCb-onchan($scon(%a),#incomplete)) {
        var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
        scon -t1 %a /quit %message
        scon %a /window -c "Status Window" 
      }
      else {
        var %b = 1
        while ($XDCCb-ChangetMe(%scid,%b)) {
          var %chan = $v1
          if (%chan = #incomplete) goto end374
          var %c = 1
          while ($did(xdccb,308,%c)) {
            var %nick = $replace($did-list(6,$v1),[,$chr(255),],$chr(251))
            if ($readini(xdccgets.ini,%nick,Chan) = %chan) goto end374
            inc %c
          }
          var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
          scon %a /Part %chan %message
          :end374
          inc %b
        }
      }
      dec %a
    }
  }
  ;Move UP
  if ($1 = 375) {
    if ($did(xdccb,308).sel) && ($did(xdccb,308,0).sel = 1) && ($did(xdccb,308).sel != 1) {
      var %line = $did(xdccb,308).seltext
      var %user = $did-list(6,%line)
      var %nick = $replace(%user,[,$chr(255),],$chr(251))
      var %pos = $remove($did-list(5,%line),st,nd,rd,th)
      var %Pack = $did-list(1-,%line)
      var %get = $readini(xdccgets.ini,%nick,get)
      var %network = $did-list(8,%line)
      var %scid = $XDCCb-network(%network)
      if (File server isin %pack) || (%pos = 1) return
      var %Pack-num = $remove($gettok(%Pack,2,9),$Chr(32))
      var %Date = $readini(xdccgets.ini,%nick,$+(Date,%pack-num))
      var %Time = $readini(xdccgets.ini,%nick,$+(Time,%pack-num))
      var %line = $readiniwm(xdccgets.ini,%nick,Pack*,%pos).line
      var %new-line = $readiniwm(xdccgets.ini,%nick,Pack*,$calc(%pos -1)).line
      write $+(-dl,$calc(%line + 2)) xdccgets.ini
      write $+(-dl,$calc(%line + 1)) xdccgets.ini
      write $+(-dl,%line) xdccgets.ini
      write $+(-il,%new-line) xdccgets.ini $+(Pack,%Pack-num,=,%Pack)
      write $+(-il,$calc(%new-line + 1)) xdccgets.ini $+(Date,%Pack-num,=,%Date)
      write $+(-il,$calc(%new-line + 2)) xdccgets.ini $+(Time,%Pack-num,=,%Time)
      var %a = 2
      while ($did(xdccb,308,%a)) {
        var %v1 = $v1
        if ($did-list(6,%v1) = %user) {
          if ($did-list(5,%v1) = $ord(%pos)) did -oc xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),$ord($calc(%pos -1)),$chr(32)),5,9)
          elseif ($did-list(5,%v1) = $ord($calc(%pos -1))) did -o xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),$ord(%pos),$chr(32)),5,9)
          var %new-pos = $ord($calc($remove($did-list(5,%v1),st,nd,rd,th) -1))
          if (%new-pos = 1st) && (%pos = 2) {
            var %network = $did-list(8,%v1)
            var %scid = $XDCCb-network(%network)
            if (%scid) {
              var %comchan = $xdccb-changet(%scid,%user)
              var %server = $Xdccb-getserverip(%scid)
              scid %scid close -g* %user
            }
            if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
            elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) $+(.timerxdccb-remove-,%User) 1 1 scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
            $+(.timerxdccb-,%User) 1 2 XDCCb-request-Pack %user $did-list(2,%v1) %scid %network $did-list(1,%v1)
          }
        }
        inc %a
      }
    }
  }
  ;Move Down
  if ($1 = 376) {
    if ($did(xdccb,308).sel) && ($did(xdccb,308).lines > 2) && ($did(xdccb,308).sel != $did(xdccb,308).lines) {
      var %line = $did(xdccb,308).seltext
      var %user = $did-list(6,%line)
      var %nick = $replace(%user,[,$chr(255),],$chr(251))
      var %pos = $remove($did-list(5,%line),st,nd,rd,th)
      var %Pack = $did-list(1-,%line)
      var %get = $readini(xdccgets.ini,%nick,get)
      var %network = $did-list(8,%line)
      var %scid = $XDCCb-network(%network)
      if (File server isin %pack) || (%pos = $readiniwm(xdccgets.ini,%nick,pack*,0)) return
      var %Pack-num = $remove($gettok(%Pack,2,9),$Chr(32))
      var %Date = $readini(xdccgets.ini,%nick,$+(Date,%pack-num))
      var %Time = $readini(xdccgets.ini,%nick,$+(Time,%pack-num))
      var %line = $readiniwm(xdccgets.ini,%nick,Pack*,%pos).line
      var %new-line = $calc($readiniwm(xdccgets.ini,%nick,time*,$calc(%pos +1)).line +1)
      write $+(-il,%new-line) xdccgets.ini $+(Pack,%Pack-num,=,%Pack)
      write $+(-il,$calc(%new-line + 1)) xdccgets.ini $+(Date,%Pack-num,=,%Date)
      write $+(-il,$calc(%new-line + 2)) xdccgets.ini $+(Time,%Pack-num,=,%Time)
      write $+(-dl,$calc(%line + 2)) xdccgets.ini
      write $+(-dl,$calc(%line + 1)) xdccgets.ini
      write $+(-dl,%line) xdccgets.ini
      var %a = 2
      while ($did(xdccb,308,%a)) {
        var %v1 = $v1
        if ($did-list(6,%v1) = %user) {
          if ($did-list(5,%v1) = $ord(%pos)) did -oc xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),$ord($calc(%pos +1)),$chr(32)),5,9)
          elseif ($did-list(5,%v1) = $ord($calc(%pos +1))) did -o xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),$ord(%pos),$chr(32)),5,9)
          var %new-pos = $ord($calc($remove($did-list(5,%v1),st,nd,rd,th) -1)) 
          if (%new-pos = 1st) && (%pos = 1) {
            var %network = $did-list(8,%v1)
            var %scid = $XDCCb-network(%network)
            if (%scid) {
              var %comchan = $xdccb-changet(%scid,%user)
              var %server = $Xdccb-getserverip(%scid)
              scid %scid close -g* %user
            }
            if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
            elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) $+(.timerxdccb-remove-,%User) 1 1 scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
            $+(.timerxdccb-,%User) 1 2 XDCCb-request-Pack %user $did-list(2,%v1) %scid %network $did-list(1,%v1)
          }
        }
        inc %a
      }
    }
  }
  ;Set 1st priority
  if ($1 = 377) {
    if (!$did(xdccb,308).sel) return 
    var %pos = $remove($did-list(5,$did(xdccb,308).seltext),st,nd,rd,th)
    if (%pos = 1) return
    var %user = $did-list(6,$did(xdccb,308).seltext)
    var %nick = $replace(%user,[,$chr(255),],$chr(251))
    var %network = $readini(xdccgets.ini,%nick,Network)
    var %scid = $XDCCb-network(%network)
    var %get = $readini(xdccgets.ini,%nick,get)
    var %Pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
    if (File server isin %pack) return
    var %Pack-num = $remove($gettok(%Pack,2,9),$Chr(32))
    var %Pack = $did-list(1-,$did(xdccb,308).seltext)
    var %Date = $readini(xdccgets.ini,%nick,$+(Date,%pack-num))
    var %Time = $readini(xdccgets.ini,%nick,$+(Time,%pack-num))
    var %line = $readiniwm(xdccgets.ini,%nick,Pack*,%pos).line
    var %new-line = $readiniwm(xdccgets.ini,%nick,Pack*,%get).line
    write $+(-dl,$calc(%line + 2)) xdccgets.ini
    write $+(-dl,$calc(%line + 1)) xdccgets.ini
    write $+(-dl,%line) xdccgets.ini
    write $+(-il,%new-line) xdccgets.ini $+(Pack,%Pack-num,=,%Pack)
    write $+(-il,$calc(%new-line + 1)) xdccgets.ini $+(Date,%Pack-num,=,%Date)
    write $+(-il,$calc(%new-line + 2)) xdccgets.ini $+(Time,%Pack-num,=,%Time)
    var %a = 2
    while ($did(xdccb,308,%a)) {
      var %v1 = $v1
      if ($did-list(6,%v1) = %user) {
        var %new-pos = $remove($did-list(5,%v1),st,nd,rd,th)
        if (%new-pos = %pos) did -oc xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),1st,$chr(32)),5,9)
        elseif (%new-pos < %pos) did -o xdccb 308 %a $puttok($did-list(1-,%v1),$+($Chr(32),$ord($calc(%new-pos +1)),$chr(32)),5,9)
        if (%new-pos = %pos) {
          var %network = $did-list(8,%v1)
          var %scid = $XDCCb-network(%network)
          if (%scid) {
            var %comchan = $xdccb-changet(%scid,%user)
            var %server = $Xdccb-getserverip(%scid)
            scid %scid close -g* %user
          }
          if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
          elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) $+(.timerxdccb-remove-,%User) 1 1 scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
          $+(.timerxdccb-,%User) 1 2 XDCCb-request-Pack %user $did-list(2,%v1) %scid %network $did-list(1,%v1)
        }
      }
      inc %a
    }
  }
  ;Clear unable to conenct status
  if ($1 = 378) {
    var %user = $did-list(6,$did(xdccb,308).seltext)
    var %nick = $replace(%user,[,$chr(255),],$chr(251))
    remini -n xdccgets.ini %nick Unable
    var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
    var %chan = $readini(xdccgets.ini,%nick,chan)
    var %get = $readini(xdccgets.ini,%nick,get)
    var %Pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
    var %scid = $XDCCb-network(%network)
    if (%Pack) $+(.TimerXDCCB-,%user) 1 $calc(%a + $rand(60,180)) XDCCb-request-Pack %user $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) %scid %network %Pack
  }
}
on *:start: {
  XDCCB-Setup
  writeini -n xdccgets.ini ôOptionsô Finish-Shutdown off
  if ($readini(xdccgets.ini,ôOptionsô,Auto-connect) = on) {
    var %a = 1
    while ($ini(xdccgets.ini,%a)) {
      var %nick = $replace($v1,[,$chr(255),],$chr(251))
      var %chan = $readini(xdccgets.ini,%nick,chan)
      var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
      if (%network) && (!$XDCCb-network(%network)) && (!$istok(%open,%network,255)) {
        var %connect = $readini(xdccgets.ini,%nick,server) $readini(xdccgets.ini,%nick,port) -j %chan
        var %open = $addtok(%open,%network,255)
        server -m %connect
      }
      inc %a
    }
  }
  var %a = 1
  while ($findfile($mircdir,Xdccb-queues-*,%a)) {
    .remove $+(",$v1,")
    inc %a
  }
  if ($readini(xdccgets.ini,ôOptionsô,Links) = on) {
    Xdccb-Make-reg
    run regedit /s /c XdccB.reg
  }
  .timerXDCCb-autosave -i 0 $calc($readini(xdccgets.ini,ôOptionsô,Autosave-time) * 3600) XDCCb-autosave
  if ($Readini(xdccgets.ini,ôOptionsô,Load-lists) = on) {
    window -h @xdccb-autoload
    var %a = 1
    var %num = 0
    while ($ini(Xdccb-Autosave.ini,%a)) {
      var %topic = $v1
      var %b = 1
      while ($ini(Xdccb-Autosave.ini,%a,%b)) {
        var %file = $+(",$readini(Xdccb-Autosave.ini,%topic,$v1),")
        if (!$fline(@xdccb-autoload,%file,1)) {
          aline -n @xdccb-autoload %file
          $+(.timerxdccb-autoload,%num) 1 $calc(%num * 10) xdccb-loadlist %file
          inc %num
        }
        inc %b
      }
      inc %a
    }
    close -@ @xdccb-autoload
  }
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 0) return
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    .dcc trust -r $+($replace(%nick,$chr(255),[,$chr(251),]),!*@*) 
    inc %a 
  }
}
on *:sockclose:xdccb: {
  if ($dialog(xdccb)) {
    filter -criw $+(2-,$did(xdccb,207).lines) xdccb 207 @tmpXdccb202 *
    filter -cot 1 9 @tmpXdccb202 xdccb 207 *
    var %num = $calc($did(xdccb,207).lines -1)
    did -ra xdccb 205 $iif(%num = 1,%num Result,%num Results)
    did -ra xdccb 211 Done
  }
  unset %xdccb-searchnetwork %xdccb-searchserver %xdccb-searchchan %xdccb-searchnick %xdccb-searchusage %xdccb-searchpack-num %xdccb-searchgets %xdccb-searchsize %xdccb-searchMaxcps %xdccb-searchQueue
  if ($readini(xdccgets.ini,ôOptionsô,next) != 0) {
    did -ra xdccb 211 Getting results
    .timerXdccb-socket 1 5 sockopen xdccb $readini(xdccgets.ini,ôOptionsô,site) 80
    writeini -n XDCCgets.ini ôOptionsô Next 0
  }
}
on *:sockopen:xdccb: {
  if ($sockerr > 0) {
    if ($sock($sockname).wserr = 10060) did -ra xdccb 211 Timed Out
    else did -ra xdccb 211 Can't Connect
    return
  }
  if ($dialog(xdccb)) did -ra xdccb 211 Connecting...
  else {
    sockclose xdccb
    return
  }
  sockwrite -n $sockname GET $readini(xdccgets.ini,ôOptionsô,search) HTTP/1.1 $+ $crlf
  sockwrite -n $sockname Host: $readini(xdccgets.ini,ôOptionsô,site) $+ $crlf
  sockwrite -n $sockname $str($crlf,2)
  remini -n xdccgets.ini ôOptionsô sock-line
}
on *:sockread:xdccb:{
  if ($sockerr > 0) return 
  .timerXdccb-Stopsocket 1 15 Xdccb-Stopsocket
  did -ra xdccb 211 Getting results
  var %a = 1
  while (online) {
    sockread -f %temp
    if ($sockbr == 0) return
    if (</Body> isin %temp) || (</table> isin %temp) {
      if ($dialog(xdccb)) {
        filter -criw $+(2-,$did(xdccb,207).lines) xdccb 207 @tmpXdccb202 *
        filter -cot 1 9 @tmpXdccb202 xdccb 207 *
        var %num = $calc($did(xdccb,207).lines -1)
        did -ra xdccb 205 $iif(%num = 1,%num Result,%num Results)
      }
    }
    if ($readini(xdccgets.ini,ôOptionsô,site) = www.packetnews.com) {
      inc %a
      if (%xdccb-searchnext = 3) && (color:#003399 isin %temp) {
        var %pack = $remove($gettok(%temp,3-,62),<td>,<b style="color:#003399;">,</b>,</font>,</td>,</tr>,</tbody>,</table,</td,</tr)
        if (bgcolor=# isin %pack) var %pack = $gettok(%pack,$+(1-,$calc($findtok(%pack,$wildtok(%pack,*bgcolor=#*,1,60),1,60) -1)),60)
        if (%pack) && (%xdccb-searchnick) && (%xdccb-searchpack-num != %xdccb-searchnick) && (%xdccb-searchchan) && (%xdccb-searchnetwork) {
          unset %xdccb-searchnext
          var %size = $readini(xdccgets.ini,ôOptionsô,Search-Size)
          var %compare = $iif($gettok(%size,1,44) = 1,>=,<=)
          var %size = $calc($gettok(%size,2,44) * (1024 ^ $gettok(%size,3,44)))
          var %pack-size = $Xdccb-Calcsize(%xdccb-searchsize)
          if (%pack-size %compare %size) did -a xdccb 207 $replace(%pack,$chr(32),$chr(160)) $chr(9) %xdccb-searchpack-num $chr(9) %xdccb-searchsize $chr(9) %xdccb-searchgets $chr(9) $iif(%xdccb-searchQueue,$v1,n/a) $chr(9) $iif(%xdccb-searchMaxcps,$+($v1,Kb/s),n/a) $chr(9) %xdccb-searchnick $chr(9) %xdccb-searchchan $chr(9) %xdccb-searchnetwork $chr(9)  %xdccb-searchserver $chr(9) %xdccb-searchchan $chr(4) %xdccb-searchusage
        } 
        unset %xdccb-searchnext
      }
      if (%xdccb-searchnext = 2) {
        set %xdccb-searchsize $gettok($gettok(%temp,3,62),1,60)
        inc %xdccb-searchnext
      }
      if (%xdccb-searchnext = 1) && (font color="#000000" isin %temp) && (x isin %temp) {
        set %xdccb-searchgets $remove($gettok($gettok(%temp,3,62),1,60),x)
        inc %xdccb-searchnext
      }
      if (#222235 isin %temp) {
        var %checking = $findtok(%temp,$wildtok(%temp,Network:*,1,62),1,62)
        set %xdccb-searchnetwork $left($gettok(%temp,$calc(%checking + 2),62),-3) 
        set %xdccb-searchserver $gettok($gettok(%temp,%checking,62),2,47)
      }
      if (#646471 isin %temp) {
        var %checking = $findtok(%temp,$wildtok(%temp,Channel:*,1,62),1,62)
        set %xdccb-searchchan $left($gettok(%temp,$calc(%checking + 1),62),-3)
      }
      if (<font color=#006600> isin %temp) {
        if ($gettok($gettok(%temp,3,62),1,60) != &nbsp;) && ($gettok($gettok($gettok(%temp,3,62),1,60),47,1) != 0) set %xdccb-searchQueue Free
      } 
      if (<font color=#CC0033> isin %temp) {
        if ($gettok($gettok(%temp,3,62),1,60) != &nbsp;) set %xdccb-searchQueue $v1
      }
      if (<td><font color="#000000"><i> isin %temp) {
        if ($gettok($gettok(%temp,4,62),1,60) != &nbsp;) set %xdccb-searchMaxcps $v1
      }
      if (<td nowrap width=115><font color="#000000"> isin %temp) && ($gettok($gettok(%temp,3,62),1,60) != &nbsp;) unset %xdccb-searchMaxcps %xdccb-searchQueue
      if (a onclick="toclip isin %temp) {
        set %xdccb-searchusage $gettok(%temp,2,39)
        set %xdccb-searchnick $gettok(%xdccb-searchusage,2,32)
        set %xdccb-searchpack-num $remove($gettok(%xdccb-searchusage,-1,32),$chr(35))
        set %xdccb-searchnext 1
      }
      if (*<a href=*title="Next Page"><b>»* iswm %temp) {
        writeini -n XDCCgets.ini ôOptionsô Next 1
        writeini -n XDCCgets.ini ôOptionsô search $+(http://www.packetnews.com,$gettok($gettok(%temp,$calc($findtok(%temp,title="Next,1,32) -1),32),2,34))
      }
    }
  } 
}
on ^*:text:*:#,?: {
  if (!$network) return
  var %listing = $readini(xdccgets.ini,ôOptionsô,Listing)
  if ($gettok(%listing,1,32) = 1) { 
    if ($chr(35) isin $1-2) {
      if ($xPack($1-)) {
        var %Pack = $puttok($v1,$replace($gettok($v1,1,9),$chr(32),$chr(160)),1,9)
        if ($chr(43) = $left($gettok(%pack,1,32),1)) var %pack = $replace($gettok(%pack,1,32),$chr(43),$chr(45)) $gettok(%pack,2-,32)
        if ($comchan($nick,1)) addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %Pack
        if ($readini(xdccgets.ini,ôOptionsô,Hide-Packs) = on) haltdef
        return
      }
    }  
    if ($Xdccdata($1-)) return  
    if ((/msg isin $1-) || (/ctcp isin $1-)) && ($XUsage($nick,$1-) && ($readini(xdccgets.ini,ôOptionsô,Hide-Packs) = on)) haltdef
  }
  if ($gettok(%listing,2,32) = 1) && (Trigger isin $1-) {
    if ($fpack($1-)) {
      if ($readini(xdccgets.ini,ôOptionsô,Hide-Fserv) = on) haltdef
      else return
    }
  }
  if ($gettok(%listing,3,32) = 1) && (FTP isin $1-) && ($ftppack($1-)) return
  if ($chan = #incomplete) {
    var %line = $strip($1-)
    if (Request (*) added by $+([,$me,]) + * iswm %line) {
      var %file = $right($gettok($gettok(%line,2,43),1,47),-2)
      var %num = $gettok($gettok(%line,1,41),2,40)
      if (!$Readini(XDCCb-corrupt.ini,%file,$network)) writeini -n XDCCb-corrupt.ini %file $gettok($network,1,46) %num
    }
    elseif ([request added.] $me * iswm %line) {
      var %file = $gettok(%line,3,176)
      var %num = $gettok(%line,2,176)
      if (!$Readini(XDCCb-corrupt.ini,%file,$network)) writeini -n XDCCb-corrupt.ini %file $gettok($network,1,46) %num
    }
    elseif (!close * iswm %line) && ($gettok(%line,2,32) isnum) {
      var %num = $gettok(%line,2,32)
      var %a = 1
      while ($ini(XDCCb-corrupt.ini,%a)) {
        var %file = $v1
        if ($readini(XDCCb-corrupt.ini,%file,$gettok($network,1,46)) = %num) {
          remini -n XDCCb-corrupt.ini %file $gettok($network,1,46)
          return
        }
        inc %a
      }
    }
  }
}

on *:getfail:*: {
  if ($nick = $me) var %nickname = $Xdccb-Whowas-sending($nopath($filename))
  else %nickname = $nick
  if (!%nickname) return
  var %nick = $replace(%nickname,[,$chr(255),],$chr(251))
  var %get = $readini(xdccgets.ini,%nick,get)
  var %Pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
  var %got = $calc($get(-1).rcvd - $get(-1).resume)
  var %unable = $readini(xdccgets.ini,%nick,Unable)
  if (%got > 0) {
    if (%unable) remini -n xdccgets.ini %nick Unable
    if (%got < 102400) {
      if ($file($filename).size = %got) .remove $+(",$filename,")
      else btrunc $+(",$filename,") $calc($file($filename).size - %got)
    }
    elseif ($file($filename).size < 102400) .remove $+(",$filename,")
    elseif ($get(-1).rcvd > 102400) btrunc $+(",$filename,") $calc($file($filename).size - 102400)
  }
  else writeini -n xdccgets.ini %nick Unable $calc(%unable +1) 
  if ($readini(xdccgets.ini,ôOptionsô,XDCCResume) = on) {
    if (%unable >= 3) return
    if ($ini(xdccgets.ini,%nick) > 0) && ($comchan(%nickname,0) > 0) && (%Pack) {
      var %file = $filename
      var %a = 1
      while ($get(%a)) {
        if ($get(%a).status = Active) && ($get(%a).file = %file) {
          $+(.TimerXDCCB-,%nickname) 1 $readini(xdccgets.ini,ôOptionsô,Getfail-Timer) XDCCb-request-Pack %nickname $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) $cid $gettok($network,1,46) %Pack
          return
        }
        inc %a
      }
      $+(.TimerXDCCB-,%nickname) 1 $readini(xdccgets.ini,ôOptionsô,Getfail-Timer) XDCCb-request-Pack %nickname $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) $cid $gettok($network,1,46) %Pack
    }
  }
}
on *:filercvd:*: {
  if ($nick = $me) var %nickname = $Xdccb-Whowas-sending($nopath($filename))
  else %nickname = $nick
  if (!%nickname) return
  var %nickname2 = $replace(%nickname,[,$chr(255),],$chr(251))
  var %get = $readini(xdccgets.ini,%nickname2,get)
  var %pack = $readiniwm(xdccgets.ini,%nickname2,Pack*,%get)
  var %pack2 = $gettok(%pack,1,9) $chr(9) $remove($gettok(%pack,3,9),b,$chr(32))
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    if (%nick != ôOptionsô) && (%nick != DCCÿAllow) {
      var %user = $replace(%nick,$chr(255),[,$chr(251),])
      var %get = $readini(xdccgets.ini,%nick,get)
      if (%nick = %nickname2) {
        var %new-pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
        var %new-pack = $gettok(%new-pack,1,9) $chr(9) $remove($gettok(%new-pack,3,9),b,$chr(32))
        if (%new-pack = %pack2) {
          var %network = $readini(xdccgets.ini,%nick,network)
          var %scid = $XDCCb-network(%network)
          if (%scid) {
            var %comchan = $xdccb-changet(%scid,%user)
            if (%comchan) && ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) scid -t1 %scid /.DCCALLOW $+(-,%user)
            if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust -r $+(%user,!*@*)
            var %usage = $iif($ini(xdccgets.ini,%nick,usage),$gettok($readini(xdccgets.ini,%nick,usage),1,32),$readini(xdccgets.ini,ôOptionsô,Request))
            if (msg isin %usage) || (ctcp isin %usage) if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
          }
          if ($readini(xdccgets.ini,ôOptionsô,Remove) = on) {
            remini -n xdccgets.ini %Nick $readiniwm(xdccgets.ini,%nick,Pack*,%get).sec
            remini -n xdccgets.ini %Nick $readiniwm(xdccgets.ini,%nick,Time*,%get).sec
            remini -n xdccgets.ini %Nick $readiniwm(xdccgets.ini,%nick,Date*,%get).sec
            if ($dialog(xdccb)) {
              var %c = 2
              while ($did(xdccb,308,%c)) {
                var %v1 = $v1
                if ($did-list(6,%v1) = %user) {
                  if ($did-list(5,%v1) = 1st) {
                    did -d XDCCb 308 %c
                    dec %c
                  }
                  elseif ($remove($did-list(5,%v1),st,nd,rd,th) > 1) {
                    var %check = $calc($v1 -1)
                    did -o xdccb 308 %c $puttok($did-list(1-,%v1),$+($Chr(32),$ord(%check),$chr(32)),5,9)
                  }
                }
                inc %c
              }
            }
            if ($readiniwm(xdccgets.ini,%nick,Pack*,0) = 0) {
              remini -n xdccgets.ini %Nick
              Xdccb-Shutdown-quit %network %scid %user
              dec %a
              goto end
            }
          }
          elseif (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) {
            inc %get
            writeini -n xdccgets.ini %nick get %get
          }
          var %new-pack = $readiniwm(xdccgets.ini,%nick,Pack*,%get)
          if (%comchan) && (%new-pack) && (%scid) scid -t1 %scid $+(/.TimerXdccb-,%user) 1 $readini(xdccgets.ini,ôOptionsô,Getfail-Timer) XDCCb-request-Pack %user $+($chr(35),$right($readiniwm(xdccgets.ini,%nick,Pack*,%get).sec,-4)) %scid %network %new-pack
          goto end
        }
      }
      elseif ($gettok(%pack,1-2,32) != Requesting pack) {
        var %b = %get 
        while ($readiniwm(xdccgets.ini,%nick,Pack*,%b)) {
          var %new-pack = $v1
          var %new-pack = $gettok(%new-pack,1,9) $chr(9) $remove($gettok(%new-pack,3,9),b,$chr(32))
          if (%new-pack = %pack2) {
            var %pos = %get
            var %Pack-num = $remove($gettok(%Pack,2,9),$Chr(32))
            var %Date = $readini(xdccgets.ini,%nick,$+(Date,%pack-num))
            var %Time = $readini(xdccgets.ini,%nick,$+(Time,%pack-num))
            var %line = $readiniwm(xdccgets.ini,%nick,Pack*,%b).line
            var %new-line = $readiniwm(xdccgets.ini,%nick,Pack*,1).line
            if ($readini(xdccgets.ini,ôOptionsô,Remove) = off) {
              write $+(-il,%new-line) xdccgets.ini $+(Pack,%Pack-num,=,%Pack)
              write $+(-il,$calc(%new-line + 1)) xdccgets.ini $+(Date,%Pack-num,=,%Date)
              write $+(-il,$calc(%new-line + 2)) xdccgets.ini $+(Time,%Pack-num,=,%Time)
              inc %get
              writeini -n xdccgets.ini %nick get %get
            }
            else {
              if ($dialog(XDCCb)) {
                var %c = 2
                while ($did(xdccb,308,%c)) {
                  var %v1 = $v1
                  if ($did-list(6,%v1) = %user) {
                    if ($did-list(5,%v1) = 1st) {
                      did -d XDCCb 308 %c
                      dec %c
                    }
                    elseif ($remove($did-list(5,%v1),st,nd,rd,th) > 1) {
                      var %check = $calc($v1 -1)
                      did -o xdccb 308 %c $puttok($did-list(1-,%v1),$+($Chr(32),$ord(%check),$chr(32)),5,9)
                    }
                  }
                  inc %c
                }
              }
              write $+(-dl,$calc(%line + 2)) xdccgets.ini
              write $+(-dl,$calc(%line + 1)) xdccgets.ini
              write $+(-dl,%line) xdccgets.ini
              if ($readiniwm(xdccgets.ini,%nick,Pack*,0) = 0) {
                var %network = $readini(xdccgets.ini,%nick,network)   
                var %scid = $XDCCb-network(%network)
                remini -n xdccgets.ini %Nick
                Xdccb-Shutdown-quit %network %scid
                dec %a
                goto end
              }
              var %b = -2
            }
          }
          inc %b
        }
      }
    }
    :end
    var %server,%comchan,%scid,%new-pack
    inc %a
  }
  var %file = $nopath($filename)
  if ($ini(XDCCb-corrupt.ini,%file)) remini -n XDCCb-corrupt.ini %file
}

;Dialogs

;Browser Dialog

dialog XDCCb {
  Title "XDCC Browser v3.41"
  Size -1 -1 380 200
  Option dbu

  Tab "&Browser", 100, -20 -14 0 0
  Tab "&Search", 200
  Tab "&Requests", 300
  Tab "&Options", 600
  List 4, 7 5 218 10

  Button "OK", 1, 285 180 42 13, ok, default
  Button "Cancel", 2, 330 180 43 13, cancel
  Button "Minimizer", 3, 1 1 1 1,  hide

  ;Browser 

  Button "Remove selected Item", 31, 138 140 70 12, Tab 100
  Button "Add Pack/s without requesting", 32, 290 140 80 12, Tab 100
  Button "Get Network's Channel List", 33, 255 160 80 12, Tab 100
  Button "Remove irrelevant packs", 34, 214 140 70 12, Tab 100

  Box "Nick List", 35, 7 22 126 173, Tab 100

  List 27, 10 32 120 160, size sort , Tab 100
  List 28, 137 25 229 110, size extsel , Tab 100

  Text "Total No. of Serving Nicks:",41,137 158 80 8, Tab 100
  Edit "", 42,207 157 30 11, read center , Tab 100
  Text "Total No. of Packets:", 43,137 175 55 8, Tab 100
  Edit "", 44,207 174 30 11, read center , Tab 100

  ;Search 

  Button ,222,-1 -1 -1 -1, Tab 200
  List 202, 149 31 35 11, Tab 200
  Edit "", 206, 13 31 134 11, autohs , Tab 200
  List 207, 11 53 360 125, size sort extsel , Tab 200

  Combo 213, 185 31 35 90, drop, Tab 200
  Edit "", 214, 223 31 15 10, autohs limit 3 , Tab 200
  Combo 215, 240 31 25 90, drop, Tab 200

  Box "Search", 204, 9 20 360 6, Tab 200
  Box "Results", 205, 9 45 360 6, Tab 200

  Text "Search in:", 208,275 33 25 8, Tab 200
  Combo 203, 305 31 65 90, size, Tab 200

  icon 209, 180 180 50 18, $scriptdirxdccb-icons.icl, 21, Tab 200

  Edit "Done", 211, 120 180 50 11, read , Tab 200
  Text "Listing status:", 212,80 181 35 8, Tab 200

  ;Request

  Button "Remove selected Item", 303, 170 163 60 13, Tab 300
  Button "Join selected", 304, 13 173 40 13 , Tab 300
  Button "Request all", 407, 60 173 40 13, Tab 300
  Button "Join all", 408, 107 173 40 13, Tab 300

  List 308, 12 25 360 137, size extsel , Tab 300

  ; Options 

  Box "Packet Options:", 370, 20 33 100 143, Tab 600
  Box "Default Browser Options:", 371, 140 33 100 143, Tab 600
  Box "Other Options:", 372, 250 33 100 143, Tab 600

  Check "Auto get on join", 350, 25 45 60 9 , Tab 600
  Check "Auto Pack Resume", 351, 25 57 60 9 , Tab 600
  Check "Auto delete Packs on disconnect", 352, 25 81 87 9 , Tab 600
  Check "Auto delete Packs on part/quit", 383, 25 69 85 9 , Tab 600
  Check "Auto Request list from bots", 353, 25 93 85 9 , Tab 600
  Check "Show channel's pack list", 386, 25 105 85 9 , Tab 600
  Check "Get only from 'Trusted' users", 387,25 117 85 9 , Tab 600
  Check "On finish remove from Requests", 392,25 129 90 9 , Tab 600
  Check "Quit Network/Channel on finish", 394,25 141 85 9 , Tab 600
  Check "Shutdown PC when finished", 395,25 153 85 9 , Tab 600

  Check "Put on Taskbar", 355, 150 45 60 9 , Tab 600
  Check "Always On Top", 354, 150 57 60 9 , Tab 600
  Check "Show Request in Status window", 360, 150 69 85 9 , Tab 600

  Box "Default Request type:", 373, 145 80 65 30, Tab 600
  Radio "/msg", 358, 155 87 40 9 , group, Tab 600
  Radio "/ctcp", 359, 155 99 40 9 , Tab 600

  Box "Listing type:", 374, 145 110 65 40, Tab 600
  Check "XDCC Packs", 388, 155 120 40 9 , Tab 600
  Check "File Servers", 389,155 130 40 9 , Tab 600
  Check "FTP Sites", 390,155 140 40 9 , Tab 600

  Text "'Request again' Timer:", 361, 145 153 100 8, Tab 600
  Edit "", 362, 198 152 20 10, center , Tab 600
  Text "Secs",363, 220 153 15 8, tab 600
  Text "'Get fail' Timer:", 364, 145 166 100 8, Tab 600
  Edit "", 365, 198 165 20 10, center , Tab 600
  Text "Secs",366, 220 166 15 8, Tab 600

  Check "On start connect to all networks", 380, 260 45 87 9 , Tab 600 
  Check "Auto join channels on connect", 369, 260 58 85 9 , Tab 600
  Check "Enable DCC Fix", 381, 260 71 60 9 , Tab 600
  Check "Hide Packs in channel window", 382, 260 84 85 9 , Tab 600
  Check "Hide File Server triggers", 391,260 97 85 9 , Tab 600
  Check "Avoid long network sessions", 384,260 110 85 9 , Tab 600
  Check "Script controls IRC:// Links", 385,260 123 85 9 , Tab 600
  Check "Autosave packet lists", 393,260 136 85 9 , Tab 600
  Check "Enable File Server Browser", 396,260 149 85 9 , Tab 600

  Button "Reset", 5, 155 180 42 13, Tab 600

  ;Menu 

  Menu "&Xdcc List", 810
  Item "&Save", 16, 810
  Item "&Load", 17, 810
  Item "&Remove List File", 18, 810
  Item Break, 19, 810
  Item "&Clear list", 20, 810

  Menu "&Help", 820
  Item "Help", 11, 820
  Item Break, 15, 820
  Item "&About...", 12, 820
  Item Break, 14, 820
  Item "&Donate",13, 820
}
on *:dialog:XDCCb:close:*: {
  Xdccb-Stopsocket
  window -c @tmpXdccb28
  window -c @tmpXdccb202
}
on *:dialog:XDCCb:init:*: {
  mdx SetMircVersion $version
  mdx MarkDialog XDCCb

  mdx SetColor $dname textbg $rgb(16,252,252)

  dialogs SetControlMDX 3 positioner size minbox maxbox
  Mdx SetDialog XDCCb coords * * $readini(xdccgets.ini,ôOptionsô,XDCCDialog-Size)
  dialog -r XDCCb
  Xdccb-resize $dialog(xdccb).cw $dialog(xdccb).ch
  views SetControlMDX XDCCb 27 TreeView autosort haslines linesatroot hasbuttons showsel infotip
  Xdccb-Seticon xdccb 27

  views SetControlMDX XDCCb 28 ListView report grid showsel infotip
  did -i XDCCb 28 1 headerdims 224:1 30:2 70:3 50:4 55:5 70:6 
  did -i XDCCb 28 1 headertext Pack $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS

  views SetControlMDX XDCCb 207 ListView report grid showsel infotip
  did -i XDCCb 207 1 headerdims 324:1 30:2 70:3 50:4 54:5 70:6 120:7 120:8 120:9 120:10
  did -i XDCCb 207 1 headertext Pack $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS $chr(9) Nick $chr(9) Channel $chr(9) Network $chr(9) Server

  views SetControlMDX XDCCb 308 ListView showsel report grid infotip
  did -i XDCCb 308 1 headerdims 344:1 30:2 70:3 80:4 50:5 90:6 90:7 90:8 100:9
  did -i XDCCb 308 1 headertext Pack $chr(9) $chr(35) $chr(9) Size $chr(9) Status $chr(9) Order $chr(9) Nick $chr(9) Channel $chr(9) Network $chr(9) Server 

  views SetControlMDX XDCCb 203 ComboBoxEx drop
  did -i XDCCb 203 1 iconsize small
  did -i XDCCb 203 1 seticon 0 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i XDCCb 203 1 seticon 0 2, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)

  var %Browser2 = $regread(HKLM\SOFTWARE\Clients\StartMenuInternet\)
  var %file = $regread($+(HKLM\SOFTWARE\Clients\StartMenuInternet\,%browser2,\DefaultIcon\))
  var %Browser = $regread($+(HKLM\SOFTWARE\Clients\StartMenuInternet\,%browser2,\))
  var %a = 1
  while (!%Browser) {
    if (%a = 5) {
      var %browser = $regread(HKCR\htmlfile\shell\)
      var %file = $+($gettok($regread($+(HKCR\htmlfile\shell\,%browser,\command\)),1,34),$chr(44),0)
      if ($regread($+(HKCR\htmlfile\shell\,%browser2,\))) var %browser = $v1
      break
    }
    var %browser2 = $regread($+(HKLM\SOFTWARE\Clients\StartMenuInternet\,%browser2,\LocalizedString))
    var %file =  $regread($+(HKLM\SOFTWARE\Clients\StartMenuInternet\,%browser2,\DefaultIcon\))
    var %browser = $regread($+(HKLM\SOFTWARE\Clients\StartMenuInternet\,%browser2,\))
    inc %a
  }
  if (%browser) did -i xdccb 203 1 seticon $+($gettok(%file,2,44),$chr(44),$shortfn($gettok(%file,1,44)))

  mdx SetBorderStyle 1,2,31,32,33,34,209,303,304,407,408 border

  XDCCb27
  window -h @tmpXdccb28
  window -h @tmpXdccb202
  xdccr8 

  did -f XDCCb 27
  xdccb-Loadoptions

  did -a xdccb 203 2 2 0 0 Local List
  did -a xdccb 203 2 2 0 0 Search Results
  did -a xdccb 203 1 1 0 0 Packetnews
  if (%browser)  did -a xdccb 203 3 3 0 0 %browser
  did -c xdccb 203 2

  did -a xdccb 213 Min Size
  did -a xdccb 213 Max Size
  did -a xdccb 215 Kb
  did -a xdccb 215 Mb
  did -a xdccb 215 Gb
  did -c xdccb 213 $gettok($readini(xdccgets.ini,ôOptionsô,Search-Size),1,44)
  did -a xdccb 214 $gettok($readini(xdccgets.ini,ôOptionsô,Search-Size),2,44)
  did -c xdccb 215 $gettok($readini(xdccgets.ini,ôOptionsô,Search-Size),3,44)

  mdx SetBorderStyle xdccb 4,202
  bars SetControlMDX $dname 4 ToolBar flat nodivider list
  did -i xdccb 4 1 bmpsize 16 16
  did -i $dname 4 1 setimage +nh icon small 18, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $dname 4 1 setimage +nh icon small 5, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $dname 4 1 setimage +nh icon small 8, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $dname 4 1 setimage +nh icon small 20, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  didtok -a $dname 4 59 +cgxW 80 1 Browser;+cgW 80 2 Search;+cgW 80 3 Requests;+cgW 80 4 Options

  bars SetControlMDX $dname 202  ToolBar nodivider list
  did -i xdccb 202 1 bmpsize 16 16
  did -i $dname 202 1 setimage +nh icon small 19, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -a $dname 202 +gW 70 1 Search
  .timerXdccb-update -i 0 1 Xdccb-update
  dialog -t xdccb XDCC Browser v3.41 ... Active network: $iif($network,$gettok($network,1,46),None)
}
on *:dialog:XDCCb:close:*: .timerXdccb-update off

;Browser Tab

on *:dialog:XDCCb:sclick:1: {
  if ($did(362).edited = $true) && ($did(362) isnum) writeini -n xdccgets.ini ôOptionsô Request-Timer $did(362)
  if ($did(365).edited = $true) && ($did(365) isnum) writeini -n xdccgets.ini ôOptionsô Getfail-Timer $did(365)
  writeini -n xdccgets.ini ôOptionsô XDCCDialog-size $dialog(xdccb).cw $dialog(xdccb).ch 
}
on *:dialog:XDCCb:sclick:3: {
  var %action = $did(3)
  if ($gettok(%action,1,32) = maximize) || ($gettok(%action,1,32) = restore) Xdccb-resize $dialog(xdccb).cw $dialog(xdccb).ch 
  if ($gettok(%action,1,32) = Sizing) { 
    var %new-width = $gettok(%action,9,32)
    var %new-hight = $gettok(%action,10,32)
    if (%new-hight < 400) || (%new-width < 760) {
      var %new-width = $iif(%new-width < 760,$v2,$v1)
      var %new-hight = $iif(%new-hight < 400,$v2,$v1)
      did -a xdccb 3 setSize c %new-width %new-hight
    }
  }
  if ($gettok(%action,1,32) = exitSizeMove) Xdccb-resize $dialog(xdccb).cw $dialog(xdccb).ch
}
on *:dialog:XDCCb:sclick:4: {
  var %sel = $did(4).sel
  if (%sel = 2) {
    did -c xdccb 100
    did -t XDCCb 1
    did -f XDCCb 27
  }
  if (%sel = 3) {
    did -c xdccb 200
    did -f XDCCb 206 
    did -t XDCCb 222
  }
  if (%sel = 4) {
    did -c xdccb 300
    did -t XDCCb 1
  }
  if (%sel = 5) {
    did -c xdccb 600
    did -t XDCCb 1
  }
}
on *:dialog:XDCCb:sclick:5: {
  remini -n xdccgets.ini ôOptionsô
  XDCCB-Setup Reset
  if ($gettok($readini(mirc.ini,options,n6),28,44) != 2) || ($sreq != auto) {
    var %check = $xdccb-check(Do you want XDCC Browser to set your mIRC client to automaticaly accept all files except for these types ? , $replace($readini(mirc.ini,text,ignore),$chr(44),$chr(32)) , From trusted users ?,yq,XDCC Browser)
    if (%check = $true) {
      .dcc ignore ignore 
      .sreq +m auto
    }
  }
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 0) {
    var %check = $xdccb-check(Do you want XDCC Browser to set your mIRC client to recieve files only from a list of "Trusted" users ?)
    if (%check = $true) {
      .sreq +m auto
      .dcc trust on
      did -c xdccb 387
    }
  }
  did -u xdccb 350,351,352,353,354,355,358,359,360,369,380,381,382,383,384,385,386,388,389,390,391,392,393,394,395
  xdccb-Loadoptions
}
on *:dialog:XDCCb:menu:11: run $+(",$scriptdirXDCC Browser.doc")
on *:dialog:XDCCb:menu:12: {
  return $input(XDCC Browser v3.41 for mIRC 6.16 $crlf $+ by Yochai Timmer <Yochai@Dorot.org.il> $&
    $crlf $+ $crlf Thanks to: $crlf All the people who send $crlf bug reports and suggestions. $crlf And to myndzi for the DCC fix.,124, XDCC Browser)
}
on *:dialog:XDCCb:menu:13: url -n $decode(aHR0cHM6Ly93d3cucGF5cGFsLmNvbS94Y2xpY2svYnVzaW5lc3M9WW9jaGFpJTQwRG9yb3Qub3JnLmlsJml0ZW1fbmFtZT1YRENDK0Jyb3dzZXIrU2NyaXB0Jm5vX3NoaXBwaW5nPTEmY249V2VsbCUyQyt3aGF0K2RvK3lvdSt0aGluayslM0YmdGF4PTAmY3VycmVuY3lfY29kZT1VU0Q=,m)
on *:dialog:XDCCb:menu:16: {
  var %ontop
  if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
    dialog -n xdccb
    var %ontop = yeap
  }
  var %file = $sfile($+(",$scriptdir*.xcb"),Save as..,Save)
  if (%ontop) dialog -o xdccb 
  if (!%file) return
  if ($gettok(%file,-1,46) != xcb) var %file = $+(%file,.xcb)
  var %a = 1
  var %num = 0
  while ( ($hget(%a)) && (%num < 700) ) {
    if (Xdccb- isin $hget(%a)) inc %num $hget(%a,0).item
    inc %a 
  }
  window -h @Xdccb-save
  .remove $+(",%file,")
  var %num = 0
  while ($hget(%a)) {
    var %get = $v1
    if ($+(XDCCb-,*) iswm %get) inc %num
    inc %a
  }
  var %a = 1
  while ($hget(%a)) {
    var %if = $v1
    if (Xdccb- isin %if) {
      if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
      dialog -t Xdccb-Processbar Saving list - $gettok(%if,2-,45) ...
      did -a Xdccb-Processbar 1 0 0 $hget(%if,0).item
      aline @Xdccb-save $+([,%if,])
      var %b = 1
      while ($Hget(%if,%b).item) {
        var %ifmatch = $v1
        aline @Xdccb-save $+($replace(%ifmatch,[,$chr(250),],$chr(251)),=,$hget(%if,%ifmatch))
        inc %b 
        did -a Xdccb-Processbar 1 %b
      }
    }
    inc %a
  }
  if ($dialog(Xdccb-Processbar)) dialog -nk Xdccb-Processbar
  savebuf @Xdccb-save $+(",%file,")
  window -c @Xdccb-save
}
on *:dialog:XDCCb:menu:17: {
  var %ontop
  if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
    dialog -n xdccb
    var %ontop = yeap
  }
  var %file = $sfile($+(",$scriptdir*.xcb"),Load XDCC List:,Load)
  if (%ontop) dialog -o xdccb 
  if (!$isfile(%file)) return
  xdccb-loadlist %file
}
on *:dialog:XDCCb:menu:18: {
  var %ontop
  if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
    dialog -n xdccb
    var %ontop = yeap
  }
  var %file = $sfile($+(",$scriptdir*.xcb"),Delete XDCC List:,Delete)
  if (%ontop) dialog -o xdccb 
  if ($isfile(%file)) .remove $+(",%file,")
}
on *:dialog:XDCCb:menu:20: {
  var %a = 1
  while ($hget(%a)) {
    var %if = $v1
    if (Xdccb- isin %if) {
      .hfree %if
      dec %a
    }
    inc %a
  }
  did -r xdccb 28
  xdccb27
  var %num = $calc($did(xdccb,28).lines -1) 
  did -i XDCCb 28 1 headertext $iif(%num = 1,$+(%num,$chr(160),Pack),$iif(%num = 0,Packs,$+(%num,$chr(160),Packs))) $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS $chr(9) Nick
}
on *:dialog:XDCCb:sclick:27: {
  var %sel = $did-tree(xdccb,27).sel
  var %text = $did-tree(xdccb,27)
  if (!%sel) || (!%text) return
  if ($did-tree(xdccb,27).event = rclick) {
    var %a = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPCreateMenu,XDCCB27),2,32)
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 3
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 4
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 5
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 6
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 23
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 24
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 25
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 26
    MPopup MPAddIcon XDCCB27 > $shortfn($scriptdir\Xdccb-Icons.icl) > 12
    var %net = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
    var %scid = $XDCCb-network(%net)
    var %chan
    if ($did-tree(xdccb,27,$gettok(%sel,1-2,32)) != %net) var %chan = $v1
    var %loc = $numtok(%sel,32)
    if ((%loc = 1) && ($XDCCb-network(%text)) ) || ((%loc = 2) && ($XDCCb-onchan($XDCCb-network($did-tree(xdccb,27,$gettok(%sel,1,32))),%text)))   mpopup MPAddItem %a > 12 5 0 $iif(%loc = 2,Part:,Quit:) %text > -
    if ((%chan) && (!$XDCCb-onchan(%scid,%chan))) || (!%scid) mpopup MPAddItem %a > 1 1 0 Join > -
    if (%scid)  mpopup MPAddItem %a > 10 3 0 Get Network's Channel List > -
    mpopup MPAddItem %a > 13 6 0 Save: %text $+ 's list > -
    if (%loc < 3) mpopup MPAddItem %a > 14 7 0 AutoSave: %text $+ 's list > -
    mpopup MPAddItem %a > 0 0 0 - > -
    mpopup MPAddItem %a > 2 2 0 Remove: %text > -
    mpopup MPAddItem %a > 11 4 0 Remove offline packs > -
    mpopup MPAddItem %a > 371 9 0 Join All > -
    mpopup MPAddItem %a > 374 8 0 Quit Irrelevant Channels/Networks > -
    mpopup MPopup XDCCB27 > $mouse.dx $mouse.dy
    return 
  }
  writeini -n xdccgets.ini ôOptionsô Select27 $did-tree(xdccb,27)
  remini -n xdccgets.ini ôOptionsô dSelect27
  did -r XDCCb 28
  XDCCb28
  filter -criw $+(2-,$did(xdccb,28).lines) xdccb 28 @tmpXdccb28 *
  filter -cot 1 9 @tmpxdccb28 xdccb 28 *
}
on *:dialog:XDCCb:dclick:27: {
  if ($readini(xdccgets.ini,ôOptionsô,Select27) != $did-tree(xdccb,27)) || ($readini(xdccgets.ini,ôOptionsô,dSelect27) = $did-tree(xdccb,27)) $&
    || ($readini(xdccgets.ini,ôOptionsô,Channel-pack) != Yes) return
  writeini -n xdccgets.ini ôOptionsô dSelect27 $did-tree(xdccb,27)
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  var %network = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
  did -i XDCCb 28 1 headerdims 224:1 30:2 70:3 50:4 55:5 70:6 140:7
  did -i XDCCb 28 1 headertext Pack $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS $chr(9) Nick
  if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
  did -a Xdccb-Processbar 1 0 0 $did-tree(xdccb,27,$did-tree(xdccb,27).sel).lines
  window -h @tmpXdccb28 
  var %loc = $did-tree(xdccb,27).sel
  var %a = 2
  var %counter = 1
  while ($did-tree(xdccb,27,%loc %a)) {
    var %nick = $v1
    var %b = 1
    while ($hfind($+(XDCCb-,%network),$+(%nick,$chr(255),*),%b,w)) {
      var %ifmatch = $v1
      var %num = $gettok(%ifmatch,$numtok(%ifmatch,255),255)
      if ((%num isnum) && ($gettok(%check,1,32) = 1)) || ((File Server isin %num) && ($gettok(%check,2,32) = 1)) || ((FTP = %num) && ($gettok(%check,3,32) = 1)) {
        if ($didwm(xdccb,28,$hget($+(XDCCb-,%network),%ifmatch),1) = 0) {
          var %pack = $hget($+(XDCCb-,%network),%ifmatch)
          var %nick = $gettok(%ifmatch,1,255)
          if (File Server isin %num) aline @tmpXdccb28 %pack $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) %nick $chr(4) $hget($+(XDCCb-,%network),$+(%nick,$chr(255),File ServT)))
          elseif (FTP isin %num) aline @tmpXdccb28 %pack $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) %nick $chr(4) $hget($+(XDCCb-,%network),$+(%nick,$chr(255),FTPm)))
          else aline @tmpXdccb28 %pack $chr(9) $iif($hget($+(XDCCb-,%network),$+(%nick,$chr(255),Queue)),$v1,n/a) $chr(9) $iif($hget($+(XDCCb-,%network),$+(%nick,$chr(255),MaxCps)),$v1,n/a) $chr(9) %nick $chr(4) Double click on a pack to request it.
        }
      }
      inc %b
    }
    inc %counter
    did -a Xdccb-Processbar 1 %counter
    inc %a
  }
  filter -o @tmpXdccb28 XDCCB 28
  if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar
  uPackno
  filter -criw $+(2-,$did(xdccb,28).lines) xdccb 28 @tmpXdccb28 *
  filter -cot 1 9 @tmpxdccb28 xdccb 28 *
}
on *:dialog:XDCCb:sclick:28: {
  tokenize 32 $did($dname,28,1)
  if ($1 = rclick) {
    if (!$did(xdccb,28).sel) return
    var %a = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPCreateMenu,XDCCB28),2,32)
    MPopup MPAddIcon XDCCB28 > $shortfn($scriptdir\Xdccb-Icons.icl) > 3
    MPopup MPAddIcon XDCCB28 > $shortfn($scriptdir\Xdccb-Icons.icl) > 4
    MPopup MPAddIcon XDCCB28 > $shortfn($scriptdir\Xdccb-Icons.icl) > 5
    MPopup MPAddIcon XDCCB28 > $shortfn($scriptdir\Xdccb-Icons.icl) > 7
    MPopup MPAddIcon XDCCB28 > $shortfn($scriptdir\Xdccb-Icons.icl) > 8
    mpopup MPAddItem %a > 3 5 0 Request > -
    mpopup MPAddItem %a > 4 4 0 Add without requesting > -
    var %net = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
    var %scid = $XDCCb-network(%net)
    var %chan
    if ($did-tree(xdccb,27,$gettok($did-tree(xdccb,27).sel,1-2,32)) != %net) var %chan = $v1
    if ((%chan) && (!$XDCCb-onchan(%scid,%chan))) || (!%scid) mpopup MPAddItem %a > 1 1 0 Join > -
    mpopup MPAddItem %a > 0 0 0 - > -
    mpopup MPAddItem %a > 2 2 0 Remove Pack > -
    mpopup MPopup XDCCB28 > $mouse.dx $mouse.dy
    return 
  }
  if ($1-2 == headerclick headerEvent) {
    filter -criwt $+(2-,$did(xdccb,28).lines) $3 9 xdccb 28 @tmpXdccb28 *
    if ($3 = 1) || ($3 > 6) filter -co @tmpXdccb28 xdccb 28 *
    else {
      if (!$dialog(Xdccb-ProcessbarSort)) dialog -mo Xdccb-ProcessbarSort Xdccb-Processbar
      dialog -t Xdccb-ProcessbarSort Sorting list ...
      did -a Xdccb-ProcessbarSort 1 0 0 $calc($did(xdccb,28).lines -1)
      set %xdccb-sort-place $3
      if ($3 = 3) filter -aco @tmpXdccb28 xdccb 28 Xdccb-filter-size
      elseif ($3 = 2) || ($3 = 4) filter -aco @tmpXdccb28 xdccb 28 Xdccb-filter-num
      elseif ($3 = 5) filter -aco @tmpXdccb28 xdccb 28 Xdccb-filter-Queue
      elseif ($3 = 6) filter -aco @tmpXdccb28 xdccb 28 Xdccb-filter-Maxcps
      if ($dialog(Xdccb-ProcessbarSort)) dialog -k Xdccb-ProcessbarSort
      unset %xdccb-sort-b %xdccb-sort-place
    }
  }
}
on *:dialog:XDCCb:dclick:28: {
  tokenize 32 $Xdccb-getscid
  var %scid = $1
  var %network = $2
  var %loc = $did-tree(xdccb,27).sel
  if ($numtok(%loc,32) = 3) {
    var %nick = $did-tree(xdccb,27)
    var %Pack = $gettok($did(28).seltext,1,4)
  }
  else {
    var %nick = $gettok($did-list(7,$did(28).seltext),1,4)
    var %Pack = $gettok($did(28).seltext,1-4,9)
  }
  if (list* iswm $gettok(%Pack,1,46)) {
    scid -t1 %scid $+(/.,$gettok(%Pack,2-,46))
    return 
  }
  if (*File server*:* iswm $gettok(%pack,6,32)) {
    var %pack = $did-list(1-,%pack)
    hadd $+(XDCCb-,%network) $+(%nick,$chr(255),Fserv-use) $+(File server,$calc($gettok(%pack,2,9)))
  }
  elseif (FTP Site: = $gettok(%pack,6,32)) {
    run $+(FTP://,$gettok(%pack,7,32))
    return
  }
  else Saveinfo %nick %Pack %network
  if (*File server*:* !iswm $gettok(%pack,1-2,32)) var %pack = $did-list(1-,%pack)
  var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
  if (%scid != no) {
    var %chan = $hget($+(xdccb-,%network),$+(%nick,$chr(255),chan))
    if (!$XDCCb-onchan(%scid,%chan)) Xdccb-joinuser %nick %network
    elseif (!$XDCCb-onchan(%scid,%chan,%nick)) return $input(The user isn't online at the moment... $clrf The script will save the request for when he returns,124, XDCC Browser)
    elseif (*File server*:* iswm $gettok(%pack,1-2,32)) Xdccb-request-fserv %nick %network %scid $gettok(%pack,1,9)
    elseif ($readini(xdccgets.ini,%nick2,Get) >= $readiniwm(xdccgets.ini,%nick2,pack*,0)) XDCCb-request-Pack %nick $+($chr(35),$remove($gettok(%Pack,2,9),$chr(32))) %scid %network %Pack
  }
  else Xdccb-joinuser %nick %network
}
on *:dialog:XDCCb:sclick:31: {
  if ($did-tree(xdccb,27).root) var %network = $did-tree(xdccb,27,$v1)
  if ($did(28).sel) {
    while ($did(xdccb,28,1).sel) {
      if (!$did-tree(xdccb,27)) {
        var %nick = $gettok($hfind($+(%name,$gettok($network,1,46)),$did(XDCCb,28,1).seltext,1,w).DATA,1,255)
        var %Pack = $+($gettok($hfind($+(%name,$gettok($network,1,46)),$did(XDCCb,28,1).seltext,1,w).DATA,2,255),.) $did(xdccb,28).seltext
      }
      else {
        if ($numtok($did-tree(xdccb,27).sel,32) = 2) var %nick = $did-list(7,$gettok($did(xdccb,28).seltext,1,4))
        else var %nick = $did-tree(xdccb,27)
        var %Pack = $did(xdccb,28,1).seltext
      }
      var %Pack = $did-list(2,%Pack)
      if (List* !iswm %Pack) var %Pack = $calc(%Pack)
      hdel -w $+(xdccb-,%network) $+(%nick,$chr(255),%Pack)
      did -d XDCCb 28 $did(xdccb,28,1).sel
      var %loc = $did-tree(xdccb,27).sel
      if ($did(xdccb,28).lines < 2) did -d XDCCb 27 $gettok(%loc,3,32)
      if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) {
        .hfree $+(xdccb-,$did-tree(xdccb,27))
        goto end2
      }
    }
  }
  elseif ($did-tree(xdccb,27).sel) {
    var %loc = $did-tree(xdccb,27).sel
    var %depth = $numtok(%loc,32)
    if (%depth = 1) {
      if ($hget($+(xdccb-,%network))) .hfree $+(xdccb-,%network)
      var %scid = $XDCCb-network(%network)
      if (!%scid) {
        did -i xdccb 27 1 cb root
        did -d xdccb 27 %loc
        goto end2
      }
      did -i xdccb 27 1 cb root %loc
      var %a = 2
      while ($did-tree(xdccb,27,%loc %a)) {
        var %chan = $v1
        did -d xdccb 27 %a
        if  ($XDCCb-onchan(%scid,%chan)) did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        inc %a
      }
    }
    elseif (%depth = 2) {
      var %a = 1
      while ($hfind($+(xdccb-,%network),*ÿChan,%a,w)) {
        var %item = $v1
        if ($hget($+(xdccb-,%network),%item) = $did-tree(xdccb,27)) {
          hdel -w $+(xdccb-,%network) $+($gettok(%item,1,255),ÿ*)
          dec %a
        }
        inc %a
      }
      did -i xdccb 27 1 cb root $did-tree(xdccb,27).root
      var %chan = $did-tree(xdccb,27)
      var %scid = $XDCCb-network(%network)
      did -d xdccb 27 $gettok(%loc,2,32)
      if  ($XDCCb-onchan(%scid,%chan)) {
        did -i xdccb 27 1 cb root $gettok(%loc,1,32)
        did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
      }
      if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) {
        .hfree $+(xdccb-,%network)
        goto end2
      }
    }
    elseif (%depth = 3) {
      hdel -w $+(xdccb-,%network) $+($did-tree(xdccb,27),$chr(255),*)
      did -i xdccb 27 1 cb root $gettok(%loc,1-2,32)
      did -d XDCCb 27 $gettok(%loc,3,32) 
      did -r xdccb 28
      var %chan = $did-tree(xdccb,27)
      var %scid = $XDCCb-network(%network)
      if ($did-tree(xdccb,27,$gettok(%loc,1-2,32)).lines < 1) && (!$XDCCb-onchan(%scid,%chan)) {
        did -d xdccb 27 $gettok(%loc,2,32)
        did -i xdccb 27 1 cb root $gettok(%loc,1,32)
        did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
      }
      if ($hfind($+(XDCCb-,%network),*ÿChan,0,w) = 0) .hfree $+(xdccb-,%network)
    }
  }
  :end2
  var %loc = $did-tree(xdccb,27).sel
  var %depth = $numtok(%loc,32)
  if (%depth = 3) XDCCb28
  filter -criw $+(2-,$did(xdccb,28).lines) xdccb 28 @tmpXdccb28 *
  filter -cot 1 9 @tmpXdccb28 xdccb 28 * 
  uPackno
}
on *:dialog:XDCCb:sclick:32: {
  if (!$did(28).sel) return
  if (List* iswm $gettok($did(28).seltext,1,32)) return
  tokenize 32 $Xdccb-getscid
  var %scid = $1
  var %network = $2
  var %a = 1
  while (%a <= $did(28,0).sel) {
    var %line = $did(XDCCb,28,%a).sel
    if (!$did-tree(xdccb,27).sel) {
      var %nick = $gettok($hfind($+(XDCCb-,%network),$did(28,%line).text,1,w).DATA,1,255)
      var %Pack = $+($gettok($hfind($+(XDCCb-,%network),$did(28,%line).text,1,w).DATA,2,255),.) $did(28,%line).text
    }
    else {
      var %nick = $did-tree(xdccb,27)
      var %Pack = $did(28,%line).text
    }
    Saveinfo %nick %Pack %network
    inc %a
  }
}
on *:dialog:XDCCb:sclick:33: {
  if ($did-tree(xdccb,27,$did-tree(xdccb,27).root)) var %net = $v1
  else var %net = $gettok($network,1,46)
  var %scid = $XDCCb-network(%net)
  if (!%scid) return $input( You're not connected to %net !!,124,XDCC Browser)
  var %check $?="What kind of channel are you searching for ?"
  scid -t1 %scid /list %check
}
on *:dialog:XDCCb:sclick:34: {
  var %a = 1
  var %blah
  while ($hget(%a)) {
    var %hash = $v1
    if (Xdccb- isin %hash) {
      var %net = $gettok(%hash,2-,45))
      if (!$XDCCb-network(%net)) && (%net) {
        .hfree %hash
        var %blah = $Find-branch(xdccb,27,%net)
        if (%blah) did -d xdccb 27 %blah
        dec %a
      }
    }
    inc %a
  }
  var %a = 2
  while ($did-tree(xdccb,27,%a)) {
    var %net = $v1
    var %scid = $XDCCb-network(%net)
    var %b = 2
    while ($did-tree(xdccb,27,%a %b)) {
      var %chan = $v1
      if (!$XDCCb-onchan(%scid,%chan)) var %match = yeap
      else var %match = no
      var %c = $calc($did-tree(xdccb,27,%a %b).lines +1)
      while ($did-tree(xdccb,27,%a %b %c) ) {
        var %nick = $v1
        if (%match = yeap) || (!$XDCCb-onchan(%scid,%chan,%nick)) {
          hdel -w $+(xdccb-,%net) $+(%nick,$chr(255),*)
          did -i xdccb 27 1 cb root %a %b
          did -d xdccb 27 %c
        }
        dec %c
      }
      if ($did-tree(xdccb,27,%a %b).lines < 1) {
        did -i xdccb 27 1 cb root %a
        did -d xdccb 27 %b
        if ($XDCCb-onchan(%scid,%chan)) {
          did -i xdccb 27 1 cb root %a
          did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        }
        ;dec %b
      }
      inc %b
    }
    inc %a
  }
  upackno
}

;Search Tab

on *:dialog:XDCCb:sclick:202,222: {
  if ($sock(xdccb)) .sockclose xdccb
  if ($timer(Xdccb-socket)) .timerXdccb-socket off 
  did -ra xdccb 211 Searching...
  if ($did(xdccb,203).sel = 2) {
    did -r XDCCb 207
    var %a = 1
    var %num = 0
    while ($hget(%a)) {
      var %get = $v1
      if ($+(XDCCb-,*) iswm %get) inc %num $hget(%get,0).item
      inc %a
    }
    if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
    dialog -t Xdccb-Processbar Searching...
    did -a Xdccb-Processbar 1 0 0 %num
    var %a = 1
    if ($window(@tmpXdccb202)) clear @tmpXdccb202
    while ($hget(%a)) {
      var %get = $v1
      if ($+(XDCCb-,*) iswm %get) {
        XDCCb202 $remove(%get,XDCCb-)
      }
      inc %a
    }
    filter -o @tmpXdccb202 XDCCB 207
    if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar
    did -ra xdccb 211 Done
  }
  elseif ($did(xdccb,203).sel = 3) {
    var %a = 2
    var %search = $+(*,$replace($did(206),$chr(32),*),*)
    var %size = $readini(xdccgets.ini,ôOptionsô,Search-Size)
    var %compare = $iif($gettok(%size,1,44) = 1,<,>)
    var %size = $calc($gettok(%size,2,44) * (1024 ^ $gettok(%size,3,44)))
    if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
    dialog -t Xdccb-Processbar Searching...
    did -a Xdccb-Processbar 1 0 0 $did(207).lines
    while ($did(207,%a)) {
      dll $+(",$scriptdir\WhileFix.dll") WhileFix 
      did -a Xdccb-Processbar 1 %a
      var %value = $did-list(1,$did(207,%a))
      var %file-size = $Xdccb-Calcsize($did-list(3,$did(207,%a)))
      if (%file-size %compare %size) || ($+(*,$replace($did(206),$chr(32),*),*) !iswm %value) {
        did -d xdccb 207 %a
        dec %a
      }
      inc %a
    }
    if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar
    did -ra xdccb 211 Done
  }
  elseif ($did(xdccb,203).sel = 4) {
    did -r XDCCb 207
    var %search = $replace($did(206),$chr(32),+)
    if ($len(%search) > 2) {
      if ($did(xdccb,203).sel = 4) {
        .timerXdccb-socket 1 1 sockopen xdccb www.packetnews.com 80 
        writeini -n XDCCgets.ini ôOptionsô search http://www.Packetnews.com/search.php?kw= $+ %search $+ &net=all&submit32=Go&t=xdcc
        writeini -n XDCCgets.ini ôOptionsô site www.packetnews.com
        writeini -n XDCCgets.ini ôOptionsô Next 0
      }
    }
    else did -ra xdccb 211 String to short
  }
  elseif ($did(xdccb,203).sel = 5) {
    var %search = $did(206) 
    url www.Packetnews.com/search.php?kw= $+ %search $+ &net=all&submit32=Go&t=xdcc
    var %search =  $replace(%search,$chr(32),$chr(43))
    .timer 1 2 url -n www.ircspy.com/search.asp?searchtype=XDCC&searchtext= $+ %search $+ &sortby=Network
    .timer 1 2 url -n http://isohunt.com/files.php?ihq= $+ %search $+ &ext=&op=and
    .timer 1 2 url -n http://www.mydownloader.com//default.asp?searchstring= $+ %search
    .timer 1 2 url -n www.xdccsearch.com/html/search.php?string= $+ %search $+ &submit=go&item=Pack_Name
  }
  var %num = $calc($did(xdccb,207).lines -1)
  did -ra xdccb 205 $iif(%num = 1,%num Result,%num Results)
  filter -criw $+(2-,$did(xdccb,207).lines) xdccb 207 @tmpXdccb202 *
  filter -cot 1 9 @tmpxdccb202 xdccb 207 * 
  if ($appactive) dialog -v xdccb
}
on *:dialog:XDCCb:sclick:207: {
  tokenize 32 $did($dname,207,1)
  if ($1 = rclick) {
    if (!$did(xdccb,207).sel) return
    var %line = $did(XDCCb,207).seltext
    var %line = $did-list(1-,%line)
    var %a = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPCreateMenu,XDCCB207),2,32)
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 3
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 4
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 5
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 7
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 8
    MPopup MPAddIcon XDCCB207 > $shortfn($scriptdir\Xdccb-Icons.icl) > 12
    mpopup MPAddItem %a > 3 5 0 Request > -
    mpopup MPAddItem %a > 4 4 0 Add without requesting > -
    mpopup MPAddItem %a > 0 0 0 - > -
    var %net = $remove($gettok(%line,9,9),$chr(32))
    var %scid = $XDCCb-network(%net)
    var %chan = $remove($+($gettok(%line,8,9)),$chr(32))
    if ((%chan) && (!$XDCCb-onchan(%scid,%chan))) || (!%scid) mpopup MPAddItem %a > 1 1 0 Join > -
    mpopup MPAddItem %a > 371 6 0 Join All > -
    if (%scid) mpopup MPAddItem %a > 10 3 0 Get Network's Channel List > -
    mpopup MPopup XDCCB207 > $mouse.dx $mouse.dy
    return 
  }
  if ($1-2 == headerclick headerEvent) {
    filter -criwt $+(2-,$did(xdccb,207).lines) $3 9 xdccb 207 @tmpXdccb202 
    if ($3 = 1) || ($3 > 6) filter -co @tmpXdccb202 xdccb 207 *
    else {
      if (!$dialog(Xdccb-ProcessbarSort)) dialog -mo Xdccb-ProcessbarSort Xdccb-Processbar
      dialog -t Xdccb-ProcessbarSort Sorting list ...
      did -a Xdccb-ProcessbarSort 1 0 0 $calc($did(xdccb,207).lines -1)
      set %xdccb-sort-place $3
      if ($3 = 3) filter -aco @tmpXdccb202 xdccb 207 Xdccb-filter-size
      elseif ($3 = 2) || ($3 = 4) filter -aco @tmpXdccb202 xdccb 207 Xdccb-filter-num
      elseif ($3 = 5) filter -aco @tmpXdccb202 xdccb 207 Xdccb-filter-Queue
      elseif ($3 = 6) filter -aco @tmpXdccb202 xdccb 207 Xdccb-filter-Maxcps
      if ($dialog(Xdccb-ProcessbarSort)) dialog -k Xdccb-ProcessbarSort
      unset %xdccb-sort-b %xdccb-sort-place
    }
  }
}
on *:dialog:XDCCb:dclick:207: {
  var %chan,%match
  var %line = $did(XDCCb,207).seltext
  var %line = $did-list(1-,%line)
  var %Pack = $gettok($did(XDCCb,207).seltext,1-4,9)
  var %nick = $remove($gettok($gettok(%line,7,9),1,4),$chr(32))
  var %num = $+($chr(35),$remove($gettok(%line,2,9),$chr(32)))
  var %net = $gettok($remove($gettok(%line,9,9),$chr(32)),1,46)
  var %scid = $XDCCb-network(%net)
  var %chan = $+($remove($gettok(%line,8,9),$chr(32)))
  var %Pack-num = $remove($gettok(%line,2,9),$chr(32))
  if (!$hget($+(Xdccb-,%net),$+(%nick,$chr(255),%Pack-num))) {
    var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
    var %Server = $remove($gettok($gettok(%line,10,9),1,4),$chr(32))
    var %port = 6667
    var %Pack = $gettok(%line,1-4,9)
    var %a = 1
    while ($readiniwm(xdccgets.ini,%nick2,Pack*,%a)) {
      var %temp-Pack = $v1 
      if (%temp-Pack = %Pack) var %match = %Pack
      inc %a
    }
    if (!%match) {
      var %Pack-num = $remove($gettok(%Pack,2,9),$chr(32))
      writeini -n xdccgets.ini %nick2 $+(Pack,%Pack-num) %Pack
      writeini -n xdccgets.ini %nick2 $+(Date,%Pack-num) $Date
      writeini -n xdccgets.ini %nick2 $+(Time,%Pack-num) $Time
      writeini -n xdccgets.ini %nick2 Chan %chan
      var %usage = $gettok(%line,2,4)
      writeini -n xdccgets.ini %nick2 Usage $gettok(%usage,$+(1-,$calc($numtok(%usage,35) -1)),35)
      if ($read($+(",$mircdirservers.ini"),w,*= $+ %net $+ : Random serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,3,58)
      elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %Net *serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
      elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Net,.,*,Group:,*,%net))) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
      else {
        writeini -n xdccgets.ini %nick2 Server %server
        .server -a %server -p %port -g %net
      }
      writeini -n xdccgets.ini %nick2 Network %net
      writeini -n xdccgets.ini %nick2 Port %port
      if (!$readini(xdccgets.ini,%nick2,get)) writeini -n xdccgets.ini %nick2 Get 1
      if ($dialog(XDCCb)) {
        if ( $didwm(xdccb,308,$+(*,$replace(%pack,$chr(9),$+(*,$chr(9),*)),*,%nick,*),1) = 0 ) {
          var %get = $readini(xdccgets.ini,%nick2,get)
          var %a = $readiniwm(xdccgets.ini,%nick2,Pack*,0)
          var %order = $iif($calc(%a - %get +1) > 0,$v1,Finished)
          var %stat = $Xdccb-stats(%nick,%net,%chan,%order)
          if ($numtok(%pack,9) = 2) var %pack = %pack $chr(9) n/a
          did -a XDCCb 308 $gettok(%pack,1-3,9) $chr(9) %stat $chr(9) $ord(%order) $chr(9) %nick $chr(9) %chan $chr(9) %net $chr(9) %server
        } 
      }
    }
  }
  elseif (*File server*:* iswm $gettok(%pack,6,32)) {
    var %pack = $did-list(1-4,%pack)
    hadd $+(XDCCb-,%net) $+(%nick,$chr(255),Fserv-use) $+(File server,$calc($gettok(%pack,2,9)))
  }
  elseif (FTP Site: = $gettok(%pack,6,32)) {
    run $+(FTP://,$gettok(%pack,7,32))
    return
  }
  else {
    saveinfo %nick %pack %net
    var %pack = $did-list(1-,%pack)
  }
  if (%scid) {
    var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
    if (!$XDCCb-onchan(%scid,%chan)) Xdccb-joinuser %nick %net
    elseif (!$XDCCb-onchan(%scid,%chan,%nick)) return
    elseif (*File server*:* iswm %pack) Xdccb-request-fserv %nick %net %scid $gettok(%pack,1,9)
    elseif ($readini(xdccgets.ini,%nick2,Get) >= $readiniwm(xdccgets.ini,%nick2,pack*,0)) XDCCb-request-Pack %nick $+($chr(35),$remove($gettok(%Pack,2,9),$chr(32))) %scid %net %Pack
  }
  else Xdccb-joinuser %nick %net
}
on *:dialog:XDCCb:sclick:209: Xdccb-Stopsocket
on *:dialog:XDCCb:sclick:213: if ($did(xdccb,213).sel) writeini -n xdccgets.ini ôOptionsô Search-Size $puttok($readini(xdccgets.ini,ôOptionsô,Search-Size),$v1,1,44)
on *:dialog:XDCCb:edit:214: if ($replace($did(xdccb,214),$chr(44),$chr(46)) isnum) writeini -n xdccgets.ini ôOptionsô Search-Size $puttok($readini(xdccgets.ini,ôOptionsô,Search-Size),$v1,2,44)
on *:dialog:XDCCb:sclick:215: if ($did(xdccb,215).sel) writeini -n xdccgets.ini ôOptionsô Search-Size $puttok($readini(xdccgets.ini,ôOptionsô,Search-Size),$v1,3,44)

;Request dialog

on *:dialog:XDCCb:sclick:303: {
  if (!$did(Xdccb,308).sel) return
  var %num = $did(xdccb,308,0).sel
  var %a = %num
  while (%a > 0) {
    var %line = $did(xdccb,308,$did(xdccb,308,%a).sel)
    var %stats = $did-list(5,%line)
    var %user = $did-list(6,%line)
    var %nick = $replace(%user,[,$chr(255),],$chr(251))
    var %get = $readini(xdccgets.ini,%nick,get)
    var %network = $did-list(8,%line)
    var %scid = $XDCCb-network(%network)
    var %file = $+(Xdccb-queues-,%network,.txt)
    var %lines = $lines(%file)
    var %nicks = $calc($read(%file,0) -1)
    if (%scid) {
      var %comchan = $xdccb-changet(%scid,%user)
      var %server = $Xdccb-getserverip(%scid)
    }
    if ($readiniwm(xdccgets.ini,%nick,Pack*,0) > 1) {
      var %pack = $remove($did-list(5,%line),st,nd,rd,th)   
      if (%Pack < %get) {
        dec %get 
        writeini -n xdccgets.ini %nick get %get
      }
      var %pack-num = $did-list(2,%line)
      remini -n xdccgets.ini %nick $+(Pack,%Pack-num)
      remini -n xdccgets.ini %nick $+(Date,%Pack-num)
      remini -n xdccgets.ini %nick $+(Time,%Pack-num)
      if (%stats = 1st) && (%scid) scid %scid close -g* %user
      did -d XDCCb 308 $did(xdccb,308,%a).sel
      var %b = 2
      var %new-pos
      while ($did(xdccb,308,%b)) {
        var %v1 = $v1
        if ($did-list(6,%v1) = %user) {
          if ($remove($did-list(5,%v1),st,nd,rd,th) > %pack) {
            var %new-pos = $ord($calc($v1 -1))
            did -o xdccb 308 %b $puttok($did-list(1-,%v1),$+($Chr(32),%new-pos,$chr(32)),5,9)
            if (s isin $gettok(%v1,2,32)) did -kc XDCCb 308 %b 
          }
          if (%new-pos = 1st) && (%pack = 1) {
            if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
            elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) $+(.timerxdccb-remove-,%User) 1 1 scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
            $+(.timerxdccb-,%User) 1 2 XDCCb-request-Pack %user $did-list(2,%v1) %scid %network $did-list(1,%v1)
          }
        }
        var %new-pos
        inc %b
      }
    }
    else {
      if (%server) && (%comchan) && ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) scid -t1 %scid /.DCCALLOW $+(-,%user)
      if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust -r $+(%user,!*@*)
      if ($Timer($+(XDCCB-,%user))) $+(.TimerXDCCB-,%user) off
      elseif (%comchan) && (%get <= $readiniwm(xdccgets.ini,%nick,Pack*,0)) && ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) && (%server) scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) %user XDCC remove
      remini -n xdccgets.ini %nick
      if (%stats != Finished) && (%scid) scid %scid close -g* %user
      did -d XDCCb 308 $did(xdccb,308,%a).sel
    }
    dec %a
  }
  if ($read(%file,s,%user )) {
    while ($read(%file,s,%user )) {
      write $+(-dl,$calc($readn +1)) %file
      dec %lines    
    }
    var %line = $read(%file,w,%user)
    write $+(-dl,$calc($readn +1)) %file
    write -l0 %file $calc($read(%file,0) - 1)
    if ($lines(%file) < 2) .remove $+(",%file,")
  }
  elseif ($lines(%file) < 2) .remove $+(",%file,")
}
on *:dialog:XDCCb:sclick:304: {
  if (!$did(xdccb,308).sel) return
  Xdccb-joinuser $did-list(6,$did(xdccb,308).seltext)
}
on *:dialog:XDCCb:sclick:308: {
  tokenize 32 $did($dname,308,1)
  if ($did-tree(xdccb,308).event = rclick) {
    if (!$did(xdccb,308).sel) return
    var %a = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPCreateMenu,XDCCB308),2,32)
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 3
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 4
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 8
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 14
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 15
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 26
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 12
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 13
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 5
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 28
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 27
    MPopup MPAddIcon XDCCB308 > $shortfn($scriptdir\Xdccb-Icons.icl) > 10
    var %net = $did-list(8,$did(xdccb,308).seltext)
    var %scid = $XDCCb-network(%net)
    var %chan = $did-list(7,$did(xdccb,308).seltext)
    var %num = 2
    var %nick = $did-list(6,$did(xdccb,308,$did(xdccb,308,1).sel))
    while ($did(xdccb,308,%num).sel) {
      if ($did-list(6,$did(xdccb,308,$v1)) != %nick) {
        var %num = more
        break
      }
      inc %num
    }
    mpopup MPAddItem %a > 3 3 0 $iif(%num = more,Request from users,Request from %nick) > -
    if ($did(xdccb,308,0).sel = 1) {
      if ((%chan) && (!$XDCCb-onchan(%scid,%chan))) || (!%scid) mpopup MPAddItem %a > 1 1 0 Join > -
      var %sub = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPAddSubMenu,%a > 100 8 0 Order),2,32)
      mpopup MPAddItem %sub > 375 4 0 Move Up > -
      mpopup MPAddItem %sub > 376 5 0 Move Down > -
      mpopup MPAddItem %sub > 377 10 0 Set 1st priority > -
    }
    mpopup MPAddItem %a > 371 7 0 Join All > -
    mpopup MPAddItem %a > 372 11 0 Request All > -
    mpopup MPAddItem %a > 101 0 0 - > -
    if ($did(xdccb,308,0).sel = 1) && (%scid)  mpopup MPAddItem %a > 10 9 0 Get Network's Channel List > -
    mpopup MPAddItem %a > 374 6 0 Quit Irrelevant Channels/Networks > -
    mpopup MPAddItem %a > 373 2 0 Remove Selected > -
    if ($did(xdccb,308,0).sel = 1) && (unable isin $did-list(4,$did(xdccb,308,$did(xdccb,308,1).sel))) mpopup MPAddItem %a > 378 12 0 Clear unable to connect status > -
    mpopup MPopup XDCCB308 > $mouse.dx $mouse.dy
    return 
  }
  if ($1-2 == headerclick headerEvent) {
    filter -criwt $+(2-,$did(xdccb,308).lines) $3 9 xdccb 308 @tmpXdccb28 *
    if ($3 != 2) && ($3 != 3) && ($3 != 4) filter -co @tmpXdccb28 xdccb 308 *
    else {
      if (!$dialog(Xdccb-ProcessbarSort)) dialog -mo Xdccb-ProcessbarSort Xdccb-Processbar
      dialog -t Xdccb-ProcessbarSort Sorting list ...
      did -a Xdccb-ProcessbarSort 1 0 0 $calc($did(xdccb,308).lines -1)
      set %xdccb-sort-place $3
      if ($3 = 3) filter -aco @tmpXdccb28 xdccb 308 Xdccb-filter-size
      elseif ($3 = 2) || ($3 = 4) filter -aco @tmpXdccb28 xdccb 308 Xdccb-filter-num
      if ($dialog(Xdccb-ProcessbarSort)) dialog -k Xdccb-ProcessbarSort
      unset %xdccb-sort-b %xdccb-sort-place
    }
  }
}
on *:dialog:XDCCb:dclick:308: {
  var %nick = $replace($did-list(6,$did(xdccb,308).seltext),[,$chr(255),],$chr(251))
  var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
  var %scid = $XDCCb-network(%network)
  var %chan = $readini(xdccgets.ini,%nick,chan)
  var %pack = $did-list(1,$did(308).seltext)
  if (%scid) var %comchan = $xdccb-changet(%scid,$did-list(6,$did(xdccb,308).seltext))
  if (%comchan) {
    if (*File server* iswm %pack) Xdccb-request-fserv $did-list(6,$did(xdccb,308).seltext) %network %scid %pack
    else XDCCb-request-Pack $did-list(6,$did(xdccb,308).seltext) $+($chr(35),$did-list(2,$did(308).seltext)) %scid %network %pack
    return
  }
  elseif (%scid) && ($XDCCb-onchan(%scid,%chan,$me)) && (!$XDCCb-onchan(%scid,%chan,$did-list(6,$did(xdccb,308).seltext))) return $input( $did-list(6,$did(xdccb,308).seltext) isn't in the chan... he's probably offline ,124, User Offline)
  var %check = $xdccb-check(Join the user to request from him ?)
  if (%check = $true) {
    if ($XDCCb-network(%network,%chan)) {
      scid -t1 $v1 /join %chan
      return
    }
    else server -m $readini(xdccgets.ini,%nick,server) $readini(xdccgets.ini,%nick,port) -j %chan
  }
}
on *:dialog:XDCCb:sclick:350: writeini -n xdccgets.ini ôOptionsô XDCCAutoGet $iif($did(350).state = 1,on,off) 
on *:dialog:XDCCb:sclick:351: writeini -n xdccgets.ini ôOptionsô XDCCResume $iif($did(351).state = 1,on,off)
on *:dialog:XDCCb:sclick:352: writeini -n xdccgets.ini ôOptionsô XDCCDelete-hash $iif($did(352).state = 1,on,off)
on *:dialog:XDCCb:sclick:353: writeini -n xdccgets.ini ôOptionsô XDCC-Requestlist $iif($did(353).state = 1,on,off)
on *:dialog:XDCCb:sclick:354: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Mode)
  if (o isin %check) {
    dialog -n xdccb
    writeini -n xdccgets.ini ôOptionsô Mode $remove(%check,o)
  }
  else {
    dialog -o xdccb
    writeini -n xdccgets.ini ôOptionsô Mode $+(%check,o)
  }
}
on *:dialog:XDCCb:sclick:355: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Mode)
  if (d isin %check) writeini -n xdccgets.ini ôOptionsô Mode $remove(%check,d)
  else writeini -n xdccgets.ini ôOptionsô Mode $+(%check,d)
  XDCCb
}
on *:dialog:XDCCb:sclick:358: writeini -n xdccgets.ini ôOptionsô Request /.msg
on *:dialog:XDCCb:sclick:359: writeini -n xdccgets.ini ôOptionsô Request /.ctcp
on *:dialog:XDCCb:sclick:360: writeini -n xdccgets.ini ôOptionsô Echo $iif($did(360).state = 1,on,off)
on *:dialog:XDCCb:sclick:369: writeini -n xdccgets.ini ôOptionsô Join-channels $iif($did(369).state = 1,Yes,no)
on *:dialog:XDCCb:sclick:380: writeini -n xdccgets.ini ôOptionsô Auto-connect $iif($did(380).state = 1,on,off)
on *:dialog:XDCCb:sclick:381: writeini -n xdccgets.ini ôOptionsô DCC-Fix $iif($did(381).state = 1,on,off)
on *:dialog:XDCCb:sclick:382: writeini -n xdccgets.ini ôOptionsô Hide-Packs $iif($did(382).state = 1,on,off)
on *:dialog:XDCCb:sclick:383: writeini -n xdccgets.ini ôOptionsô Delete $iif($did(383).state = 1,on,off)
on *:dialog:XDCCb:sclick:384: {
  if ($did(384).state = 1) {
    writeini -n xdccgets.ini ôOptionsô Sessions on
    var %a = 1
    while ($scon(%a)) {
      scid $v1 $+(/.timerXdcc-sessions,$gettok($scid($v1).network,1,46)) 1 43200 Xdccb-Session 
      inc %a
    }
  }
  else {
    writeini -n xdccgets.ini ôOptionsô Sessions off
    var %a = 1
    while ($scon(%a)) {
      scid $v1 $+(/.timerXdcc-sessions,$gettok($scid($v1).network,1,46)) off 
      inc %a
    }
  }
}
on *:dialog:XDCCb:sclick:385: {
  if ($did(385).state = 1) {
    Xdccb-Make-reg
    writeini -n xdccgets.ini ôOptionsô Links on
    run regedit /s /c XdccB.reg
  }
  else {
    write -c XdccB.reg
    if (9* iswm $os) || ($os = ME) write XdccB.reg REGEDIT4
    else write XdccB.reg Windows Registry Editor Version 5.00
    write XdccB.reg $crlf
    write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec]
    write XdccB.reg @=" $+ $chr(37) $+ 1"
    write XdccB.reg $crlf 
    write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec\ifexec]
    write XdccB.reg @=" $+ $chr(37) $+ 1"
    write XdccB.reg $crlf
    write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec\Topic]
    write XdccB.reg @="Connect"
    writeini -n xdccgets.ini ôOptionsô Links off
    run regedit /s /c XdccB.reg
    .timer 1 1 .remove XdccB.reg
  }
}
on *:dialog:XDCCb:sclick:386: writeini -n xdccgets.ini ôOptionsô Channel-pack $iif($did(386).state = 1,Yes,No)
on *:dialog:XDCCb:sclick:387: {
  var %check = $gettok($readini(mirc.ini,options,n7),19,44) 
  var %a = 1
  if (%check = 1) .dcc trust off
  else .dcc trust on
  while ($ini(xdccgets.ini,%a)) {
    var %nick = $v1
    if (%check = 0) {
      var %net = $readini(xdccgets.ini,%nick,Network)
      var %scid = $XDCCb-network(%net)
      if (%scid) {
        var %nick = $replace(%nick,$chr(255),[,$chr(251),])
        var %comchan = $xdccb-changet(%scid,%nick)
        if (%comchan) .dcc trust $+(%nick,!*@*)
      }
    }
    else .dcc trust -r $+($replace(%nick,$chr(255),[,$chr(251),]),!*@*) 
    inc %a 
  }
}
on *:dialog:XDCCb:sclick:388: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  if ($did(388).state = 1) writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,1,1,32)
  else writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,0,1,32)
  XDCCb27
  did -r xdccb 28
}
on *:dialog:XDCCb:sclick:389: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  if ($did(389).state = 1) writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,1,2,32)
  else writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,0,2,32)
  XDCCb27
  did -r xdccb 28
}
on *:dialog:XDCCb:sclick:390: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  if ($did(390).state = 1) writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,1,3,32)
  else writeini -n xdccgets.ini ôOptionsô Listing $puttok(%check,0,3,32)
  XDCCb27
  did -r xdccb 28
}
on *:dialog:XDCCb:sclick:391: writeini -n xdccgets.ini ôOptionsô Hide-Fserv $iif($did(391).state = 1,on,off)
on *:dialog:XDCCb:sclick:392: writeini -n xdccgets.ini ôOptionsô Remove $iif($did(392).state = 1,on,off)
on *:dialog:XDCCb:sclick:393: {
  var %check = $readini(xdccgets.ini,ôOptionsô,Autosave)
  if ($did(393).state = 1) {
    writeini -n xdccgets.ini ôOptionsô Autosave on
    if (!$timer(xdccb-autosave)) .timerXDCCb-autosave -i 0 $calc($readini(xdccgets.ini,ôOptionsô,Autosave-time) * 3600) XDCCb-autosave
  }
  else {
    writeini -n xdccgets.ini ôOptionsô Autosave off
    if ($timer(xdccb-autosave)) .timerXDCCb-autosave off
  }
}
on *:dialog:XDCCb:sclick:394: writeini -n xdccgets.ini ôOptionsô Finish-Quit $iif($did(394).state = 1,on,off)
on *:dialog:XDCCb:sclick:395: writeini -n xdccgets.ini ôOptionsô Finish-Shutdown $iif($did(395).state = 1,on,off)
on *:dialog:XDCCb:sclick:396: writeini -n xdccgets.ini ôOptionsô Fserv-Browser $iif($did(396).state = 1,on,off)
on *:dialog:XDCCb:sclick:407: {
  var %a = 2
  var %sends = 0
  While ($did(xdccb,308,%a)) {
    var %line = $v1
    if ($did-list(5,%line) = 1st) {
      var %nick = $did-list(6,%line)
      var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
      var %get = $readini(xdccgets.ini,%nick2,get)
      var %Pack = $readiniwm(xdccgets.ini,%nick2,Pack*,%get)
      var %network = $gettok($readini(xdccgets.ini,%nick2,network),1,46)
      var %scid = $XDCCb-network(%network)
      var %comchan = $xdccb-changet(%scid,%nick)
      var %active-gets = 0
      if (%comchan) && (%Pack) {
        var %b = 1
        while ($get(%nick,0) => %b) {
          if ($Get(%nick,%b).status = active) var %gets = active
          inc %b
          inc %active-gets
        }
        if (%gets != active) {
          if (%scid) $+(.TimerXDCCB-,%nick) 1 %a XDCCb-request-Pack %nick $+($chr(35),$right($readiniwm(xdccgets.ini,%nick2,Pack*,%get).sec,-4)) %scid %network %Pack
          inc %sends
        }
        var %gets = not active
      }
    }
    inc %a
  }
  if (%sends = 0) {
    if (%active-gets = 0) return $input(There's no one online ,124, Can't request - No one online)
    else return $input(You are already getting from whoever's Online ,124, Can't request - Already getting)
  }
}
on *:dialog:XDCCb:sclick:408: {
  var %a = 2
  while ($did-list(6,$did(xdccb,308,%a))) {
    var %nick = $v1
    var %network = $did-list(8,$did(xdccb,308,%a))
    var %scid = $XDCCb-network(%network)
    var %chan = $did-list(7,$did(xdccb,308,%a))
    if (!$XDCCb-onchan(%scid,%chan)) Xdccb-joinuser %nick
    inc %a
  }
}

;Corrupt files Dialog 

dialog XDCCb-c {
  title "XDCCb - Corrupt files request"
  size -1 -1 242 158

  option dbu

  list 11, 4 8 223 94, sort size hsbar
  list 13, 172 113 58 40, sort size

  box "#Incomplete on Network:", 23, 168 106 65 49

  button "Finish", 1, 4 141 48 14, ok
  button "&Add file", 2, 8 105 45 11
  button "&Remove file", 3, 8 117 45 11
  button "&Request Selected", 4, 62 117 49 11
  button "Request all", 5, 62 105 49 11
  button "Join Network", 6, 120 109 46 14
  button "Join all", 7, 120 124 46 10
  button "Show request list", 8, 120 136 46 10
  Check "Auto Request on join", 9, 55 131 60 9

  button "Finish", 999, 1 1 1 1, hide

  Menu "Help", 800
  Item "Help", 31, 800
  Item "#Incomplete site", 32, 800
  Item Break, 33, 800
  Item "About...", 34, 800
  Item Break, 35, 800
  Item "&Donate",36, 800

}
on *:dialog:XDCCb-c:init:*: {
  mdx SetMircVersion $version
  mdx MarkDialog XDCCb-c
  mdx SetColor $dname textbg $rgb(16,252,252)

  dialogs SetControlMDX 999 positioner minbox 
  mdx SetBorderStyle 1,2,3,4,5,6,7,8 border

  views SetControlMDX XDCCb-c 11 ListView showsel report grid rowselect hottrack nosortheader infotip
  did -i XDCCb-c 11 1 headerdims 190:1 250:2
  did -i XDCCb-c 11 1 headertext File Name $chr(9) Description

  did -a XDCCb-c 13 Criten 
  did -a XDCCb-c 13 Rizon
  did -a XDCCb-c 13 Ultra-Irc
  did -a XDCCb-c 13 UnderNet 
  did -c XDCCb-c 13 1

  var %a = $ini(XDCCb-corrupt.ini,0)
  while (%a != 0) {
    var %file = $ini(XDCCb-corrupt.ini,%a)
    var %desc = $readini(XDCCb-corrupt.ini,%file,desc)
    did -a XDCCb-c 11 %file $chr(9) %desc
    dec %a
  }
  if ($readini(xdccgets.ini,ôOptionsô,Auto-Corrupt) = yes ) did -c XDCCb-c 9
}
on *:dialog:XDCCb-c:sclick:2: {
  var %check = $gettok($readini(mirc.ini,options,n7),19,44)
  if (%check = 1) {
    var %check = $xdccb-check(The script needs turn the "Trusted" list off $+ $Chr(44) do you want to continue ?)
    if (!%check) return
    var %a = 1
    .dcc trust off
    while ($ini(xdccgets.ini,%a)) {
      var %nick = $v1
      .dcc trust -r $+($replace(%nick,$chr(255),[,$chr(251),]),!*@*) 
      inc %a 
    }
  }
  if ($did(11).lines > 5)  return $input(ERROR - There's a limit of 5 requests at a Time... ,124, XDCC Browser)
  var %file = $sfile($getdir,Enter the corrupted file's name.. Or choose a file.)
  if (!%file) return $input(ERROR - No file name entered ! ,124, XDCC Browser)
  var %dir = $gettok($nofile(%file),-2-,92)
  if (CD* iswm $gettok(%dir,2,92)) var %dir = $replace(%dir,\,$+($chr(32),/,$chr(32)))
  else var %dir = $gettok(%dir,2,92)
  var %file = $nopath(%file)
  if ($ini(XDCCb-corrupt.ini,%file)) return $input(ERROR - You've are already requesting that file ! ,124, XDCC Browser)
  Var %desc = $input(Please enter a description for the file $+ $chr(44) and CD# at the end (if there's more then one CD),e,XDCC Browser, %dir )
  if (!%desc) return $input(ERROR - No description entered ! ,124, XDCC Browser)
  did -a XDCCb-c 11 %file $chr(9) %desc
  writeini -n XDCCb-corrupt.ini %file Desc %desc
  Xdccb-c-requestall $+(0 + 0 0 0 %file, $chr(9) ,+ 0 0 0 %desc)
}
on *:dialog:XDCCb-c:sclick:3: {
  if (!$did(11).seltext) return
  var %file = $did-list(1,$did(11).seltext)
  var %a = $calc($ini(XDCCb-corrupt.ini,%file,0) -1)
  while (%a > 0) {
    var %network = $ini(XDCCb-corrupt.ini,%file,$calc(1 + %a))
    var %cid = $XDCCb-network(%network)
    if (%cid) && ($XDCCB-c-onchannel(%cid,#incomplete)) scid -t1 %cid /msg #incomplete !close $readini(XDCCb-corrupt.ini,%file,%network)
    dec %a
  }
  remini -n XDCCb-corrupt.ini %file
  did -d XDCCb-c 11 $did(11).sel
}
on *:dialog:XDCCb-c:sclick:4: if ($did(11).seltext) && ($did(11).sel != 1) Xdccb-c-requestall $did(11).seltext
on *:dialog:XDCCb-c:sclick:5: {
  var %a = $did(11).lines
  while (%a != 1) {
    Xdccb-c-requestall $did(11,%a)
    dec %a
  }
}
on *:dialog:XDCCb-c:sclick:6: XDCCb-c-connect $did(13).sel $did(13).seltext
on *:dialog:XDCCb-c:sclick:7: {
  var %a = 5
  while (%a != 0) {
    XDCCb-c-connect %a $did(13,%a)
    dec %a
  } 
}
on *:dialog:XDCCb-c:sclick:8: {
  var %net = $did(13).sel
  if (%net = 1) url -n http://213.232.83.189:9696/
  if (%net = 2) url -n http://fx.jsuthosting.com
  if (%net = 3) url -n http://216.108.212.22:4333
  if (%net = 4) url -n http://requests-list.dnsalias.com:21112
}
on *:dialog:XDCCb-c:sclick:9: {
  if ($readini(xdccgets.ini,ôOptionsô,Auto-Corrupt) = yes ) writeini -n xdccgets.ini ôOptionsô Auto-Corrupt no
  else writeini -n xdccgets.ini ôOptionsô Auto-Corrupt yes
}
on *:dialog:XDCCb-c:dclick:11: Xdccb-c-requestall $did(11).seltext
on *:dialog:XDCCb-c:dclick:13: XDCCb-c-connect $did(13).sel $did(13).seltext
on *:dialog:XDCCb-c:menu:31: run "XDCC Browser.doc"
on *:dialog:XDCCb-c:menu:32: url -n www.incomplete.me.uk/
on *:dialog:XDCCb-c:menu:34: {
  return $input(XDCC Browser v3.41 for mIRC 6.16 $crlf $+ by Yochai Timmer <Yochai@Dorot.org.il> $&
    $crlf $+ $crlf Thanks to: $crlf All the people who send $crlf bug reports and suggestions. $crlf And to myndzi for the DCC fix.,124, XDCC Browser)
}
on *:dialog:XDCCb-c:menu:36: url -n $decode(aHR0cHM6Ly93d3cucGF5cGFsLmNvbS94Y2xpY2svYnVzaW5lc3M9WW9jaGFpJTQwRG9yb3Qub3JnLmlsJml0ZW1fbmFtZT1YRENDK0Jyb3dzZXIrU2NyaXB0Jm5vX3NoaXBwaW5nPTEmY249V2VsbCUyQyt3aGF0K2RvK3lvdSt0aGluayslM0YmdGF4PTAmY3VycmVuY3lfY29kZT1VU0Q=,m)

;List Control dialog

dialog XDCCb-lists {
  Title "XDCC Browser List Control"
  Size -1 -1 225 200
  Option dbu

  Tab "&Auto save", 100, -20 -14 0 0
  Tab "&View List", 200
  List 4, 7 5 218 10

  Button "OK", 1, 137 180 40 13, ok, default
  Button "Cancel", 2, 180 180 40 13, cancel
  Button "Minimizer", 3, 1 1 1 1,  hide

  ;Options 

  Button "Remove selected", 11, 138 90 80 12, Tab 100

  Text "Save every:", 15,137 50 50 8, Tab 100
  Edit "", 16,170 49 14 9, center limit 2, Tab 100
  Text "Hours", 17,187 50 80 8, Tab 100
  Check "Load lists when mIRC starts" , 18, 137 70 90 8, Tab 100

  Box "Autosave Lists:", 10, 7 22 126 173

  List 27, 10 32 120 160, size sort 

  ;View List

  Button "View List...", 21, 138 30 70 12, Tab 200
  Button "Load List", 22, 138 80 70 12, Tab 200
  Button "Remove selected", 23, 138 105 70 12, Tab 200

  Text "Date made:",41,137 50 50 8, Tab 200
  Edit "", 42,167 49 40 11, read center , Tab 200
  Text "Time made:", 43,137 65 55 8, Tab 200
  Edit "", 44,167 64 40 11, read center , Tab 200

  ;Menu

  Menu "&Help", 820
  Item "Help", 821, 820
  Item Break, 822, 820
  Item "&About...", 823, 820
  Item Break, 824, 820
  Item "&Donate",825, 820
}

on *:dialog:XDCCb-lists:init:*: {
  mdx SetMircVersion $version
  mdx MarkDialog XDCCb-lists

  mdx SetColor $dname textbg $rgb(16,252,252)

  dialogs SetControlMDX 3 positioner minbox 

  views SetControlMDX XDCCb-lists 27 TreeView autosort haslines linesatroot hasbuttons showsel infotip
  did -i XDCCb-lists 27 1 iconsize normal small
  did -i XDCCb-lists 27 1 seticon normal 22, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i XDCCb-lists 27 1 seticon normal 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i XDCCb-lists 27 1 seticon normal 1, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)

  mdx SetBorderStyle XDCCb-lists 4,202
  bars SetControlMDX $dname 4 ToolBar flat nodivider list
  did -i XDCCb-lists 4 1 bmpsize 16 16
  did -i $dname 4 1 setimage +nh icon small 20, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $dname 4 1 setimage +nh icon small 5, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  didtok -a $dname 4 59 +cgxW 85 1 Auto save;+cgW 85 2 View list

  did -a $dname 16 $readini(xdccgets.ini,ôOptionsô,Autosave-time)
  if ($readini(xdccgets.ini,ôOptionsô,Load-lists) = on) did -c $dname 18 
  XDCCb-autosave-load
}
on *:dialog:XDCCb-lists:sclick:1: {
  var %text = $did(16)
  if (!%text) || (%text !isnum) || (%text <= 0) || ((%text = $readini(xdccgets.ini,ôOptionsô,Autosave-time)) && ($timer(XDCCb-autosave))) return
  var %old-time = $calc($readini(xdccgets.ini,ôOptionsô,Autosave-time) * 3600)
  writeini -n xdccgets.ini ôOptionsô Autosave-time $did(XDCCb-lists,16)
  if ($readini(xdccgets.ini,ôOptionsô,Autosave) = on) {
    var %secs = $calc((%old-time - $timer(XDCCb-autosave).delay) + ($timer(XDCCb-autosave).delay - $timer(XDCCb-autosave).secs))
    var %time = $calc($readini(xdccgets.ini,ôOptionsô,Autosave-time) * 3600)
    if ((%secs > %time) || (!$timer(XDCCb-autosave))) .timerXDCCb-autosave -i 0 %time XDCCb-autosave
    else .timerXDCCb-autosave -i 0 $calc(%time - %secs) XDCCb-autosave
  }
}
on *:dialog:XDCCb-lists:sclick:4: {
  var %sel = $did(4).sel
  if (%sel = 2) {
    did -c XDCCb-lists 100
    did -f XDCCb-lists 27
    did -ra XDCCb-lists 10 Autosave Lists:
    did -i XDCCb-lists 27 1 seticon normal 1 22, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    did -i XDCCb-lists 27 1 seticon normal 2 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    did -i XDCCb-lists 27 1 seticon normal 3 1, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    XDCCb-autosave-load
  }
  if (%sel = 3) {
    did -c XDCCb-lists 200
    did -fr XDCCb-lists 27
    did -i XDCCb-lists 27 1 seticon normal 1 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    did -i XDCCb-lists 27 1 seticon normal 2 1, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    did -i XDCCb-lists 27 1 seticon normal 3 2, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
    did -ra XDCCb-lists 10 Preview list
  }
}
on *:dialog:XDCCb-lists:sclick:11: {
  var %loc = $did-tree(xdccb-lists,27).sel
  var %depth = $numtok(%loc,32)
  if (%depth = 1) {
    var %a = 1
    while ($ini(Xdccb-Autosave.ini,%a)) {
      var %section = $v1
      var %b = 1
      while ($ini(Xdccb-Autosave.ini,%section,%b)) {
        var %item = $v1
        var %file = $replace($readini(Xdccb-Autosave.ini,%section,%item),$mircdir,...\)
        if (%file = $did-tree(xdccb-lists,27)) {
          remini -n Xdccb-Autosave.ini %section %item
          dec %b
        }
        inc %b
      }
      if ($ini(Xdccb-Autosave.ini,%section,0) = 0) {
        remini -n Xdccb-Autosave.ini %section
        dec %a
      }
      inc %a
    }
    did -i xdccb-lists 27 1 cb root 1
    did -d xdccb-lists 27 %loc
  }
  elseif (%depth = 2) {
    var %section = $did-tree(xdccb-lists,27,$gettok(%loc,1-2,32))
    var %a = 1
    while ($ini(Xdccb-Autosave.ini,%section,%a)) {
      var %item = $v1
      var %file = $replace($readini(Xdccb-Autosave.ini,%section,%item),$mircdir,...\)
      if (%file = $did-tree(xdccb-lists,27,$gettok(%loc,1,32))) {
        remini -n Xdccb-Autosave.ini %section %item
        dec %a
      }
      inc %a
    }
    did -i xdccb-lists 27 1 cb root $did-tree(xdccb-lists,27).root
    did -d xdccb-lists 27 $gettok(%loc,2,32)
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root 1
      did -d xdccb-lists 27 $gettok(%loc,1,32)
    }
  }
  elseif (%depth = 3) {
    var %section = $did-tree(xdccb-lists,27,$gettok(%loc,1-2,32))
    var %a = 1
    while ($ini(Xdccb-Autosave.ini,%section,%a)) {
      var %item = $v1
      if (%item = $did-tree(xdccb-lists,27)) {
        remini -n Xdccb-Autosave.ini %section %item
        dec %a
      }
      inc %a
    }
    if ($ini(Xdccb-Autosave.ini,%section,0) = 0) remini -n Xdccb-Autosave.ini %section
    did -i xdccb-lists 27 1 cb root $gettok(%loc,1-2,32)
    did -d xdccb-lists 27 $gettok(%loc,3,32) 
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1-2,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root $gettok(%loc,1,32)
      did -d xdccb-lists 27 $gettok(%loc,2,32)
    }
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root 1
      remini -n Xdccb-Autosave.ini $did-tree(xdccb-lists,27,$gettok(%loc,1,32))
      did -d xdccb-lists 27 $gettok(%loc,1,32)
    }
  }
}
on *:dialog:XDCCb-lists:sclick:18: writeini -n xdccgets.ini ôOptionsô Load-lists $iif($did(18).state = 1,on,off)
on *:dialog:XDCCb-lists:sclick:21: XDCCbview-file
on *:dialog:XDCCb-lists:sclick:22: {
  if (!$isfile($did(Xdccb-lists,10))) return
  Xdccb-loadlist $did(Xdccb-lists,10)
}
on *:dialog:XDCCb-lists:sclick:23: {
  var %loc = $did-tree(xdccb-lists,27).sel
  var %depth = $numtok(%loc,32)
  var %file = $did(Xdccb-lists,10)
  var %section = $+(xdccb-,$did-tree(xdccb-lists,27,$gettok(%loc,1,32)))
  if (!$isfile(%file)) return
  if (%depth = 2) {
    var %chan = $did-tree(xdccb-lists,27,$gettok(%loc,1-2,32))
    var %a = 2
    did -i xdccb-lists 27 1 cb root $did-tree(xdccb-lists,27).root
    did -d xdccb-lists 27 $gettok(%loc,2,32)
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root 1
      did -d xdccb-lists 27 $gettok(%loc,1,32)
    }
    while ($did-tree(xdccb-lists,27,%loc %a)) {
      var %nick = $replace($v1,[,$chr(250),],$chr(251))
      while ($readiniwm(%file,%section,$+(%nick,ÿ*),1).sec) {
        dll $+(",$scriptdir\WhileFix.dll") WhileFix 
        remini -n %file %section $v1
      }
      inc %a
    }
  }
  elseif (%depth = 3) {
    var %nick = $replace($did-tree(xdccb-lists,27),[,$chr(250),],$chr(251))
    did -i xdccb-lists 27 1 cb root $gettok(%loc,1-2,32)
    did -d xdccb-lists 27 $gettok(%loc,3,32) 
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1-2,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root $gettok(%loc,1,32)
      did -d xdccb-lists 27 $gettok(%loc,2,32)
    }
    if ($did-tree(xdccb-lists,27,$gettok(%loc,1,32)).lines < 1) {
      did -i xdccb-lists 27 1 cb root 1
      remini -n %file $did-tree(xdccb-lists,27,$gettok(%loc,1,32))
      did -d xdccb-lists 27 $gettok(%loc,1,32)
    }
    while ($readiniwm(%file,%section,$+(%nick,ÿ*),1).sec) {
      dll $+(",$scriptdir\WhileFix.dll") WhileFix 
      remini -n %file %section $v1
    }
  }
  if ($ini(%file,%section,0) = 0) || (%depth = 1) {
    remini -n %file %section
    if  ($lines(%file) = 0) {
      .remove %file
      did -ra XDCCb-lists 10 Preview list
    }
    if (%depth = 1) {
      did -i xdccb-lists 27 1 cb root 1
      did -d xdccb-lists 27 %loc
    }
  }
}

on *:dialog:XDCCb-lists:menu:821: run $+(",$scriptdirXDCC Browser.doc")
on *:dialog:XDCCb-lists:menu:823: {
  return $input(XDCC Browser v3.41 for mIRC 6.16 $crlf $+ by Yochai Timmer <Yochai@Dorot.org.il> $&
    $crlf $+ $crlf Thanks to: $crlf All the people who send $crlf bug reports and suggestions. $crlf And to myndzi for the DCC fix.,124, XDCC Browser)
}
on *:dialog:XDCCb-lists:menu:825: url -n $decode(aHR0cHM6Ly93d3cucGF5cGFsLmNvbS94Y2xpY2svYnVzaW5lc3M9WW9jaGFpJTQwRG9yb3Qub3JnLmlsJml0ZW1fbmFtZT1YRENDK0Jyb3dzZXIrU2NyaXB0Jm5vX3NoaXBwaW5nPTEmY249V2VsbCUyQyt3aGF0K2RvK3lvdSt0aGluayslM0YmdGF4PTAmY3VycmVuY3lfY29kZT1VU0Q=,m)

;File Server Browser Dialog

dialog Xdccb-Fserv {
  Title "XDCC Browser - File Server (XDCC Browser v3.41)"
  Size -1 -1 380 200
  Option dbu

  Button "OK", 1, 285 180 42 13, ok, default
  Button "Cancel", 2, 330 180 43 13, cancel
  Button "Minimizer", 3, 1 1 1 1,  hide

  Box "Directory", 35, 7 22 146 173, Tab 100

  List 27, 10 32 140 160, size sort , Tab 100
  List 28, 157 25 209 140, size extsel , Tab 100
  Text "[*.*]",29,7 13 300 9

  Menu "&Help", 820
  Item "Help", 11, 820
  Item Break, 15, 820
  Item "&About...", 12, 820
  Item Break, 14, 820
  Item "&Donate",13, 820

}
on *:dialog:Xdccb-Fserv*:init:*: {
  mdx SetMircVersion $version
  mdx MarkDialog $dname

  mdx SetColor $dname textbg $rgb(16,252,252)

  dialogs SetControlMDX 3 positioner minbox 

  views SetControlMDX $dname 27 TreeView autosort haslines linesatroot hasbuttons showsel infotip

  views SetControlMDX $dname 28 ListView report showsel infotip
  did -i $dname 28 1 headerdims 240:1 70:2 100:3
  did -i $dname 28 1 headertext Filename $chr(9) Size $chr(9) File Type

  Xdccb-FservSeticon $dname 28
  Xdccb-FservSeticon2 $dname 27
}
on *:dialog:Xdccb-Fserv*:close:*: {
  if ($hget(Xdccb-FileIcons)) .hfree Xdccb-FileIcons
  close -c $gettok($dname,2,61)
}
on *:dialog:Xdccb-Fserv*:menu:11: run $+(",$scriptdirXDCC Browser.doc")
on *:dialog:Xdccb-Fserv*:menu:12: {
  return $input(XDCC Browser v3.41 for mIRC 6.16 $crlf $+ by Yochai Timmer <Yochai@Dorot.org.il> $&
    $crlf $+ $crlf Thanks to: $crlf All the people who send $crlf bug reports and suggestions. $crlf And to myndzi for the DCC fix.,124, XDCC Browser)
}
on *:dialog:Xdccb-Fserv*:menu:13: url -n $decode(aHR0cHM6Ly93d3cucGF5cGFsLmNvbS94Y2xpY2svYnVzaW5lc3M9WW9jaGFpJTQwRG9yb3Qub3JnLmlsJml0ZW1fbmFtZT1YRENDK0Jyb3dzZXIrU2NyaXB0Jm5vX3NoaXBwaW5nPTEmY249V2VsbCUyQyt3aGF0K2RvK3lvdSt0aGluayslM0YmdGF4PTAmY3VycmVuY3lfY29kZT1VU0Q=,m)
on *:dialog:Xdccb-Fserv*:sclick:28: {
  tokenize 32 $did($dname,28,1)
  if ($1-2 == headerclick headerEvent) {
    var %window = $+(@Xdccb-fserv-,$dname)
    if (!$window(%window)) window -hn %window
    filter -criwt $+(2-,$did($dname,28).lines) $3 9 $dname 28 %window *
    if ($3 = 1) filter -aco %window $dname 28 Xdccb-filter-Fserv
    elseif ($3 = 2) filter -aco %window $dname 28 Xdccb-filter-FservSize
    elseif ($3 = 3) filter -co %window $dname 28 *
    close -@ %window
  }
}
on *:dialog:Xdccb-Fserv*:dclick:28: {
  var %nick = $+(=,$gettok($dname,2,61))
  msg %nick Get $replace($did-list(1,$did($dname,28).seltext),$chr(160),$chr(32))
  var %nick = $remove(%nick,=)
  var %pack
  var %a = 1
  while ($hget(%a)) {
    var %if = $v1
    if (Xdccb- isin %if) {
      var %pack = $hget(%if,$+(%nick,$chr(255),$hget(%if,$+(%nick,$chr(255),Fserv-use))))
      if (%pack) break
    }
    inc %a
  }
  var %network = $gettok(%if,2-,45)
  if (%pack) {
    Saveinfo %nick %Pack %network
    var %scid = $XDCCb-network(%network)
    if ($ini(xdccgets.ini,DCCÿAllow,$gettok(%network,1,46))) && ($ini(xdccgets.ini,DCCÿAllow,$gettok(%network,1,46)) != 0) scid -t1 %scid /.DCCALLOW $+(+,%user)
    if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust $+(%user,!*@*)
  }
}
on *:dialog:Xdccb-Fserv*:sclick:27: {
  var %loc = $did-tree($dname,27).sel
  var %nick = $+(=,$gettok($dname,2,61))
  var %dir = $right($left($did($dname,29),-4),-1)
  var %len-loc = $numtok(%loc,32)
  var %len-dir = $numtok(%dir,92)
  var %cds = 0
  var %pos = $calc(%len-dir - %cds)
  var %a = 1
  while ($gettok(%dir,%a,92) = $replace($did-tree($dname,27,$gettok(%loc,$+(1-,$calc(%a +1)),32)),$chr(160),$chr(32))) {
    if (!$v2) break
    inc %cds
    inc %a
  }
  var %a = %len-dir
  while (%a != %cds) {
    msg %nick cd.. 
    dec %a
  }
  var %a = $calc(%cds +2)
  while (%a <= %len-loc) {
    msg %nick cd $replace($did-tree($dname,27,$gettok(%loc,$+(1-,%a),32)),$chr(160),$chr(32))
    inc %a
  }
  unset $+(%,=$nick,Start)
  did -r $dname 28
  msg %nick dir
  dialog -t $dname $+($gettok($dname,2,61),'s) File Server (XDCC Browser v3.41) ...
}

;Dialog Processbar

dialog Xdccb-Processbar {
  title "Processing packet list"
  size -1 -1 150 20
  option dbu
  text "Text Label", 1, 9 5 132 10
  button "No close", 2, -1 -1 0 0
  button "Ok", 3, -1 -1 0 0, ok
}
on *:dialog:Xdccb-Processbar*:init:*:{
  mdx SetMircVersion  $version
  mdx MarkDialog $dname
  mdx SetDialog Processbar style title
  ctl_gen SetControlMDX 1 ProgressBar 
  dialogs SetControlMDX 2 Positioner noclose
}

;Popups

menu nicklist,query {
  XDCC &Browser
  .&Browser: { 
    if (!$dialog(XDCCb)) XDCCb 
    else {
      did -a xdccb 3 Show
      dialog -v xdccb
    }
  }
  .&Corrupt files finder: { 
    if (!$dialog(XDCCb-c)) dialog -m XDCCb-c XDCCb-c
    else dialog -v XDCCb-c
  }
  .&List control {
    dialog -m XDCCb-lists XDCCb-lists
  }
  .-
  .&Send XDCC List: {
    var %ontop
    if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
      dialog -n xdccb
      var %ontop = yeap
    }
    var %file = $sfile($+(",$scriptdir*.xcb"),Choose a list to send:,Send)
    if (%file) .dcc send $1 %file
    if (%ontop) dialog -o xdccb
  }
  .&Request XDCC List: {
    var %a = 1
    while ($eval($+($,%a),2)) {
      .timer 1 %a $readini(xdccgets.ini,ôOptionsô,Request) $v1 XDCC list
      inc %a
    }
  }
  . $iif($gettok($hmatch($+(XDCCb-,$gettok($network,1,46)),$+($1,$chr(255),*),1),1,255) = $1,&Show Packs ) : {
    XDCCb
    XDCCb27
    did -c XDCCb 27 $didwm(XDCCb,27,$1)
    XDCCb28
    filter -criw $+(2-,$did(xdccb,28).lines) xdccb 28 @tmpXdccb28 *
    filter -cot 1 9 @tmpxdccb28 xdccb 28 * 
  }
  . $iif($gettok($hmatch($+(XDCCb-,$gettok($network,1,46)),$+($1,$chr(255),*),1),1,255) = $1,&Remove from Queue ) : {
    var %scid = $gettok($Xdccb-getscid,1,32)
    scid -t1 %scid $readini(xdccgets.ini,ôOptionsô,Request) $1 XDCC remove
    if ($ini(xdccgets.ini,DCCÿAllow,$gettok($network,1,46))) && ($ini(xdccgets.ini,DCCÿAllow,$gettok($network,1,46)) != 0) .DCCALLOW $+(-,$1)
    if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust -r $+($1,!*@*)
  }
  .- 
  .Request Pack number..: {
    var %nick = $replace($1,[,$chr(255),],$chr(251))
    var %Pack = $remove($?="What number Pack do you want to request ????",$chr(35))
    if ($chr(45) isin %pack) {
      var %low = $gettok(%pack,1,45)
      var %high = $gettok(%pack,2,45)
      if ((%low isnum) && (%high isnum)) && (%low < %high) {
        var %desc = $?="What description do you want to give the Pack ?"
        while (%low <= %high) {
          if (%desc) var %desc2 = $+(%low,$chr(46) %desc)
          else var %desc2 = Requesting Pack no. %low
          saveinfo $1 %desc2 $chr(9) %low $chr(9) n/a $network
          if ($readini(xdccgets.ini,%nick,Get) >= $readiniwm(xdccgets.ini,%nick,pack*,0)) $+(.TimerXDCCB-,$1) 1 2 XDCCb-request-Pack $1 $+($chr(35),%low) $cid $network %desc2 $chr(9) %low $chr(9) n/a
          inc %low
        }
      }
      return
    }
    elseif (%Pack isnum) && (%Pack < 999) {
      var %desc = $?="What description do you want to give the Pack ?"
      if (%desc) var %desc = $+(%Pack,$chr(46) %desc)
      else var %desc = Requesting Pack no. %Pack
      saveinfo $1 %desc $chr(9) %pack $chr(9) n/a $network
      if ($readini(xdccgets.ini,%nick,Get) >= $readiniwm(xdccgets.ini,%nick,pack*,0)) $+(.TimerXDCCB-,$1) 1 2 XDCCb-request-Pack $1 $+($chr(35),%Pack) $cid $network %desc $chr(9) %pack $chr(9) n/a
    }
    else return $input(Invalid Pack number !,124, XDCC Browser) 
  }
  .-
  . $iif($gettok($hmatch($+(XDCCb-,$gettok($network,1,46)),$+($1,$chr(255),*),1),1,255) = $1,&Get Pack.... ) 
  .. $Submenu($Nicklist-Packs($1)) 
}
menu channel,status,menubar {
  XDCC &Browser
  .&Browser: { 
    if (!$dialog(XDCCb)) XDCCb 
    else {
      did -a xdccb 3 Show
      dialog -v xdccb
    }
  }
  .&Corrupt files finder: { 
    if (!$dialog(XDCCb-c)) dialog -m XDCCb-c XDCCb-c
    else dialog -v XDCCb-c
  }
  .&List control {
    dialog -m XDCCb-lists XDCCb-lists
  }
  .-
  .Search for XDCC
  ..IRCSpy.com: {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n www.ircspy.com/search.asp?searchtype=XDCC&searchtext= $+ %search $+ &sortby=Network
  }
  ..isoHunt: {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n http://isohunt.com/files.php?ihq= $+ %search $+ &ext=&op=and
  }
  ..Packetnews.com: {
    var %search = $?="What are you searching for ??" 
    if (%search) url -n www.Packetnews.com/search.php?kw= $+ %search $+ &net=all&submit32=Go&t=xdcc
  }
  ..MyDownloader: {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n http://www.mydownloader.com//default.asp?searchstring= $+ %search
  }
  ..XDCCsearch: {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n www.xdccsearch.com/html/search.php?string= $+ %search $+ &submit=go&item=Pack_Name
  }
  ..-
  ..Search all {
    var %search = $?="What are you searching for ??" 
    url www.Packetnews.com/search.php?kw= $+ %search $+ &net=all&submit32=Go&t=xdcc
    var %search =  $replace(%search,$chr(32),$chr(43))
    .timer 1 2 url -n www.ircspy.com/search.asp?searchtype=XDCC&searchtext= $+ %search $+ &sortby=Network
    .timer 1 2 url -n http://isohunt.com/files.php?ihq= $+ %search $+ &ext=&op=and
    .timer 1 2 url -n http://www.mydownloader.com//default.asp?searchstring= $+ %search
    .timer 1 2 url -n www.xdccsearch.com/html/search.php?string= $+ %search $+ &submit=go&item=Pack_Name
  }
  .Search for channel
  ..Netsplit {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n irc.netsplit.de/channels/?query= $+ %search $+ &op23=modload&name3=mdSearch&file3=index&submit4=Go
  }
  ..Search IRC {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n http://searchirc.com/search.php?I= $+ %search $+ &Submit=Go
  }
  ..XGoogle {
    var %search = $replace( $?="What are you searching for ??" ,$chr(32),$chr(43))
    if (%search) url -n http://www.xgoogle.org/search.php?q= $+ %search $+ &op2=modload&name2=mdSearch&file=index&submit2=Go
  }
  .-
  . $iif($chan,Request list from all bots) : XDCC-RequestList $chan
  . $iif($timerwm(xdcc-list*),Stop bots list request): .timerxdcc-list* off
}

;Aliases 

Alias -l mdx { dll $+(",$scriptdir\mdx.dll,") $1- }
Alias -l ctl_gen { mdx $1- > $scriptdir\ctl_gen.mdx }
Alias -l dialogs { mdx $1- > $scriptdir\dialog.mdx }
Alias -l bars { mdx $1- > $scriptdir\bars.mdx }
Alias -l views { mdx $1- > $scriptdir\views.mdx }
Alias -l Mpopup { dll $+(",$scriptdir\MPopup.dll,") $1- }

Alias -l addPacket {
  if ($3 = $null) return
  var %server = $2
  var %chan = $3
  var %port = $4
  var %Pack = $5-
  var %network = $gettok($network,1,46)
  var %hash = $+(XDCCb-,%network)
  var %reason
  if (FTP Site: = $5) hadd -m %hash $+($1,$chr(255),FTP) $5-
  elseif (File Server !isin $6) {
    var %p-num = $remove($gettok($1-,2,9),$chr(32))
    if (!%p-num) return
    var %nick = $replace($1,[,$chr(255),],$chr(251))
    if ($ini(xdccgets.ini,%nick)) && ($readini(xdccgets.ini,%nick,network) = %network) {
      var %a = 1   
      while ($readiniwm(xdccgets.ini,%nick,Pack*,%a).sec) {
        var %pack2 = $remove($gettok($readini(xdccgets.ini,%nick,$v1),1,9),$chr(32))
        var %section = $gettok($v1,2,107)
        var %section2 = $remove($gettok(%pack,2,9),$Chr(32)))
        if ((%pack2 = $remove($gettok(%pack,1,9),$chr(32))) && (%section != %section2)) $& 
          || (($+(*,RequestingPackno.,*) iswm %pack2) && (%section = %section2)) {
          var %Date = $readini(xdccgets.ini,%nick,$+(Date,%section))
          var %Time = $readini(xdccgets.ini,%nick,$+(Time,%section))
          var %line = $readiniwm(xdccgets.ini,%nick,Pack*,%a).line
          write $+(-l,%line) xdccgets.ini $+(Pack,%section2,=,%Pack)
          write $+(-l,$calc(%line + 1)) xdccgets.ini $+(Date,%section2,=,%Date)
          write $+(-l,$calc(%line + 2)) xdccgets.ini $+(Time,%section2,=,%Time)
          if ($dialog(xdccb)) {
            var %b = 2
            while ($did(xdccb,308,%b)) {
              var %v1 = $v1
              if ($did-list(6,%v1) = $1) && ($did-list(2,%v1) = %section) {
                did -o xdccb 308 %b $gettok(%pack,1-3,9) $chr(9) $did-list(4-,%v1)
                if (s isin $gettok(%v1,2,32)) did -c xdccb 308 %b
              }
              inc %b
            }
          }
        }
        inc %a
      }
    }
    var %table = $+($1,$chr(255),%p-num)
    var %temp = $hget(%hash,%table)
    if ($gettok(%temp,1-3,9) = $gettok(%Pack,1-3,9)) {
      if ($gettok(%temp,4,9) != $gettok(%Pack,4,9)) var %reason = gets
      else return
    } 
    if (%p-num = 1) && ( $hget(%hash) ) {
      var %a = 1
      while ($hget(%hash,$+($1,$chr(255),%a))) {
        hdel -w %hash $+($1,$chr(255),%a,*)
        inc %a
      }
    }
    if ( $hget(%hash) ) {
      hdel -m %hash %table
      hadd -m %hash %table %Pack
    }
    else hadd -m %hash %table %Pack
  }
  else {
    var %p-num = $5
    var %pack = $+($6,:) $7- $chr(9) %p-num
    if ($hget(%hash,$+($1,$chr(255),$+(File Server,%p-num))) = %pack) return
    if (%p-num = 1) && ( $hget(%hash) ) hdel -w %hash $+($1,$chr(255),File Server*)
    hadd -m %hash $+($1,$chr(255),$+(File Server,%p-num)) %pack
  }
  hadd %hash $+($1,$chr(255),Server) %server
  hadd %hash $+($1,$chr(255),Chan) %chan
  hadd %hash $+($1,$chr(255),Port) %port
  if ((File Server isin $6) && ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),2,32) = 0)) || ((FTP Site: = $5) && ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),3,32) = 0)) return
  elseif ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),1,32) = 0) return
  if ($dialog(XDCCb)) {
    var %root = $Find-branch(xdccb,27,%network)
    var %new
    if (!%root) {
      did -a xdccb 27 +eb 1 1 %network $chr(9) Click on the network for a list of channels.
      var %root = $Find-branch(xdccb,27,%network)
    }
    var %chan-num = $Find-branch(xdccb,27,%chan,%root)
    if (!%chan-num) {
      did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
      var %chan-num = $Find-branch(xdccb,27,%chan,%root)
    }
    did -i xdccb 27 1 cb root %root %chan-num
    if (!$Find-branch(xdccb,27,$1,%root %chan-num) ) { 
      var %new = True
      did -a xdccb 27 +b 3 3 $1 $chr(9) Click on the nick for a list of packs.
    }
    did -i xdccb 27 1 cb root %root
    if ($did-tree(xdccb,27) = $1) {
      var %num = $remove(%p-num,$chr(35))
      if (%num = 1) && ( $+(*,$replace(%Pack,$chr(32),$chr(42)),*) !iswm $did(xdccb,28,$didwm(xdccb,28,$+(*,$chr(9),+*0?0?0? %p-num $chr(9),*),1))) did -r xdccb 28
      if ( $didwm(xdccb,28,$+(*,$chr(9),+*0?0?0? %p-num $chr(9),*),1) > 0) did -o xdccb 28 $v1 %Pack
      else {
        if (File Server isin %pack) did -a xdccb 28 %pack $chr(4) $hget($+(XDCCb-,%network),$+($1,$chr(255),File ServT)))
        else did -a xdccb 28 %Pack $chr(9) $iif($hget($+(XDCCb-,%network),$+($1,$chr(255),Queue)),$v1,n/a) $chr(9) $iif($hget($+(XDCCb-,%network),$+($1,$chr(255),MaxCps)),$v1,n/a) $chr(4) Double click on a pack to request it.
      }
    }
    if (%new) did -ra XDCCb 42 $calc($did(xdccb,42) + 1)
    if (!%reason) did -ra XDCCb 44 $calc($did(xdccb,44) + 1)
  }
}
Alias -l did-tree {
  var %dialog = $1
  var %id = $2
  if (!$dialog(%dialog)) return
  if ($3) {
    var %Loc = $3- 
    if ($prop = lines) {
      did -i %dialog %id 1 cb root %loc
      return $calc($did(%dialog,%id,0).lines -1)
    }
    if ($numtok(%Loc,32) = 1) did -i %dialog %id 1 cb root
    else { did -i %dialog %id 1 cb root $gettok(%loc,1- $+ $calc($numtok(%loc,32) -1),32) }
    var %line = $gettok($did(%dialog,%id,$gettok(%Loc,-1,32)),7-,32)
    if ($prop = tooltip) return $gettok(%line,2-,9)
    return $gettok(%line,1,9)
  }
  var %entry = $did(%dialog,%id,1)
  if ($gettok(%entry,1,32) = slclick) var %loc = $gettok(%entry,4-,32)
  else var %loc = $gettok(%entry,3-,32)
  var %depth = $calc($numtok(%loc,32) -1)
  var %branch = $gettok(%loc,-1,32)
  if (%depth = 0) did -i %dialog %id 1 cb root 
  else did -i %dialog %id 1 cb root $gettok(%loc,1- $+ %depth,32) 
  var %line = $gettok($did(%dialog,%id,%branch),7-,32)
  if (!$prop) return $gettok(%line,1,9)
  if ($prop = root) return $gettok(%loc,1,32)
  if ($prop = sel) return %loc
  if ($prop = lines) return $calc($did(%dialog,%id,0).lines -1)
  if ($prop = len) return $len(%line)
  if ($prop = tooltip) return $gettok(%line,2-,9)
  if ($prop = event) return $gettok(%entry,1,32)
}
Alias -l did-list {
  if (- !isin $1) return $gettok($gettok($2-,$1,9),$iif($1 = 1,6-,5-),32)
  if ($gettok($1,1,45) = 1) return $gettok($remove($gettok($2-,$1,9),+fs 0 0 0,+s 0 0 0,+ 0 0 0),2-,32)
  return $remove($gettok($2-,$1,9),+fs 0 0 0,+s 0 0 0,+ 0 0 0)
}
Alias -l Find-branch {
  if (!$dialog($1)) return
  if (!$4) var %loc = 1
  else %loc = $4
  var %num = 0
  var %a = 2
  did -i $1 $2 1 cb root %loc
  while ($gettok($did($1,$2,%a),7-,32)) {
    var %line = $gettok($v1,1,9)
    if ($3 iswm %line) {
      if ($4 != 0) return %a
      inc %num
    }
    inc %a

  }
  if ($4 != 0) return
  return %num
}
Alias -l fixdcc {
  Echo -ts Fixing DCC: $+(,$iif($color(highlight) < 10,$+(0,$v1),$v1),$1) $+(,$iif($color(info) < 10,$+(0,$v1),$v1),$Longip($2))  $5-
  linesep 
  hadd -m Xdcc-dcc-fix $1 $5-
  var %send = $+(",$5-,") $2 $3 $4
  .raw PRIVMSG $me : $+ $chr(1) $+ DCC SEND %send $+ $chr(1)
}
Alias -l Nicklist-Packs {
  if ($1 = begin) return -
  if ($1 = end) return
  var %nick = $snick($active)
  var %item = $hfind($+(XDCCb-,$gettok($network,1,46)),$+(%nick,*),$1,w).item
  var %Pack = $hget($+(XDCCb-,$gettok($network,1,46)),%item)
  if (%Pack) {
    var %num = $gettok(%item,2,255)
    var %sec = $gettok(%item,2,255)
    if (%sec != Usage) && (%sec != server) && (%sec != chan) && (%sec != port) {
      return %Pack : XDCCb-request-Pack %nick $+($chr(35),%num) $cid $network %Pack 
      Saveinfo %nick $+($iif(%num < 10,$+(0,%num),%num),.) %Pack $network
    }
  }
  return  :
}
Alias -l readiniwm {
  var %section = $+([,$2,])
  var %low = $read($1,w,%section,1)
  var %low = $readn
  if ($prop = line) && ($3 = $null) return %low
  if ($4 = $null) || ($4 < 0) return
  var %high = $read($1,w,[*],$calc(%low +1))
  var %high = $readn
  var %a = $4
  var %lines = 0
  if ($4 = 0) {
    while ($read($1,w,$+($3,=*),$calc(%low + 1))) {
      var %low = $readn
      if (%high != 0) && (%low >= %high) return %lines
      inc %lines
      inc %a
    }
    return %lines
  }  
  while (%a != 0 ) {
    var %line = $read($1,w,$+($3,=*),$calc(%low + 1))
    var %low = $readn
    if (%high != 0) && (%low >= %high) return
    dec %a
  }
  if ($prop = line) return %low
  if ($prop = sec) return $gettok(%line,1,61)
  else return $gettok(%line,2-,61)
}
alias -l GetEnvStr {
  .comopen env WScript.Shell
  var %r = $com(env,ExpandEnvironmentStrings,3,bstr,$+(%,$1,%))
  if (%r) %r = $com(env).result
  .comclose env
  return $iif(%r == $+(%,$1,%),$null,%r)
}
Alias -l regread {
  var %a = regread
  .comopen regread WScript.Shell
  if (!$comerr) {
    var %a = $com(regread,RegRead,3,bstr,$1-)
    var %a = $com(regread).result
    .comclose regread
    return %a
  }
  .comclose regread
}
Alias -l Saveinfo {
  var %match,%pack
  var %network = [ [ $+($,$0) ] ]
  var %nick = $replace($1,[,$chr(255),],$chr(251))
  if ($hget($+(xdccb-,%network),$+($1,$chr(255),server))) {
    var %Server = $hget($+(xdccb-,%network),$+($1,$chr(255),server))
    var %port = $hget($+(xdccb-,%network),$+($1,$chr(255),port))
    var %chan = $hget($+(xdccb-,%network),$+($1,$chr(255),chan))
  }
  else {
    var %Server = $Serverip
    var %port = $port
    var %chan = $chan
    if (!%chan) {
      var %scid = $XDCCb-network(%network)
      var %chan = $xdccb-changet(%scid,$1)
    }
  }
  if (!%chan) || (!%Server) || (!%nick) || (!%network) halt
  var %network = $gettok(%network,1,46)
  var %pack =  [ [ $+($,2-,$calc($0 -1)) ] ] 
  if (0 +*0 0 0* iswm %pack) var %Pack = $did-list(1-,$gettok($replace(%pack,$chr(61),$chr(45)),1,4))
  var %pack = $gettok(%pack,1-3,9)
  while ($gettok(%pack,1,32) = 0) { var %pack = $gettok(%pack,2-,32) }
  var %a = 1
  while ($readiniwm(xdccgets.ini,%nick,Pack*,%a)) {
    var %temp-Pack = $v1 
    if (%temp-Pack = %Pack) var %match = %Pack
    inc %a
  }
  if (!%match) {
    var %Pack-num = $remove($gettok(%Pack,2,9),$chr(32))
    if (File server isin %pack) {
      writeini -n xdccgets.ini %nick $+(File server,%Pack-num) %pack
    }
    else writeini -n xdccgets.ini %nick $+(Pack,%Pack-num) %Pack
    writeini -n xdccgets.ini %nick $+(Date,%Pack-num) $Date
    writeini -n xdccgets.ini %nick $+(Time,%Pack-num) $Time
    writeini -n xdccgets.ini %nick Chan %chan
    if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) writeini -n xdccgets.ini %nick Server $gettok($v1,3,58)
    elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %Network *serverSERVER:*)) writeini -n xdccgets.ini %nick Server $gettok($v1,2,58)
    elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) writeini -n xdccgets.ini %nick Server $gettok($v1,2,58)
    else {
      writeini -n xdccgets.ini %nick Server %server
      .server -a %server -p %port -g %network
    }
    writeini -n xdccgets.ini %nick Network %network
    writeini -n xdccgets.ini %nick Port %port
    if ( $hget($+(XDCCb-,%network),$+($1,$chr(255),Usage)) ) {
      var %usage = $v1
      if (msg !isin $gettok(%usage,1,32)) && (ctcp !isin $gettok(%usage,1,32)) return
      writeini -n xdccgets.ini %nick Usage %usage
    }
    if (!$readini(xdccgets.ini,%nick,get)) writeini -n xdccgets.ini %nick Get 1
  }
  if ($dialog(XDCCb)) {
    if ( $didwm(xdccb,308,$+(*,$replace(%pack,$chr(9),$+(*,$chr(9),*)),*,$1,*),1) = 0 ) {
      if (File server isin %pack) {
        did -a XDCCb 308 %pack $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) $1 $chr(9) %chan $chr(9) %network $chr(9) %server
        return
      }
      var %get = $readini(xdccgets.ini,%nick,get)
      var %a = $readiniwm(xdccgets.ini,%nick,Pack*,0)
      var %order = $iif($calc(%a - %get +1) > 0,$v1,Finished)
      var %stat = $Xdccb-stats($1,%network,%chan,%order)
      var %command = did -a XDCCb 308
      if ($didwm(xdccb,308,$+(*,$chr(9),*,%Pack-num,$str($+(*,$chr(9)),4),*,$1,*),1) != 0) var %command = did -o XDCCb 308 $v1 
      %command %pack $chr(9) %stat $chr(9) $ord(%order) $chr(9) $1 $chr(9) %chan $chr(9) %network $chr(9) %server
    } 
  }
}
Alias -l Timerwm {
  if (!$isid) return
  var %a = 1
  while ($timer(%a)) {
    if ($1- iswm $timer(%a)) return %a
    inc %a
  } 
}
Alias -l uPackno {
  var %Packs = 0
  var %nicks = 0
  var %a = 1
  while ($hget(%a)) {
    var %get = $v1
    if ($+(XDCCb-,*) iswm %get) {
      inc %Packs $hget(%get,0).item
      dec %Packs $calc($hfind(%get,$+(*,$chr(255),Usage),0,w) + $hfind(%get,$+(*,$chr(255),list*),0,w) + $hfind(%get,$+(*,$chr(255),Chan),0,w) + $hfind(%get,$+(*,$chr(255),Server),0,w) + $hfind(%get,$+(*,$chr(255),port),0,w) + $hfind(%get,$+(*,$chr(255),File ServT),0,w) $&
        + $hfind(%get,$+(*,$chr(255),ftp*),0,w) + $hfind(%get,$+(*,$chr(255),Queue),0,w) + $hfind(%get,$+(*,$chr(255),Maxcps),0,w) )) 
      inc %nicks $hfind(%get,$+(*,$chr(255),server),0,w)
    }
    inc %a
  }
  did -ra XDCCb 42 %nicks
  did -ra XDCCb 44 %Packs
  var %num = $calc($did(xdccb,28).lines -1)
  did -i XDCCb 28 1 headertext $iif(%num = 1,$+(%num,$chr(160),Pack),$iif(%num = 0,Packs,$+(%num,$chr(160),Packs))) $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS $chr(9) Nick
}
Alias -l XDCCb-autosave {
  var %time = $calc($readini(xdccgets.ini,ôOptionsô,Autosave-time) * 3600)
  .timerXDCCb-autosave -i 0 %time XDCCb-autosave  
  var %a = 1
  var %num = 0
  while ($ini(Xdccb-Autosave.ini,%a)) {
    var %section = $v1
    var %b = 1
    while ($ini(Xdccb-Autosave.ini,%section,%b)) {
      var %item = $v1
      var %file = $readini(Xdccb-Autosave.ini,%section,%item)
      var %hash = $+(xdccb-,%section)
      inc %num
      $+(.timerXdccbSave,%num) -i 1 $calc(%num * 60) Xdccb-autosave-save $iif(%item = File,1,2) %hash %item %file
      inc %b
    }
    inc %a
  }
}
Alias -l XDCCb-autosave-load {
  did -r xdccb-lists 27
  if (!$isfile(Xdccb-Autosave.ini)) return
  var %a = 1
  while ($ini(Xdccb-Autosave.ini,%a)) {
    var %section = $v1
    var %b = 1
    while ($ini(Xdccb-Autosave.ini,%section,%b)) {
      var %item = $v1
      var %file = $replace($readini(Xdccb-Autosave.ini,%section,%item),$mircdir,...\)
      var %root = $Find-branch(XDCCb-lists,27,%file)
      if (!%root) { 
        did -a XDCCb-lists 27 +eb 1 1 %file $chr(9) %file
        var %root = $Find-branch(XDCCb-lists,27,%file)
      }
      did -i XDCCb-lists 27 1 cb %root
      var %sec-num = $Find-branch(xdccb-lists,27,%section,%root)
      if (!%sec-num) {
        if (%item = File) did -a XDCCb-lists 27 + 2 2 %section $chr(9) Saving $+(%section,'s) Network list
        else did -a XDCCb-lists 27 +d 2 2 %section $chr(9) Saving channel lists on %section
        var %sec-num = $Find-branch(xdccb-lists,27,%section,%root)
      }
      if (%item != File) && (!$Find-branch(xdccb-lists,27,%item,%root %sec-num)) {
        did -i XDCCb-lists 27 1 cb root %root %sec-num
        did -a XDCCb-lists 27 +d 3 3 %item
        did -i XDCCb-lists 27 1 cb root %root
      }
      inc %b
    }
    did -i XDCCb-lists 27 1 cb root 1
    inc %a
  }
}
Alias -l Xdccb-autosave-save {
  var %depth = $1
  var %hash = $2
  var %item = $3
  var %file = $4-
  if ($hget(%hash)) {
    window -h @Xdccb-save
    if (!$dialog(Xdccb-Processbarsave)) dialog -mo Xdccb-ProcessbarSave Xdccb-Processbar
    dialog -t Xdccb-ProcessbarSave Loading Browser Data ...
    did -a Xdccb-ProcessbarSave 1 0 0 $hget(%hash,0).item
    var %a = 1
    aline @Xdccb-save $+([,%hash,])
    if (%depth = 1) && ($hget(%hash)) {
      if ($isfile(%file)) .remove $+(",%file,")
      while ($Hget(%hash,%a).item) {
        var %ifmatch = $v1
        aline @Xdccb-save $+($replace(%ifmatch,[,$chr(250),],$chr(251)),=,$hget(%hash,%ifmatch))
        inc %a 
        did -a Xdccb-ProcessbarSave 1 %a
      }
      savebuf @Xdccb-save $+(",%file,")
    }
    elseif (%depth = 2) && ($hfind(%hash,%item,0).data != 0) {
      var %packs = 0
      if ($isfile(%file)) .remove $+(",%file,")
      while ($hfind(%hash,%item,%a).data) {
        var %ifmatch = $v1
        var %b = 1
        while ($hfind(%hash,$+($gettok(%ifmatch,1,255),$chr(255),*),%b,w)) {
          aline @Xdccb-save $+($replace($v1,[,$chr(250),],$chr(251)),=,$hget(%hash,$v1))
          inc %b
          inc %packs
          did -a Xdccb-ProcessbarSave 1 %packs
        }
        inc %a
      }
      savebuf @Xdccb-save $+(",%file,")
    }
    if ($dialog(Xdccb-ProcessbarSave)) dialog -k Xdccb-ProcessbarSave
    window -c @Xdccb-save
  }
}
Alias -l Xdccb-Calcsize return $calc($replace($remove($1,$chr(32),b,$chr(160),/,s,\),k,* 1024,m,* 1048576,g,* 1073741824,$chr(44),$chr(46))) 
Alias -l Xdccb-Check {
  var %a = $gettok($dll($+(",$scriptdirMPopup.dll,"),MPCreateMenu,Check),2,32)
  MPopup MPAddIcon Check > $shortfn($scriptdir\Xdccb-Icons.icl) > 9
  MPopup MPAddIcon Check > $shortfn($scriptdir\Xdccb-Icons.icl) > 10
  MPopup MPAddIcon Check > $shortfn($scriptdir\Xdccb-Icons.icl) > 11
  mpopup MPAddItem %a > 3 1 1 $1 > -
  if ($2) mpopup MPAddItem %a > 4 0 1 $2 > -
  if ($3) mpopup MPAddItem %a > 5 0 0 $3 > -
  mpopup MPAddItem %a > 0 0 0 - > -
  mpopup MPAddItem %a > 1 2 0 Yes > -
  mpopup MPAddItem %a > 2 3 0 No > -
  mpopup MPMenuColor Check > RGB_GRAY > 0,0,0
  mpopup MPMenuColor Check > RGB_BACK > 16777215
  mpopup MPMenuColor Check > RGB_TEXT > 15990813
  mpopup MPMenuColor Check > RGB_HIGH > 14737632
  var %check = $dll($+(",$scriptdirMPopup.dll,"),MPopup, Check > $mouse.dx $mouse.dy)
  if (%check = 1) return $true
  elseif (%check = 2) return $false
  else halt
}
Alias -l XDCCb-c-connect {
  var %net = $1
  if ($XDCCb-network($2)) {
    var %cid = $v1
    scid -t1 %cid /join #incomplete
    return 
  }
  if (%net = 1) server -m irc.criten.net -j #incomplete
  if (%net = 2) server -m irc.rizon.net -j #incomplete
  if (%net = 3) server -m irc.Ultra-Irc.net -j #incomplete
  if (%net = 4) server -m irc.UnderNet.org -j #incomplete
}
Alias -l XDCCB-c-onchannel scid -t1 $1 if ( $!me ison $2 ) return yeap
Alias -l Xdccb-c-requestall {
  var %file = $did-list(1,$1-)
  var %desc = $did-list(2,$1-)
  var %a = 4
  while (%a != 0) {
    var %network = $did(13,%a)
    var %cid = $XDCCb-network(%network)
    if (%cid) && ($XDCCB-c-onchannel(%cid,#incomplete)) && (!$Readini(XDCCb-corrupt.ini,%file,%network)) {
      scid -t1 %cid /msg #incomplete !Request %file / %desc
    }
    dec %a
  } 
}
Alias -l XDCCb {
  if (!$dialog(XDCCb)) dialog $readini(xdccgets.ini,ôOptionsô,Mode) XDCCb XDCCb
  did -a xdccb 3 Show
  dialog -v xdccb
}
Alias -l XDCCb27 {
  did -r XDCCb 27
  var %a = 1
  var %num = 0
  while ($hget(%a)) {
    var %get = $v1
    if ($+(XDCCb-,*) iswm %get) inc %num
    inc %a
  }
  if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
  dialog -t Xdccb-Processbar Loading Browser Data ...
  did -a Xdccb-Processbar 1 0 0 %num
  var %a = 1
  while ($hget(%a)) {
    var %get = $v1
    if ($+(XDCCb-,*) iswm %get) {
      if ($dialog(Xdccb-Processbar)) {
        did -a Xdccb-Processbar 1 %a
        dialog -t Xdccb-Processbar Loading Browser Data - $gettok(%get,2-,45) ...
      }
      XDCCb27-write %get
    }
    inc %a
  }
  var %a = 1
  while ($scon(%a)) {
    var %scid = $v1
    if (%a = 0) return  
    var %network = $gettok($scid(%scid).network,1,46)
    if ($scon(%a).status = connected) && (%network) {
      if (!$Find-branch(xdccb,27,%Network)) did -a xdccb 27 +eb 1 1 %Network $chr(9) Click on the network for a list of channels.
      var %root = $Find-branch(xdccb,27,%network)
      var %b = 1
      while ($XDCCb-ChangetMe(%scid,%b)) {
        var %chan = $v1
        if (!$Find-branch(xdccb,27,%chan,%root)) did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        inc %b
      }
    }
    inc %a
  }
  if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar
  uPackno
}
Alias -l XDCCb27-write {
  var %hash = $1
  var %network = $remove(%hash,XDCCb-) 
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  if (($gettok(%check,1,32) = 1) && ($hfind(%hash,*ÿ1,1,w))) || (($gettok(%check,2,32) = 1) && ($hfind(%hash,*ÿFile Server*,1,w))) $&
    || (($gettok(%check,3,32) = 1) && ($hfind(%hash,*ÿFTP*,1,w))) && (!$Find-branch(xdccb,27,%Network)) did -a xdccb 27 +eb 1 1 %Network $chr(9) Click on the network for a list of channels.
  var %root = $Find-branch(xdccb,27,%network)
  var %a = 1 
  while ($hget(%hash,%a).item) {
    var %v1 = $v1
    if (*ÿChan iswm %v1) {
      dll $+(",$scriptdir\WhileFix.dll") WhileFix 
      var %chan = $hget(%hash,%v1)    
      var %nick = $gettok(%v1,1,255)
      if (($gettok(%check,1,32) = 1) && ($hget(%hash,$+(%nick,ÿ1)))) || (($gettok(%check,2,32) = 1) && ($hget(%hash,$+(%nick,ÿFile Server1)))) || (($gettok(%check,3,32) = 1) && ($hfind(%hash,$+(%nick,*ÿFTP*),1,w))) {
        if (!$Find-branch(xdccb,27,%chan,%root)) did -a xdccb 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
        var %chan-num = $Find-branch(xdccb,27,%chan,%root)
        did -i xdccb 27 1 cb root %root %chan-num
        did -a xdccb 27 +b 3 3 %nick $chr(9) Click on the nick for a list of packs.
        did -i xdccb 27 1 cb root %root
      }
    }
    inc %a
  }
  did -i xdccb 27 1 cb root 1
}
Alias -l XDCCb28 {
  var %a = 1
  if ($did-tree(xdccb,27).root) {
    var %net = $did-tree(xdccb,27,$v1)
    XDCCb28-write %net
  }
}
Alias -l XDCCb28-write {
  did -r XDCCb 28
  var %network = $1
  var %check = $readini(xdccgets.ini,ôOptionsô,Listing)
  var %a = 1
  var %hash = $+(XDCCb-,%network)
  did -i XDCCb 28 1 headerdims 224:1 30:2 70:3 50:4 55:5 70:6
  did -i XDCCb 28 1 headertext Pack $chr(9) $chr(35) $chr(9) Size $chr(9) Gets $chr(9) Queue $chr(9) Rec. CPS
  while ($hfind(%hash,$+($did-tree(xdccb,27),$chr(255),*),%a,w)) {
    var %ifmatch = $v1
    var %num = $gettok(%ifmatch,$numtok(%ifmatch,255),255)
    if ((%num isnum) && ($gettok(%check,1,32) = 1)) || ((File Server isin %num) && ($gettok(%check,2,32) = 1)) || ((FTP = %num) && ($gettok(%check,3,32) = 1)) {
      if ($didwm(xdccb,28,$hget(%hash,%ifmatch),1) = 0) {
        var %nick = $gettok(%ifmatch,1,255)
        if (FTP isin %num) did -a XDCCb 28 $hget(%hash,%ifmatch) $chr(4) $hget(%hash,$+(%nick,$chr(255),FTPm))
        else did -a XDCCb 28 $hget(%hash,%ifmatch) $chr(9) $iif($hget(%hash,$+(%nick,$chr(255),Queue)),$v1,n/a) $chr(9) $iif($hget(%hash,$+(%nick,$chr(255),MaxCps)),$v1,n/a) $iif(File Server !isin %num,$chr(4) Double click on a pack to request it.,$chr(9) n/a $chr(9) n/a $chr(4) $hget(%hash,$+(%nick,$chr(255),File ServT))))
      }
    }
    inc %a
  }
  uPackno
}
Alias -l xdccb202 {
  var %network = $1
  var %a = 1
  var %search = $+(*,$replace($did(xdccb,206),$chr(32),*),*)
  var %hash = $+(XDCCb-,%network)
  window -h @tmpXdccb202 
  var %size = $readini(xdccgets.ini,ôOptionsô,Search-Size)
  var %compare = $iif($gettok(%size,1,44) = 1,>=,<=)
  var %size = $calc($gettok(%size,2,44) * (1024 ^ $gettok(%size,3,44)))
  while ($hget(%hash,%a).item) {
    dll $+(",$scriptdir\WhileFix.dll") WhileFix
    var %item = $v1
    var %value = $gettok($hget(%hash,%item),1,9)
    var %Pack = $hget(%hash,%item)
    var %name = $gettok(%item,1,255)
    var %queue = $iif($hget(%hash,$+(%name,$chr(255),Queue)),$v1,n/a)
    var %maxcps = $iif($hget(%hash,$+(%name,$chr(255),MaxCps)),$v1,n/a)
    var %server = $hget(%hash,$+(%name,$chr(255),Server))
    var %chan = $hget(%hash,$+(%name,$chr(255),Chan))
    var %sec = $gettok(%Item,2,255)
    var %pack-size = $Xdccb-Calcsize($gettok(%pack,3,9))
    if (%pack-size %compare %size) {
      if ($dialog(Xdccb-Processbar)) did -a Xdccb-Processbar 1 $calc($gettok($did(Xdccb-Processbar,1),1,32) +1)
      if (%search iswm %value) && ((%sec isnum) || (File Server isin %sec) || (FTP = %sec) ) {
        if (File Server isin %sec) aline @tmpXdccb202 %pack $chr(9) n/a $chr(9) n/a $chr(9) %queue $chr(9) %maxcps $chr(9) %name $chr(9) %chan $chr(9) %network $chr(9) %server $chr(4) $hget(%hash,$+(%name,$chr(255),File ServT)))
        elseif (FTP isin %sec) aline @tmpXdccb202 %pack $chr(9) n/a $chr(9) n/a $chr(9) %queue $chr(9) %maxcps $chr(9) %name $chr(9) %chan $chr(9) %network $chr(9) %server $chr(4) $hget(%hash,$+(%name,$chr(255),FTPm)))
        else aline @tmpXdccb202 %pack $chr(9) %queue $chr(9) %maxcps $chr(9) %name $chr(9) %chan $chr(9) %network $chr(9) %server $chr(4) Double click on a pack to request it.
      }
    }
    inc %a
  }
}
Alias -l XDCCb-Changet {
  var %nick = $2
  var %num = $3
  scid -t1 $1 /return $eval($comchan(%nick,$iif(%num,%num,1)),0)
}
Alias -l XDCCb-ChangetMe {
  var %num = $2
  scid -t1 $1 /return $eval($chan(%num),0)
}
Alias -l Xdccb-fileicon {
  if ($hget(Xdccb-FileIcons,$1)) return $v1
  var %icon = $regread($+(HKEY_CLASSES_ROOT\.,$1,\DefaultIcon\))
  if (!%icon) var %icon = $regread($+(HKEY_CLASSES_ROOT\,$regread($+(HKEY_CLASSES_ROOT\.,$1,\)),\DefaultIcon\))
  if ($+(%,*,%) iswm $gettok(%icon,1,92) ) var %icon = $+($GetEnvStr($gettok($v2,1,37)),\,$gettok(%icon,2-,92))
  if (!%icon) var %icon = $+($GetEnvStr(SystemRoot),\,system32\SHELL32.dll,$chr(44),0)
  var %file = $shortfn($gettok(%icon,1,44))
  var %num = $gettok(%icon,2,44)
  if (%file = Shell32.dll) || (!$exists(%file)) var %file =  $+($GetEnvStr(SystemRoot),\,system32\SHELL32.dll)
  var %b = 1
  while ($dialog(%b)) {
    var %dialog = $v1
    if (Xdccb-Fserv* iswm %dialog) {
      if (%icon = $+(%,1)) did -i %dialog 28 1 seticon normal 0 $+(2,$chr(44),$GetEnvStr(SystemRoot),\,system32\SHELL32.dll)
      else did -i %dialog 28 1 seticon normal 0 $+(%num,$chr(44),%file)
    }
    inc %b
  }
  var %icon = $calc($hget(Xdccb-FileIcons,0).item +1)
  hadd -m Xdccb-FileIcons $1 %icon
  return %icon
}
Alias -l Xdccb-filter-Fserv {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  var %b = $did-list(1,$2) 
  var %a = $did-list(1,$1)
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0))
  return %return
}
Alias -l Xdccb-filter-FservSize {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  var %b = $Xdccb-Calcsize($gettok($2,2,9))
  if (n isin %a) return 1
  if (%b !isnum) return 1
  var %a = $Xdccb-Calcsize($gettok($1,2,9))
  if (n isin %a) return -1
  if (%a !isnum) return -1
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0))
  return %return
}
Alias -l Xdccb-filter-size {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  if (!$dialog(Xdccb-Processbarsort)) halt
  var %b = $Xdccb-Calcsize($gettok($2,3,9))
  if (n isin %b) return 1
  if (%b !isnum) return 1
  var %a = $Xdccb-Calcsize($gettok($1,3,9))
  if (n isin %a) return -1
  if (%a !isnum) return -1
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0))
  if ($1 != %xdccb-sort-b) && (%return != -1) {
    did -a Xdccb-Processbarsort 1 $calc($gettok($did(Xdccb-Processbarsort,1),1,32) +1)
    set %xdccb-sort-b $1
  }
  return %return
}
Alias -l Xdccb-filter-num {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  if (!$dialog(Xdccb-Processbarsort)) halt
  var %a = $remove($gettok($1,%xdccb-sort-place,9),$chr(32))
  var %b = $remove($gettok($2,%xdccb-sort-place,9),$chr(32))
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0)) 
  if ($1 != %xdccb-sort-b) && (%return != -1) {
    did -a Xdccb-Processbarsort 1 $calc($gettok($did(Xdccb-Processbarsort,1),1,32) +1)
    set %xdccb-sort-b $1
  }
  return %return
}
Alias -l Xdccb-filter-Queue {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  if (!$dialog(Xdccb-Processbarsort)) halt
  var %a = $remove($gettok($gettok($1,5,9),1,47),$chr(32))
  if (Fr isin %a) return -1
  if (n isin %a) return 1
  var %b = $remove($gettok($gettok($2,5,9),1,47),$chr(32))
  if (Fr isin %b) return 1
  if (n isin %b) return -1
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0))
  if ($1 != %xdccb-sort-b) && (%return != -1) {
    did -a Xdccb-Processbarsort 1 $calc($gettok($did(Xdccb-Processbarsort,1),1,32) +1)
    set %xdccb-sort-b $1
  }
  return %return
}
Alias -l Xdccb-filter-Maxcps {
  dll $+(",$scriptdir\WhileFix.dll") WhileFix
  if (!$dialog(Xdccb-Processbarsort)) halt
  var %a = $Xdccb-Calcsize($remove($gettok($1,6,9),/,s,\))
  if (n isin %a) return 1
  if (%a !isnum) return 1
  var %b = $Xdccb-Calcsize($remove($gettok($2,6,9),/,s,\))
  if (n isin %b) return -1
  if (%b !isnum) return -1
  var %return = $iif(%b > %a,-1,$iif(%a > %b,1,0))
  if ($1 != %xdccb-sort-b) && (%return != -1) {
    did -a Xdccb-Processbarsort 1 $calc($gettok($did(Xdccb-Processbarsort,1),1,32) +1)
    set %xdccb-sort-b $1
  }
  return %return
}
Alias -l Xdccb-Fservtimer {
  if (!$dialog($1)) return
  if ($gettok($dialog($1).title,7,32) = 1) {
    dialog -x $1
    return
  }
  dialog -t $1 $+($gettok($1,2,61),'s) File Server (XDCC Browser v3.41) ... Closing in $calc($gettok($dialog($1).title,10,32) -1) Seconds
  $+(.timer,$1) 1 1 Xdccb-Fservtimer $1
}
Alias -l Xdccb-FservSeticon {
  did -i $1 $2 1 iconsize normal small
  var %a = 1
  while ($hfind(Xdccb-FileIcons,%a,1,W).data) {
    var %type = $v1
    var %icon = $regread($+(HKEY_CLASSES_ROOT\.,%type,\DefaultIcon\))
    if (!%icon) var %icon = $regread($+(HKEY_CLASSES_ROOT\,$regread($+(HKEY_CLASSES_ROOT\.,%type,\)),\DefaultIcon\))
    if ($+(%,*,%) iswm $gettok(%icon,1,92) ) var %icon = $+($GetEnvStr($gettok($v2,1,37)),\,$gettok(%icon,2-,92))
    if (!%icon) var %icon = $+($GetEnvStr(SystemRoot),\,system32\SHELL32.dll,$chr(44),0)
    var %file = $shortfn($gettok(%icon,1,44))
    var %num = $gettok(%icon,2,44)
    if (%file = Shell32.dll) || (!$exists(%file)) var %file =  $+($GetEnvStr(SystemRoot),\,system32\SHELL32.dll)
    if (%icon = $+(%,1)) did -i $1 28 1 seticon normal 0 $+(2,$chr(44),$GetEnvStr(SystemRoot),\,system32\SHELL32.dll)
    else did -i $1 28 1 seticon normal 0 $+(%num,$chr(44),%file)
    inc %a
  }
}
Alias -l Xdccb-FservSeticon2 {
  did -i $1 $2 1 iconsize normal small
  var %icon = $regread(HKEY_CLASSES_ROOT\Directory\DefaultIcon\)
  if ($+(%,*,%) iswm $gettok(%icon,1,92) ) var %icon = $+($GetEnvStr($gettok($v2,1,37)),\,$gettok(%icon,2-,92))
  did -i $1 $2 1 seticon normal $+($gettok(%icon,2,44),$chr(44),$shortfn($gettok(%icon,1,44)))
  did -i $1 $2 1 seticon normal $+(0,$chr(44),$GetEnvStr($gettok($v2,1,37)),\,Explorer.exe)
}
Alias -l Xdccb-FservTrigger {
  var %start = $2
  var %end = $3
  var %sep = $1
  var %triggers = $4-
  if ($left(%triggers,1) = /) var %check = yeap
  else var %check = nope
  var %network = $gettok($network,1,46)
  if (%end = 93) && (%check = yeap) var %Slashes = $count($nick,$chr(93))
  else %slashes = 0
  var %oldpack = $gettok($gettok(%triggers,1,%sep),$+(1-,$calc(%Slashes + 1)),%end)
  var %last = $gettok(%oldpack,-1,32)
  if ($+(*,$chr(40),*,/,*,$chr(41)) iswm %last) {
    var %last = $left($gettok(%last,-1,40),-1)
    if ($gettok(%last,1,47) isnum) && ($gettok(%last,2,47) isnum) var %oldpack = $deltok(%oldpack,-1,40))
  }
  var %a = 2
  var %num = 1
  if (!$gettok(%triggers,%a,%sep)) addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %num File Server %oldpack
  else {
    while ($gettok(%triggers,%a,%sep)) { 
      var %newpack = $v1
      var %newpack = $gettok(%newpack,$+(1-,$calc(%Slashes + 1)),%end)
      var %last = $gettok(%newpack,-1,32)
      if ($+(*,$chr(40),*,/,*,$chr(41)) iswm %last) {
        var %last = $left($gettok(%last,-1,40),-1)
        if ($gettok(%last,1,47) isnum) && ($gettok(%last,2,47) isnum) var %newpack = $deltok(%oldpack,-1,40))
      }
      if ($findtok($1-,$wildtok($1-,$+(*,%newpack,*),1,%start),1,%start) > $calc((%Slashes * %num) + 1)) {
        addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %num File Server %oldpack
        goto end
      }
      if ((%check = yeap) && ($left($remove(%newpack,$chr(32)),1) = /)) || (%check = nope) {
        addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %num File Server %oldpack
        inc %num
        if (!$gettok(%triggers,$calc(%a +1),%sep)) addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %num File Server %newpack
        var %oldpack = %newpack
      }
      else {
        if (%sep = 38) var %oldpack = %oldpack & %newpack
        if (!$gettok(%triggers,$calc(%a +1),%sep)) {
          addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %num File Server %oldpack
          inc %num
        }
      }
      inc %a
    }
  }
  :end
  dec %a
  if (%slashes = 0) var %slashes = 1 
  hadd $+(XDCCb-,%network) $+($nick,$chr(255),File ServT) $gettok($1-,$+($calc((%Slashes * %a) + 1),-),%end)
}
Alias -l Xdccb-getscid {
  if ($dialog(xdccb)) {
    if ($dialog(xdccb).tab = 100) && ($did-tree(xdccb,27).root) var %net = $did-tree(xdccb,27,$did-tree(xdccb,27).root)
    elseif ($dialog(xdccb).tab = 300) && ($did(xdccb,308).sel) var %net = $did-list(8,$did(xdccb,308).seltext)
    else {
      var %a = 1
      while ($hget(%a)) {
        var %get = $v1
        if ($+(XDCCb-,*) iswm %get) {
          var %network = $remove(%get,XDCCb-)
          if ($hfind($+(XDCCb-,%network),$+(*,$did-list(1-,$did(XDCCb,28).seltext)),1,w).DATA) {
            var %net = %network
          }
        }
        inc %a
      }
    }
    var %scid = $XDCCb-network(%net)
  }
  if (%scid) return %scid %net
  else return no %net
}
alias -l Xdccb-gets {
  var %a = 1
  while ($get($1,%a)) {
    if ($get($1,%a).status = active) return $+($get($1,%a).pc,%)
    inc %a
  }
}
Alias -l Xdccb-getserverip scid -t1 $1 /return $eval($Serverip) 
Alias -l Xdccb-Join {
  var %network = $1
  var %server = $2
  if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) var %server = $gettok($v1,3,58)
  elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %network *serverSERVER:*)) var %server = $gettok($v1,2,58)
  elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) var %server = $gettok($v1,2,58) 
  var %chan = $3
  var %scid = $XDCCb-network(%network)
  if ($XDCCb-network(%network,%chan)) && (%chan) {
    if (!$XDCCb-onchan(%scid,%chan)) scid -t1 %scid /join %chan
    return
  }
  else {
    if ($4 = Joinall) {
      if ($findtok(%xdccb-Join-All,%network,44)) return
      set %xdccb-Join-All $addtok(%xdccb-Join-All,%network,44)
    }
    if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) || ($read($+(",$mircdirservers.ini"),w,*=Random* %network *serverSERVER:*)) || $& 
      ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) server -m %network $readini(xdccgets.ini,%nick,port) $iif(%chan,-j %chan)
    else server -m %server $readini(xdccgets.ini,%nick,port) $iif(%chan,-j %chan)
  }
}
Alias -l Xdccb-joinuser {
  var %nick = $replace($1,[,$chr(255),],$chr(251))
  var %chan = $readini(xdccgets.ini,%nick,chan)
  var %network = $gettok($readini(xdccgets.ini,%nick,network),1,46)
  var %server = $readini(xdccgets.ini,%nick,server) 
  if (!%network) && (!%chan) {
    var %network = $2
    var %chan = $hget($+(xdccb-,%network),$+(%nick,$chr(255),Chan))
    var %server = $hget($+(xdccb-,%network),$+(%nick,$chr(255),Server))
  }
  var %scid = $XDCCb-network(%network,%chan)
  if (!%chan) return
  if (%scid) && (!$XDCCb-onchan(%scid,%chan)) scid -t1 %scid /join %chan
  else Xdccb-Join %network %server %chan $iif($2,$2)
}
alias Xdccb-Link {
  var %chan = $+($chr(35),$gettok($1-,3,47))
  var %server = $gettok($1-,2,47)
  if (!%server) return
  var %network = $gettok(%server,2,46)
  if (!%network) return
  var %port = $readini($+(",$mircdirmirc.ini"),text,defport)
  var %line = $gettok($read($+(",$mircdirservers.ini"),w,$+(*,%server,*)),2-,61)
  if (%line) {
    if (*Random* iswm %line) var %network = $gettok(%server,2,46)
    else var %network = $gettok(%line,-1,58)
  }
  tokenize 32 $cb
  if (($1 = /ctcp) || ($1 = /msg)) && ($3-4 = XDCC Send) {
    var %nick = $2
    var %nick2 = $replace(%nick,[,$chr(255),],$chr(251))
    var %Pack-num = $remove( [ [ $+($,$0) ] ] ,$chr(35))
    var %pack = $+(Requesting Pack no.,$chr(32),$chr(35),%Pack-num) $chr(9) %Pack-num $chr(9) n/a
    if ($readini(xdccgets.ini,%nick2,$+(Pack,%Pack-num))) return
    writeini -n xdccgets.ini %nick2 $+(Pack,%Pack-num) %pack
    writeini -n xdccgets.ini %nick2 $+(Date,%Pack-num) $Date
    writeini -n xdccgets.ini %nick2 $+(Time,%Pack-num) $Time
    writeini -n xdccgets.ini %nick2 Chan %chan
    if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,3,58)
    elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %network *serverSERVER:*)) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58)
    elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) writeini -n xdccgets.ini %nick2 Server $gettok($v1,2,58) 
    else {
      writeini -n xdccgets.ini %nick2 Server %server
      .server -a %server -p %port -g %network
    }
    writeini -n xdccgets.ini %nick2 Network %network
    writeini -n xdccgets.ini %nick2 Port %port
    writeini -n xdccgets.ini %nick2 Usage $replace($gettok($1-,$+(1-,$calc($numtok($1-,35) -1)),35),/msg,/.msg,/ctcp,/.ctcp)
    var %get = $readini(xdccgets.ini,%nick2,get)
    if (!%get) writeini -n xdccgets.ini %nick2 Get 1
    Xdccb-joinuser %nick
    var %scid = $XDCCb-network(%network)
    if ($XDCCb-onchan(%scid,%chan)) && ((!%get) || (%get = $readiniwm(xdccgets.ini,%nick2,Pack*,0))) XDCCb-request-Pack %nick $+($chr(35),%pack-num) %scid %network %pack 
    clipboard Requesting pack $+($chr(35),%Pack-num) from %nick 
    if ($dialog(XDCCb)) {
      if ( $didwm(xdccb,308,$+(*,$gettok(%pack,1-2,9),$chr(9),*,%nick,$chr(9),*),1) = 0 ) {
        var %a = $readiniwm(xdccgets.ini,%nick2,Pack*,0)
        var %get = $readini(xdccgets.ini,%nick2,get)
        var %order = $iif($calc(%a - %get +1) > 0,$ord($v1),Finished)
        var %stat = $Xdccb-stats(%nick,%network,%chan,%order)
        did -a XDCCb 308 $gettok(%pack,1-3,9) $chr(9) %stat $chr(9) %order $chr(9) %nick $chr(9) %chan $chr(9) %network $chr(9) %server
      }
    }
  }
  else Xdccb-Join %network %server %chan
}
Alias Xdccb-loadlist {
  var %file = $remove($1-,")
  if (!$isfile(%file)) return
  var %a = 1
  while ($ini(%file,%a)) {
    var %hash = $ini(%file,%a)
    if (!%hash) {
      if ($dialog(xdccb)) {
        if ($dialog(Xdccb-ProcessbarLoad)) dialog -nk Xdccb-ProcessbarLoad
        xdccb27
      }
      return
    }
    if (!$dialog(Xdccb-ProcessbarLoad)) dialog -mo Xdccb-ProcessbarLoad Xdccb-Processbar
    dialog -t Xdccb-ProcessbarLoad Loading list - $gettok($ini(%file,%a),2-,45) ...
    did -a Xdccb-ProcessbarLoad 1 0 0 $ini(%file,%a,0)
    window -h @Xdccb-load
    loadbuf $+(-rt,%hash) @Xdccb-load $+(",%file,")
    var %b = 1
    while ($line(@Xdccb-load,%b)) {
      hadd -m %hash $replace($gettok($v1,1,61),$chr(250),[,$chr(251),]) $gettok($v1,2,61)
      did -a Xdccb-ProcessbarLoad 1 %b
      inc %b 
    }
    inc %a
  }
  window -c @Xdccb-load
  if ($dialog(Xdccb-ProcessbarLoad)) dialog -nk Xdccb-ProcessbarLoad
  if ($dialog(xdccb)) xdccb27
}
Alias -l xdccb-Loadoptions {
  if ($readini(xdccgets.ini,ôOptionsô,XDCCAutoGet) = on) did -c XDCCb 350
  if ($readini(xdccgets.ini,ôOptionsô,XDCCResume) = on) did -c XDCCb 351
  if ($readini(xdccgets.ini,ôOptionsô,XDCCDelete-hash) = on) did -c XDCCb 352
  if ($readini(xdccgets.ini,ôOptionsô,XDCC-Requestlist) = on) did -c XDCCb 353
  if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) did -c Xdccb 354
  if (d isin $readini(xdccgets.ini,ôOptionsô,Mode)) did -c Xdccb 355
  did -c xdccb $iif($readini(xdccgets.ini,ôOptionsô,Request) = /.msg,358,359)
  if ($readini(xdccgets.ini,ôOptionsô,Echo) = on) did -c Xdccb 360
  did -ra Xdccb 362 $readini(xdccgets.ini,ôOptionsô,Request-Timer)
  did -ra Xdccb 365 $readini(xdccgets.ini,ôOptionsô,Getfail-Timer)
  did -j xdccb 362,365
  if ($readini(xdccgets.ini,ôOptionsô,Join-channels) = Yes) did -c Xdccb 369
  if ($readini(xdccgets.ini,ôOptionsô,Auto-connect) = on) did -c Xdccb 380
  if ($readini(xdccgets.ini,ôOptionsô,DCC-Fix) = on) did -c Xdccb 381
  if ($readini(xdccgets.ini,ôOptionsô,Hide-Packs) = on) did -c Xdccb 382
  if ($readini(xdccgets.ini,ôOptionsô,Delete) = on) did -c Xdccb 383
  if ($readini(xdccgets.ini,ôOptionsô,Sessions) = on) did -c Xdccb 384
  if ($readini(xdccgets.ini,ôOptionsô,Links) = on) did -c Xdccb 385
  if ($readini(xdccgets.ini,ôOptionsô,Channel-pack) = Yes) did -c Xdccb 386
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) did -c Xdccb 387
  if ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),1,32) = 1) did -c Xdccb 388
  if ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),2,32) = 1) did -c Xdccb 389
  if ($gettok($readini(xdccgets.ini,ôOptionsô,Listing),3,32) = 1) did -c Xdccb 390
  if ($readini(xdccgets.ini,ôOptionsô,Hide-Fserv) = on) did -c Xdccb 391
  if ($readini(xdccgets.ini,ôOptionsô,Remove) = on) did -c Xdccb 392
  if ($readini(xdccgets.ini,ôOptionsô,Autosave) = on) did -c Xdccb 393
  if ($readini(xdccgets.ini,ôOptionsô,Finish-Quit) = on) did -c Xdccb 394
  if ($readini(xdccgets.ini,ôOptionsô,Finish-Shutdown) = on) did -c Xdccb 395
  if ($readini(xdccgets.ini,ôOptionsô,Fserv-Browser) = on) did -c Xdccb 396
}
Alias -l Xdccb-Make-reg {
  if ($exists(Xdccb.reg))  write -c XdccB.reg
  if (9* iswm $os) || ($os = ME) write XdccB.reg REGEDIT4
  else write XdccB.reg Windows Registry Editor Version 5.00
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\command]
  write XdccB.reg @=" $+ $replace($mircexe,\,\\) -noconnect"
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec]
  write XdccB.reg @="/Xdccb-Link $+($chr(37),1,")
  write XdccB.reg $crlf 
  write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec\ifexec]
  write XdccB.reg @="/.timer 1 1 Xdccb-Link $+($chr(37),1,")
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec\Topic]
  write XdccB.reg @="Command"
  write XdccB.reg [HKEY_CLASSES_ROOT\IRC\Shell\open\ddeexec\Application]
  write XdccB.reg @=" $+ $ddename $+ "
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb]
  write XdccB.reg @="XDCC Browser List"
  write XdccB.reg $crlf 
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\DefaultIcon]
  write XdccB.reg @=" $+ $replace($scriptdirxdccb-Icons.icl,\,\\) $+ ,5"
  write XdccB.reg $crlf 
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\Open\command]
  write XdccB.reg @=" $+ $replace($mircexe,\,\\) -noconnect"
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\Open\ddeexec]
  write XdccB.reg @="/Xdccb-loadlist $+($chr(37),1")
  write XdccB.reg $crlf 
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\Open\ddeexec\ifexec]
  write XdccB.reg @="/.timer 1 1 Xdccb-loadlist $+($chr(37),1")
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\Open\ddeexec\Topic]
  write XdccB.reg @="Command"
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\Open\ddeexec\Application]
  write XdccB.reg @=" $+ $ddename $+ "
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\View\command]
  write XdccB.reg @=" $+ $replace($mircexe,\,\\) -noconnect"
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\View\ddeexec]
  write XdccB.reg @="/XDCCbview-file $+($chr(37),1")
  write XdccB.reg $crlf 
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\View\ddeexec\ifexec]
  write XdccB.reg @="/.timer 1 1 XDCCbview-file $+($chr(37),1")
  write XdccB.reg $crlf
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\View\ddeexec\Topic]
  write XdccB.reg @="Command"
  write XdccB.reg [HKEY_CLASSES_ROOT\.xcb\Shell\View\ddeexec\Application]
  write XdccB.reg @=" $+ $ddename $+ "
  write XdccB.reg $crlf
}
Alias -l XDCCb-network {
  var %a = 1
  var %network = $gettok($1,1,46)
  while ($scon(%a)) {
    var %net = $gettok($scon(%a).network,1,46)
    if (%net = %network) && (($scon(%a).status = connected) || ($scon(%a).status = connecting)) return $scon(%a)
    inc %a
  }
  return
}
Alias -l XDCCb-onchan {
  if ($1 !isnum) return
  var %chan = $2
  if ($3) var %nick = $3
  else var %nick = $scid($1).me
  scid -t1 $1 /return $eval($nick(%chan,%nick),0)
}
Alias -l XDCCb-onme-join {
  var %a = 1
  while ($ini(xdccgets.ini,%a)) {
    var %match = $v1
    var %nick = $replace(%match,$chr(255),[,$chr(251),])
    var %network = $gettok($readini(xdccgets.ini,%match,network),1,46)
    var %chan = $readini(xdccgets.ini,%match,chan)
    var %get = $readini(xdccgets.ini,%match,get)
    var %Pack = $readiniwm(xdccgets.ini,%match,Pack*,%get)
    if (%network = $gettok($network,1,46)) && ($1 = %chan) && (%nick ison $1) && (%Pack) $+(.TimerXDCCB-,%nick) 1 $calc(%a + $rand(60,180)) XDCCb-request-Pack %nick $+($chr(35),$right($readiniwm(xdccgets.ini,%match,Pack*,%get).sec,-4)) $cid $network %Pack
    inc %a
  }
}
Alias -l Xdccb-resize {
  var %new-width = $1
  var %new-hight = $2
  mdx MoveControl xdccb 1 $calc(%new-width -190) $calc(%new-hight -40)
  mdx MoveControl xdccb 2 $calc(%new-width -100) $calc(%new-hight -40)
  mdx MoveControl xdccb 27 * * * $calc(%new-hight -80)
  mdx MoveControl xdccb 28 * * $calc(%new-width -302) $calc(%new-hight -180)
  mdx MoveControl xdccb 31 $calc(%new-width -484) $calc(%new-hight -120)
  mdx MoveControl xdccb 32 $calc(%new-width -180) $calc(%new-hight -120)
  mdx MoveControl xdccb 33 $calc(%new-width -250) $calc(%new-hight -80)
  mdx MoveControl xdccb 34 $calc(%new-width -332) $calc(%new-hight -120)
  mdx MoveControl xdccb 35 * * * $calc(%new-hight -54)
  mdx MoveControl xdccb 41 $calc(%new-width -486) $calc(%new-hight -84)
  mdx MoveControl xdccb 42 $calc(%new-width -346) $calc(%new-hight -86)
  mdx MoveControl xdccb 43 $calc(%new-width -486) $calc(%new-hight -50)
  mdx MoveControl xdccb 44 $calc(%new-width -346) $calc(%new-hight -52)
  mdx MoveControl xdccb 202 $calc(%new-width -462) *
  mdx MoveControl xdccb 203 $calc(%new-width -150) *
  mdx MoveControl xdccb 204 * * $calc(%new-width -40) *
  mdx MoveControl xdccb 205 * * $calc(%new-width -40) *
  mdx MoveControl xdccb 206 * * $calc(%new-width -492) *
  mdx MoveControl xdccb 207 * * $calc(%new-width -40) $calc(%new-hight -150)
  mdx MoveControl xdccb 208 $calc(%new-width -210) *
  mdx MoveControl xdccb 209 $calc(%new-width -400) $calc(%new-hight -40)
  mdx MoveControl xdccb 211 $calc(%new-width -520) $calc(%new-hight -40)
  mdx MoveControl xdccb 212 $calc(%new-width -600) $calc(%new-hight -38)
  mdx MoveControl xdccb 213 $calc(%new-width -390) *
  mdx MoveControl xdccb 214 $calc(%new-width -314) *
  mdx MoveControl xdccb 215 $calc(%new-width -280) *
  mdx MoveControl xdccb 303 $calc(%new-width -420) $calc(%new-hight -73)
  mdx MoveControl xdccb 304 * $calc(%new-hight -54)
  mdx MoveControl xdccb 308 * * $calc(%new-width -40) $calc(%new-hight -126)
  mdx MoveControl xdccb 407 * $calc(%new-hight -54)
  mdx MoveControl xdccb 408 * $calc(%new-hight -54)
  var %tab = $dialog(xdccb).tab
  if (%tab = 300) {
    did -c xdccb 600
    did -c xdccb 300
    did -h xdccb 1,2
    did -v xdccb 1,2
  }
  else {
    did -c xdccb 300
    did -c xdccb %tab
    did -h xdccb 1,2
    did -v xdccb 1,2
  }
}
Alias -l XDCCb-request-Fserv {
  var %nick = $1
  var %network = $2
  var %scid = $3
  var %pack = $gettok($4-,1,9)
  if ($asc($gettok(%pack,2,32)) = 47) scid -t1 %scid $replace($gettok(%pack,2,32),/,/.) $gettok(%pack,3-,32)
  else scid -t1 %scid /msg $XDCCb-Changet(%scid,%nick) $gettok(%pack,2-,32)
  if ($readini(xdccgets.ini,ôOptionsô,Echo) = on) {
    scid -t1 %scid /linesep -s
    scid -t1 %scid /Echo -ts $+([ ,$color(ctcp text),Requesting File Server $+(,$color(info text), $chr(40),$5-,$chr(41)),,$color(ctcp text),$chr(32),from %nick, ])) 
    scid -t1 %scid /linesep -s
  }
}
Alias -l XDCCb-request-Pack {
  var %network
  if ($4) {
    var %scid = $3
    var %network = $gettok($4,1,46)
    var %Pack = $5-
  }
  if (!%network) {
    var %scid = $cid
    var %network = $gettok($network,1,46)
  }
  var %a = 1
  while ($get($1,%a)) {
    if ($get($1,%a).status = active) {
      return
    }
    inc %a 
  }
  while ($gettok(%pack,1,32) = 0) { var %pack = $gettok(%pack,2-,32) }
  if (!$XDCCb-Changet(%scid,$1)) return
  if ($ini(xdccgets.ini,DCCÿAllow,%network)) && ($ini(xdccgets.ini,DCCÿAllow,%network) != 0) scid -t1 %scid /.DCCALLOW $+(+,$1)
  if ($gettok($readini(mirc.ini,options,n7),19,44) = 1) .dcc trust $+($1,!*@*)
  var %nick = $replace($1,[,$chr(255),],$chr(251))
  if (File Server?: iswm $gettok(%pack,1,32)) {
    var %pack = $remove(%pack,$chr(9))
    if ($asc($gettok(%pack,2,32)) = 47) scid -t1 %scid $replace($gettok(%pack,2,32),/,/.) $gettok(%pack,3-,32)
    else scid -t1 %scid /msg $XDCCb-Changet(%scid,$1) $gettok(%pack,2-,32)
    return
  }
  if ($readini(xdccgets.ini,%nick,Usage) ) {
    var %usage = $v1
    if (msg !isin $gettok(%usage,1,32)) && (ctcp !isin $gettok(%usage,1,32)) halt
    scid -t1 %scid $replace(%usage,/msg,/.msg,/ctcp,/.ctcp) $iif($chr(35) isin $2,$2,$+($chr(35),$2))
    if ($Timer($+(XDCCB-,$1))) $+(.TimerXDCCB-,$1) off 
  }
  else {
    var %usage = $readini(xdccgets.ini,ôOptionsô,Request)
    if (msg !isin %usage) && (ctcp !isin %usage) halt
    scid -t1 %scid %usage $1 XDCC send $iif($chr(35) isin $2,$2,$+($chr(35),$2))
    if ($Timer($+(XDCCB-,$1))) $+(.TimerXDCCB-,$1) off 
  }
  if ($readini(xdccgets.ini,ôOptionsô,Echo) = on) {
    scid -t1 %scid /linesep -s
    scid -t1 %scid /Echo -ts $+([ ,$color(ctcp text),Requesting Pack $iif($chr(35) isin $2,$2,$+($chr(35),$2))  $+(,$color(info text),$chr(40),$gettok(%Pack,1,9),$chr(41)),,$color(ctcp text),$chr(32),from $1, ])) 
    scid -t1 %scid /linesep -s
  }
}
Alias -l Xdccb-Session {
  var %network = $gettok($network,1,46)
  var %server = $Serverip
  .server -a %server -p $port -g %network
  if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) var %server = $gettok($v1,3,58)
  elseif ($read($+(",$mircdirservers.ini"),w,*=Random* %network *serverSERVER:*)) var %server = $gettok($v1,2,58)
  elseif ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) var %server = $gettok($v1,2,58) 
  if ($read($+(",$mircdirservers.ini"),w,*= $+ %network $+ : Random serverSERVER:*)) || ($read($+(",$mircdirservers.ini"),w,*=Random* %network *serverSERVER:*)) || $& 
    ($read($+(",$mircdirservers.ini"),w,$+(*irc.,%Network,.,*,Group:,*,%network))) server %network $readini(xdccgets.ini,%nick,port)
  else server %server $readini(xdccgets.ini,%nick,port)
}
Alias -l Xdccb-Seticon {
  did -i $1 $2 1 iconsize normal small
  did -i $1 $2 1 seticon normal 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $1 $2 1 seticon normal 1, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i $1 $2 1 seticon normal 2, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
}
Alias -l XDCCB-Setup {
  if ($version < 6.16) {
    var %check = $input(You are using an old version of mIRC $+($chr(40),v,$version,$chr(41)) $+ $chr(44) The script can't run on a version older then 6.16 $crlf XDCC Browser was unable to load!,124,XDCC Browser)
    unload -rs xdccb.mrc
    return
  }
  if ($lock(dll) = $true) {
    var %check = $input(XDCC Browser was unable to load! $crlf Your /Dll commands are locked in the setup. $crlf To release those commands so the script can work follow these instructions: $crlf $crlf $&
      Go to the Options (Alt + O) > Other > Lock $crlf And remove the "V" from the "Disable run $+ $chr(44) dll $+ $chr(44) com commands" ,124,XDCC Browser)
    unload -rs xdccb.mrc
    return
  }
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Mode)) writeini -n xdccgets.ini ôOptionsô Mode -mh
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Request)) writeini -n xdccgets.ini ôOptionsô Request /.msg
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Echo)) writeini -n xdccgets.ini ôOptionsô Echo on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Request-Timer)) writeini -n xdccgets.ini ôOptionsô Request-Timer 300
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Getfail-Timer)) writeini -n xdccgets.ini ôOptionsô Getfail-Timer 190
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Join-channels)) writeini -n xdccgets.ini ôOptionsô Join-channels yes
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,DCC-Fix)) writeini -n xdccgets.ini ôOptionsô DCC-Fix on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Auto-connect)) writeini -n xdccgets.ini ôOptionsô Auto-connect on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Hide-Packs)) writeini -n xdccgets.ini ôOptionsô Hide-Packs off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Auto-Corrupt)) writeini -n xdccgets.ini ôOptionsô Auto-Corrupt yes
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Delete)) writeini -n xdccgets.ini ôOptionsô Delete on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Sessions)) writeini -n xdccgets.ini ôOptionsô Sessions on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Channel-pack)) writeini -n xdccgets.ini ôOptionsô Channel-pack Yes
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Listing)) writeini -n xdccgets.ini ôOptionsô Listing 1 1 1
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Hide-Fserv)) writeini -n xdccgets.ini ôOptionsô Hide-Fserv off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Remove)) writeini -n xdccgets.ini ôOptionsô Remove on 
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Autosave-time)) writeini -n xdccgets.ini ôOptionsô Autosave-time 24
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Autosave)) writeini -n xdccgets.ini ôOptionsô Autosave off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Load-lists)) writeini -n xdccgets.ini ôOptionsô Load-lists off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Finish-Quit)) writeini -n xdccgets.ini ôOptionsô Finish-Quit off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Finish-Shutdown)) writeini -n xdccgets.ini ôOptionsô Finish-Shutdown off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,Fserv-Browser)) writeini -n xdccgets.ini ôOptionsô Fserv-Browser on
  if ($1 = Reset) || ($numtok($readini(xdccgets.ini,ôOptionsô,Search-Size),44) != 3) || (!$readini(xdccgets.ini,ôOptionsô,Search-Size)) writeini -n xdccgets.ini ôOptionsô Search-Size 1,0,1
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,XDCCAutoGet)) writeini -n xdccgets.ini ôOptionsô XDCCAutoGet on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,XDCCResume)) writeini -n xdccgets.ini ôOptionsô XDCCResume on
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,XDCCDelete-hash)) writeini -n xdccgets.ini ôOptionsô XDCCDelete-hash off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,XDCC-Requestlist)) writeini -n xdccgets.ini ôOptionsô XDCC-Requestlist off
  if ($1 = Reset) || (!$readini(xdccgets.ini,ôOptionsô,XDCCDialog-size)) writeini -n xdccgets.ini ôOptionsô XDCCDialog-size 760 400
  if ($readini(xdccgets.ini,ôOptionsô,DDE)) remini -n xdccgets.ini ôOptionsô DDE
  if ($readini(xdccgets.ini,ôOptionsô,Window)) remini -n xdccgets.ini ôOptionsô Window
  if ($readini(xdccgets.ini,ôOptionsô,Default)) remini -n xdccgets.ini ôOptionsô Default
}
alias -l Xdccb-Shutdown-quit {
  var %network = $1
  var %loc,%check
  var %scid = $2
  var %b = 1
  var %user = $3
  while ($ini(xdccgets.ini,%b)) {
    var %ifmatch = $v1
    if ($readini(xdccgets.ini,%ifmatch,Network) = %network) var %loc = $v1 
    if (!%check) && (%ifmatch != ôOptionsô) && (%ifmatch != DCCÿAllow) var %check = ok
    inc %b 
  }
  if ($readini(xdccgets.ini,ôOptionsô,Finish-Shutdown) = on)  && (%check != ok) {
    var %a = 1
    while ($scon(%a)) {
      var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
      scon -t1 %a /quit %message
      inc %a
    }
    if ($os = XP) run shutdown -S -T 0 -C "XDCC Browser - Finished dowloading files. Prepare for shutdown"
    elseif ($os = 2K) || ($os = NT) run shutdown /L /T:0 "XDCC Browser - Finished dowloading files. Prepare for shutdown"
    elseif ($os = 98) run RUNDLL32 KRNL386.EXE,exitkernel 
    else run RUNDLL32.EXE user,exitwindows
    exit
    halt
  }
  if ($readini(xdccgets.ini,ôOptionsô,Finish-Quit) = on) {
    var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
    if (!%loc) && (!$XDCCb-onchan(%scid,#incomplete)) {
      scid -t1 %scid quit %message
      scid -t1 %scid window -c "Status Window" 
    }
    else {
      var %b = 1
      while ($comchan(%user,%b)) {
        var %chan = $v1
        if (%chan = #incomplete) goto end374
        var %c = 1
        while ($ini(xdccgets.ini,%c)) {
          if ($readini(xdccgets.ini,$v1,Chan) = %chan) goto end374
          inc %c
        }
        var %message = $iif($read(XDCCb-quit-messages.txt,$rand(1,$lines(XDCCb-quit-messages.txt))),$v1,XDCC Browser v3.41 ... The Easy Way ...)
        scid -t1 %scid Part %chan %message
        :end374
        inc %b
      }
    }
  }
}
alias -l Xdccb-stats {
  var %nick = $1
  var %network = $2
  var %chan = $3
  var %order = $4
  var %stat
  if (%order = Finished) var %stat = Finished
  else { 
    var %scid = $XDCCb-network(%network)
    if (%scid != no) {
      if (!$XDCCb-onchan(%scid,%chan)) var %stat Not connected
      elseif (!$XDCCb-onchan(%scid,%chan,%nick)) var %stat Offline
    }
    else var %stat Not connected
    if (!%stat) {
      if ($readini(xdccgets.ini,$replace(%nick,[,$chr(255),],$chr(251)),Unable) >= 3) var %stat = Unable to Connect  
      elseif (%order > 1) var %stat = Waiting
      elseif (%order = 1) {
        if ($Xdccb-gets(%nick)) var %stat = $v1
        elseif ($xdccb-Queues(%nick,%network)) var %stat = $v1
        elseif (!%stat) var %stat = Requesting
      }
      if (%order = n/a) var %stat = File Server
    }
  }
  return %stat
}
Alias -l Xdccb-Stopsocket {
  if ($sock(xdccb)) .sockclose xdccb
  if ($timer(Xdccb-socket)) .timerXdccb-socket off 
  if ($dialog(xdccb)) {
    did -ra xdccb 211 Done
    var %num = $calc($did(xdccb,207).lines -1)
    did -ra xdccb 205 $iif(%num = 1,%num Result,%num Results)
  }
  unset %xdccb-searchnetwork %xdccb-searchserver %xdccb-searchchan %xdccb-searchnick %xdccb-searchusage %xdccb-searchpack-num %xdccb-searchgets %xdccb-searchsize %xdccb-searchMaxcps %xdccb-searchQueue
}
alias -l Xdccb-Queues {
  var %time
  var %file = $+(Xdccb-queues-,$2,.txt)
  var %a = 1
  while ($read(%file,s,$1,%a)) {
    var %ifmatch = $v1
    var %line = $gettok(%ifmatch,$+(1-,$calc($numtok(%ifmatch,32) -1)),32)
    var %position = $numtok(%line,32)
    if (remove isin %line) var %position = $calc($findtok(%line,remove,1,32) -2)
    var %line = $gettok(%line,$+(1-,%position),32) 
    if (*Queued *h*m for "*"* in *position * of * remaining* iswm %line) {
      var %position $calc($findtok(%line,position,1,32) +1)
      return Que: $replace($remove($gettok(%line,$+(%position,-,$calc(%position + 2)),32),$chr(46)),of,/)
    }
    elseif (You have been queued isin %line) {
      var %position = $calc($findtok(%line,position,1,32) +1)
      return Que: $replace($remove($gettok(%line,$+(%position,-,$calc(%position + 2)),32),$chr(46)),of,/)
    }  
    elseif (*All Slots Full, Added you to the main queue in position* iswm %line) {
      var %position = $calc($findtok(%line,position,1,32) +1)
      return Que: $remove($gettok(%line,%position,32),$chr(46))
    }
    elseif (XDCC: Adding your file to queue slot isin %line) {
      var %position = $calc($findtok(%line,slot,1,32) +1)
      return Que: $remove($gettok(%line,%position,32),$chr(46))
    }
    elseif (XDCC: That file has already been queued in slot isin %line) {
      var %position = $calc($findtok(%line,slot,1,32) +1)
      return Que: $remove($gettok(%line,%position,32),$chr(33))
    }
    elseif (Queuing* It has been placed in queue* available* iswm %line) {
      var %position = $calc($findtok(%line,slot,1,32) +1)
      return Que: $remove($gettok(%line,%position,32),$chr(35),$chr(44))
    }
    elseif (Sorry* that file already exists in queue slot* Try and get another file* iswm %line)  {
      var %position = $calc($findtok(%line,slot,1,32) +1)
      return Que: $remove($gettok(%line,%position,32),$chr(35),$chr(46))
    }
    var %a = $readn
    inc %a 
  }
}
alias -l Xdccb-update {
  if ($dialog(xdccb)) {
    var %a = 2
    while ($did(xdccb,308,%a)) {
      var %v1 = $v1
      var %pack = $did-list(1-3,%v1)
      var %nick = $did-list(6,%v1)
      var %chan = $did-list(7,%v1)
      var %network = $did-list(8,%v1)
      var %server = $did-list(9,%v1)
      var %order = $remove($did-list(5,%v1),st,nd,rd,th)
      var %old-stat = $did-list(4,%v1)
      var %stat = $Xdccb-stats(%nick,%network,%chan,%order)
      if (%old-stat != %stat) {
        var %selected = $gettok(%v1,2,32)
        did -o XDCCb 308 %a %pack $chr(9) %stat $chr(9) $ord(%order) $chr(9) %nick $chr(9) %chan $chr(9) %network $chr(9) %server
        if (s isin %selected) did -kc XDCCb 308 %a 
      }
      inc %a
    }
  }
  else .timerXdccb-update off
}
Alias XDCCbview-file {
  if (!$dialog(XDCCb-lists)) dialog -m XDCCb-lists XDCCb-lists
  did -c XDCCb-lists 200
  did -fr XDCCb-lists 27
  did -i XDCCb-lists 27 1 seticon normal 1 0, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i XDCCb-lists 27 1 seticon normal 2 1, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -i XDCCb-lists 27 1 seticon normal 3 2, $+ $findfile($scriptdir,Xdccb-Icons.icl,1)
  did -ra XDCCb-lists 10 Preview list
  did -o XDCCb-lists 4 2 +cgW 85 1 Auto save
  did -o XDCCb-lists 4 3 +cgxW 85 2 View list
  var %ontop
  if (o isin $readini(xdccgets.ini,ôOptionsô,Mode)) && ($dialog(xdccb)) {
    dialog -n xdccb
    var %ontop = yeap
  }
  var %check = $1-
  if (!%check) var %check = $sfile($+(",$scriptdir,%text,*.xcb"),Load file:,Load)
  if (!%check) return
  if (%ontop) dialog -o xdccb 
  did -r XDCCb-lists 27
  var %a = 1
  var %num = 0
  did -ra xdccb-lists 10 $+(",%check,")
  var %a = 1
  while ($ini(%check,%a)) {
    var %get = $v1
    XDCCbview-file-write $remove(%get,XDCCb-) %check
    inc %a
  }
  if ($dialog(Xdccb-Processbar)) dialog -k Xdccb-Processbar
  var %time = $file(%check).ctime
  did -ra XDCCb-lists 42 $asctime(%time,dd/mmm/yy)
  did -ra XDCCb-lists 44 $asctime(%time,HH:nn:ss)
}
Alias -l XDCCbview-file-write {
  var %network = $1 
  var %file = $2-
  if (!$dialog(Xdccb-Processbar)) dialog -mo Xdccb-Processbar Xdccb-Processbar
  dialog -t Xdccb-Processbar Loading List Data ...
  if (!$Find-branch(XDCCb-lists,27,%Network)) did -a XDCCb-lists 27 +eb 1 1 %Network $chr(9) Click on the network for a list of channels.
  var %root = $Find-branch(XDCCb-lists,27,%network)
  var %hash = $+(xdccb-,%network)
  dialog -t Xdccb-Processbar Loading Browser Data - %network ...
  var %num = 1
  window -h @Xdccb-view
  loadbuf $+(-rt,%hash) @Xdccb-view $+(",%file,")
  did -a Xdccb-Processbar 1 0 0 $fline(@xdccb-view,*ÿChan*,0)
  var %a = 1 
  while ($line(@xdccb-view,$fline(@xdccb-view,*ÿChan*,%a))) {
    dll $+(",$scriptdir\WhileFix.dll") WhileFix 
    inc %num
    did -a Xdccb-Processbar 1 %num
    var %chan = $gettok($v1,-1,61)
    var %nick = $gettok($v1,1,255)
    if (!$Find-branch(xdccb-lists,27,%chan,%root)) did -a XDCCb-lists 27 + 2 2 %chan $chr(9) Click on the channel for a list of nicks.
    var %chan-num = $Find-branch(xdccb-lists,27,%chan,%root)
    did -i XDCCb-lists 27 1 cb root %root %chan-num
    did -a XDCCb-lists 27 +b 3 3 $replace(%nick,$chr(250),[,$chr(251),]) $chr(9) Click on the nick for a list of packs.
    did -i XDCCb-lists 27 1 cb root %root
    inc %a
  }
  window -c @xdccb-view
  did -i XDCCb-lists 27 1 cb root 1
}
Alias -l Xdccb-Whowas-sending {
  if (!$hget(Xdcc-dcc-fix)) return $null
  if ($hfind(Xdcc-dcc-fix,$1-,1,w).data) var %nick = $v1
  else return $null
  if ($hget(Xdcc-dcc-fix)) hdel Xdcc-dcc-fix %nick
  if ($hget(Xdcc-dcc-fix,0).item = 0) hfree Xdcc-dcc-fix
  return %nick
}
Alias -l XDCCr8 {
  var %b = 1
  did -r XDCCb 308
  while ($ini(xdccgets.ini,%b)) {
    var %v1 = $v1
    var %nick = $replace($v1,$chr(255),[,$chr(251),])
    var %chan = $readini(xdccgets.ini,$v1,Chan)
    var %server = $readini(xdccgets.ini,$v1,server)
    var %network = $gettok($readini(xdccgets.ini,$v1,network),1,46)
    var %get = $readini(xdccgets.ini,$v1,get)
    if (%network) {
      var %a = 1
      while ( $readiniwm(xdccgets.ini,%v1,File server*,%a) ) {
        did -a XDCCb 308 $v1 $chr(9) n/a $chr(9) n/a $chr(9) n/a $chr(9) %nick $chr(9) %chan $chr(9) %network $chr(9) %server
        inc %a
      }
      var %a = 1
      while ( $readiniwm(xdccgets.ini,%v1,Pack*,%a) ) {
        var %pack = $v1
        var %order = $iif($calc(%a - %get +1) > 0,$v1,Finished)
        var %stat = $Xdccb-stats(%nick,%network,%chan,%order)
        did -a XDCCb 308 $gettok(%pack,1-3,9) $chr(9) %stat $chr(9) $ord(%order) $chr(9) %nick $chr(9) %chan $chr(9) %network $chr(9) %server
        inc %a
      }
    }
    inc %b
  }
  filter -criw $+(2-,$did(xdccb,308).lines) xdccb 308 @tmpXdccb28 *
  filter -cot 1 9 @tmpxdccb28 xdccb 308 *
}
Alias -l XDCC-RequestList {
  var %a = 1
  var %net = $gettok($network,1,46)
  while (%a < $nick($1,0,v)) {
    var %nick = $nick($1,%a,v)
    if ($regex($right(%nick,3),/[0-9]/)) && ($regex(%nick,/[A-Z]/)) && (!$hfind($+(XDCCb-,%net),$+(%nick,*),1,w)) $+(.Timer,xdcc-list,%a) 1 $calc(%a * 20) /.ctcp %nick VERSION
    inc %a
  }
}
Alias -l xPack {
  if ($0 = 0) return
  tokenize 32 $strip($1-))
  var %pack
  var %gets = [ [ $+($,$calc($0 -1)) ] ]
  if (Get isin $1-) {
    var %format = (#*)
    if (%format iswm $1-) {
      ; (#*) - *  - * (*gets)
      ; (#14) - PAcket name - 6.6MB (27 gets)
      ; Invision XDCC
      var %format = - * - * (*gets)
      if (%format iswm $2-) {
        return [ [ $+($,3,-,$calc($0 - 4)) ] ]  $chr(9) $remove($1,$chr(40),$chr(41),$chr(35)) $chr(9) [ [ $+($,$calc($0 -2)) ] ] $chr(9) $remove(%gets,$chr(40)) 
      }

      ;(#*) «*» (*gets)
      ; (#9) «67.3MB»    Packet name - (0 gets)
      ;  xSystemX
      var %format = «*» * (*gets)
      if (%format iswm $2-) {
        var %gets = [ [ $+($,$calc($0 -1)) ] ]
        return [ [ $+($,3,-,$calc($0 -1)) ] ] $chr(9) $remove($1,$chr(40),$chr(41),$chr(35)) $chr(9) $remove($2,«,») $chr(9) $remove(%gets,$chr(40))
      }

      ;(#*) (*B) (*gets)
      ; (#9) (67.3MB)    Packet name - (0 gets)
      ;  xSystemX
      var %format = (*) * (*gets)
      if (%format iswm $2-) {
        var %gets = [ [ $+($,$calc($0 -1)) ] ]
        return [ [ $+($,3,-,$calc($0 -1)) ] ] $chr(9) $remove($1,$chr(40),$chr(41),$chr(35)) $chr(9) $remove($2,$chr(40),$chr(41)) $chr(9) $remove(%gets,$chr(40))
      }
    }

    ; *#* «*» * - * (*gets)
    ; #4 «765 MB» Packet name - (1 gets)
    ; Invision XDCC
    var %format = *#* «*» *- (* gets)
    if (%format iswm $1-) {
      if (*B» iswm $3 ) return [ [ $+($,4-,$calc($0 -3)) ] ] $chr(9) $remove($1,$chr(35)) $chr(9) $remove($2-3,«,») $chr(9) $remove(%gets,$chr(40))
      var %check =  [ [ $+($,3-,$calc($0 -3)) ] ]
      return %check $chr(9) $remove($1,$chr(35)) $chr(9) $remove($2,«,») $chr(9) $remove(%gets,$chr(40))
    }

    ; [#*] * (* *b,* gets)
    ; [#1] File name.zip (454.7 mb, 9 gets)
    var %format = [#*] * (*b,* gets)
    if (%format iswm $1-) {
      var %end = $gettok($2-,$numtok($2-,40),40)
      if (b isin $gettok(%end,2,44)) var %end2 = $replace(%end,$chr(44),$chr(46),$+($chr(46),$chr(32)),$+($chr(44),$chr(32)))
      else var %end2 = %end
      return $remove($gettok($2-,$+(1-,%end),40),%end,$chr(40),$chr(41)) $chr(9) $remove($1,[,],$chr(35)) $chr(9) $gettok(%end2,1,44) $chr(9) $gettok($gettok(%end2,2,44),1,32)
    }

    ;«#*» [*B] «*» [*]«Gets»
    ; «#5» [151.16MB] «Packet name here» [0]«Gets»
    var %format = «#*» [*B] «*» [*]«Gets»
    if (%format iswm $1-) {
      var %gets = $right($gettok($eval($+($,$calc($0 -1)),2),1,93),-1)
      return $left($right($eval($+($,3,-,$calc($0 -1)),2),-1),-1) $chr(9) $remove($1,«,»,$chr(35)) $chr(9) $remove($2,$chr(93),$chr(91)) $chr(9) %gets
    }

    ;[#*] [*] - * [*gets]
    ;[#1] [333.6MB] - Packet name [4 Gets]
    ;SysReset 2.53
    var %format = [#*] [*] - * [*gets] 
    if (%format iswm $1-) {
      return [ [ $+($,4-,$calc($0 - 2)) ] ] $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($2,[,],_) $chr(9) $remove(%gets,[)
    }

    ; % #* (*: * get*)*
    ; % #2  (733.88mb:   8 gets) Packet name
    ; cypress/cdcc
    var %format = $chr(37) #* (*: * get*)*
    if (%format iswm $1-) {
      return $6- $chr(9) $remove($2,$chr(35)) $chr(9) $remove($3,$chr(40),$chr(58)) $chr(9) $4 
    }

    ; (Pack #25) : Packet name | 1 meg's | Gets : (0)X
    ; ISOS XDCC Server
    var %format = (Pack #*) : * $chr(124) * $chr(124) * : * 
    if (%format iswm $1-) {
      return $gettok($4-,1,124) $chr(9) $remove($2,$chr(35),$chr(41)) $chr(9) $gettok($3-,2,124) $chr(9) $remove($gettok($gettok($3-,3,124),3-,32),$chr(40),$chr(41),x)
    }

    ;#10 874.6Kb - Packet name (8gets)
    var %format = #* *b -* (*gets)
    if (%format iswm $1-) {
      return $gettok($4-,$+(1-,$calc($0 -1)),32) $chr(9) $remove($1,$chr(35)) $chr(9) $2 $chr(9) $remove($eval($+($,$0),2),get,s,$chr(40),$chr(41))
    }
  }
  if (x isin $1-) {
    if (#?* iswm $1) {
      ; #?* *x [*?*] *
      ; #1 14x [ 50M] a_file.zip
      ; iroffer
      var %format = *x [*?*] *
      if (%format iswm $2-6) {
        if ( $3 == $chr(91) ) return $5- $chr(9) $remove($1,$chr(35)) $chr(9) $remove($4,[,]) $chr(9) $remove($2,x)
        else return $4- $chr(9) $remove($1,$chr(35)) $chr(9) $remove($3,[,]) $chr(9) $remove($2,x)
      }

      ;#?* [*x] «*b» *
      ;#2 [0x] «11.1Mb» packet name
      var %format = *[*x] «*b» *
      if (%format iswm $2-4) {
        return $4- $chr(9) $remove($1,$chr(35)) $chr(9) $remove($3,«,») $chr(9) $remove($2,[,x])
      }

      ; #37 (149.46mb) [divx] »» Packet name - (0x)
      ; Nightvision 2.2.3
      var %format = *(*) [*] »» * - (*x)
      if (%format iswm $2-) {
        return $gettok($3-,$+(1-,$calc($0 -1)),32) $chr(9) $remove($1,$chr(35)) $chr(9) $remove($2,,$chr(40),$chr(41)) $chr(9) $remove($eval($+($,$0),2),x,$chr(40),$chr(41))
      }

      ; #10 (784.84mb) »» Packet name - (0x)
      ; acidmax
      var %format = *(*) »» * - (*x)
      if (%format iswm $2-) {
        return $gettok($4-,$+(1-,$calc($0 -1)),32) $chr(9) $remove($1,$chr(35)) $chr(9) $remove($2,$chr(40),$chr(41)) $chr(9) $remove($eval($+($,$0),2),x,$chr(40),$chr(41))
      }

      ; #*/*x * [* file/* *B/min *B/s]
      ; #1/75x  Packet name [1 file/10.82 MB/min 10.00 kB/s]
      var %format = #*/*x *[* file/* *B/min *B/s]
      if (%format iswm $1-) {
        var %gets = [ [ $+($,$calc($0 - 3 )) ] ] [ [ $+($,$calc($0 - 2 )) ] ]
        return [ [ $+($,2-,$calc($0 - 5)) ] ] $chr(9) $remove($gettok($1,1,47),$chr(35)) $chr(9) $gettok($gettok(%gets,1,32),2,47) $gettok($gettok(%gets,2,32),1,47) $chr(9) $remove($gettok($1,2,47),x)
      }

      ;#?* *x «*b» *
      ;#2 0x «202 Mb» packet name
      var %format = *x «*b» *
      if (%format iswm $2-) {
        return $4- $chr(9) $remove($1,$chr(35)) $chr(9) $remove($3,«,») $chr(9) $remove($2,x)
      }
    } 
    if ([#*]* iswm $1-) {
      ;[#*] - * - *B [*x]
      ;[#86] - Packet name- 526MB [0x]
      ; «DEMON» script
      var %format = -* *- *B [*x]
      if (%format iswm $2-) {
        var %gets = [ [ $+($,$0)) ] ]
        return [ [ $+($,3-,$calc($0 -3)) ] ] $chr(9) $remove($1,[,],$chr(35)) $chr(9) [ [ $+($,$calc($0 - 1)) ] ] $chr(9) $remove(%gets,[,],x)
      }

      ; [#*] - [*x/*] *
      ; [#12] - [1x/455.6Mb] [Packet name] - [TS]
      ; KVcd-script  
      var %format = [*x/*] *
      if (%format iswm $3-) {
        return $4- $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($gettok($3,2,47),$chr(93)) $chr(9) $remove($gettok($3,1,47),$chr(91),x)
      }

      ; [#*] (*x|*) - *
      ; [#13] (0x|639.8Mb) - Packet name
      ; ·• P o l a r i s · O n e •·
      var %format = (*x|*) - *
      if (%format iswm $2-) {
        return $4- $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($gettok($2,2,124),$chr(41)) $chr(9) $remove($gettok($2,1,124),$chr(40),x)
      }

      ;[#*] (*|*x) Description..::*
      ;[#26] (1.38GB|0x) Description..::Pack Name::..
      var %format = (*|*x) Description..::*
      if (%format iswm $2-) {
        return $deltok($gettok($3-,2-,58),-1,58) $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($gettok($2,1,124),$chr(40)) $chr(9) $remove($gettok($2,2,124),$chr(41),x)
      }

      ;[#*] (*|*x) - Description:[*]
      ;[#42] (62.8kb|9x) - Description:[Pack name]
      var %format = (*|*x) - Description:[*]
      if (%format iswm $2-) {
        return $right($left($gettok($4-,2-,58),-1),-1) $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($gettok($2,1,124),$chr(40)) $chr(9) $remove($gettok($2,2,124),$chr(41),x)
      }

      ;[#*] (*|*x) .:[*] 
      ;[#4] (697mb|0x) .:[Pack Name]
      var %format = (*|*x) .:[*]
      if (%format iswm $2-) {
        return $left($gettok($3-,2-,91),-1) $chr(9) $remove($1,[,],$chr(35)) $chr(9) $remove($gettok($2,1,124),$chr(40)) $chr(9) $remove($gettok($2,2,124),$chr(41),x)
      }
    }

    ; (*) [*x] - *M* -* 
    ; (02) [317x] - 349M - Packet name
    var %format = (*) [*x] - *M* -*
    if (%format iswm $1-) {
      return $6- $chr(9) $calc($remove($1,$chr(40),$chr(41),$chr(35))) $chr(9) $4 $chr(9) $remove($2,$chr(91),$chr(93),x)
    }

    ; *#?* *x [*?*] * 
    ; *#2 3x [0.5M] Packet name 
    ; T7XDCcT 
    var %format = ?#?* *x [*?*] *
    if (%format iswm $1-) && ($left($1,1) = *) {
      return $4- $chr(9) $remove($1,$chr(35),$chr(42)) $chr(9) $remove($3,[,]) $chr(9) $remove($2,x)
    }

    ;«« [#*] (*x|*) - *
    ;«« [#9] (0x|535.2Mb) - Packet name here
    ;Excursion
    var %format = «« *[#*] (*x|*) - *
    if (%format iswm $1-) {
      return $5- $chr(9) $remove($2,[,],$chr(35)) $chr(9) $remove($gettok($3,2,124),$chr(41)) $chr(9) $remove($gettok($3,1,124),$chr(40),x)
    }

    ;«« [#*] *x*b *
    ;«« [#9] 0x535.2Mb Packet name here
    ;Excursion
    var %format = «« [#*] *x*b*
    if (%format iswm $1-) && (x isin $3) && ($right($gettok($1-,1,160),1) = b) {
      return $iif($gettok($1-,2-,160),$v1,$4-) $chr(9) $remove($2,[,],$chr(35)) $chr(9) $gettok($gettok($3,2,120),1,160) $chr(9) $gettok($3,1,120)
    }
  }

  ;#8: (Description comes here), size: [5,6 megs], Filename comes here.tar
  var %format = #*: *, Size: [* *], *
  if (%format iswm $1-) {
    var %place = $findtok($2-,Size:,1,32)
    return $left($eval($+($,2-,%place),2),-1) -> $eval($+($,$calc(%place + 4),-),2) $chr(9) $remove($1,:,$chr(35)) $chr(9) $gettok($replace($remove($eval($+($,$calc(%place + 2),-,$calc(%place + 3)),2),[,]),$chr(44),$chr(46)),1-2,46)
  }

  ; #?* *?* :: *?*
  ; #1 File Mame.zip :: description
  ; eirc XDCC
  var %format = #?* *?* :: *?*
  if (%format iswm $1-) {
    return $2- $chr(9) $remove($1,$chr(35))
  }

  ; Lists:
  ;

  ; (XDCC) Packs:(8) Trigger:(/msg BG|dowho XDCC list) Sends:(4/4) Queues:(1/25) Record:(1773.5KB/s) Note:(Xdcc bot of #gambler@irc.sony.com) =iroffer=
  ; (XDCC) * Trigger:(*) =iroffer=
  ; Iroffer
  var %format = (XDCC) * Trigger:(*) =iroffer=
  if (%format iswm $1-) {
    tokenize 32 $gettok($gettok($1-,$+($findtok($1-,$wildtok($1-,Trigger:*,1,32),1,32),-),32),2-,47)
    var %check = $gettok($1-,1,41)
    return List %check
  }

  ; [XDCC active] You have access to the following pools: Stellvia, Kyogoni. Use: /ctcp sssr XDCC LIST <poolname> to list XDCC Files for one XDCC pool. - SysReset 2.50
  ; [XDCC Active] * pools:* Use: * - SysReset *
  ; SysReset 2.50
  var %format = [XDCC Active] * pools:* Use: * - SysReset * 
  if (%format iswm $1-) {
    var %pools = $gettok($10-,1,46)
    var %check = $gettok($gettok($1-,$+($findtok($1-,$wildtok($1-,Use:*,1,32),1,32),-),32),2-,47)
    var %check = $gettok(%check,1,62)
    var %num = $numtok(%pools,32)
    var %a = 1
    while (%a <= %num) {
      addPacket $nick $+(List,%a) $replace(%check,<poolname,$iif(%a < %num,$left($gettok(%pools,%a,32),-1),$gettok(%pools,%a,32)))
      inc %a
    }
  }

  ; [XDCC Active] - Sends:[1/1] - Queues:[5/10] - Bytes Sent:[8.24GB] - Files Sent:[89] - List Trigger:[/ctcp Vtx-Nf2003 XDCC LIST DVD-RIPS!] - SysReset 2.53
  ; [XDCC Active] * Trigger:[*] - SysReset *
  ; SysReset 2.53
  var %format = [XDCC Active] * Trigger:[*] - SysReset *
  if (%format iswm $1-) {
    tokenize 32 $gettok($gettok($1-,$+($findtok($1-,$wildtok($1-,Trigger:*,1,32),1,32),-),32),2-,47)
    var %check = $gettok($1-,$+(1,-,$calc(1 + $regex($nick,$chr(93)) )),93)
    return List %check
  }
}
Alias -l XUsage {
  tokenize 32 $strip($1-)

  ;SysReset 2.53
  ; Usage: /ctcp Nick XDCC GET Blah!-Blah #<Pack number>
  if ($2 = Usage:) && (($3 = /ctcp) || ($3 = /msg)) {
    var %usage = $gettok($3-,$+(1-,$calc($numtok($3-,35) -1)),35)
    goto end
  }

  ;invision
  ; Type:/ctcp Nick XDCC Send #<Pack number> —I-n-v-i-s-i-o-n—
  if (Type: isin $2) && ((/ctcp isin $2-3) || (/msg isin $2-3)) {
    var %usage = $gettok($gettok($2-,2,58),$+(1-,$calc($numtok($3-,35) -1)),35)
    goto end
  }

  ; Every line that goes something like "To Request/Get a file...."
  var %check1 = *To request* file* type* $+(*,$chr(35),*)
  var %check2 = *To get* file* type* $+(*,$chr(35),*)
  if (%check1 iswm $1-) || (%check2 iswm $1-) {
    var %start = $+($,$calc($findtok($1-,$matchtok($1-,type,1,32),1,32) +1),-)
    var %end = $calc($findtok($1-,$matchtok($1-,$chr(35),$calc($numtok($1-,35) -1),32),1,32) -1)
    var %usage = $remove( $right($gettok($1-,$+($remove(%start,$),%end),32),-1) ,")
    if (/ != $left(%usage,1)) var %usage = $+(/.,%usage)
    goto end
  }

  ;excursion
  ;«« Syntax: /DCCALLOW +Nick And /CTCP Nick XDCC SEND #<Pack number>
  if ($3 = Syntax:) && (#<Pack number> isin $1-) {
    if (And isin $1-) {
      var %usage = $gettok($gettok($2-,$+($calc($findtok($2-,and,1,32) +1),-,$0),32),1,35)
      goto end
    }
    else {
      var %usage = $gettok($5-,$+(1-,$calc($numtok($3-,35) -1)),35)
      goto end
    }
  }

  ;Nightvision 2.2.3
  ; »» receive file: /ctcp BrooklynStarr XDCC send #<pack number> 
  if ($2-4 = »» receive file:) && (#<Pack number> isin $1-) {
    var %usage = $gettok($5-,$+(1-,$calc($numtok($3-,35) -1)),35)
    goto end
  }

  ;T7XDCCT
  ;* T7XDCCT SERVING - To request a file type: "/msg ]3[X|1010 XDCC send #x" *
  ;** T7XDCcT To request a file use:"/msg [3XDCc]122204 XDCC send #x" **
  if (T7XDCCT isin $1-) && (To request a file isin $1-) {
    var %usage = $gettok($gettok($gettok($1-,-6-,32),2,34),$+(1-,$calc($numtok($3-,35) -1)),35)
    goto end
  }

  ; «Type:»[/ctcp B-XDCC-Frost XDCC Send #<pack number>]
  if («Type:» isin $1-) && (#<pack number> isin $1-) {
    var %usage $gettok($gettok($1-,2-,91),$+(1-,$calc($numtok($3-,35) -1)),35)
  }

  if (!%usage) return

  :end
  var %usage = $replace(%usage,/msg,/.msg,/ctcp,/.ctcp)
  hadd -m $+(XDCCb-,$gettok($network,1,46)) $+($nick,$chr(255),Usage) %usage
  return yeap
}
Alias -l fpack {
  tokenize 32 $strip($1-)
  var %network = $gettok($network,1,46)
  var %check = nope

  ; [Fserve Active] - Triggers:[/ctcp EMP-FS102 Anime & /ctcp EMP-FS102 Warez] - Users:[1/5] - Sends:[0/1] - Queues:[0/10] - Record CPS:[43.1kB/s by insanedesio] - Bytes Sent:[700.6MB] - Files Sent:[51] - Accesses:[42] - Upload Speed:[0B/s] - Current Bandwidth:[0B/s]
  ; SysReset 2.53
  if ([Fserve Active] isin $1-5) && ((Trigger:[ isin $1-) || (Triggers:[ isin $1-)) {
    var %triggers = $gettok($gettok($gettok($1-,2-,93),1-,32),2-,91)
    Xdccb-Fservtrigger 38 91 93 %triggers
    return yeap
  }

  ; [Fserve] Triggers:[/ctcp Max-sama 1 & /ctcp Max-sama Detective Conan & /ctcp Max-sama [ASS] Gun Frontier]  Sends:[1/2] Queues:[1/10] On server:[Anime] Note:[I using BT, so... it's slow.] «~{Polaris CTCP}~»
  ; Polaris
  if (*[Fserve] Trigger*:[* iswm $1-2) {
    var %t-end = $findtok($1-,$wildtok($1-,sends:*,1,32),1,32)
    var %triggers = $gettok($gettok($gettok($eval($+($,1-,$calc(%t-end -1)),2),2-,93),1-,32),2-,91)
    var %topic = $eval($+($,%t-end,-),2) 
    Xdccb-Fservtrigger 38 91 255 %triggers
    if (%topic) hadd $+(XDCCb-,%network) $+($nick,$chr(255),File ServT) %topic
    return yeap
  } 

  if («« Server »» = $1-3) {
    ;«« Server »» Trigger-[/ctcp john_316 !pistons]- Used-[19619 cps]- Next.Send-[00:28:13]- Stole-[85.59Gb in 442 files]- Min.CPS-[10]- Record-[29.3Kb/s by chiefsmackahoe]- Sends-[1/1]- Queues-[2/150]- Entered-[1717 times]- Note-[jonjons movies]- « ?ª??®§??? »
    ;Excursion
    if ((*Trigger?[* iswm $1-) || (*Triggers?[* iswm $1-)) {
      var %triggers = $gettok($1-,2-,91)
      Xdccb-Fservtrigger 238 91 93 %triggers
      return yeap
    }

    ;«« Server »» Trigger<!Lots-more-mp3z> Used<0 cps> Next.Send<Open> Stole<1.61Gb in 264 files> Record<14.4Kb/s by brio> Sends<0/4> Queues<0/4> Entered<355 times> Note<Type Trigger To Get On Fserve> « ?ª??®§??? »
    ;Excursion
    if ((*Trigger<* iswm $1-) || (*Triggers<* iswm $1-)) {
      var %triggers = $gettok($1-,2-,60)
      Xdccb-Fservtrigger 238 60 62 %triggers
      return yeap
    }

    ;«« Server »» Trigger-{itha innu muthal}- Used-{42965 cps}- Next.Send-{05:36:28}-Stole-{592.22Gb in 1663 files}- Record-{44.9Kb/s by pks}- Sends-{2/2}- Queues-{2/10}-Entered-{7592 times}- Note-{!!!! NEW !!!! AKALE !! VAJRAM !! JALOLSAVAM !! CHATHIKKATHACHANDU !! Chakram !! Runway !!! Salperu ramankutty !!}- « ?ª??®§?on »
    ;Excursion
    if (($+(*Trigger,?,$chr(123),*) iswm $1-) || ($+(*Triggers,?,$chr(123),*) iswm $1-)) {
      var %triggers = $gettok($1-,2-,123)
      Xdccb-Fservtrigger 238 123 125 %triggers
      return yeap
    }
  }
  if (*File Server* Online* iswm $1-3) {
    ; File Server Online Triggers:«/ctcp TMD-shorty †mÐ-möVî€z-宀-|{öö£» Sends:«1/1» Queues:«9/10» Accessed:«2458 times» Online:«0/4» RCPS:«29524cps by Hakubai» Served:«65601113132B in 451 files» Current BW:«0cps» AQT:«2hrs 35mins» Serving:«49 files» —I-n-v-i-s-i-o-n— 
    ; invision
    if (*Triggers:«* iswm $1-) {
      var %triggers = $right($gettok($gettok($1-,1,187),4-,32),-10)
      var %topic = $gettok($1-,2-,187)
      var %a = 1
      while ($gettok(%triggers,%a,149)) { 
        var %pack = $v1
        addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %a File Server %pack 
        inc %a
      }
      if (%a > 0) hadd $+(XDCCb-,%network) $+($nick,$chr(255),File ServT) %topic
      return yeap
    }

    ; (file server online) Triggers:[/ctcp [ow]MEMFIS MemfisMovz & /ctcp [ow]MEMFIS MemfisGamez & /ctcp [ow]MEMFIS MusicAlbums & /ctcp [ow]MEMFIS MemfisAppz] snagged:[11.47 gb in 195 files]  record:[51.2 kb/s by violated1] sends:[1/1] queues:[18/75] accessed:[775 times] on server:[The best of New Gamez, Movies, Music, and Appz!]
    ; Polaris
    if (*Trigger*:[* iswm $4-8) {
      var %triggers = $gettok($gettok($1-,$+($findtok($1-,$wildtok($1-,Trigger*,1,32),1,32),-),32),2-,91)
      Xdccb-Fservtrigger 38 91 93 %triggers
      return yeap
    }

    ;(File Servers Online) Trigger: /ctcp TMD-Alchemist Chemistry. Snagged: 19.80Gb in 81 files. Record CPS: 58.0Kb/s by Phoenix2001. Online: 0/5. Sends: 2/2. Queues: 33/50. Accessed: 1185 times. Note: Its on now... The Depot is Open. «~{Polaris SE}~»
    ;Polaris SE
    if ($+(*Trigger*: *,*) iswm $4-8) && (Polaris isin $1-) {
      var %triggers = $gettok($1-,$+($calc($findtok($1-,$wildtok($1-,*Trigger*,1,32),1,32) +1),-),32)
      Xdccb-Fservtrigger 38 58 46 %triggers
      return yeap
    }
  }
  ; «« File Server »» Triggers«/ctcp WrEcKa let me peep ya HipHop Pics & wallpaper! • /ctcp WrEcKa hook me up witcha Albums & Singles!»| Sends«1/1»| Queues«70/200 [304.2MB]»| Online«0/4»| Record«62.4 Kbs by danked»| Served«27.45GB in 12134 files»| FServe Note: -= *'Singles'*'Wallpaper'*Albums'*News*''` =-  • ®?p ??d
  if («« File Server »» = $1-4) && ((*Trigger«* iswm $1-) || (*Triggers«* iswm $1-)) {
    var %triggers = $gettok($3-,2-,171)
    Xdccb-Fservtrigger 149 171 187 %triggers
    return yeap
  }

  ;(File Servers Online) Running:(6 Days) Trigger:(/ctcp GA-Bullfrog The PS2 Pad) Snagged:(141.38Gb in 3314 files)  Record:(28.6Kb/s by cell975) Sends:(1/1) Queues:(21/99) Accessed:(5155 times) On server:(Full NTSC DVDs) ·• P o l a r i s · O n e •·
  ;Polaris
  if ($+($chr(40),File Server*,$chr(41),*) iswm $1-3) && ($+(*Trigger*:,$chr(40),*) iswm $3-8) {
    var %triggers = $gettok($gettok($1-,$+($findtok($1-,$wildtok($1-,Trigger*,1,32),1,32),-),32),2-,40)
    Xdccb-Fservtrigger 38 40 41 %triggers
    return yeap
  }

  ;( File Server Online ) ( Up: 1wk 6days 9mins ) ( Trigger: /ctcp digiloco !movies ) ( Leeched: 103gb in 249 files ) ( Fastest: 26.3kb/s by AngShadow ) ( Sending: 2/1 ) ( Waiting: 11/15 ) ( New: DVD - Day After Tomorrow, Eternal Sunshine of the Spotless Mind, Immortel, The Deviants, Ladykillers, Van He
  if ($+($chr(40),*File Server*,$chr(41)) iswm $1-5) && (*Trigger*:* iswm $4-) {
    var %triggers = $gettok($1-,$+($calc($findtok($1-,$wildtok($1-,*Trigger*:*,1,32),1,32) +1),-),32)
    Xdccb-Fservtrigger 38 40 41 %triggers
    return yeap
  }

  ; (FServe Online) Triggers: /ctcp ancom !enterprise & /ctcp ancom !Movies. Sends: 1/1. Queues: 9/10. Priority Queues: 2/10. Bandwidth: 12.4Kb/S. Accessed: 6409. Note: My ISP has Problems, pls be patient and stay in channel or your queues will be deleted. New: Shrek-2,The girl next door, Spiderman2, Spartan, The last samurai, The fighting temptations, Ente
  if ($+($chr(40),FServe* Online,$chr(41),*) iswm $1-3) && (*Trigger*:* iswm $3-8) {
    var %triggers = $gettok($1-,$+($calc($findtok($1-,$wildtok($1-,*Trigger*:*,1,32),1,32) +1),-),32)
    Xdccb-Fservtrigger 38 40 46 %triggers
    return yeap
  }

  ; ~{Fserve}~ Trigger:~{/ctcp WG-666 shit to download!!!}~ Online:~{0/5}~ Sends:~{2/2}~ Queues:~{1/30}~ Sent:~{35.8 GB in 387 transfers}~ Record:~{15.0 KBPS}~ Average:~{10.6 KBPS}~ Desc:~{Want to become a server? Then join #warez-helpdesk!! Leech & Enjoy!!}~ ~{Garnaxbot f1.1.0}~
  ; Garnaxbot
  if (~{Fserve}~ Trigger:~ isin $1-3) {
    addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port 1 File Server $gettok($gettok($1-,3-,123),1,125)
    return yeap
  }

  ;[Fileserver Online] Running:[2 days] Trigger:[/ctcp Brat !BratStuff] Snagged:[26.16 gb in 65 files]
  if ([Fileserver Online] = $1-2) && (Trigger:[ isin $1-) {
    var %triggers = $gettok($gettok($1-,3-,93),2-,91)
    Xdccb-Fservtrigger 38 91 93 %triggers
    return yeap
  }

  ; •·File Server Online·• Triggers..::/ctcp Ninja-Samwray stuff & /ctcp Ninja-Samwray mp3 & /ctcp Ninja-Samwray img::.. Upstream..::7.49kb/s::.. Bandwidth..::7.49kb/s::.. .•«continued»•.
  if (•·File Server Online·• = $1-4) && ((Trigger.. isin $1-) || (Triggers.. isin $1-)) {
    var %triggers = $gettok($1-,$+($calc($findtok($1-,$wildtok($1-,*Trigger*,1,58),1,58) +1),-),58)
    Xdccb-Fservtrigger 38 58 58 %triggers
    return yeap
  }
}
Alias -l ftppack {
  tokenize 32 $strip($1-)
  var %network = $gettok($network,1,46)
  var %login,%pass,%address,%Port

  ; «« FTP Up »» Address~[81.82.57.68]~ Port~[6969]~ l/p~[dancetrance : mp3zz]~ Max.Users~[1]~ Speed~[Cable]~ Note~[only the Best music. genre: dance / trance]~ « ?ª??®§??? »
  ;Excursion
  if («« FTP Up »» isin $1-4) && (Address isin $1-) && (l/p isin $1-) {
    Var %login =  $gettok($gettok($1-,4,91),1,32) 
    var %pass = $gettok($gettok($1-,3,93),-1,32)
    var %address = $gettok($gettok($1-,1,93),-1,91)
    var %Port = $gettok($gettok($1-,2,93),-1,91)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $gettok($1-,4-,93)
    goto end
  }

  ; .:] (FTP Online) ZM4573R [IP: 80.163.76.234] [Port: 21] [Login: leech] [Pass: original] [Note: Do not Hammer! Mostly music.] (ak FTP-Ad) [:.
  if (.:] *FTP Online* iswm $1-4) && (IP: isin $1-) && (login: isin $1-) {
    Var %login = $gettok($gettok($1-,4,93),-1,32) 
    var %pass = $gettok($gettok($1-,5,93),-1,32)
    var %address = $gettok($gettok($1-,2,93),-1,32)
    var %Port = $gettok($gettok($1-,3,93),-1,32)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $gettok($1-,6-,93)
    goto end
  }

  ; FTP ONLiNE! [ xb0z.servebeer.com:65456 ][ l/p: leech/leech :: look/look :: upload/upload ][ Total Users: 3 of 3 ][ Current DL BW: 51 k/s :: UL BW: 0 k/s :: Total BW: 51 k/s ][ Set retries to 120s and stay in chan! ][ ..:: ATRAGoN ::.. ]
  ; Atragon
  if ($1-2 = FTP ONLiNE!) && (l/p isin $1-) && (][ isin $1-) {
    Var %login = $gettok($7,1,47) 
    var %pass = $gettok($7,2,47)
    var %address = $gettok($4,1,58)
    var %Port = $gettok($4,2,58)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $gettok($1-,3-,93)
    goto end
  }

  ; FTP Online  Dandos.no-ip.info:444 l/p:warez/request - Other Account's = (look/look) (upload/upload)  Max users:«1 user» Bandwidth:«DSL» MOTD:«Stay In Channel - Dont Hammer» —I-n-v-i-s-i-o-n—
  ;invision
  if (FTP Online = $1-2) && (l/p: isin $1-) {
    Var %login = $gettok($gettok($4,2,58),1,47) 
    var %pass = $gettok($gettok($4,2,58),2,47)
    var %address = $gettok($3,1,58)
    var %Port = $gettok($3,2,58)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $5-
    goto end
  }

  ;  FTP Server Online!  xplicit.hopto.org:21 l/p:originalwarez/booba  Max users:«2 users» Bandwidth:«3mbit» MOTD:«NBA LIVE 2004, Call of Duty, FIFA 2004 Simpsons Hit & Run, 1000s of mp3, movies...» —I-n-v-i-s-i-o-n— 
  ; invision
  if (FTP Server Online! = $1-3) && (l/p: isin $1-) {
    Var %login = $gettok($gettok($5,2,58),1,47) 
    var %pass = $gettok($gettok($5,2,58),2,47)
    var %address = $gettok($4,1,58)
    var %Port = $gettok($4,2,58)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $6-
    goto end
  }

  ;•·FTP Online·• Address..::freeiso.myftp.org::.. Port..::4545::.. Login..::free::.. Pass..::iso::.. Speed..::DSL::.. Max Users..::1::.. Note..::to share is to care...to take a look use account: look/look [retries at 120 sec][hammer and be banned][do not msg me about bans][you are responsible for what you leech from ftp]::.. .•«U
  if (•·FTP Online·• isin $1-2) && (Login. isin $1-) {
    Var %login = $gettok($5,2,58) 
    var %pass = $gettok($6,2,58)
    var %address = $gettok($3,2,58)
    var %Port = $gettok($4,2,58)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $7-
  }
  ;=(FTP Online)= WeeDSm0ker Host «68.194.68.217» Port «6060» Login «free» Pass «shitz» Note «CAMERON-DIAZ SEX FILM-final , PLUS MUSIC ===» WaNt To JoInCoMe To #xdcc-recruits «==== TELLS YOUR FRIENDS #XDCC ON ELITE» =(ak FTP-Ad)=
  if ($1-2 == =(FTP Online)=) && (Host isin $1-) && (Login isin $1-) {
    var %login = $gettok($gettok($1-,4,171),1,187)
    var %pass = $gettok($gettok($1-,5,171),1,187)
    var %address = $gettok($gettok($1-,2,171),1,187)
    var %port = $gettok($gettok($1-,5,171),1,187)
    hadd -m $+(XDCCb-,%network) $+($nick,$chr(255),FTPm) $gettok($1-,5,187)
  }
  :end
  if (%address) && (%login) && (%pass) && (%port) {
    if (*your*nick* iswm %login) var %login = $me
    if (*your*nick* iswm %pass) var %pass = $me
    var %pack = FTP Site: $+(%login,:,%pass,@,%address,:,%port)
    addPacket $nick $Serverip $iif($chan,$chan,$comchan($nick,1)) $port %pack
    return yeap
  }
}
Alias -l Xdccdata {
  tokenize 32 $strip($1-))
  var %network = $gettok($network,1,46)
  var %hash = $+(XDCCb-,%network)
  var %maxcps = $hget(%hash,$+($nick,$chr(255),MaxCps))
  var %maxcps = $Xdccb-Calcsize(%maxcps)
  if ($1 = **) && (($3-4 = packs **) || ($3-4 = pack **)) {
    if ($5 != 0) hadd -m %hash $+($nick,$chr(255),Queue) Free
    else hadd -m %hash $+($nick,$chr(255),Queue) $left($11,-1)
    if (Record: == $eval($+($,$calc($0 -1)),2)) {
      var %new-maxcps $eval($+($,$0),2)
      if (%maxcps < $Xdccb-Calcsize(%new-maxcps)) hadd -m %hash $+($nick,$chr(255),MaxCps) %new-maxcps
    }
    return yeap
  }
  if (** Bandwidth Usage ** = $1-4) && (Record: isin $5-) {
    var %new-maxcps $eval($+($,$0),2)
    if (%maxcps < $Xdccb-Calcsize(%new-maxcps)) hadd -m %hash $+($nick,$chr(255),MaxCps) %new-maxcps
    return yeap
  }
  if (XDCC Server Active = $1-3) && (Sends:«* iswm $4) && (Queues:«* iswm $5) {
    var %place = $gettok($4,2,171)
    if ($gettok(%place,1,47) < $left($gettok(%place,2,47),-1)) hadd -m %hash $+($nick,$chr(255),Queue) Free
    else hadd -m %hash $+($nick,$chr(255),Queue) $gettok($gettok($5,2,171),1,187)
    return yeap
  }
  if (Current BW:«* iswm $1-) && (Record CPS:«* iswm $4-5) {
    var %new-maxcps = $gettok($5,2,171) $6
    if (%maxcps < $Xdccb-Calcsize(%new-maxcps)) hadd -m %hash $+($nick,$chr(255),MaxCps) %new-maxcps
    return yeap
  }

  if ($1-2 = [XDCC Active]) && (Sends:* iswm $4) {
    if ($gettok($gettok($4,2,91),1,47) < $left($gettok($gettok($4,2,91),2,47),-1)) hadd -m %hash $+($nick,$chr(255),Queue) Free
    else hadd -m %hash $+($nick,$chr(255),Queue) $left($gettok($6,2,91),-1)
    return yeap
    ;No max cps
  }
  if ($1-3 = «« XDCC »») && (sends~[* iswm $4) && (Queues~[* iswm $7) {
    if ($gettok($4,2,91) < $gettok($6,1,93)) hadd -m %hash $+($nick,$chr(255),Queue) Free
    else hadd -m %hash $+($nick,$chr(255),Queue) $+($gettok($7,2,91),/,$gettok($9,1,93))
    return yeap
    ;No max cps 
  }
  return
}