All pastes #127542 Raw Edit

Mine

public text v1 · immutable
·published 2006-08-12 09:00 UTC
rendered paste body
;================================================
;  xSeen
;  Version 3.7
;  Written by: xDaeMoN
;  Email: xdaemon@xdaemon.us
;  07.22.06
;
;================================================


;####################### EVENTS #######################

On *:START: {
  if ( !$hget(xSeen) ) hmake xSeen 100
  if ($isfile($_seen.log)) hload xSeen $_seen.log
  unset %xseenflood*
}

on *:CONNECT: { 
  .enable #xSeen.load
  .version
  if ( !$ini($_seen.file,$network,0) ) seen.default $network
  if ( $readini($_seen.file,settings,auto.delete) ) && ( !$timer(xSeen.autodelete) ) .timerxSeen.autodelete -o 0 $calc($readini($_seen.file,settings,auto.delete.every) * 3600) seen.delold ALL $readini($_seen.file,settings,auto.delete.old) 1
  .timerxSeen.disable.load 1 5 .disable #xSeen.load
}

On *:EXIT: if ( $hget(xSeen) ) xseen.save

On *:DISCONNECT:  if ( $hget(xSeen) ) xseen.save

on *:LOAD: {
  if ( $version >= 6.16 ) xSeen.init
  else { 
    echo -a 04» » Sorry, this addon requires mIRC 6.16. Please get the latest version from www.mirc.com
    .unload -rs $+(",$script,")
  }
}

on *:UNLOAD: {
  unset %xseen*
  .hfree xSeen
  if ($isfile($_seen.file)) .remove $_seen.file
  if ($isfile($_seen.log)) .remove $_seen.log
  .timerxSeen* off
  if ( $window(@seenfilter) ) window -c @seenfilter
  echo -a 08,01 » »07,01 xSeen v $+ $seen.version Unloaded. 
}

ON *:TEXT:*:#: {
  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) {
    if ( $readini($_seen.file,settings,events.texts) )  xseen.add $+(seen:,$network,:,$address($nick,5)) text $ctime $chan
    if ( !$istok($readini($_seen.file,$network,chans.notrigger),$chan,44) ) {
      var %xt = $readini($_seen.file,$network,trigger), %xf = $seen.format($network,$chan)
      if ($1 == $+(%xt,seen)) && ( $$2 ) {
        floodcheck $network $wildsite
        if ( $2 == $me ) %xf $seenmsg.me($nick)
        elseif ( $2 == $nick ) %xf $seenmsg.self($nick)
        elseif ($2 ison $chan) %xf $seenmsg.here($nick,$2)
        else %xf $seenpar($nick,$+(seen:,$iif($readini($_seen.file,settings,multiserver),*,$network),:,$2),$+(nseen:,$network,:,$2,:,$nick) $nick $ctime $chan $address)
      }
      elseif ( $1 == $+(%xt,seenstats) ) { 
        floodcheck $network $wildsite
        %xf $seen.stats($nick,$network)
      }
    }
  }
}


ON ^*:OPEN:?:*: {
  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,$network,private) ) {
    if ( $readini($_seen.file,settings,events.querys) )  xseen.add $+(seen:,$network,:,$address($nick,5)) query $ctime
    var %xt = $readini($_seen.file,$network,trigger), %xf = $seen.format($network)
    if ( $1 == $+(%xt,seen) ) {
      if ( $2 ) {
        floodcheck $network $wildsite
        if ( $2 == $me ) %xf $seenmsg.me($nick)
        elseif ( $2 == $nick ) %xf $seenmsg.self($nick)
        else %xf $seenpar($nick,$+(seen:,$network,:,$2),$+(nseen:,$network,:,$2,:,$nick) $nick $ctime private $address)
      }
      else %xf ** Syntax: $+(%xf,seen) <NICK>
      halt    
    }
    elseif ( $1 == $+(%xt,seenstats) ) { 
      floodcheck $network $wildsite
      %xf $seen.stats($nick,$network)
      halt
    }
  }
}

ON *:ACTION:*:#: if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.actions) ) xseen.add $+(seen:,$network,:,$address($nick,5)) act $ctime $chan

ON *:QUIT: if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.quits) ) xseen.add $+(seen:,$network,:,$address($nick,5)) quit $ctime $comchan($nick,1) $1-

on *:PART:#:  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.parts) )  xseen.add $+(seen:,$network,:,$address($nick,5)) part $ctime $chan $1-

on *:JOIN:#: {
  if ( $nick == $me ) && ( $readini($_seen.file,settings,add.nicks.onjoin) ) {
    .enable #xsWHO
    who #
  }
  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) {
    if ( $readini($_seen.file,settings,events.joins) )  xseen.add $+(seen:,$network,:,$address($nick,5)) join $ctime $chan $1-
    if ( !$istok($readini($_seen.file,$network,chans.nonotify),$chan,44) ) $+(.timerxSeennseen.,$cid,.,$chan) 1 2 nseen $+($network,:,$nick) $chan
  }
}

ON *:NICK: {
  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) {
    if ( $readini($_seen.file,settings,events.nickchange) )  xseen.add $+(seen:,$network,:,$nick,!,$address) nick $ctime $comchan($newnick,1) $newnick
    var %c = 1, %d
    while $comchan($newnick,%c) {
      %d = $v1
      if ( !$istok($readini($_seen.file,$network,chans.nonotify),%d,44) ) $+(.timerxSeennseen.,$cid,.,%d) 1 2 nseen $+($network,:,$newnick) %d
      inc %c
    }
  }
}

ON *:KICK:#: {
  if ( $readini($_seen.file,$network,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.kicks) ) {
    xseen.add $+(seen:,$network,:,$address($nick,5)) kicking $ctime $chan $knick $1-
    xseen.add $+(seen:,$network,:,$address($knick,5)) kick $ctime $chan $nick $1-
  }
}

;####################### ALIASES #######################

alias -l xseen.add { 
  if ( $hfind(xSeen,$+($deltok($1,2,33),!*),1,w) ) { 
    if ( $v1 != $1 ) hdel xSeen $v1
  }
  hadd -m xSeen $1-
  xseen.save
}

