;================================================ ; 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) 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,,$1,,$2,
,$3,,$4,