on 1:start:{ if ( $exists(scseen.hsh) ) { .hmake scseen 1000 .hload scseen scseen.hsh } if ( !$hget(scseen) ) { sc.mhash echo -s Making new hash table. (scseen.hsh could not be found.) } } on 1:unload:{ if ( $hget(scseen)) { echo -s Saving hash table to: $mircdir $+ scseen.hsh .hsave -o scseen scseen.hsh } if ( $exists(scseen.hsh) ) { echo -s Overwriting older hash table information. } .hfree scseen if ( !$hget(scseen) ) { echo -s Seen hash table memory: cleared. } } alias sc.mhash { .hmake scseen 1000 .hadd scseen scseenstats.date $ctime } on 1:exit:{ .hsave -o scseen scseen.hsh .hfree scseen } on 1:action:*:#:{ var %say 1 sc.seen hadd scseen $+($nick,.,action) action hadd scseen $+($nick,.,msg) $1- } on 1:text:*:#:{ if ( $1 == %trigger $+ seen ) && ( !$2 ) { .msg $chan $seen(0) halt } if ( $1 == %trigger $+ seen ) && ( $2 != $me ) && ( $2 ison $chan ) { .msg $chan %left Seen %mid $2 is currently online. $2 is in your current channel: $chan $+ . %right halt } if ( $1 == %trigger $+ seen ) && ( $2 ) && ( $2 != $me ) && ( $2 != $nick ) { if ( $comchan($2,2) ) { var %i 1 while ( $comchan($2,%i) ) { var %chans = %chans $comchan($2,%i) inc %i 1 } msg $chan %left Seen %mid $2 is currently on: %chans %right unset %chans halt } if ( $comchan($2,1) ) && ( $comchan($2,1) != $chan ) { .msg $chan %left Seen %mid $2 is currently in $comchan($2,1) %right halt } .msg $chan $seen($2) halt } var %say 1 sc.seen hadd scseen $+($nick,.,action) say hadd scseen $+($nick,.,msg) $1- } on 1:nick:{ .hdel -w scseen $+($nick,.,*) .hadd scseen $+($newnick,.,nick) $nick .hadd scseen $+($newnick,.,Address) $address($newnick,-1) if ( $chan ) { hadd scseen $+($newnick,.,Chan) $chan } .hadd scseen $+($newnick,.,time) $ctime .hadd scseen $+($newnick,.,network) $network } on 1:join:#:{ sc.seen hadd scseen $+($nick,.,action) join } on 1:part:#:{ sc.seen hadd scseen $+($nick,.,action) part } on 1:quit:{ sc.seen hadd scseen $+($nick,.,action) quit } alias seen.reset { if ( $hget(scseen) ) { hfree scseen | echo -s Hash table unloaded from memory. } if ( $exists(scseen.hsh) ) { remove scseen.hsh | echo -s Hash file deleted. } echo -a All stats have been erased } alias sc.seen { if ( !$hget(scseen) ) { sc.mhash } if ( !$hget(scseen,$nick $+ .nick) ) { hadd scseen scseenstats.total $calc($hget(scseen,scseenstats.total) + 1) } hadd scseen $+($nick,.,nick) $nick hadd scseen $+($nick,.,Address) $address($nick,-1) if ( $chan ) { hadd scseen $+($nick,.,Chan) $chan } hadd scseen $+($nick,.,time) $ctime hadd scseen $+($nick,.,network) $network if ( $1 ) && ( %say == 1 ) { hadd scseen $+($nick,.,msg) $1- } } alias seen { if ( $1 == 0 ) { return %left Seen %mid I have seen $hget(scseen,scseenstats.total) people since $asctime($hget(scseen,scseenstats.date),dddd) $ord($asctime($hget(scseen,scseenstats.date),dd)) $asctime($hget(scseen,scseenstats.date),mmmm yyyy) $+ . ( $+ $duration($calc($ctime - $hget(scseen,scseenstats.date)),2) $+ ) %right } if ( $1 isnum ) { if ( $hget(scseen,$hfind(scseen,*.nick,1,w)) ) { if ( $prop ) { return $hget(scseen,$hfind(scseen,*. $+ $prop,$1,w)) } return $hget(scseen,$hfind(scseen,*.nick,$1,w)) } } if ( $hget(scseen,$1 $+ .nick) ) && ( $hget(scseen,$1 $+ .network) == $network ) { if ( $prop ) { return $hget(scseen,$hfind(scseen,$1 $+ . $+ $prop,1,w)) } return %left Seen %mid $hget(scseen,$hfind(scseen,$1 $+ .nick,1,w)) was last seen at $asctime($hget(scseen,$hfind(scseen,$1 $+ .time,1,w))) ( $+ $duration($calc($ctime - $hget(scseen,$hfind(scseen,$1 $+ .time,1,w)))) ago) $iif($hget(scseen,$hfind(scseen,$1 $+ .chan,1,w)),in $hget(scseen,$hfind(scseen,$1 $+ .chan,1,w)) $+ . ) %right } return %left Seen %mid I can not find that person. %right }