alias -l _writeini { writeini -n $_seen.file $1- }

alias -l nseen {
  var %n3 = $1, %n = $hfind(xSeen,$+(nseen:,$1,:,*),0,w), %n2, %n4 = 1, %chan = $2, %t = 0
  while %n { 
    %n2 = $hfind(xSeen,$+(nseen:,%n3,:,*),%n,w)
    tokenize 32 $hget(xSeen,%n2)
    inc %t
    $+(.timerxSeennotify,.,$gettok(%n3,2,58),.,%t) 1 $calc(%t * 2) $nseen.format($network) $gettok(%n3,2,58) $seenmsg.nseen($1,$4,$3,$!seentime( $2 )) $5
    hdel xSeen %n2
    inc %n4
    dec %n
  }
}

alias -l seenpar {
  if ( $count($2,*,?) ) { 
    if ( !$readini($_seen.file,settings,wildcards) ) return $seenmsg.nowildcards($1)
    elseif ( !$count($gettok($2,3,58),*) ) return $seenparse2($1,$+($2,!*@*),$iif($3,$3-)) 
    else return $seenparse2($1,$2,$iif($3,$3-)) 
  }
  if ( $len($gettok($2,3,58)) > $readini($_seen.file,$gettok($2,2,58),nicklen) ) return $seenmsg.longnick($1)
  elseif ( $readini($_seen.file,settings,smart) ) return $seenparse3($1,$2,$3-)
  else return $seenparse($1,$2,$3-)
}

