Peace & Protection 4.00 — File Browser
PeaceProtection4.00v4.0 / PeaceProtection4.00v4.0 / SCRIPT / AWAY.MRC
AWAY.MRC — 28.61 KB — Download this file
; #= 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
<set.away> %!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
<set.back> %!away
resetidle
if (%!logging) <away.log> $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
<pager> $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