/*
this will store info about someone every time an event occurs, then when someone types !seen <nick>, it will message the latest info gathered about <nick>.
i've included a small dialog so you can browse through the "database" (accessed via click the menubar or right clicking channel/status windows).
*/
on *:join:#:{ hadd -m seen $nick last seen joining # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:part:#:{ hadd -m seen $nick last seen parting # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:quit:{ hadd -m seen $nick last seen quitting at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:text:*:?:{ hadd -m seen $nick last seen querying me at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:action:*:#:{ hadd -m seen $nick last seen saying $+(",$1-,") in # on $time at $date ( $+ $iif($network,$network,$server) $+ ) }
on *:action:*:?:{ hadd -m seen $nick last seen querying me at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:notice:*:#:{ hadd -m seen $nick last seen saying $+(",$1-,") in # on $time at $date ( $+ $iif($network,$network,$server) $+ ) }
on *:action:*:?:{ hadd -m seen $nick last seen querying me at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
on *:topic:#:{ hadd -m seen $nick last seen changing the topic to $+(",$1-,") in # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
ctcp *:*:*:{ hadd -m seen $nick last seen ctcping me on $time at $date ( $+ $iif($network,$network,$server) $+ ) }
on *:text:*:#:{
if $1 != !seen { hadd -m seen $nick last seen saying $+(",$1-,") in # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
elseif $1 == !seen {
inc -u5 %seen
if %seen == 3 {
.notice $nick flood control enabled, please wait..
return
}
elseif %seen > 3 { return }
if $2 {
hadd -m seen $nick last seen looking for $2
if $2 == $me { .notice $nick i'm right here. }
elseif $2 == $nick { .notice $nick ask a mirror. }
elseif $2 != $me && $2 != $nick {
if $2 ison # { .notice $nick $2 is in # now. }
elseif $2 !ison # {
if $hget(seen,$2) { .notice $nick $2 $replace($hget(seen,$2),looking for $nick,looking for you) }
elseif !$hget(seen,$2) { .notice $nick $2 has not been seen by me yet. }
}
}
}
elseif !$2 { .notice $nick there are $iif($hget(seen,0).item,$ifmatch,no) entries in my database. }
}
}
on *:input:#:{
if $1 == !seen {
inc -u5 %seen
if %seen == 3 {
.notice $nick flood control enabled, please wait..
return
}
elseif %seen > 3 { return }
if $2 {
if $2 == $me { .notice $me ask a mirror. }
elseif $2 != $me {
if $2 ison # { .notice $me $2 is in # now }
elseif $2 !ison # {
if $hget(seen,$2) { .notice $nick $2 $replace($hget(seen,$2),looking for $nick,looking for you) }
elseif !$hget(seen,$2) { .notice $nick $2 has not been seen by me yet. }
}
}
}
elseif !$2 { .notice $nick there are $iif($hget(seen,0).item,$ifmatch,no) entries in my database. }
}
}
on *:mode:#:{
hadd -m seen $nick last seen setting mode $+(",$1-,") on # at $time on $date ( $+ $iif($network,$network,$server) $+ )
if b isin $1 { hadd -m seen $2 being $iif(- isin $1,un) $+ banned from # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
if o isin $1 { hadd -m seen $2 being $iif(- isin $1,de) $+ opped in # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
if h isin $1 { hadd -m seen $2 being $iif(- isin $1,de) $+ hopped in # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
if v isin $1 { hadd -m seen $2 being $iif(- isin $1,de) $+ voiced in # at $time on $date ( $+ $iif($network,$network,$server) $+ ) }
}
on *:kick:#:{
hadd -m seen $nick last seen kicking $knick from # for $+(",$1-,") at $time on $date ( $+ $iif($network,$network,$server) $+ )
hadd -m seen $knick last seen getting kicked from # for $+(",$1-,") at $time on $date ( $+ $iif($network,$network,$server) $+ )
}
on *:nick:{
hadd -m seen $nick last seen changing nicks to $newnick at $time on $date ( $+ $iif($network,$network,$server) $+ )
hadd -m seen $newnick last seen changing nicks from $nick at $time on $date ( $+ $iif($network,$network,$server) $+ )
}
on *:start:{
if $isfile(" $+ $scriptdirseen.hsh") {
.hmake seen 100
.hload seen " $+ $scriptdirseen.hsh"
}
}
on *:exit:{
if $hget(seen) { .hsave -o seen " $+ $scriptdirseen.hsh" }
}
dialog seen {
title "seen system"
size -1 -1 144 91
option dbu
box "", 1, 0 0 144 52
list 2, 2 9 140 39, size vsbar sort
box "seen", 3, 0 54 144 23
text "search for:", 4, 1 82 28 8
edit "", 5, 31 81 50 10, autohs
button "search", 6, 82 81 20 10
edit "", 7, 2 64 140 10, read autohs
}
on *:dialog:seen:*:*:{
if $devent == init {
did -a $dname 1 $hget(seen,0).item matches
did -a $dname 5 *
var %i 1
while $hget(seen,%i).item {
did -a $dname 2 $hget(seen,%i).item
inc %i
}
}
elseif $devent == sclick {
if $did == 2 { did -ra $dname 7 $hget(seen,$did(2).seltext) }
elseif $did == 6 {
did -r $dname 1,2,7
var %i 1
while $hfind(seen,$+(*,$$did(5),*),%i,w) {
did -a $dname 2 $hmatch(seen,$+(*,$$did(5),*),%i,w)
inc %i
}
did -ra $dname 1 $iif($did(2).lines,$ifmatch,no) match $+ $iif($did(2).lines > 1,es)
}
}
}
menu status,channel,menubar {
seen database: dialog -m seen seen
}