rendered paste bodyon 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
}