; #= P&P -rs ; ######################################## ; Peace & Protection ; Away system ; ######################################## on *:OPEN:=:{ if ($group(#_awaylog) == on) _awaylog @ 11 === $nick opened a DCC chat ; If we're away and chat was auto-accepted, say something if ((%!away) && ($gettok(%_chat.open. [ $+ [ $nick ] ] ,1,32) == auto)) $iif($_cfgi(away.act),describe,msg) =$nick $_awayformat(awaychat) } on *:CONNECT:{ if ($group(#_awaylog) == on) _awaylog @ 12 »»» You connected to $server : $port if (%!away) { disps Setting away on server... _upd.away if (%-oldawaymode == $null) %-oldawaymode = $_cfgi(umode) } else resetidle } alias _aa.chk if (($server) && (%!away == $null) && (%`autoaway) && ($idle >= %`autoaway.time) && ((%_autoatime == $null) || (%_autoatime < 1))) aa.popup alias -l aa.popup { _ssplay setautoaway 1 if ($_cfgi(autoaway.ask)) { _dialog -mdo autoaway autoaway %_autoatime = 16 .timer.aawarning -o 0 1 aa.upd } else autoaway now } alias -l aacancel resetidle | .timer.aawarning off | unset %_autoatime alias -l aa.upd { if ($dialog(autoaway) == $null) { aacancel | return } dec %_autoatime if (%_autoatime == 0) { dialog -x autoaway autoaway now } else did -o autoaway 102 1 %_autoatime seconds } ; autoaway [+/-qlp] [on|off|#|now] alias autoaway { var %act = $1 if ($left($1,1) isin +-) { var %modes = $_fixmode($1) if (q isin %modes) { _cfgw autoaway.quiet $_convmode(%modes,q) dispa Quiet auto-away is now $:b($_tf2o($_convmode(%modes,q))) } if (p isin %modes) pager auto $iif(. isin %modes,q,$_tf2o($_convmode(%modes,p))) if (l isin %modes) awaylog auto $_tf2o($_convmode(%modes,l)) if ($2) %act = $2 | else return } if (%act == now) { .timer.aawarning off unset %_autoatime away +f $+ $iif($_cfgi(autoaway.pager),p,-p) $+ $iif($_cfgi(autoaway.log),+l,-l) $+ $iif($_cfgi(autoaway.quiet),+q,-q) $replace($_msg(autoaway),&min&,$calc(%`autoaway.time / 60)) } else { if (%act isnum) { if ((%act > 0) && (%act isnum)) { `set autoaway.time %act * 60 | `set autoaway 1 } else { `set autoaway.time 600 | `set autoaway 0 } } elseif ((%act == on) || (%act == off)) `set autoaway $_o2tf(%act) if (%`autoaway) dispa Auto-away is $iif(%act,now) $:b(enabled) after $:t($calc(%`autoaway.time / 60)) min else dispa Auto-away is $iif(%act,now) $:b(disabled) } } alias -l _convpager if ((+. isin $1) && (+p isin $1)) return quiet | else return $_convmode($1,p,$2) ; away [+/-mode] [reason] ; mode contains q)uiet l)ogging p)ager s)ounds off b)eeps off m)essage privately c)hannel message n)ick r)epeating as +/- (ex +p-lq) ; mode contains a)sk to ask about reason even if given; f)orget to not remember as recent away msg alias qa if ($left($1,1) isin -+) away $1 $+ +q $2- | else away +q $1- alias a away $1- alias away { var %nonick,%num,%count = 0 if ($left($1,1) isin -+) { %_awmode = $_fixmode($1) | var %reason = $2- } else { %_awmode = + | var %reason = $1- } var %pager = $_convpager(%_awmode,$_cfgi(away.pager)),%log = $_convmode(%_awmode,l,$_cfgi(away.log)),%quiet = $_convmode(%_awmode,q,$_not($show)) if (%reason) { if (+a isin %_awmode) %reason = $$dialog(away,away,-4) } else { set %.pager %pager set %.log %log set %.quiet %quiet set %.reason %reason %reason = $$dialog(away,away,-4) %pager = %.pager %log = %.log %quiet = %.quiet } %_awmode = $remove(%_awmode,+q,-q) $+ $iif(%quiet,+q) %!logging = %log if (%!logging) .enable #_awaylog %!pager = %pager if (%!away) { if ($gettok(%!away,4,32)) .ebeeps on if ($gettok(%!away,5,32)) .sound on if (+n isin $gettok(%!away,3,32)) { if (n !isin %_awmode) { %_awmode = %_awmode $+ +n | %nonick = 1 } } %!away = $gettok(%!away,1-2,32) %_awmode _away.logit - 9 ««« Reset away ( $+ %reason $+ ) } else { if (%_newpages > 0) pager v 0 x else .pager f %_away.log = $_temp(awy) unset %_awaylog.* %_awaylog.^ = 0 if ((n !isin %_awmode) && ($_cfgi(away.chnick))) %_awmode = %_awmode $+ +n %!away = $me $ctime %_awmode if ($_cfgi(awaylog.clear)) .remove %_away.log _away.logit - 9 ««« Set away ( $+ %reason $+ ) if ($_cfgi(away.closeq)) { if ($query(0)) { _away.logit - 9 ««« Closed $query(0) query windows | close -m } dqwindow hide } if (($_cfgi(away.deop)) && ($server) && ($chan(0))) { %num = $chan(0) :loopd if ($me isop $chan(%num)) { _linedance .raw mode $chan(%num) -o $me | inc %count } if (%num > 1) { dec %num | goto loopd } if (%count) _away.logit - 9 ««« Deopped in %count channels } if ($_cfgi(away.dq)) .dqwindow on } var %beep = $_convmode(%_awmode,b,$_cfgi(away.beepoff)),%snd = $_convmode(%_awmode,s,$_cfgi(away.sndoff)) if ((%beep) && ($_optn(3,28))) .ebeeps off else %beep = 0 if ((%snd) && ($_optn(3,19))) _blackbox .sound off else %snd = 0 %!away = %!away %beep %snd %reason if ($server) { if ($away == $false) { %-oldawaymode = $usermode var %newumode = $_cfgi(uaway),%oldumode = $_cfgi(umode) if ((s !isin $usermode) && (s isin %oldumode)) %newumode = $remove(%newumode,s) if ((w !isin $usermode) && (w isin %oldumode)) %newumode = $remove(%newumode,w) umode * %newumode $+ $remove($usermode,i,s,w) } _upd.away } .timer.awayrep off if (+q !isin %_awmode) { var %amsg = $_finalmsg($replace($_msg(away),&reason&,%reason,&pager&,$_tf2o(%pager),&logging&,$_tf2o(%log),&when&,$_time)) if ($_convmode(%_awmode,m,$_cfgi(away.msg))) $iif($_cfgi(away.act),acme,acmsg) %amsg if (($chan(0)) && ($server)) if ($_convmode(%_awmode,c,$_cfgi(away.chan))) $iif($_cfgi(away.act),ame,amsg) %amsg if ($_convmode(%_awmode,r,$_cfgi(away.rep))) .timer.awayrep -o 0 $iif($_cfgi(away.delay) > 2,$calc($_cfgi(away.delay) * 60),300) _awayrep $_convmode(%_awmode,c,$_cfgi(away.chan)) $_convmode(%_awmode,m,$_cfgi(away.msg)) } if ((+n isin %_awmode) && ($_not(%nonick))) { if ($_cfgi(away.nick)) nick $_finalmsg($replace($ifmatch,&me&,$me,&reason&,$gettok(%reason,1,32))) else nick $left($me,5) $+ Away } %!title = $_cfgi(title.away) _ssplay setaway 1 %!pager %!logging %reason if (+f !isin %_awmode) _recent2 away 9 %reason unset %_awmode %_awayword.* } alias -l _awayrep { var %amsg = $_awayformat(awayrep) if (($chan(0)) && ($server) && ($1)) $iif($_cfgi(away.act),ame,amsg) %amsg if ($2) $iif($_cfgi(away.act),acme,acmsg) %amsg } ; back [+/-mode] [note] ; mode contains q)uiet p)ager m)essage privately c)hannel message n)ick alias back { if ($left($1,1) isin -+) { var %mode = $_fixmode($1),%reason = $2- } else { var %mode = +,%reason = $1- } if ($show == $false) %mode = %mode $+ +q if (%!away == $null) { _okcancel 0 You are not away- Still announce back? %!away = $me $ctime + 0 0 $iif(%reason,%reason,away) | var %gone = ??,%reason } else var %gone = $_dur($calc($ctime - $gettok(%!away,2,32))) if ((+q isin $gettok(%!away,3,32)) && (q !isin %mode)) %mode = %mode $+ $iif($_yesno(1,You set away quietly- Return quietly too?),+q,-q) %!pager = $_convpager(%mode,$_cfgi(back.pager)) _away.logit - 9 »»» Set back (gone %gone $+ ) .disable #_awaylog .timer.dtqc off %!title = $_cfgi(title.here) if ($server) { .raw away if (%-oldawaymode) umode * %-oldawaymode } if ($_cfgi(away.dq)) .dqwindow off .timer.awayrep off if ($_convmode(%mode,n,$_convmode($gettok(%!away,3,32),n))) { if ($gettok(%!away,1,32) !== $me) { nick $ifmatch .timer.nickdelay off } } if (+q !isin %mode) { var %amsg = $_finalmsg($replace($_msg($iif(%reason,backnote,back)),&reason&,$gettok(%!away,6-,32),&pager&,$_tf2o(%!pager),&logging&,Off,&when&,$_time,&awaytime&,%gone,&awaywhen&,$_time($gettok(%!away,2,32)),¬e&,%reason)) if ($_convmode(%mode,m,$_convmode($gettok(%!away,3,32),m,$_cfgi(away.msg)))) $iif($_cfgi(away.act),acme,acmsg) %amsg if (($chan(0)) && ($server)) if ($_convmode(%mode,c,$_convmode($gettok(%!away,3,32),c,$_cfgi(away.chan)))) $iif($_cfgi(away.act),ame,amsg) %amsg } if ($gettok(%!away,4,32)) .ebeeps on if ($gettok(%!away,5,32)) .sound on _ssplay setback 1 set -u %.gone %gone %!away resetidle if (%!logging) $iif(%_awaylog.?,%_awaylog.?,0) $iif(%_awaylog.!,%_awaylog.!,0) $iif(%_awaylog.+,%_awaylog.+,0) $iif(%_awaylog.@,%_awaylog.@,0) %!logging = 0 if (%_newpages > 0) pager v 0 x else .pager f unset %_timedclose %!away %-oldawaymode %_awayword.* %-aremind.* } alias qb if ($left($1,1) isin -+) back $1 $+ +q $2- | else back +q $1- ; /b may be /ban or /back alias b { if ($_cfgi(b.ban)) { if (($1 == $null) && (%!away)) $$dialog(banorback1,banorback,-4) else ban $1- } else { if (((* isin $1) && (. isin $1)) || (($1 ischan) && (* isin $2))) $$dialog(banorback2,banorback,-4) $1- else back $1- } } alias -l _upd.away if ($server) _linedance .raw away : $+ $_awayformat($iif(%!pager,wawayp,waway)) on me:*:NICK:if (%!away) _upd.away ; Pager ctcp &*:PAGE:?:_paged viaCTCP * $2- | if ($result) _linedance _qcr $nick PAGE $_pagereply on &^*:TEXT:!page *:#:if ($2 == $me) _paged in $+ $chan $chan $3- | if ($result) _linedance _qnotice $nick *** $_pagereply *** on &^*:TEXT:!page*:?:_paged viamsg $nick $2- | if ($result) _linedance _qnotice $nick *** $_pagereply *** on &^*:CHAT:!page*:_paged inDCCchat =$nick $2- | if ($result) _linedance .msg =$nick *** $_pagereply *** on &^*:CHAT:PAGE:_paged inDCCchat =$nick $remove($2-,$chr(1)) | if ($result) _linedance _qcr =$nick PAGE $_pagereply alias -l _pagereply if ($_finalmsg($replace($_msg($iif(%!pager,pageron,pageroff)),&nick&,$nick))) return $ifmatch | $$$ alias -l _paged { haltdef inc -u20 %_rcvd.page inc -u10 %_rcvd.page. $+ $site if ((%_rcvd.page > 3) || (%_rcvd.page. [ $+ [ $site ] ] > 2)) return 0 var %error = 0 if ((%_rcvd.page > 2) || (%_rcvd.page. [ $+ [ $site ] ] > 1)) %error = 1 $2 $nick %error $1 %!pager $3- if (%!pager == 0) return $_not(%error) inc %_newpages inc %_totalpages write $_temp(pag) $nick $1 $ctime $2 $fulladdress $3- if ($_cfgi(pager.classic)) _juryrig pager v %_totalpages s elseif ($dialog(pager)) _juryrig pager v $did(pager,198) s else _juryrig pager v %_totalpages s return $_not(%error) } ; /pager [a[way]|h[ere]|auto] [on|off|q[uiet]]] ; /pager v[iew] [n] [x|s] ; /pager f[lush] ; (x means clear pages on close; s plays pager sound) ;;; clean up; use /filter or somthin for log copy alias pager { if (f* iswm $1) { %_totalpages = 0 %_newpages = 0 .remove $_temp(pag) dispa Pager flushed. (any saved pages cleared) return } if (v* iswm $1) { if (%_totalpages == 0) _error No pages to view.You have not been paged since you last cleared your pager. var %curr,%num,%page,%where,%nick,%offs,%msg,%ln,%logged,%win,%bit if (($2 isnum) && (($2 >= 1) && ($2 <= %_totalpages))) %curr = $2 else %curr = $calc(%_totalpages + 1 - $iif(%_newpages,%_newpages,1)) if (%curr > $calc(%_totalpages - %_newpages)) %_newpages = $calc(%_totalpages - %curr) if (($2 == x) || ($3 == x)) %_clr-pager = 1 if ($_cfgi(pager.classic)) { %_newpages = 0 if ($window(@Pager)) clear @Pager else { _window 2.1 -l +l @Pager $_center(350,350) @Pager | unset %_clr-pager } %num = 1 :loopC %page = $read -tnl [ $+ [ %num ] ] $_temp(pag) %where = $gettok(%page,4,32) %nick = $gettok(%page,1,32) %bit = $iif(%num == %curr,-a) aline %bit @Pager You were paged $_p2s($gettok(%page,2,32)) at $_datetime($gettok(%page,3,32)) aline %bit @Pager PAGE from $:t(%nick)) if ($gettok(%page,6-,32)) aline %bit @Pager $:b(Message) $+ - $:h($gettok(%page,6-,32)) if ((%!away) && (%_clr-pager)) || ((%!away == $null) && ($_not(%_clr-pager))) %logged = 0 elseif (=* iswm %where) { %win = chat %nick | %logged = $calc($line(%win,0) - 3) } elseif ($query(%nick)) { %win = %nick | %logged = $line(%nick,0) } else { window -hn @.loghide awaylog pn ! %nick @.loghide %win = @.loghide %logged = $line(@.loghide,0) } if (%logged) { %offs = $iif(=* iswm %where,3,0) %ln = 1 :loopCL aline %bit @Pager $strip($line(%win,$calc(%ln + %offs))) if (%ln >= 5) aline %bit @Pager ... ... ... elseif (%ln < %logged) { inc %ln | goto loopCL } } window -c @.loghide if (%num < %_totalpages) { aline @Pager $::: | inc %num | goto loopC } titlebar @Pager - %_totalpages total pages } else { if ($dialog(pager) == $null) { dialog -md pager pager | unset %_clr-pager } did -o pager 1 1 Page %curr of %_totalpages $iif(%_clr-pager,(logged)) did -o pager 198 1 %curr %page = $read -tnl [ $+ [ %curr ] ] $_temp(pag) %nick = $gettok(%page,1,32) %where = $gettok(%page,4,32) %msg = $strip($gettok(%page,6-,32)) did -o pager 2 1 %nick did -o pager 3 1 $iif(%msg == $null,(not given),%msg) did -o pager 199 1 $gettok(%page,5,32) if ((%!away) && (%_clr-pager)) || ((%!away == $null) && ($_not(%_clr-pager))) %logged = 0 elseif (=* iswm %where) { %win = chat %nick | %logged = $calc($line(%win,0) - 3) } elseif ($query(%nick)) { %win = %nick | %logged = $line(%nick,0) } else { window -hn @.loghide awaylog pn ! %nick @.loghide %win = @.loghide %logged = $line(@.loghide,0) } did -ra pager 4 You were paged by %nick $_p2s($gettok(%page,2,32)) at $_datetime($gettok(%page,3,32)) $+ $crlf if (%curr < %_totalpages) { did -e pager 102 | did -t pager 102 } else { did -b pager 102 | did -t pager 103 } if (%curr > 1) did -e pager 101 else did -b pager 101 if (%logged) { did -a pager 4 %logged logged $iif(%logged == 1,message,messages) from %nick $+ $crlf %offs = $iif(=* iswm %where,3,0) %ln = 1 :loopL did -a pager 4 $strip($line(%win,$calc(%ln + %offs))) $+ $crlf if (%ln >= 10) did -a pager 4 ... ... ... elseif (%ln < %logged) { inc %ln | goto loopL } did -c pager 4 1 } window -c @.loghide if (%_clr-pager) dialog -t pager Pager (Viewing logged pages) dialog -v pager dialog -o pager dialog -n pager } if (($2 == s) || ($3 == s)) _ssplay pager 1 return } if ($1 == auto) { var %cfg = autoaway.pager,%when = are auto-away from idle } elseif (a* iswm $1) { var %cfg = away.pager,%when = set away } elseif (h* iswm $1) { var %cfg = back.pager,%when = are not away } else { if (($1 == on) || ($1 == off)) %!pager = $_o2tf($1) if (q* iswm $1) %!pager = quiet if (%!away) _upd.away dispa Pager is $iif($1,now) $:b($iif(%!pager == quiet,Quiet,$_tf2o(%!pager))) (until you $iif(%!away,return from away,set away) $+ ) return } if (($2 == on) || ($2 == off)) _cfgw %cfg $_o2tf($2) if (q* iswm $2) _cfgw %cfg quiet dispa Pager will $iif($2,now) be $:b($iif($_cfgi(%cfg) == quiet,Quiet,$_tf2o($_cfgi(%cfg)))) when you %when } on *:CLOSE:@Pager:_pagerclose alias _pagerclose { if (%_clr-pager) { %_totalpages = 0 %_newpages = 0 .remove $_temp(pag) unset %_clr-pager } } ; Logging ; $1 = ? query @ event ! notice + chanmsg - don't count ; $2 = event codes 1 priv msg 2 priv action 3 opnotice 4 priv notice 5 op activity on you 6 by you 7 other op activity ; 8 notify 9 away status 10 invite 11 DCC 12 connection 13 chan msg 14 chan action alias _awaylog { write %_away.log $2 $timestamp $3- inc %_awaylog. $+ $1 if ($1 isin ?!+) inc %_awaylog.^ } alias _dtqc { if (%_timedclose == $null) return if (($idle < 15) || (($appactive) && ($idle < 30))) { .timer 1 10 _dtqc | return } if ($_optn(1,18) == 1) %_timedclose = $remtok(%_timedclose,$active,1,32) if (%_timedclose) close -m %_timedclose unset %_timedclose } #_awaylog off on *:DISCONNECT:var %lagged | if (%-self.lag isnum) %lagged = (selflag %-self.lag $+ ) | _awaylog @ 12 ««« You disconnected from $server : $port %lagged on *:INPUT:?:%_timedclose = $remtok(%_timedclose,$target,1,32) on *:CLOSE:?:%_timedclose = $remtok(%_timedclose,$target,1,32) on *:KICK:#:{ if ((%`awaylog.chan < 1) && ($knick != $me)) return if ($knick == $me) _awaylog @ 5 ( $+ $chan $+ ) ««« $nick kicked $:b($knick) ( $+ $1- $+ ) elseif ($nick == $me) _awaylog @ 6 ( $+ $chan $+ ) *** $:b($nick) kicked $knick ( $+ $1- $+ ) elseif ((%`awaylog.chan > 2) || ((%`awaylog.chan > 1) && ($me isop $chan))) _awaylog @ 7 ( $+ $chan $+ ) *** $nick kicked $knick ( $+ $1- $+ ) } on *:BAN:#:_logban banned on *:UNBAN:#:_logban unbanned alias -l _logban { if (%`awaylog.chan < 1) return if ($banmask iswm %!myself) _awaylog @ 5 ( $+ $chan $+ ) *** $nick $1 $:b($me) ( $+ $banmask $+ ) elseif ($nick == $me) _awaylog @ 6 ( $+ $chan $+ ) *** $:b($nick) $1 $banmask elseif ((%`awaylog.chan > 2) || ((%`awaylog.chan > 1) && ($me isop $chan))) _awaylog @ 7 ( $+ $chan $+ ) *** $nick $1 $banmask } on *:SERVEROP:#:_logop opped on *:OP:#:_logop opped on *:DEOP:#:_logop deopped alias -l _logop { if (%`awaylog.chan < 1) return if ($opnick == $me) _awaylog @ 5 ( $+ $chan $+ ) *** $nick $1 $:b($opnick) elseif ($nick == $me) _awaylog @ 6 ( $+ $chan $+ ) *** $:b($nick) $1 $opnick elseif ((%`awaylog.chan > 2) || ((%`awaylog.chan > 1) && ($me isop $chan))) _awaylog @ 7 ( $+ $chan $+ ) *** $nick $1 $opnick } on me:*:JOIN:#:if ($nick(#,0) > 1) _awaylog @ 5 ( $+ $chan $+ ) »»» Rejoined channel on *:CLOSE:=:_awaylog @ 11 === $nick DCC chat closed on *:FILERCVD:*:_awaylog @ 11 === $nick sent $filename to you on *:FILESENT:*:_awaylog @ 11 === $nick received $filename from you on *:GETFAIL:*:_awaylog @ 11 === $nick failed to send $filename to you on *:SENDFAIL:*:_awaylog @ 11 === $nick failed to receive $filename from you alias _doahl { var %todo = %`awaywords.words,%check,%num %num = $highlight(0) :loop1 if (%num) { %todo = $addtok(%todo,$highlight(%num),44) | dec %num | goto loop1 } %todo = $addtok(%todo,$me,44) var %num = $numtok(%todo,44) :loop2 %check = [ [ $gettok(%todo,%num,44) ] ] if (%check isin $3-) _awaylog + $1 ( $+ $chan $+ ) $_p2s($2) $replace($3-,%check,$:b(%check)) elseif (%num > 1) { dec %num | goto loop2 } } ; Notify/Unnotify/etc alias _away.logit _awaylog $1- #_awaylog end alias _away.logit return on &^*:TEXT:*:#:if (%!away) _doaww $1- on &^*:ACTION:*:#:if (%!away) _doaww $1- on &^*:TEXT:*:?:if (%!away) _away.remind on &^*:ACTION:*:?:if (%!away) _away.remind alias _away.remind { if ((%`away.remind) && (%-aremind. [ $+ [ $nick ] ] == $null) && (%-aremind.! == $null)) { inc %-aremind. $+ $nick inc -u5 %-aremind.! _linedance _qnotice $nick $_awayformat(remind) } } ; Away log display ; /awaylog [auto] on|off|f[lush]|[pncodum [@Window/! [nick/#chan [nickwin]]]] alias awaylog { if ($1 == auto) { if (($2 == on) || ($2 == off)) _cfgw autoaway.log $_o2tf($2) dispa Away logging is $:b($_tf2o($_cfgi(autoaway.log))) when you are auto-away from idle. return } if ($1 == on) { if (%!away == $null) { _cfgw away.log 1 | dispa Away logging is now $:b(On) by default. | return } %!logging = 1 .enable #_awaylog _away.logit - 9 »»» Away log enabled. dispa Away logging will be $:b(On) until you return from away. _upd.away return } elseif ($1 == off) { if (%!away == $null) { _cfgw away.log 0 | dispa Away logging is now $:b(Off) by default. | return } %!logging = 0 _away.logit - 9 ««« Away log disabled. .disable #_awaylog dispa Away logging will be $:b(Off) for the remainder of your away. _upd.away return } elseif (f* iswm $1) { unset %_awaylog.* %_awaylog.^ = 0 .remove %_away.log _away.logit - 9 ««« Flushed away log. dispa Away log flushed. return } if ($1 == $null) { _recurse awaylog $iif($_cfgi(awaylog.view),$_cfgi(awaylog.view),pncodum) @AwayLog | return } elseif ($2 == $null) { _recurse awaylog $1 @AwayLog | return } if ($2 == @AwayLog) _cfgw awaylog.view $1 var %num = 1,%count = $lines(%_away.log) if (%count < 1) { if ($2 == !) return | _error Your away log is empty.This probably means you have not set away yet. } if ($2 == !) { if ($4 == $null) query $3 } elseif ($window($2)) { clear $2 | window -a $2 } else { _window 2.1 -l + $2 $_winpos(10,10,5,12) @AwayLog _windowreg $2 _alogclose } window -hl @.awaylog loadbuf @.awaylog %_away.log set -u %.hid 0 if ($_ischan($3)) { var %line,%chan = ( $+ $3 $+ ),@ $+ $3 :loopC %line = $line(@.awaylog,%num) if ($istok(%chan,$gettok(%line,3,32),44)) _alcol $1-2 %line if (%num < %count) { inc %num | goto loopC } } elseif ($3) { var %line :loopQ %line = $line(@.awaylog,%num) if (($gettok(%line,3,32) == *) && ($gettok(%line,4,32) == $3)) echo $colour(action) -i2 $iif($4,$4,$3) $gettok(%line,2-,32) elseif ($gettok(%line,3,32) == < [ $+ [ $3> ] ] ) echo -i2 $iif($4,$4,$3) $gettok(%line,2-,32) elseif ($gettok(%line,3,32) == - [ $+ [ $3 $+ - ] ] ) echo $colour(notice) -i2 $iif($4,$4,$3) $gettok(%line,2-,32) if (%num < %count) { inc %num | goto loopQ } } else { :loopR _alcol $1-2 $line(@.awaylog,%num) if (%num < %count) { inc %num | goto loopR } } window -c @.awaylog if ($2 != !) { if (%.hid) titlebar $2 - $line($2,0) events ( $+ %.hid hidden) else titlebar $2 - $line($2,0) events (Right-click for options) window -b $2 %_alog. [ $+ [ $2 ] ] = $1 } } ; Picks line color for the line and adds (if not filtered) to @AwayLog alias -l _alcol if ($mid(ppnnoooummdmcc,$3,1) isin $1) aline $colour($gettok(nor a notic notic m m m notif ot inv c info nor a,$3,32)) $2 $4- | else inc %.hid menu @AwayLog { dclick:_subset $active $1 Flush:awaylog f | _dowclose $active | window -c $active View subset:if ($sline($active,1).ln) _subset $active $ifmatch - New window .Show all:awaylog pncodum $_newwin(@Awaylog) .- .Show private:awaylog p $_newwin(@Awaylog) .Show notices:awaylog n $_newwin(@Awaylog) .Show channel:awaylog c $_newwin(@Awaylog) .- .Show op activity:awaylog o $_newwin(@Awaylog) .Show DCC:awaylog d $_newwin(@Awaylog) .Show notify:awaylog u $_newwin(@Awaylog) .Show misc.:awaylog m $_newwin(@Awaylog) - $_dynpop($iif(p isin %_alog. [ $+ [ $active ] ] ,1,0)) Show private:awaylog $_toggle(p,%_alog. [ $+ [ $active ] ] ) $active $_dynpop($iif(n isin %_alog. [ $+ [ $active ] ] ,1,0)) Show notices:awaylog $_toggle(n,%_alog. [ $+ [ $active ] ] ) $active $_dynpop($iif(c isin %_alog. [ $+ [ $active ] ] ,1,0)) Show channel:awaylog $_toggle(c,%_alog. [ $+ [ $active ] ] ) $active - $_dynpop($iif(o isin %_alog. [ $+ [ $active ] ] ,1,0)) Show op activity:awaylog $_toggle(o,%_alog. [ $+ [ $active ] ] ) $active $_dynpop($iif(d isin %_alog. [ $+ [ $active ] ] ,1,0)) Show DCC:awaylog $_toggle(d,%_alog. [ $+ [ $active ] ] ) $active $_dynpop($iif(u isin %_alog. [ $+ [ $active ] ] ,1,0)) Show notify:awaylog $_toggle(u,%_alog. [ $+ [ $active ] ] ) $active $_dynpop($iif(m isin %_alog. [ $+ [ $active ] ] ,1,0)) Show misc.:awaylog $_toggle(m,%_alog. [ $+ [ $active ] ] ) $active } alias _alogclose unset %_alog. $+ $1 alias -l _subset { var %line = $gettok($line($1,$2),2,32) if (%line == ===) awaylog d $_newwin(@Awaylog) elseif (%line == (notify)) awaylog u $_newwin(@Awaylog) elseif (%line isin »»»«««) awaylog m $_newwin(@Awaylog) elseif (@* iswm %line) awaylog ncom $_newwin(@Awaylog) $right(%line,-1) elseif ($left(%line,1) == $chr(40)) awaylog ncom $_newwin(@Awaylog) $left($right(%line,-1),-1) elseif (%line == *) awaylog pn ! $gettok($line($1,$2),3,32) else awaylog pn ! $right($left(%line,-1),-1) } ; Autodetect back-on-keypress, etc; AWAY CTCP raw 306:*:if (%!away == $null) %!away = $me $ctime +q 0 0 away | halt raw 305:*:if (%!away) back $iif(+q isin $gettok(%!away,3,32),+q) | halt ctcp &*:AWAY:if ($2 == $null) set -u1 %.ctcp.reply $_awayformat($iif(%!away,ctcpaway,ctcphere)) ; General away config msg formatting ; $1 = message to read; $2/$3 optional replacement to do alias _awayformat { if (%!away) var %format = $replace($_msg($1),&reason&,$gettok(%!away,6-,32),&when&,$_time($gettok(%!away,2,32)),&awaytime&,$_dur($calc($ctime - $gettok(%!away,2,32)))) else var %format = $replace($_msg($1),&reason&,not away,&when&,not away,&awaytime&,not away) return $_finalmsg($replace($iif($2,$replace(%format,$2,$3),%format),&pager&,$_tf2o(%!pager),&logging&,$_tf2o(%!logging))) } ; Away words alias _doaww if ((%`awaywords) && (%_awayword. [ $+ [ $site ] ] == $null) && ((%-awayword.fld == $null) || (%-awayword.fld < 3))) _doaww˛ $replace($strip($1-),$chr(44),.,-,.,$chr(90),.,$chr(91),.,?,.,!,.,<,.,>,.,*,.,@,.,+,.,',.,",.,/,.,:,.,;,.,.,$chr(32)) alias _doaww˛ { var %word,%num = $numtok(%`awaywords.words,44) :loop %word = [ [ $gettok(%`awaywords.words,%num,44) ] ] if ($istok($1-,%word,32)) { inc %_awayword. $+ $site inc -u5 %-awayword.fld _qnotice $nick $_awayformat(awayword,&word&,%word) } elseif (%num > 1) { dec %num | goto loop } } ; ; Away dialogs ; dialog autoaway { title "Auto Away" size -1 -1 400 68 text "Setting auto away in:", 101, 14 3 100 20 text "15 seconds", 102, 135 3 100 20 text "(ESC to cancel)", 103, 14 21 100 20 button "Set away", 1, 13 40 80 25, OK default button "Cancel", 2, 113 40 80 25, cancel } on *:DIALOG:autoaway:sclick:1:autoaway now on *:DIALOG:autoaway:sclick:2:aacancel dialog pager { title "Pager" size -1 -1 550 186 button "&>>", 102, 49 11 37 25, default box "Page 1 of 1", 1, 95 5 450 175, text "&Paged by:", 12, 104 29 50 20, right edit "", 2, 155 25 145 22, read autohs button "&Query", 201, 305 25 71 22 button "&DCC", 202, 384 25 71 22 button "&Ignore...", 203, 463 25 71 22 text "&Reason:", 13, 104 55 50 20, right edit "", 3, 155 51 381 22, read autohs edit "", 4, 104 83 432 87, autohs vsbar return multi read button "&Close", 103, 6 90 80 25, OK button "&Help", 104, 6 122 80 25, disable button "C&onfigure...", 105, 6 154 80 25 button "&<<", 101, 6 11 37 25, disable edit "", 198, 1 1 1 1, hide autohs edit "", 199, 1 1 1 1, hide autohs } on *:DIALOG:pager:sclick:101:if ($did(198) > 1) pager v $calc($did(198) - 1) on *:DIALOG:pager:sclick:102:if ($did(198) < %_totalpages) pager v $calc($did(198) + 1) on *:DIALOG:pager:sclick:103:_pagerclose on *:DIALOG:pager:sclick:105:_juryrig awaycfg p on *:DIALOG:pager:sclick:201:awaylog pn ! $did(2) | dialog -k $dname on *:DIALOG:pager:sclick:202:dcc chat $did(2) | dialog -k $dname on *:DIALOG:pager:sclick:203:_juryrig ign $did(199) | dialog -k $dname dialog banorback { title "Ban or Back?" size -1 -1 400 68 text "/b is /back, but you seem to be trying to /ban.", 1, 14 3 250 20 text "What would you like to do?", 2, 14 20 200 20 button "/ba&ck", 101, 13 40 80 25, OK button "/ba&n", 102, 113 40 80 25 button "&Configure...", 103, 213 40 80 25, disable edit "", 3, 1 1 1 1, hide result autohs } on *:DIALOG:banorback?:init:*:did -tf $dname 10 $+ $right($dname,1) | did -o $dname 1 1 $iif(*1 iswm $dname,/b is /back; but you seem to be trying to /ban.,/b is /ban; but you seem to want /back.) on *:DIALOG:banorback?:sclick:101:if ($did(3) == $null) did -o $dname 3 1 back on *:DIALOG:banorback?:sclick:102:did -o $dname 3 1 ban | dialog -k $dname dialog away { title "Set Away" size -1 -1 300 120 text "(note- use /back to return from away)", 201, 110 10 200 20, hide text "&Away message?", 202, 14 10 80 20 combo 1, 10 30 280 160, result edit drop check "&Pager on", 2, 10 60 65 16, 3state check "&Logging on", 3, 95 60 75 16 check "Set away &quietly", 4, 190 60 95 16 button "OK", 101, 10 86 80 25, OK default button "Cancel", 102, 110 86 80 25, cancel button "&Options...", 103, 210 86 80 25 } on *:DIALOG:away:init:*:{ _fillrec $dname 1 0 $_cfg(away.lis) 0 %.reason if (%!away) did -v $dname 201 if (%.pager) did -c $+ $iif(%.pager == quiet,u) $dname 2 if (%.log) did -c $dname 3 if (%.quiet) did -c $dname 4 unset %.reason %.pager %.log %.quiet } on *:DIALOG:away:sclick:101:set -u1 %.pager $gettok(0 1 quiet,$calc($did(2).state + 1),32) | set -u1 %.log $did(3).state | set -u1 %.quiet $did(4).state on *:DIALOG:away:sclick:103:_juryrig awaycfg