xSeen — File Browser
xSeenv3.9 / xSeenv3.9 / xSeen_3.9.mrc
xSeen_3.9.mrc — 51.57 KB — Download this file
;================================================
; xSeen
; Version 3.9
; Written by: xDaeMoN
; Email: xdaemon@xdaemon.us
; 04.26.08
;
;================================================
;####################### EVENTS #######################
On *:START: {
if ( !$hget(xSeen) ) hmake xSeen 100
if ( !$hget(xSeen.msgs) ) hmake xSeen.msgs 10
if ( $isfile($_seen.log) ) hload xSeen $_seen.log
if ( $isfile($_seenmsgs.log) ) hload xSeen.msgs $_seenmsgs.log
if ( $hget(xSeen.fld) ) hfree xSeen.fld
}
on *:CONNECT: {
if ( !$ini($_seen.file,$_net,0) ) seen.default $_net
seen.default.check $_net
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
}
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: {
.timerxSeen* off
if ( $var(%xseenmsg.*,0) ) unset %xseen*
if ( $hget(xSeen) ) hfree xSeen
if ( $hget(xSeen.msgs) ) hfree xSeen.msgs
if ( $hget(xSeen.fld) ) hfree xSeen.fld
if ( $isfile($_seen.file) ) .remove $_seen.file
if ( $isfile($_seen.log) ) .remove $_seen.log
if ( $window(@seen.ls) ) window -c @seen.ls
if ( $window(@seenfilter) ) window -c @seenfilter
if ( $window(@JoinChans.buffer) ) window -c @JoinChans.buffer
if ( $window(@GetHost.buffer) ) window -c @GetHost.buffer
echo -a 08,01 » »07,01 xSeen v $+ $seen.version Unloaded.
}
ON ^*:OPEN:?:*: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,$_net,private) ) {
var %xt = $readini($_seen.file,$_net,trigger), %xf = $seen.format($_net)
if ( $1 == $+(%xt,seen) ) {
if ( $2 ) {
floodcheck $_net $wildsite
if ( $2 == $me ) %xf $seenmsg.me($nick)
elseif ( $2 == $nick ) %xf $seenmsg.self($nick)
else %xf $seenpar($nick,$+(seen:,$iif($readini($_seen.file,settings,multiserver),*,$_net),:,$2),$+(nseen:,$_net,:,$2,:,$nick) $nick $ctime private $address)
}
else %xf ** Syntax: $+(%xf,seen) <NICK>
haltdef
}
elseif ( $1 == $+(%xt,seenstats) ) {
floodcheck $_net $wildsite
%xf $seen.stats($nick,$_net)
haltdef
}
elseif ( $1 == $+(%xt,lastspoke) ) {
floodcheck $_net $wildsite
if ( $2 == $null ) %xf ** Syntax: $+(%xt,lastspoke) <NICK>
else %xf $seen.lastspoke($nick,$iif($readini($_seen.file,settings,multiserver),*,$_net),*,$2)
haltdef
}
}
}
ON *:TEXT:*:*: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) {
if ( $readini($_seen.file,settings,events.texts) ) || ( $readini($_seen.file,settings,events.querys) ) {
if ( $istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) return
if ( $address($nick,5) ) xseen.add $+(seen:,$_net,:,$address($nick,5)) $iif(#,text,private) $ctime $chan
else gethost.buffer $sc($_net) $nick private $ctime $1-
}
if ( !$istok($readini($_seen.file,$_net,chans.notrigger),$chan,44) ) {
var %xt = $readini($_seen.file,$_net,trigger), %xf = $seen.format($_net,$chan)
if ($1 == $+(%xt,seen)) && ( $$2 ) {
floodcheck $_net $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),*,$_net),:,$2),$+(nseen:,$_net,:,$2,:,$nick) $nick $ctime $iif(#,#,private) $address)
}
elseif ( $1 == $+(%xt,seenstats) ) {
floodcheck $_net $wildsite
%xf $seen.stats($nick,$_net)
}
elseif ( $1 == $+(%xt,lastspoke) ) {
floodcheck $_net $wildsite
if ( $2 == $null ) && ( !$chan ) %xf ** Syntax: $+(%xt,lastspoke) <NICK>
else %xf $seen.lastspoke($nick,$iif($readini($_seen.file,settings,multiserver),*,$_net),$iif(#,#,*),$2)
}
}
if ( $readini($_seen.file,settings,events.texts) ) || ( $readini($_seen.file,settings,events.querys) ) {
if ( $istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) return
if ( $address($nick,5) ) xseen.add $+(seenspoke:,$_net,:,$iif(#,#,private),:,$address($nick,5)) $iif(#,#,private) $ctime $xseen.cutlen($1-)
}
}
}
ON *:ACTION:*:*: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) {
if ( $readini($_seen.file,settings,events.actions) ) || ( $readini($_seen.file,settings,events.querys) ) {
if ( $istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) return
if ( $address($nick,5) ) {
xseen.add $+(seen:,$_net,:,$address($nick,5)) act $ctime $iif(#,#,private)
xseen.add $+(seenspoke:,$_net,:,$iif(#,#,private),:,$address($nick,5)) $iif(#,#,private) $ctime $xseen.cutlen($1-)
}
else gethost.buffer $sc($_net) $nick act $ctime private $1-
}
}
}
ON *:QUIT: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.quits) ) {
var %cc = $comchan($nick,$comchan($nick,0))
if ( $istok($readini($_seen.file,$_net,chans.nosave),%cc,44) ) return
if ( $address($nick,5) ) xseen.add $+(seen:,$_net,:,$address($nick,5)) quit $ctime %cc $1-
var %c = 1, %ch
while $comchan($nick,%c) {
%ch = $v1
if ( $hget(xSeen,$+(seendur:,$_net,:,%ch,:,$nick)) ) {
tokenize 32 $v1
xseen.add $+(seendur:,$_net,:,%ch,:,$nick) $calc($ctime - $1) $2
}
inc %c
}
}
}
on *:PART:#: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.parts) ) && ( !$istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) {
if ( $address($nick,5) ) xseen.add $+(seen:,$_net,:,$address($nick,5)) part $ctime $chan $1-
if ( $hget(xSeen,$+(seendur:,$_net,:,$chan,:,$nick)) ) {
tokenize 32 $v1
xseen.add $+(seendur:,$_net,:,$chan,:,$nick) $calc($ctime - $1) $2
}
}
}
on *:JOIN:#: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) {
if ( $nick == $me ) && ( $readini($_seen.file,settings,add.nicks.onjoin) ) {
joinchans.buffer $sc($_net) $chan
}
if ( $readini($_seen.file,settings,events.joins) ) && ( !$istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) {
xseen.add $+(seen:,$_net,:,$address($nick,5)) join $ctime $chan $1-
xseen.add $+(seendur:,$_net,:,$chan,:,$nick) $ctime $ctime
}
if ( !$istok($readini($_seen.file,$_net,chans.nonotify),$chan,44) ) $+(.timerxSeennseen.,$cid,.,$chan) 1 2 nseen $+($_net,:,$nick) $chan
}
}
ON *:NICK: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) {
var %c = 1, %d
while $comchan($newnick,%c) {
%d = $v1
if ( $readini($_seen.file,settings,events.nickchange) ) && ( !$istok($readini($_seen.file,$_net,chans.nosave),%d,44) ) {
xseen.add $+(seen:,$_net,:,$nick,!,$address) nick $ctime %d $newnick
if ( $hget(xSeen,$+(seendur:,$_net,:,%d,:,$nick)) ) {
tokenize 32 $v1
xseen.add $+(seendur:,$_net,:,%d,:,$newnick) $calc($ctime - $1) $2
}
}
if ( !$istok($readini($_seen.file,$_net,chans.nonotify),%d,44) ) $+(.timerxSeennseen.,$cid,.,%d) 1 2 nseen $+($_net,:,$newnick) %d
inc %c
}
}
}
ON *:KICK:#: {
if ( $readini($_seen.file,$_net,status) ) && ( $readini($_seen.file,settings,status) ) && ( $readini($_seen.file,settings,events.kicks) ) && ( !$istok($readini($_seen.file,$_net,chans.nosave),$chan,44) ) {
if ( $address($nick,5) ) xseen.add $+(seen:,$_net,:,$address($nick,5)) kicking $ctime $chan $knick $1-
if ( $address($knick,5) ) xseen.add $+(seen:,$_net,:,$address($knick,5)) kick $ctime $chan $nick $1-
}
}
;####################### ALIASES #######################
alias -l _net return $iif($network,$v1,$server)
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($_net) $gettok(%n3,2,58) $seenmsg.nseen($1,$4,$3,$seentime( $2 ),$seendate( $2 ),$5)
hdel xSeen %n2
inc %n4
dec %n
}
}
alias -l seenpar {
if ( $count($2,*,?) ) {
if ( !$readini($_seen.file,settings,wildcards) ) && ( $count($gettok($2,3,58),*,?) ) 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),$_net)),$gettok(%y,2,58)), %xs.net = $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),$seendate($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
if ($1 == act) return $seenmsg.act(%nick,%n,%m,$3,$seentime($2),$seendate($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
if ($1 == quit) return $seenmsg.quit(%nick,%n,%m,$3,$seentime($2),$seendate($2),$4-) $iif($readini($_seen.file,settings,duration),$seen.dur(%n,$3,%xs.net)) $iif(%sl,$+([,%sl,]))
if ($1 == part) return $seenmsg.part(%nick,%n,%m,$3,$seentime($2),$seendate($2),$4-) $iif($readini($_seen.file,settings,duration),$seen.dur(%n,$3,%xs.net)) $iif(%sl,$+([,%sl,]))
if ($1 == join) return $seenmsg.join(%nick,%n,%m,$3,$seentime($2),$seendate($2),$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
if ($1 == nick) return $seenmsg.nick(%nick,%n,%m,$3,$4,$seentime($2),$seendate($2),$seen.onchan($4,$3)) $iif(%sl,$+([,%sl,]))
if ($1 == kicking) return $seenmsg.kicking(%nick,%n,%m,$4,$3,$seentime($2),$seendate($2),$5-,$seen.onchan(%n,$3)) $iif(%sl,$+([,%sl,]))
if ($1 == kick) return $seenmsg.kick(%nick,%n,%m,$3,$4,$seentime($2),$seendate($2),$5-) $iif(%sl,$+([,%sl,]))
if ($1 == load) return $seenmsg.load(%nick,%n,%m,$seentime($2),$seendate($2),$3) $iif(%sl,$+([,%sl,]))
if ($1 == joined) return $seenmsg.joined(%nick,%n,%m,$seentime($2),$seendate($2),$3) $iif(%sl,$+([,%sl,]))
if ($1 == private) return $seenmsg.query(%nick,%n,%m,$seentime($2),$seendate($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 ) {
var %sp3 = $iif($count($2-,*,?),$puttok($2-,$gettok(%s2,3,58),3,58),$2-)
if ( $readini($_seen.file,settings,smart) ) return $seenparse3(%nick,%s2,%sp3)
else return $seenparse(%nick,%s2,%sp3)
}
elseif ( %s < 100 ) {
return $seenparse.filter(%nick,$+(%s,:,%s3),$2-)
}
else return $seenmsg.manymatch(%nick,$bytes(%s,b))
}
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,$bytes(%g,b))
}
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) %j2
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)
%snet = $gettok($gettok($line(%fwin,1),3,32),2,58)
%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 ( $isid ) return
if ( !$readini($_seen.file,settings,status) ) return
if ( $1 ) {
if ( $len($1) > $readini($_seen.file,$_net,nicklen) ) echo $colour(info) -a * $seenmsg.longnick($me)
else echo $colour(info) -a *** $seenpar($me,$+(seen:,$iif($readini($_seen.file,settings,multiserver),*,$_net),:,$1))
}
else echo $colour(info) -a * /seen: insufficient parameters
}
alias -l seen.version return 3.9
alias -l _seen.file return $+(",$scriptdirxSeen.ini,")
alias -l _seen.log return $+(",$scriptdirxSeen.dat,")
alias -l _seenmsgs.log return $+(",$scriptdirxSeenmsgs.dat,")
alias -l _seen.bak return $+(",$scriptdirxSeen.bak,")
alias seen.dur { if ( $hget(xSeen,$+(seendur:,$3,:,$2,:,$1)) ) {
tokenize 32 $v1
if ( $1 >= $2 ) return $seenmsg.duration2
else return $seenmsg.duration($st_rep($duration($1,2))) }
}
alias -l seentime {
var %d = $duration($calc($ctime - $1),2)
return $st_rep(%d)
}
alias -l st_rep return $replace($1,wk,$st2(week),day,$st2(day),hr,$st2(hour),min,$st2(minute),sec,$st2(second))
alias -l st2 return $+($chr(160),$1)
alias -l seendate return $asctime($1,m.dd HH:nn)
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 $bytes(%t,b) 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 $bytes($hfind(xSeen,$+(seen:*),0,w),b) entries in my database.
}
alias lastspoke {
if ( $isid ) return
if ( !$readini($_seen.file,settings,status) ) return
if ( $1 ) echo $colour(info) -a *** $seen.lastspoke($me,$iif($readini($_seen.file,settings,multiserver),*,$_net),:*:,$1)
else echo $colour(info) -a * /lastspoke: insufficient parameters
}
alias -l seen.lastspoke {
if ( !$readini($_seen.file,settings,wildcards) ) && ( $count($4,*,?) ) return $seenmsg.nowildcards($1)
var %s = $+(seenspoke:,$2,:,$iif($4,*,$3),:,$iif($4,$iif($count($4,*,?),$4,$4 $+ !*@*),*)), %t = $hfind(xSeen,%s,0,w)
if ( %t == 1 ) {
var %z = $hfind(xSeen,%s,1,w), %st = $gettok($hget(xSeen,%z),2,32), %sl = $iif(($gettok(%z,2,58) != $iif($dialog(xSeen),$did(xSeen,77),$_net)),$gettok(%z,2,58) )
return $seenmsg.lastspoke($1,$gettok($gettok(%z,4,58),1,33),$gettok(%z,3,58),$seentime(%st),$asctime(%st,m.dd HH:nn),$gettok($hget(xSeen,%z),3-,32)) $iif(%sl,$+([,%sl,]))
}
elseif ( %t > 1 ) {
if ( %t > 100 ) return $seenmsg.manymatch($1,$bytes(%t,b))
var %w = @seen.ls, %h, %fn = %t
window -hn %w
clear %w
while %t {
%h = $hfind(xSeen,%s,%t,w)
aline %w %h $gettok($hget(xSeen,%h),2,32)
dec %t
}
filter -cteuww 2 32 %w %w
var %ty = $gettok($line(%w,1),1,32), %ct = $gettok($hget(xSeen,%ty),2,32), %sg = $iif(($gettok(%ty,2,58) != $iif($dialog(xSeen),$did(xSeen,77),$_net)),$gettok(%ty,2,58))
window -c %w
return $seenmsg.lastspoke($1,$gettok($gettok(%ty,4,58),1,33),$gettok(%ty,3,58),$seentime(%ct),$asctime(%ct,m.dd HH:nn),$gettok($hget(xSeen,%ty),3-,32)) $iif(%sg,$+([,%sg,]))
}
elseif ( $4 == $null ) return $seenmsg.noonespoke($1)
else return $seenmsg.hasnotspoke($1,$4)
;return $seenmsg.lastspoke($replace(%y,$chr(32),$chr(44)))
}
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.default.check {
if ( !$readini($_seen.file,$1,status) ) _writeini $1 status 1
if ( !$readini($_seen.file,$1,format) ) _writeini $1 format Msg
if ( !$readini($_seen.file,$1,target) ) _writeini $1 target Chan
if ( !$readini($_seen.file,$1,notify) ) _writeini $1 notify 1
if ( !$readini($_seen.file,$1,trigger) ) _writeini $1 trigger !
if ( !$readini($_seen.file,$1,private) ) _writeini $1 private 1
if ( !$readini($_seen.file,$1,format2) ) _writeini $1 format2 Msg
if ( !$readini($_seen.file,$1,format3) ) _writeini $1 format3 Notice
}
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 ( $! ) .timerxSeen.backupcheck 1 0 backupcheck
}
alias -l defoutputcheck {
var %uc = $input(Do you really want to set default outputs $iif($1, for $+(",$1-,")) $+ ?,uy, xSeen Default Outputs)
if ( $! ) {
if ( $1 ) {
var %w = $remove($1-,$chr(32))
hadd -m xSeen.msgs %w $($+($,xseenmsg.,%w),2)
did -ram xSeen 93 $hget(xSeen.msgs,%w)
did -ra xSeen 96 $count93
did -ue xSeen 94
}
else {
def_output 1 1
refresh_output
}
}
}
alias -l resetdatacheck {
var %uc = $input(Do you really want to reset the data? Back up file would be reset too.,uyw,xSeen Reset)
if ( $! ) {
if ( $hget(xSeen) ) hfree xSeen
.hmake xSeen 100
.timerxSeen.resetdatadone 1 0 _blankinput All data has been cleared!
}
}
alias -l backupcheck {
if ( $isfile($_seen.bak) ) {
var %bc = $input(Do you also want to delete the backup seen data?,uy,xSeen Backup)
if ( $! ) _del.bak
}
.timerxSeen.outputcheck 1 0 outputcheck
}
alias -l outputcheck {
if ( $isfile($_seenmsgs.log) ) {
var %bc = $input(Do you also want to delete the output messages?,uy,xSeen Outputs)
if ( $! ) _del.output
}
_unload
}
alias -l autoloadbak.check {
var %al = $input(Do you want to load the backup seen data?,uy,Found xSeen Backup log)
if ( $! ) {
if ( !$hget(xSeen) ) hmake xSeen 100
hload xSeen $_seen.bak
}
}
alias -l outputreset.check {
if ( $var(%xseen*,0) ) || ( $isfile($_seenmsgs.log) ) {
var %al = $input(Do you want to reset previous outputs?,uy,Found previous xSeen outputs)
if ( $! ) def_output 1
else def_output
}
else def_output 1
}
alias -l _blankinput {
var %bi = $input($1-,uio,xSeen)
}
alias -l _blankinputerror {
var %bi = $input($1-,uwo,xSeen Error)
}
alias -l _unload .unload -rs $+(",$script,")
alias -l _del.bak .remove $_seen.bak
alias -l _del.output { hfree xSeen.msgs | .remove $_seenmsgs.log }
alias -l xSeen.init {
if ( !$hget(xSeen) ) hmake xSeen 100
if ( $isfile($_seen.bak) ) .timerxSeen.autoloadbak 1 0 autoloadbak.check
.timerxSeen.outputreset 1 0 outputreset.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
_writeini settings add.nicks.onjoin 1
_writeini settings multiserver 1
_writeini settings duration 1
_writeini settings wildcards 1
var %scon = $scon(0)
.scon -at1 .version
while %scon {
.scon $v1
if ( $_net ) {
seen.default $v1
var %ial = $ial(*,0)
while %ial {
var %ii = $ial(*,%ial)
xseen.add $+(seen:,$_net,:,%ii) load $ctime $comchan($gettok(%ii,1,33),1)
dec %ial
}
.scon -r
}
dec %scon
}
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 xSeen 8,9,10,45,49,50,51,52,68,69,73,110,111,112
did -h xSeen 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,100,101,102,103,104,105,106,107,108,109,115,116,117,118,119,121,122
if ( !$readini($_seen.file,settings,flood.pro) ) did -b xSeen 39,40,48
if ( !$istok($didtok(xSeen,11,44),xSeen,44) ) did -ac xSeen 11 xSeen
if ( !$istok($didtok(xSeen,26,44),ALL,44) ) did -ac xSeen 26 ALL
if ( !$istok($didtok(xSeen,98,44),Status Window,44) ) {
did -ac xSeen 98 Status Window
did -a xSeen 98 Active Window
}
var %k = 1, %se
while $scon(%k) {
%se = $iif($scon(%k).network,$v1,$scon(%k).server)
if ( !$istok($didtok(xSeen,11,44),%se,44) ) && ( $scon(%k).status == connected ) {
did -a xSeen 11,26 %se
did -ac xSeen 12 %se
}
inc %k
}
did -ra xSeen 39 $readini($_seen.file,settings,flood.lines)
did -ra xSeen 40 $readini($_seen.file,settings,flood.time)
did -ra xSeen 48 $readini($_seen.file,settings,flood.ignore)
if ( $readini($_seen.file,settings,flood.pro) ) did -c xSeen 67
if ( !$istok($didtok(xSeen,73,44),No Saving,44) ) {
did -ac xSeen 73 No Saving
didtok xSeen 73 44 No Notification,No Trigger
}
if ( !$istok($didtok(xSeen,120,44),All,44) ) {
did -a xSeen 120 All
did -ac xSeen 120 Current
}
if ( !$istok($didtok(xSeen,121,44),Seen,44) ) {
did -ac xSeen 121 Seen
did -a xSeen 121 Lastspoke
}
did -c xSeen 84
did -e xSeen 73
did11
did26
did73
refresh_output
did -ra xSeen 96 $count93
}
alias -l did11 {
if ( $did(11) != xSeen ) {
var %d11 = $did(11)
did -uev xSeen 13,14,15,16,17,18,19,20,24,25,27,28,59,60,61,62,63,64,65,115
did -h xSeen 66,82,100,101,102,103,104,105,106,107,108,109,116,117,118
did -r xSeen 18,27,64,65
did -b xSeen 13,14,17,28
var %d11_18 = $readini($_seen.file,%d11,format)
did -ac xSeen 18 %d11_18
did -a xSeen 18 $iif(%d11_18 == Msg,Notice,$v2)
var %d11_64 = $readini($_seen.file,%d11,target)
did -ac xSeen 64 %d11_64
did -a xSeen 64 $iif(%d11_64 == Chan,Nick,$v2)
var %d11_65 = $readini($_seen.file,%d11,format3)
did -ac xSeen 65 %d11_65
did -a xSeen 65 $iif(%d11_65 == Msg,Notice,$v2)
var %d11_27 = $readini($_seen.file,%d11,format2)
did -ac xSeen 27 %d11_27
did -a xSeen 27 $iif(%d11_27 == Msg,Notice,$v2)
did -c xSeen $iif($readini($_seen.file,%d11,status),15,16)
if ( $readini($_seen.file,%d11,notify) ) did -c xSeen 59
did -era xSeen 19 $readini($_seen.file,%d11,trigger)
if ( $readini($_seen.file,%d11,private) ) {
did -e xSeen 63,64,65
did -c xSeen 62
}
}
else {
did -uev xSeen 15,16,24,66,82,100,101,102,103,104,105,106,107,108,109,116,117,118
did -c xSeen $iif($readini($_seen.file,settings,status),15,16)
if ( $readini($_seen.file,settings,smart) ) did -c xSeen 66
if ( $readini($_seen.file,settings,wildcards) ) did -c xSeen 82
if ( $readini($_seen.file,settings,events.texts) ) did -c xSeen 101
if ( $readini($_seen.file,settings,events.actions) ) did -c xSeen 102
if ( $readini($_seen.file,settings,events.querys) ) did -c xSeen 103
if ( $readini($_seen.file,settings,events.joins) ) did -c xSeen 104
if ( $readini($_seen.file,settings,events.parts) ) did -c xSeen 105
if ( $readini($_seen.file,settings,events.quits) ) did -c xSeen 106
if ( $readini($_seen.file,settings,events.kicks) ) did -c xSeen 107
if ( $readini($_seen.file,settings,events.nickchange) ) did -c xSeen 108
if ( $readini($_seen.file,settings,add.nicks.onjoin) ) did -c xSeen 116
if ( $readini($_seen.file,settings,multiserver) ) did -c xSeen 117
if ( $readini($_seen.file,settings,duration) ) did -c xSeen 118
did -h xSeen 13,14,17,18,19,20,25,27,28,59,60,61,62,63,64,65,115
did -b xSeen 109,100
}
}
alias -l did26 {
did -e xSeen 9,10
if ( $did(26) == ALL ) {
did -e xSeen 8,9,10,68
did $+(-e,$iif($readini($_seen.file,settings,auto.delete),c)) xSeen 45
did -b xSeen 49,50,51,52
if ( $readini($_seen.file,settings,auto.delete) ) {
did -e xSeen 51,52
did -era xSeen 49 $readini($_seen.file,settings,auto.delete.every)
did -era xSeen 50 $readini($_seen.file,settings,auto.delete.old)
}
}
else {
did -b xSeen 8,51,52,68
did -ub xSeen 45
did -rb xSeen 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 xSeen 70,71,72
did -er xSeen 69
if ( $readini($_seen.file,%d12,%do) ) didtok xSeen 69 44 $v1
}
alias -l did93 {
var %l = 1,%s
while $did(xSeen,93,%l) {
%s = %s $+ $v1 $+ $chr(32)
inc %l
}
return %s
}
alias -l count93 {
var %l = 1,%s = 0, %t
while $did(xSeen,93,%l).len {
inc %s $v1
inc %l
}
%s = 200 - %s
return %s
}
alias -l xoutputs return Talking,Acting,Quitting,Parting,Joined,Joining,Nick Change,Kicking,Kicked,Many Matches,Not Seen,No Wildcards,Me,Self,Here,Nseen,On Chan,Not On Chan,Load,Long Nick,Found,Query,Duration,Duration2,No Match,Last Spoke,Has not spoke,No one spoke
alias -l refresh_output {
if ( !$1 ) {
did -r xSeen 92
didtok xSeen 92 44 $xoutputs
did -kc xSeen 92 1
did -ram xSeen 93 $hget(xSeen.msgs,$remove($did(xSeen,92,1),$chr(32)))
}
}
;alias set defaults
alias -l def_output {
var %o = $remove($xoutputs,$chr(32)), %t = 1, %l = $numtok(%o,44)
while %t <= %l {
if ( $1 ) && ( $($+(%,xseenmsg.,$gettok(%o,%t,44)),2) ) hadd -m xSeen.msgs $gettok(%o,%t,44) $($+(%,xseenmsg.,$gettok(%o,%t,44)),2)
elseif ( $1 ) || (( !$1 ) && ( !$hget(xSeen.msgs,$gettok(%o,%t,44)) )) hadd -m xSeen.msgs $gettok(%o,%t,44) $($+($,xseenmsg.,$gettok(%o,%t,44)),2)
inc %t
}
hsave -o xSeen.msgs $_seenmsgs.log
unset %xseenmsg.*
if ( $2 ) .timerxSeen.setdefoutputs 1 0 _blankinput Loaded Default Outputs!
}
alias -l xSeen.about {
noop $input(Project: xSeen $crlf $crlf Version: $seen.version $crlf $crlf Written by: xDaeMoN $crlf $crlf Email: xDaemon@xDaemon.us $crlf $crlf Description: A Multi-Server Seen System that has seen notification and more. $crlf $crlf Credits: $crlf $crlf Tye (for his Simple Seen System) and to the authors of Gseen and Bseen tcls.,guo,About xSeen)
}
alias -l xseen.cutlen return $iif($len($1-) > 100,$mid($1-,1,100) $+ ,$1-)
alias -l joinchans.buffer {
var %w = @JoinChans.buffer
window -hn %w
if ( $2 ) aline %w $1-
if ( !$timer(xSeen.jcb) ) || ( !$group(#xsWHO) ) .timerxSeen.jcb 1 2 if ( $!line( %w ,1) ) getchan.buff $!v1
}
alias -l getchan.buff {
var %w = @JoinChans.buffer
if ( $group(#xsWHO) == off ) .enable #xsWHO
scon $1 who $2
if ( $window(%w) ) dline %w 1
}
alias -l gethost.buffer {
var %w = @GetHost.buffer
window -hn %w
if ( $4 ) {
if ( $fline(%w,$1-2 *,0) > 1 ) {
var %a = $v1
while %a {
dline %w $fline(%w,$1-2 *,%a)
dec %a
}
}
aline %w $1-
}
if ( !$timer(xSeen.ghb) ) || ( !$group(#xseen.gethost) ) .timerxSeen.ghb 1 2 if ( $!line( %w ,1) ) gethost.buff $!v1
}
alias -l gethost.buff {
var %w = @GetHost.buffer
if ( $group(#xseen.gethost) == off ) .enable #xseen.gethost
scon $1 .userhost $2
}
alias -l sc {
if ( $1 == $null ) return
var %o = $scon(0)
while %o {
if ( $istok($scon(%o).network $scon(%o).server,$1,32) ) return %o
dec %o
}
inc %o
}
;####################### RAWS #######################
raw 005:*: {
if ( $wildtok($1-,*NICKLEN=*,1,32) ) _writeini $_net nicklen $gettok($wildtok($1-,*NICKLEN=*,1,32),2,61)
}
#xseen.gethost on
raw 302:*: {
if ( $2 ) {
var %w = @GetHost.buffer, %poa = $iif($gettok($line(%w,1),3,32) == act,6-,5-)
tokenize 61 $2-
xseen.add $+(seen:,$_net,:,$+($1,!,$right($2,-1))) $gettok($line(%w,1),3-5,32)
xseen.add $+(seenspoke:,$_net,:private:,$+($1,!,$right($2,-1))) private $gettok($line(%w,1),4,32) $xseen.cutlen($gettok($line(%w,1),%poa,32))
.disable #xseen.gethost
}
if ( $window(%w) ) dline %w 1
halt
}
#xseen.gethost end
#xsWHO off
raw *:*: {
if ( $istok(353.366.324.329,$numeric,46) ) halt
elseif ( $numeric == 352 ) {
xseen.add $+(seen:,$_net,:,$+($6,!,$3,@,$4)) joined $ctime $2
xseen.add $+(seendur:,$_net,:,$2,:,$6) $ctime $ctime
halt
}
elseif ( $numeric == 315 ) {
.disable #xsWHO
joinchans.buffer
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 v $+ $seen.version 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 "Messages", 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 "Go", 87, 120 45 25 12
button "Go", 95, 120 110 25 12, tab 76
button "Preview", 99, 10 110 25 12, tab 76
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, 43 25 102 80, tab 76 (drop sort)
combo 98, 10 96 50 20, tab 76 (drop sort)
combo 120, 106 96 40 20, tab 76 (drop sort)
combo 121, 75 46 43 20, (drop sort)
check "Enable Auto Delete Data", 45, 70 88 70 10, tab 3
check "Enable private trigger", 62, 81 59 65 10, tab 1
check "Smart xSeen", 66, 10 59 45 10, tab 1
check "Enable Trigger Flood Protection", 67, 15 105 90 10, tab 4
check "Wildcards", 82, 10 72 40 10, tab 1
check "Enable notification", 59, 10 98 65 10, tab 1
check "Edit Selected Output", 94, 10 77 75 10, tab 76
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, 58 72 50 10, tab 1
check "Multi-Server", 117, 58 59 40 10, tab 1
check "Duration", 118, 104 59 40 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 46 56 11, autohs
edit "", 80, 10 68 136 60, multi vsbar
edit "", 93, 10 40 136 36, multi vsbar limit 200 tab 76
edit "", 96, 115 77 18 10, tab 76 read
edit "", 113, 130 48 15 10, tab 3 (center limit 3)
list 69, 10 66 77 65, tab 2 (sort vsbar hsbar)
menu "Mode", 81
menu "Help",123
item "Search", 83, 81
item "Settings", 84, 81
item "Readme.txt",124,123
item break,125
item "About",126,123
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 "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 / lastspoke", 20, 100 111 50 10, tab 1
text "Select :", 91, 10 27 18 10, tab 76
text "left", 97, 136 78 10 10, tab 76
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
text "Reset :",119, 86 101 20 10, tab 76
text "@",122, 68 47 5 11
}
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
_writeini settings duration $did(118).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) ) hadd xSeen.msgs $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) ) {
if ( !$hget(xSeen) ) hmake xSeen 100
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) ) && ( $did(12) ) {
var %d70 = $gettok($did(70),1,32)
if ( $chr(35) != $left(%d70,1) ) %d70 = $+($v1,%d70)
if ( !$istok($didtok($dname,69,44),%d70,44) ) did -az $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 $(}, )
if ( $did(121) == Seen ) did -ra $dname 80 $strip($seenpar($me,$+(seen:,$iif($did(77) == All,*,$v1),:,$did(79))))
else did -ra $dname 80 $strip($seen.lastspoke($me,$iif($did(77) == All,*,$v1),:*:,$did(79)))
did -rf $dname 79
}
}
elseif ( $did == 92 ) {
did -ram $dname 93 $hget(xSeen.msgs,$remove($did($dname,92),$chr(32)))
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 ) {
if ( $did(120) ) {
if ( $v1 == Current ) {
if ( $did(92) ) .timerxSeendefoutput_check 1 0 defoutputcheck $v1
else .timerxSeen.nooutputselected 1 0 _blankinput Please select an output to reset.
}
else .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,97,119
did -v $dname 77,78,79,80,85,86,87,88,121,122
did -b $dname 85,88
did -c $dname 83
did -u $dname 84
did -m $dname 80
did -f $dname 79
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
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,121,122
did -v $dname 6,91,92,93,94,95,96,97,98,99,119,120
did -bv $dname 90
}
elseif ( $did == 124 ) {
noop $input(Cannot find the $mircdirxSeen_Readme.txt $+ . Do you want to try to find this file yourself?,uwy,xSeen: Error finding Readme file)
if ( $! == $true ) {
var %ee = $sfile(xSeen_Readme.txt,xSeen Readme.txt,Run)
if ( xSeen_Readme.txt == $nopath(%ee) ) {
run $+(",%ee,")
}
else goto error
}
else {
:error
_blankinputerror Cannot find the $mircdirxSeen_Readme.txt $+ . Check to see that the file exists on your disk. If it doesn't, you need to reinstall it.
}
}
elseif ( $did == 126 ) xSeen.about
}
}
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,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 output msgs
alias -l seenmsg.text return $replace($hget(xSeen.msgs,talking),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<date>,$6,<on_chan>,$7)
alias -l seenmsg.act return $replace($hget(xSeen.msgs,acting),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<date>,$6,<on_chan>,$7)
alias -l seenmsg.quit return $replace($hget(xSeen.msgs,quitting),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<date>,$6,<quit_msg>,$7)
alias -l seenmsg.part return $replace($hget(xSeen.msgs,parting),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<date>,$6,<part_msg>,$7)
alias -l seenmsg.join return $replace($hget(xSeen.msgs,joining),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<time>,$5,<date>,$6,<on_chan>,$7)
alias -l seenmsg.nick return $replace($hget(xSeen.msgs,nickchange),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<newnick>,$5,<time>,$6,<date>,$7,<on_chan>,$8)
alias -l seenmsg.kicking return $replace($hget(xSeen.msgs,kicking),<nick>,$1,<seen_nick>,$2,<address>,$3,<knick>,$4,<channel>,$5,<time>,$6,<date>,$7,<kick_msg>,$8,<on_chan>,$9)
alias -l seenmsg.kick return $replace($hget(xSeen.msgs,kicked),<nick>,$1,<seen_nick>,$2,<address>,$3,<channel>,$4,<kickedby>,$5,<time>,$6,<date>,$7,<kick_msg>,$8)
alias -l seenmsg.manymatch return $replace($hget(xSeen.msgs,manymatches),<nick>,$1,<number>,$2)
alias -l seenmsg.nomatch return $replace($hget(xSeen.msgs,nomatch),<nick>,$1)
alias -l seenmsg.notseen return $replace($hget(xSeen.msgs,notseen),<nick>,$1,<seen_nick>,$2)
alias -l seenmsg.me return $replace($hget(xSeen.msgs,me),<nick>,$1)
alias -l seenmsg.self return $replace($hget(xSeen.msgs,self),<nick>,$1)
alias -l seenmsg.here return $replace($hget(xSeen.msgs,here),<nick>,$1,<seen_nick>,$2)
alias -l seenmsg.nseen return $replace($hget(xSeen.msgs,nseen),<nick>,$1,<address>,$2,<channel>,$3,<time>,$4,<date>,$5,<network>,$6)
alias -l seen.onchan { return $replace($iif($1 ison $2,$hget(xSeen.msgs,onchan),$hget(xSeen.msgs,notonchan)),<seen_nick>,$1) }
alias -l seenmsg.load return $replace($hget(xSeen.msgs,load),<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4,<date>,$5)
alias -l seenmsg.joined return $replace($hget(xSeen.msgs,joined),<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4,<date>,$5,<channel>,$6)
alias -l seenmsg.longnick return $replace($hget(xSeen.msgs,longnick),<nick>,$1)
alias -l seenmsg.nowildcards return $replace($hget(xSeen.msgs,nowildcards),<nick>,$1)
alias -l seenmsg.found return $replace($hget(xSeen.msgs,found),<number>,$1,<number2>,$2,<seen_nicks>,$3,<seen_msg>,$4-)
alias -l seenmsg.query return $replace($hget(xSeen.msgs,query),<nick>,$1,<seen_nick>,$2,<address>,$3,<time>,$4,<date>,$5)
alias -l seenmsg.duration return $replace($hget(xSeen.msgs,duration),<time>,$1)
alias -l seenmsg.duration2 return $hget(xSeen.msgs,duration2)
alias -l seenmsg.lastspoke return $replace($hget(xSeen.msgs,lastspoke),<nick>,$1,<seen_nick>,$2,<channel>,$3,<time>,$4,<date>,$5,<message>,$6)
alias -l seenmsg.hasnotspoke return $replace($hget(xSeen.msgs,hasnotspoke),<nick>,$1,<seen_nick>,$2)
alias -l seenmsg.noonespoke return $replace($hget(xSeen.msgs,noonespoke),<nick>,$1,<channel>,$2)
;alias default outputs
alias -l xseenmsg.joining return <nick>, <seen_nick> (<address>) was last seen joining <channel> <time> ago (<date>). <on_chan>
alias -l xseenmsg.talking return <nick>, <seen_nick> (<address>) was last seen talking on <channel> <time> ago (<date>). <on_chan>
alias -l xseenmsg.acting return <nick>, <seen_nick> (<address>) was last seen acting on <channel> <time> ago (<date>). <on_chan>
alias -l xseenmsg.quitting return <nick>, <seen_nick> (<address>) was last seen quiting on <channel> <time> ago (<date>) stating: (<quit_msg>)
alias -l xseenmsg.parting return <nick>, <seen_nick> (<address>) was last seen leaving <channel> <time> ago (<date>) stating: (<part_msg>)
alias -l xseenmsg.nickchange return <nick>, <seen_nick> (<address>) was last seen changing nick on <channel> to <newnick> <time> ago (<date>) <on_chan>
alias -l xseenmsg.kicking return <nick>, <seen_nick> (<address>) was last seen kicking <knick> from <channel> <time> ago (<date>) with the reason: (<kick_msg>) <on_chan>
alias -l xseenmsg.kicked return <nick>, <seen_nick> (<address>) was last seen kicked from <channel> by <kickedby> <time> ago (<date>) with the reason: (<kick_msg>)
alias -l xseenmsg.manymatches return <nick>, I found <number> matches to your query; please refine it to see any output.
alias -l xseenmsg.nomatch return <nick>, No matches were found.
alias -l xseenmsg.notseen return <nick>, I have not seen <seen_nick>.
alias -l xseenmsg.me return <nick>, you found me!
alias -l xseenmsg.self return <nick>, Looking for yourself, eh?!
alias -l xseenmsg.here return <nick>, <seen_nick> is right here!
alias -l xseenmsg.nseen return <nick> (<address>) was looking for you on <channel> <time> ago (<date>). (<network>)
alias -l xseenmsg.onchan return <seen_nick> is still there.
alias -l xseenmsg.notonchan return <seen_nick> is not there anymore though...
alias -l xseenmsg.joined return <nick>, <seen_nick> (<address>) was last seen <time> ago (<date>) when I joined <channel>.
alias -l xseenmsg.load return <nick>, <seen_nick> (<address>) was last seen <time> ago (<date>) when I loaded this script.
alias -l xseenmsg.longnick return <nick>, that nick is too long. Nick length is limited in this network.
alias -l xseenmsg.nowildcards return <nick>, Wildcards are not allowed.
alias -l xseenmsg.found return I found <number> matches to your query. Here are the <number2> most recent (sorted): <seen_nicks>. <seen_msg>
alias -l xseenmsg.query return <nick>, <seen_nick> (<address>) was last seen sending me a private message <time> ago (<date>).
alias -l xseenmsg.duration return after spending <time> there.
alias -l xseenmsg.duration2 return after spending some time there.
alias -l xseenmsg.lastspoke return <seen_nick> last spoke on <channel> <time> ago (<date>) saying: <message>
alias -l xseenmsg.hasnotspoke return <seen_nick> has not uttered a word yet.
alias -l xseenmsg.noonespoke return No one has uttered a word yet here.
;####################### EOF #######################