alias -l seenparse {
  ;last data parsing
  var %nick = $1
  tokenize 32 $2-
  var %y = $hfind(xSeen,$+($1,!*),1,w), %x = $hget(xSeen,%y), %n = $deltok($gettok(%y,3,58),2,33), %m = $gettok(%y,2,33), %sl = $iif(($gettok(%y,2,58) != $iif($dialog(xSeen),$did(xSeen,77),$network)),$gettok(%y,2,58))
  if (!%x) return $seenmsg.notseen(%nick,$deltok($gettok($1,3,58),2,32))
  if ( %n == $me ) return $seenmsg.me(%nick)
  if ( %nick == $gettok($1,3,58) ) return $seenmsg.self(%nick)
  if ( %n ison $gettok($2-,4,32) ) return $seenmsg.here(%nick,%n)
  if ( $2 ) && ( $readini($_seen.file,$gettok(%y,2,58),notify) ) { 
    xseen.add $reptok($2-,$gettok($2,2,58),$gettok(%y,2,58),58) $+([,$gettok($2,2,58),])
  }
  tokenize 32 %x
  if ($1 == text) return $seenmsg.text(%nick,%n ,%m,$3,$seentime($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
  if ($1 == act) return $seenmsg.act(%nick,%n,%m,$3,$seentime($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
  if ($1 == quit) return $seenmsg.quit(%nick,%n,%m,$3,$seentime($2),$+($chr(40),$4-,$chr(41))) $iif(%sl,$+([,%sl,]))
  if ($1 == part) return $seenmsg.part(%nick,%n,%m,$3,$seentime($2),$+($chr(40),$4-,$chr(41))) $iif(%sl,$+([,%sl,]))
  if ($1 == join) return $seenmsg.join(%nick,%n,%m,$3,$seentime($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
  if ($1 == nick) return $seenmsg.nick(%nick,%n,%m,$3,$4,$seentime($2),$seen.onchan($4,$3)) $iif(%sl,$+([,%sl,]))
  if ($1 == kicking) return $seenmsg.kicking(%nick,%n,%m,$4,$3,$seentime($2),$+($5-,.),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
  if ($1 == kick) return $seenmsg.kick(%nick,%n,%m,$3,$4,$seentime($2),$5-) $iif(%sl,$+([,%sl,]))
  if ($1 == load) return $seenmsg.load(%nick,%n,%m,$seentime($2),$3) $iif(%sl,$+([,%sl,]))
  if ($1 == joined) return $seenmsg.joined(%nick,%n,%m,$seentime($2),$3) $iif(%sl,$+([,%sl,]))
  if ($1 == query) return $seenmsg.query(%nick,%n,%m,$seentime($2)) $iif(%sl,$+([,%sl,]))
}

alias -l seenparse2 {
  ;with wildcard parsing
  var %nick = $1
  tokenize 32 $2-
  var %s3 = $1, %s = $hfind(xSeen,$1,0,w), %s2 = $deltok($hfind(xSeen,$1,1,w),2,33)
  if ( !%s ) return $seenmsg.nomatch(%nick)
  elseif ( %s == 1 ) return $seenparse(%nick,%s2,$iif($count($2-,*,?),$replace($2-,$deltok($gettok($gettok($2-,1,32),3-,58),-1,58),$gettok(%s2,3,58)),$2-) )
  elseif ( %s < 100 ) { 
    return $seenparse.filter(%nick,$+(%s,:,%s3),$2-)
  }
  else return $seenmsg.manymatch(%nick,%s)
}

alias -l seenparse3 {
  ;smart seen parsing
  var %nick = $1
  tokenize 32 $2-
  var %g5 = $1-, %r = $hfind(xSeen,$+($1,!*),1,w), %g3 = $+($gettok(%r,1-2,58),:,$+(*!,$deltok($gettok(%r,2-,33),2,64),@*))
  var %g = $hfind(xSeen,%g3,0,w)
  if ( %g == 1 ) || ( !%r ) return $seenparse(%nick,%g5)
  elseif ( %g < 100 ) { 
    return $seenparse.filter(%nick,$+(%g,:,%g3),$2-)
  }
  else return $seenmsg.manymatch(%nick,%g)
}

alias -l seenparse.filter {
  var %nick = $1
  tokenize 32 $2-
  var %j = $gettok($1,1,58), %j3 = $deltok($gettok($1,2-,58),2,32), %fwin = @seenfilter, %j2, %j9 = 0, %j4, %nnick, %snet = $gettok($1,3,58)
  window -hn %fwin
  clear %fwin
  while %j {
    %j2 = $hfind(xSeen,%j3,%j,w)
    aline %fwin $deltok($gettok(%j2,3,58),2,33) $gettok($hget(xSeen,%j2),2,32)
    dec %j
    inc %j9
  }
  filter -cteuww 2 32 %fwin %fwin
  var %k = 1, %k1, %sp
  while (%k <= 5) && ($line(%fwin,%k)) {
    %k1 = $addtok(%k1,$gettok($v1,1,32),32)
    inc %k
  }
  %j4 = $gettok(%k1,1,32)
  %nnick = $deltok($gettok($2,3-,58),-1,58)
  %sp = $seenparse(%nick,$+(seen:,%snet,:,%j4),$iif($2,$iif(!$count(%nnick,*,?),$reptok($2-,%nnick,%j4,1,58),$replace($2-,%nnick,%j4)))) 
  if (%j9 >= 2) return $seenmsg.found(%j9,$iif(%j9 >= 5,5,$v1),%k1,%sp) 
  else return %sp 
}

alias seen { 
  if ( $1 ) echo $colour(info) -a *** $seenpar($me,$+(seen:,$iif($readini($_seen.file,settings,multiserver),*,$network),:,$1))
  else echo $colour(info) -a * /seen: insufficient parameters
}

alias -l seen.version return 3.7

alias -l _seen.file return $+(",$scriptdirxSeen.ini,")

alias -l _seen.log return $+(",$scriptdirxSeen.dat,")

alias -l _seen.bak return $+(",$scriptdirxSeen.bak,")

alias -l seentime { 
  var %d = $duration($calc($ctime - $1))
  return $replace(%d,wk,$st2(week),day,$st2(day),hr,$st2(hour),min,$st2(minute),sec,$st2(second))
}

alias -l st2 return $+($chr(160),$1)

alias -l seen.delold {
  var %d = $iif($1 == ALL,$hget(xSeen,0).item,$hfind(xSeen,$+(seen:,$1,:,*),0,w)), %e = 0, %eh = $2
  if ( %eh ) { 
    if ( %eh isnum ) {
      if ( %eh > 1 ) {
        var %f = $calc(86400 * %eh)
        while %d {
          if ( $calc($ctime - $gettok($iif($1 == ALL,$hget(xSeen,%d).data,$hget(xSeen,$hfind(xSeen,$+(seen:,$1,*),%d,w))),2,32)) > %f ) {
            inc %e
            hdel xSeen $iif($1 == ALL,$hget(xSeen,%d).item,$hfind(xSeen,$+(seen:,$1,:,*),%d,w))
          }
          dec %d
        }
        if ( !$3 ) .timerxSeen.deletedentries 1 0 _blankinput Deleted %e seen entries $iif($1 != ALL,for $1)
      }
      else .timerxSeenerrornumlow 1 0 _blankinputerror Number should be higher than 1.
    }
    else .timerxSeenerrornotnum 1 0 _blankinputerror %eh is not a number.
  }
  else .timerxSeenerrornumlow 1 0 _blankinputerror You must enter a number, should be higher than 1.
}

alias -l seen.stats { 
  var %s = $+(seen:,$2,:*), %t = $hfind(xSeen,%s,0,w)
  if ( $2 != ALL ) {
    var %o = $hfind(xSeen,%s,0,w), %p = $ctime, %p1
    while %o {
      if ( %p  > $gettok($hget(xSeen,$hfind(xSeen,%s,%o,w)),2,32) ) {
        %p = $v2
        %p1 = $hfind(xSeen,%s,%o,w)
      }
      dec %o
    }
    return $1 $+ , I have a Total of %t entries for $2 $+ . $iif(%t,The Oldest entry for $2 $&
      is $deltok($gettok(%p1,3,58),2,33) $+ $chr(44) which is from $seentime(%p) ago.)
  }
  else return $1 $+ , I have a Total of $hfind(xSeen,$+(seen:*),0,w) entries in my database.
}

alias -l seen.default {
  _writeini $1 status 1
  _writeini $1 format Msg
  _writeini $1 target Chan
  _writeini $1 notify 1
  _writeini $1 trigger !
  _writeini $1 private 1
  _writeini $1 format2 Msg
  _writeini $1 format3 Notice
  if ( $2 ) echo $colour(info) -a ** xSeen $seen.version $+ : Default Seen settings has been set for $1 $+ .
}

alias -l seen.format { 
  if ( $2 ) {
    var %sf = $readini($_seen.file,$1,format) $readini($_seen.file,$1,target)
    tokenize 32 %sf
    return $replace(%sf,$iif($2 == nick,msg),$iif($2 == nick,.msg),chan,$chan,notice,.notice,nick,$nick) 
  }
  else return . $+ $readini($_seen.file,$1,format2) $nick
}

alias -l nseen.format return . $+ $readini($_seen.file,$1,format3)

alias -l floodcheck {
  if ( $readini($_seen.file,settings,flood.pro) )  {
    var %h = $readini($_seen.file,settings,flood.time)
    var %j = $readini($_seen.file,settings,flood.lines)
    var %i = $readini($_seen.file,settings,flood.ignore)
    inc $iif(!$($+(%,xseenflood,.,$1,.,$2),2),$+(-u,%h)) $+(%,xseenflood,.,$1,.,$2)
    if ( $($+(%,xseenflood,.,$1,.,$2),2) >= %j ) { 
      .ignore $+(-u,$calc(60 * %i)) $2
      echo 04 -s ** xSeen: Flood detected from $2 on $1 $+ ... ignoring for %i minutes.
    }
  }
}

alias -l unloadcheck {
  var %uc = $input(Do you really want to unload xSeen v $+ $seen.version ?,uy,xSeen Unload)
  if ( $! ) {
    if ( $isfile($_seen.bak) ) .timerxSeen.backupcheck 1 0 backupcheck
    else _unload
  }
}

alias -l defoutputcheck {
  var %uc = $input(Do you really want to set default outputs?,uy, xSeen Default Outputs)
  if ( $! ) {
    def_output
    refresh_output
  }
}

alias -l resetdatacheck {
  var %uc = $input(Do you really want to reset the data? Back up file would be reset too.,uy,xSeen Reset)
  if ( $! ) {
    .hfree xSeen
    .hmake xSeen 100
    .timerxSeen.resetdatadone 1 0 _blankinput All data has been cleared!
  }
}

alias -l backupcheck {
  var %bc = $input(Do you also want to delete the backup seen data?,uy,xSeen Backup)
  if ( $! ) {
    _del.bak
    _unload
  }
  else _unload
}

alias -l autoloadbak.check {
  var %al = $input(Do you want to load the backup seen data?,uy,Found xSeen Backup log)
  if ( $! ) hload xSeen $_seen.bak
}

alias _blankinput {
  var %bi = $input($1-,uio,xSeen)
}

alias _blankinputerror {
  var %bi = $input($1-,uwo,xSeen Error)
}

alias -l _unload .unload -rs $+(",$script,")

alias -l _del.bak .remove $_seen.bak

alias -l xSeen.init {
  if ( !$hget(xSeen) ) hmake xSeen 100
  if ( $isfile($_seen.bak) ) .timerxSeen.autoloadbak 1 0 autoloadbak.check 
  _writeini settings status 1
  _writeini settings flood.lines 3
  _writeini settings flood.time 60
  _writeini settings flood.ignore 3
  _writeini settings auto.delete 0
  _writeini settings auto.delete.every 3
  _writeini settings auto.delete.old 30
  _writeini settings auto.save 0
  _writeini settings auto.save.every 3
  _writeini settings smart 1
  _writeini settings flood.pro 1
  _writeini settings events.texts 1
  _writeini settings events.actions 1
  _writeini settings events.querys 1
  _writeini settings events.joins 1
  _writeini settings events.parts 1
  _writeini settings events.quits 1
  _writeini settings events.kicks 1
  _writeini settings events.nickchange 1
  .enable #xSeen.load
  var %scon = $scon(0)
  .scon -at1 .version
  while %scon {
    .scon $v1
    if ( $network ) {
      seen.default $v1
      var %ial = $ial(*,0)
      while %ial {
        var %ii = $ial(*,%ial)
        xseen.add $+(seen:,$network,:,%ii) load $ctime $comchan($gettok(%ii,1,33),1)
        dec %ial
      }
      .scon -r
    }
    dec %scon
  }
  .timerxSeen.disable.load 1 5 .disable #xSeen.load
  def_output 1
  echo -a 09,01 » »08,01 xSeen v $+ $seen.version Successfully Loaded. 
  echo -a 09,01 » »08,01 Copyright © 200415,01 xDaemon.us 
  echo -a 09,01 » »08,01 Written by: 15,01xDaeMoN 08,01Email: 15,01xDaemon@xDaemon.us 
}

alias -l xseen.save {
  hsave -o xSeen $_seen.log
  hsave -o xSeen $_seen.bak
}

alias -l dialog_init {
  did -b $dname 8,9,10,45,49,50,51,52,68,69,73,110,111,112
  did -h $dname 13,14,15,16,17,18,19,20,24,25,27,28,57,59,60,61,62,63,64,65,66,82,85,77,78,79,80,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,115,116,117
  if ( !$readini($_seen.file,settings,flood.pro) ) did -b $dname 39,40,48
  if ( !$istok($didtok($dname,11,44),xSeen,44) ) did -ac $dname 11 xSeen
  if ( !$istok($didtok($dname,26,44),ALL,44) ) did -ac $dname 26 ALL
  if ( !$istok($didtok($dname,98,44),Status Window,44) ) {
    did -ac $dname 98 Status Window
    did -a $dname 98 Active Window
  }
  var %k = 1, %se
  while $scon(%k).network { 
    %se = $v1
    if ( !$istok($didtok($dname,11,44),%se,44) ) { 
      did -a $dname 11,26 %se
      did -ac $dname 12 %se
    }
    inc %k   
  }
  did -ra $dname 39 $readini($_seen.file,settings,flood.lines)
  did -ra $dname 40 $readini($_seen.file,settings,flood.time)
  did -ra $dname 48 $readini($_seen.file,settings,flood.ignore)
  if ( $readini($_seen.file,settings,flood.pro) ) did -c $dname 67 
  if ( !$istok($didtok($dname,73,44),No Saving,44) ) { 
    did -ac $dname 73 No Saving
    didtok $dname 73 44 No Notification,No Trigger
  }
  did -c $dname 84
  did -e $dname 73
  did11
  did26
  did73
  refresh_output
}

alias -l did11 {  
  if ( $did(11) != xSeen ) {
    var %d11 = $did(11)
    did -uev $dname 13,14,15,16,17,18,19,20,24,25,27,28,59,60,61,62,63,64,65,115
    did -h $dname 66,82,100,101,102,103,104,105,106,107,108,109,116,117
    did -r $dname 18,27,64,65
    did -b $dname 13,14,17,28
    var %d11_18 = $readini($_seen.file,%d11,format)
    did -ac $dname 18 %d11_18
    did -a $dname 18 $iif(%d11_18 == Msg,Notice,$v2)
    var %d11_64 = $readini($_seen.file,%d11,target)
    did -ac $dname 64 %d11_64
    did -a $dname 64 $iif(%d11_64 == Chan,Nick,$v2)
    var %d11_65 = $readini($_seen.file,%d11,format3)
    did -ac $dname 65 %d11_65
    did -a $dname 65 $iif(%d11_65 == Msg,Notice,$v2)
    var %d11_27 = $readini($_seen.file,%d11,format2)
    did -ac $dname 27 %d11_27
    did -a $dname 27 $iif(%d11_27 == Msg,Notice,$v2)
    did -c $dname $iif($readini($_seen.file,%d11,status),15,16)
    if ( $readini($_seen.file,%d11,notify) ) did -c $dname 59
    did -era $dname 19 $readini($_seen.file,%d11,trigger)
    if ( $readini($_seen.file,%d11,private) ) { 
      did -e $dname 63,64,65
      did -c $dname 62
    }
  }
  else {
    did -uev $dname 15,16,24,66,82,100,101,102,103,104,105,106,107,108,109,116,117
    did -c $dname $iif($readini($_seen.file,settings,status),15,16)
    if ( $readini($_seen.file,settings,smart) ) did -c $dname 66
    if ( $readini($_seen.file,settings,wildcards) ) did -c $dname 82
    if ( $readini($_seen.file,settings,events.texts) ) did -c $dname 101
    if ( $readini($_seen.file,settings,events.actions) ) did -c $dname 102
    if ( $readini($_seen.file,settings,events.querys) ) did -c $dname 103
    if ( $readini($_seen.file,settings,events.joins) ) did -c $dname 104
    if ( $readini($_seen.file,settings,events.parts) ) did -c $dname 105
    if ( $readini($_seen.file,settings,events.quits) ) did -c $dname 106
    if ( $readini($_seen.file,settings,events.kicks) ) did -c $dname 107
    if ( $readini($_seen.file,settings,events.nickchange) ) did -c $dname 108
    if ( $readini($_seen.file,settings,add.nicks.onjoin) ) did -c $dname 116
    if ( $readini($_seen.file,settings,multiserver) ) did -c $dname 117
    did -h $dname 13,14,17,18,19,20,25,27,28,59,60,61,62,63,64,65,115
    did -b $dname 109,100
  }
}

alias -l did26 {
  did -e $dname 9,10
  if ( $did(26) == ALL ) { 
    did -e $dname 8,9,10,68
    did $+(-e,$iif($readini($_seen.file,settings,auto.delete),c)) $dname 45
    ;did $+(-e,$iif($readini($_seen.file,settings,auto.save),c)) $dname 54
    did -b $dname 49,50,51,52
    if ( $readini($_seen.file,settings,auto.delete) ) {
      did -e $dname 51,52
      did -era $dname 49 $readini($_seen.file,settings,auto.delete.every)
      did -era $dname 50 $readini($_seen.file,settings,auto.delete.old)
    }
  }
  else { 
    did -b $dname 8,51,52,68
    did -ub $dname 45
    did -rb $dname 49,50
  }
}

alias -l did73 {
  var %d12 = $did(12), %do = $replace($did(73),No Saving, chans.nosave,No Notification,chans.nonotify,No Trigger,chans.notrigger)
  did -e $dname 70,71,72
  did -er $dname 69
  if ( $readini($_seen.file,%d12,%do) ) didtok $dname 69 44 $v1
}

alias -l did93 {
  var %l = 1,%s
  while $did($dname,93,%l) {
    %s = %s $+ $v1 $+ $chr(32)
    inc %l
  }
  return %s
}

alias count93 {
  var %l = 1,%s = 0, %t
  while $did($dname,93,%l).len {
    inc %s $v1
    inc %l
  }
  %s = 200 - %s
  return %s
} 

alias -l refresh_output { 
  did -r xSeen 92
  didtok xSeen 92 44 Talking,Acting,Quitting,Parting,Joined,Joining,Nick Change,Kicking,Kicked,Many Matches,Not Seen,No Wildcards,Me,Self,Here,Nseen,On Chan,Load,Long Nick,Found,Query
  did -bu xSeen 94
  did -rm xSeen 93
  did -r xSeen 96
}

;####################### RAWS #######################

#xSeen.load off
raw 005:*: {
  if ( $matchtok($1-,NICKLEN=,1,32) ) _writeini $network nicklen $remove($v1, NICKLEN=)
  halt
}

raw 351:*: halt
#xSeen.load end

#xsWHO off
raw *:*: { 
  if ( $istok(353.366.324.329,$numeric,46) ) halt 
  elseif ( $numeric == 352 ) { xseen.add $+(seen:,$network,:,$+($6,!,$3,@,$4)) joined $ctime $2 | halt }
  elseif ( $numeric == 315 ) { .disable #xsWHO | halt }
}
#xsWHO end

;####################### MENU #######################

menu * {
  -
  xSeen v $+ $seen.version
  .Console: xSeen
  .-
  .Unload: .timerxSeen.unloadcheck 1 0 unloadcheck
}

;####################### DIALOG #######################

alias xseen { if ( !$dialog(xSeen) ) dialog -m xSeen xSeen }

dialog xSeen {
  title "xSeen v3.7 Console [/xSeen]"
  size -1 -1 155 145
  option dbu notheme

  tab "Settings", 1, 0 0 155 130
  tab "Channels", 2
  tab "Data", 3
  tab "Flood", 4
  tab "About", 76

  box "", 5, 5 15 145 110
  box "Search", 85, 5 0 145 64
  box "Options", 109, 5 49 145 40, tab 1 disable
  box "Select Events To Log", 100, 5 85 145 40, tab 1
  box "Search Results:", 88, 5 60 145 70
  box "Public", 13, 5 50 73 42, tab 1
  box "Private", 14, 77 50 73 42, tab 1
  box "Notification", 17, 5 88 73 37, tab 1
  box "Trigger", 28, 77 88 73 37, tab 1
  box "Messages", 90, 5 0 145 130
  box "Options", 110, 5 39 61 86, tab 3
  box "Delete Old Entries", 111, 65 39 85 86, tab 3
  box "Auto-Delete Entries", 112, 65 80 85 45, tab 3


  button "Close", 56, 115 132 35 12, ok 
  button "Delete", 9, 70 66 75 13, tab 3
  button "Save", 8, 10 66 50 13, tab 3
  button "Statistics", 10, 10 49 50 13, tab 3 
  button "Save", 6, 76 132 35 12
  button "Load", 68, 10 83 50 13, tab 3
  button "Add", 71, 95 66 50 13, tab 2
  button "Delete", 72, 95 81 50 15, tab 2
  button "Search", 87, 110 45 35 12
  button "Set Default Outputs", 95, 90 112 55 12
  button "Preview", 99, 10 112 25 12
  button "Reset Data", 54, 10 100 50 13, tab 3

  combo 11, 43 25 102 80, tab 1 (drop)
  combo 12, 43 25 102 80, tab 2 (drop)
  combo 26, 43 25 102 80, tab 3 (drop)
  combo 73, 95 52 50 80, tab 2 (drop)
  combo 77, 65 15 80 80, (drop sort)
  combo 18, 37 59 35 80, tab 1 (drop)
  combo 64, 37 73 35 80, tab 1 (drop)
  combo 65, 37 110 35 80, tab 1 (drop)
  combo 27, 110 73 35 80, tab 1 (drop)
  combo 92, 65 15 80 80, (drop sort)
  combo 98, 10 98 50 20, (drop sort)

  check "Enable Auto Delete Data", 45, 70 88 70 10, tab 3
  check "Enable private seen", 62, 81 59 65 10, tab 1
  check "Enable Smart xSeen", 66, 10 59 60 10, tab 1
  check "Enable Trigger Flood Protection", 67, 15 105 90 10, tab 4
  check "Allow wildcards", 82, 10 72 50 10, tab 1
  check "Enable notification", 59, 10 98 65 10, tab 1
  check "Edit Selected Output", 94, 10 82 75 10
  check "Texts", 101, 10 95 28 10, tab 1
  check "Actions", 102, 10 108 28 10, tab 1
  check "Querys", 103, 43 95 30 10, tab 1
  check "Joins", 104, 43 108 25 10, tab 1
  check "Parts", 105, 76 95 25 10, tab 1
  check "Quits", 106, 76 108 25 10, tab 1
  check "Kicks", 107, 104 95 25 10, tab 1
  check "Nick Change", 108, 104 108 40 10, tab 1
  check "Add nicks on Join", 116, 76 72 50 10, tab 1
  check "Multi-Server", 117, 76 59 50 10, tab 1

  radio "Enable", 15, 43 40 30 10, tab 1 (group)
  radio "Disable", 16, 76 40 30 10, tab 1 

  edit "", 19, 81 110 15 10, tab 1 (center,limit 1)
  edit "", 39, 30 56 20 10, tab 4 (center limit 3)
  edit "", 40, 90 56 20 10, tab 4 (center limit 4)
  edit "", 48, 105 80 20 10, tab 4 (center limit 4)
  edit "", 49, 130 100 15 10, tab 3 (center limit 2)
  edit "", 50, 130 112 15 10, tab 3 (center limit 3)
  edit "", 70, 10 52 77 10, tab 2 (autohs)
  edit "", 79, 10 45 95 12, autohs
  edit "", 80, 10 68 136 60, multi vsbar
  edit "", 93, 10 32 136 48, multi vsbar limit 200
  edit "", 96, 115 82 18 10, read 
  edit "", 113, 130 48 15 10, tab 3 (center limit 3)

  list 69, 10 66 77 65, tab 2 (sort vsbar)

  menu "Mode", 81

  item "Search", 83, 81
  item "Settings", 84, 81
  item "Messages", 89, 81

  text "Select :", 22, 10 27 18 10, tab 1
  text "Select :", 23, 10 27 18 10, tab 2
  text "Status :", 24, 10 41 20 10, tab 1
  text "Format :", 25, 10 60 21 10, tab 1
  text "Target :", 61, 10 74 20 10, tab 1
  text "Format :", 63, 81 74 21 10, tab 1
  text "Format :", 60, 10 111 21 10, tab 1
  text "xSeen", 31, 10 25 130 10, tab 76 (center)
  text "Version : 3.7", 32, 15 35 100 10, tab 76
  text "Written By : xDaeMoN", 33, 15 45 100 10, tab 76
  text "Email : xDaemon@xDaemon.us", 34, 15 55 100 10, tab 76
  text "Description : A Network-specific Seen System that has seen notification. ", 35, 15 65 125 20, tab 76
  text "Credits :", 36, 15 85 30 10, tab 76
  text "Tye (for his Simple Seen System) and to the authors of Gseen and Bseen tcls.", 37, 18 95 125 20, tab 76
  text "Trigger Flood Protection", 41, 15 25 125 10, tab 4 (center)
  text "Set the Number of times the the trigger can only be used by users within a certain time:", 42, 15 35 125 20, tab 4
  text "Times within", 43, 55 57 30 10, tab 4
  text "seconds", 44, 115 57 20 10, tab 4
  text "Select :", 46, 10 27 18 10, tab 3
  text "Amount of time to ignore (minutes):", 47, 15 81 90 10, tab 4
  text "Every (hours)?", 51, 70 100 38 10, tab 3
  text "Older than (days)?", 52, 70 112 47 10, tab 3
  text "Saving . . .", 57, 10 136 30 10
  text "Select Option:", 74, 96 42 50 10, tab 2
  text "Enter Channel Name :", 75, 10 42 60 10, tab 2
  text "Select Network :", 78, 10 16 40 10
  text "seen", 20, 100 111 11 10, tab 1
  text "Select Output :", 91, 10 16 38 10
  text "left", 97, 136 83 10 10
  text "Enter Nick or Wildcard :",86, 10 36 80 7
  text "Delete seen entries older than (days) :",114, 70 48 55 15, Tab 3
  text "Enter Trigger Character :",115, 81 98 70 10, Tab 1
}

On *:DIALOG:xSeen:*:*: {
  if ( $devent == init ) { 
    dialog_init
  }
  elseif ( $devent == sclick ) {
    if ( $did == 6 ) { 
      did -v $dname 57   
      did -b $dname 6
      .timerxSeen.hidesave 1 2 if ( $!dialog(xSeen) ) $({, ) did -h $dname 57 $(|, ) did -e $dname 6 $(}, )
      if ( $did(11) ) {
        if ( $v1 != xSeen ) {
          var %d11 = $did(11)
          _writeini %d11 status $did(15).state
          _writeini %d11 notify $did(17).state
          _writeini %d11 format $did(18)
          _writeini %d11 target $did(64)
          _writeini %d11 format2 $did(27)
          _writeini %d11 format3 $did(65)
          if ( $did(19) ) _writeini %d11 trigger $v1
          _writeini %d11 private $did(62).state
          _writeini %d11 notify $did(59).state
        }
        else _writeini settings status $did(15).state
        _writeini settings smart $did(66).state
        _writeini settings wildcards $did(82).state
        _writeini settings events.texts $did(101).state
        _writeini settings events.actions $did(102).state
        _writeini settings events.querys $did(103).state
        _writeini settings events.joins $did(104).state
        _writeini settings events.parts $did(105).state
        _writeini settings events.quits $did(106).state
        _writeini settings events.kicks $did(107).state
        _writeini settings events.nickchange $did(108).state
        _writeini settings add.nicks.onjoin $did(116).state
        _writeini settings multiserver $did(117).state
      }
      if ( $did(12) ) && ( $did(73) ) {
        var %d12 = $did(12), %do = $replace($did(73),No Saving, chans.nosave,No Notification,chans.nonotify,No Trigger,chans.notrigger)
        $iif($didtok($dname,69,44),writeini,remini) $_seen.file %d12 %do $v1
      }
      if ( $did(26) == ALL ) {
        if ( $did(49) ) {
          if ( $v1 isnum 1-1000 ) _writeini settings auto.delete.every $v1
          else did -ra $dname 49 $readini($_seen.file,settings,auto.delete.every)
        }
        if ( $did(50) ) {
          if ( $v1 isnum 1-1000 ) _writeini settings auto.delete.old $v1
          else did -ra $dname 50 $readini($_seen.file,settings,auto.delete.old)
        }
        _writeini settings auto.delete $did(45).state
        .timerxSeen.autodelete $iif($did(45).state,-o 0 $calc($iif($did(49) isnum 1-1000,$v1,$readini($_seen.file,ALL,auto.delete.every)) * 3600) seen.delold ALL $iif($did(50) isnum 1-1000,$v1,$readini($_seen.file,ALL,auto.save.old)),off) 1
      }
      if ( $did(39) ) {
        if ( $v1 isnum 1-100 ) _writeini settings flood.lines $v1
        else did -ra $dname 39 $readini($_seen.file,settings,flood.lines)
      }
      if ( $did(40) ) {
        if ( $v1 isnum 1-1000 ) _writeini settings flood.time $v1
        else did -ra $dname 40 $readini($_seen.file,settings,flood.time)
      }
      if ( $did(48) ) {
        if ( $v1 isnum 1-1000 ) _writeini settings flood.ignore $v1
        else did -ra $dname 48 $readini($_seen.file,settings,flood.ignore)
      }
      _writeini settings flood.pro $did(67).state
      if ( $did(92) )  set  $+(%,xseenmsg.,$remove($did(92),$chr(32))) $did93
    }
    elseif ( $did == 8 ) { 
      xseen.save
      .timerxSeen.savedata 1 0 _blankinput Data Saved!
    }
    elseif ( $did == 9 ) { 
      seen.delold $did(26) $did(113)
      did -r $dname 113
    }
    elseif ( $did == 10 ) { 
      .timerxSeen.seenstats 1 0 _blankinput $seen.stats($me,$did(26))
    }
    elseif ( $did == 11 ) {
      did11
    }
    elseif ( $did == 12 ) {
      var %d12 = $did(12)
      did -e $dname 73
    }
    elseif ( $did == 26 ) {
      did26
    }
    elseif ( $did == 45 )  { 
      did $iif($did(45).state,-e,-b) $dname 51,52
      did $iif($did(45).state,-era,-br) $dname 49 $readini($_seen.file,settings,auto.delete.every)
      did $iif($did(45).state,-era,-br) $dname 50 $readini($_seen.file,settings,auto.delete.old)
    }
    elseif ( $did == 54 )  .timerxSeenresetdatacheck 1 0 resetdatacheck
    elseif ( $did == 67 ) {
      if ( $did(67).state ) {
        did -e $dname 39,40,48
      }
      else did -b $dname 39,40,48
    }
    elseif ( $did == 68 ) {
      var %ee = $sfile(*.bak,Load xSeen Data,Load)
      if ( $istok($nopath($_seen.log) $nopath($_seen.bak),$nopath(%ee),32) )  { 
        hload xSeen $+(",%ee,")
        .timerxSeen.loaddata 1 0 _blankinput Loaded $hget(xSeen,0).item entries from $nopath(%ee)
      }
      elseif ( !%ee ) return
      else .timerxSeenerrorinvalidfile 1 0 _blankinputerror Could not load $+(",$nopath(%ee),",$chr(44)) not a valid xSeen file.
    }
    elseif ( $did == 71 ) {
      if ( $did(70) ) { 
        var %d70 = $gettok($v1,1,32)
        if ( $chr(35) != $left(%d70,1) ) %d70 = $+($v1,%d70)
        if ( !$istok($didtok($dname,69,44),%d70,44) ) did -a $dname 69 %d70
        did -r $dname 70
      }
    }
    elseif ( $did == 72 ) {
      if ( $did(69).seltext ) { 
        did -d $dname 69 $did(69).sel
      }
    }
    elseif ( $did == 73 ) {
      did73
    }
    elseif ( $did == 87 )   { 
      if ( $did(79) ) {
        did -b $dname 87
        .timerxSeen.hidesearch 1 2 if ( $!dialog(xSeen) ) $({, ) did -e $dname 87 $(}, )
        did -ra $dname 80 $seenpar($me,$+(seen:,$iif($did(77) == All,*,$v1),:,$did(79))) 
        did -rf $dname 79
      }
    }
    elseif ( $did == 92 ) { 
      did -ram $dname 93 $($+(%,xseenmsg.,$remove($did($dname,92),$chr(32))),2)
      did -ue $dname 94
      did -ra $dname 96 $count93
      did -v $dname 96,97,98,99
    }
    elseif ( $did == 94 ) did $iif($did(94).state,-n,-m) $dname 93
    elseif ( $did == 95 ) .timerxSeendefoutput_check 1 0 defoutputcheck
    elseif ( $did == 99 ) && ( $did(92) ) echo $+(-,$lower($left($did(98),1))) 3Output Preview: $did93
  }
  elseif ( $devent == edit ) {
    if ( $did == 79 ) did -t $dname 87
    elseif ( $did == 113 ) did -t $dname 9
    elseif ( $did == 93 ) did -ra $dname 96 $count93
  }
  elseif ( $devent == menu ) {
    if ( $did == 83 ) { 
      did -h $dname $_ids
      did -h $dname 90,91,92,93,94,95,96,97,98,99
      did -v $dname 77,78,79,80,85,86,87,88
      did -b $dname 85,88
      did -c $dname 83
      did -u $dname 84,89
      did -m $dname 80
      did -f $dname 79
      ;  if ( !$istok($didtok($dname,77,44),All Data,44) ) did -ac $dname 77 All Data
      var %k = 1, %se
      while $ini($_seen.file,%k) { 
        %se = $v1
        if ( !$istok($didtok($dname,77,44),%se,44) ) && ( %se != settings ) did -a $dname 77 %se
        inc %k   
      }
      if ( !$istok($didtok($dname,77,44),ALL,44) ) did -ac $dname 77 ALL
    }
    elseif ( $did == 84 ) { 
      did -v $dname $_ids
      did -u $dname 83,89
      dialog_init
    }
    elseif ( $did == 89 ) {
      did -c $dname 89
      did -u $dname 83,84
      did -h $dname $_ids
      did -h $dname 77,78,79,80,85,86,87,88
      did -v $dname 6,91,92,93,94,95,96,97,98,99
      did -bv $dname 90
    }
  }
}

alias -l _ids return 1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,57,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,100,101,102,103,104,105,106,107,108,109,115

;####################### OUTPUT #######################

alias -l seenmsg.text return $replace(%xseenmsg.talking,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<on_chan>,$6)
alias -l seenmsg.act return $replace(%xseenmsg.acting,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<on_chan>,$6)
alias -l seenmsg.quit return $replace(%xseenmsg.quitting,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<quit_msg>,$6)
alias -l seenmsg.part return $replace(%xseenmsg.parting,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<part_msg>,$6)
alias -l seenmsg.join return $replace(%xseenmsg.joining,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<on_chan>,$6)
alias -l seenmsg.nick return $replace(%xseenmsg.nickchange,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<newnick>,$5,<time>,$6,<on_chan>,$7)
alias -l seenmsg.kicking return $replace(%xseenmsg.kicking,<nick>,$1,<seen_nick>,$2,<address>,$3,<knick>,$4,<channel>,$5,<time>,$6,<kick_msg>,$7,<on_chan>,$8)
alias -l seenmsg.kick return $replace(%xseenmsg.kicked,<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<kickedby>,$5,<time>,$6,<kick_msg>,$7)
alias -l seenmsg.manymatch return $replace(%xseenmsg.manymatches,<nick>,$1,<number>,$2)
alias -l seenmsg.nomatch return $replace(%xseenmsg.nomatch,<nick>,$1)
alias -l seenmsg.notseen return $replace(%xseenmsg.notseen,<nick>,$1,<seen_nick>,$2)
alias -l seenmsg.me return $replace(%xseenmsg.me,<nick>,$1)
alias -l seenmsg.self return $replace(%xseenmsg.self,<nick>,$1)
alias -l seenmsg.here return $replace(%xseenmsg.here,<nick>,$1,<seen_nick>,$2)
alias -l seenmsg.nseen return $replace(%xseenmsg.nseen,<nick>,$1,<address>,$2,<channel>,$3,<time>,$4)
alias -l seen.onchan { if ( $1 ison $2 ) return $replace(%xseenmsg.onchan,<seen_nick>,$1) }
alias -l seenmsg.load return $replace(%xseenmsg.load,<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4)
alias -l seenmsg.joined return $replace(%xseenmsg.joined,<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4,<channel>,$5)
alias -l seenmsg.longnick return $replace(%xseenmsg.longnick,<nick>,$1)
alias -l seenmsg.nowildcards return $replace(%xseenmsg.nowildcards,<nick>,$1)
alias -l seenmsg.found return $replace(%xseenmsg.found,<number>,$1,<number2>,$2,<seen_nicks>,$3,<seen_msg>,$4-)
alias -l seenmsg.query return $replace(%xseenmsg.query,<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4)


alias -l def_output {
  set %xseenmsg.joining <nick>, <seen_nick> (<address>) was last seen joining <channel> <time> ago. <on_chan>
  set %xseenmsg.talking <nick>, <seen_nick> (<address>) was last seen talking on <channel> <time> ago. <on_chan>
  set %xseenmsg.acting <nick>, <seen_nick> (<address>) was last seen acting on <channel> <time> ago. <on_chan>
  set %xseenmsg.quitting <nick>, <seen_nick> (<address>) was last seen quiting on <channel> <time> ago stating: <quit_msg>.
  set %xseenmsg.parting <nick>, <seen_nick> (<address>) was last seen leaving <channel> <time> ago stating: <part_msg>.
  set %xseenmsg.nickchange <nick>, <seen_nick> (<address>) was last seen changing nick on <channel> to <newnick> <time> ago. <on_chan>
  set %xseenmsg.kicking <nick>, <seen_nick> (<address>) was last seen kicking <knick> from <channel> <time> ago with the reason: <kick_msg>. <on_chan>
  set %xseenmsg.kicked <nick>, <seen_nick> (<address>) was last seen kicked from <channel> by <kickedby> <time> ago with the reason: <kick_msg>.
  set %xseenmsg.manymatches <nick>, I found <number> matches to your query; please refine it to see any output.
  set %xseenmsg.nomatch <nick>, No matches were found.
  set %xseenmsg.notseen <nick>, I have not seen <seen_nick>.
  set %xseenmsg.me <nick>, you found me!
  set %xseenmsg.self <nick>, Looking for yourself, eh?!
  set %xseenmsg.here <nick>, <seen_nick> is right here!
  set %xseenmsg.nseen <nick> (<address>) was looking for you on <channel> <time> ago.
  set %xseenmsg.onchan  <seen_nick> is still there. 
  set %xseenmsg.joined <nick>, <seen_nick> (<address>) was last seen <time> ago when I joined <channel>.
  set %xseenmsg.load <nick>, <seen_nick> (<address>) was last seen <time> ago when I loaded this script.
  set %xseenmsg.longnick <nick>, that nick is too long. Nick length is limited in this network.
  set %xseenmsg.nowildcards <nick>, Wildcards are not allowed.
  set %xseenmsg.found I found <number> matches to your query. Here are the <number2> most recent (sorted): <seen_nicks>. <seen_msg>
  set %xseenmsg.query <nick>, <seen_nick> (<address>) was last seen sending me a private message <time> ago.
  if ( !$1 ) .timerxSeen.setdefoutputs 1 0 _blankinput Loaded Default Outputs!
}

;####################### EOF #######################