aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / away.mrc

away.mrc — 23.2 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Away System
; *
; **********************************************************************/

alias away {
  if ($_disconnected) { return }
  if ($1- == $null) && ($away) { back }
  else { _setaway + $1- }
}
alias awaysetup { _dialog -m _awaysetup _awaysetup }
dialog _awaysetup {
  size -1 -1 160 102
  option dbu
  title "Away Setup"

  tab "Away",1000,1 1 155 82
  tab "Auto",1001
  tab "Pager",1002
  tab "Logger",1003
  tab "Msg",1004
  tab "Query",1005

  check "&Minimize mIRC",1203,25 20 45 8,tab 1000
  check "(to &tray)",1204,75 20 45 8,tab 1000
  check "De&op self",1205,25 30 48 8,tab 1000
  check "Set away on reconnect",1207,25 40 65 8,tab 1000
  check "Change Nick to",1208,25 50 50 8,tab 1000
  edit "",1209,87 48 45 10,autohs tab 1000
  check "Antiidle every",1210,25 60 42 8,tab 1000
  edit "",1211,87 58 25 11,tab 1000 center autohs
  text "minutes",1212,114 60 20 8,tab 1000
  check "Refresh reason every",1213,25 70 60 8,tab 1000
  edit "",1214,87 68 25 11,tab 1000 center autohs
  text "minutes",1215,114 70 20 8,tab 1000

  check "&Autoaway after",1302,25 35 45 8,tab 1001
  edit "",1303,73 33 25 11,tab 1001 center autohs
  text "minutes",1304,101 35 20 8,tab 1001
  check "Autoaway &silently",1305,25 47 100 8,tab 1001

  check "Enable Pager when away",1402,25 25 100 8,tab 1002
  check "Enable Pager when not away",1403,25 36 100 8,tab 1002
  check "Flush pager on away",1404,25 47 100 8,tab 1002
  check "Show pages on back",1405,25 58 100 8,tab 1002

  check "Enable Awaylog",1502,25 23 100 8,tab 1003
  check "Flush awaylog on away",1503,25 33 100 8,tab 1003
  check "Log personal activity",1504,25 43 100 8,tab 1003
  check "Log channel activity",1505,25 53 100 8,tab 1003
  check "only involving me",1506,35 63 80 8,tab 1003

  check "&Announce away/back",1601,25 25 70 8,tab 1004
  check "&Remind every",1602,25 37 45 8,tab 1004
  edit "",1603,71 35 25 11,tab 1004 center autohs
  text "minutes",1604,99 37 20 8,tab 1004
  check "Only in:",1605,25 49 50 8,tab 1004
  edit "",1606,33 59 95 10,tab 1004 autohs

  check "&Close queries when setting away",1701,25 30 90 8,tab 1005
  check "&Block incoming queries",1702,25 40 90 8,tab 1005
  check "&Send a notice informing that you are away",1703,25 50 110 8,tab 1005

  button "&OK",2991,93 87 30 13,ok
  button "&Cancel",2992,125 87 30 13,cancel
}
ON *:DIALOG:_awaysetup:*:*:{
  if ($devent == init) {
    _mdx.init $_icofile(away.ico)
    _mdx.SetControlMDX ctl_gen.mdx $dname 1211 UpDown arrowkeys alignright right wrap edit numeric
    _mdx.SetControlMDX ctl_gen.mdx $dname 1214 UpDown arrowkeys alignright right wrap edit numeric
    _mdx.SetControlMDX ctl_gen.mdx $dname 1303 UpDown arrowkeys alignright right wrap edit numeric
    _mdx.SetControlMDX ctl_gen.mdx $dname 1603 UpDown arrowkeys alignright right wrap edit numeric
    did $iif($_getsetup(away,minimize),-c,-u) $dname 1203
    did $iif($_getsetup(away,minimize2tray),-c,-u) $dname 1204
    did $iif($_getsetup(away,deopself),-c,-u) $dname 1205
    did $iif($_getsetup(away,closequeries),-c,-u) $dname 1701
    did $iif($_getsetup(away,blockqueries),-c,-u) $dname 1702
    did $iif($_getsetup(away,noticequeries),-c,-u) $dname 1703
    did $iif($_getsetup(away,setonreconnect),-c,-u) $dname 1207
    did $iif($_getsetup(away,changenick.o),-c,-u) $dname 1208
    if ($_getsetup(away,changenick.t) != $null) { did -o $dname 1209 1 $ifmatch }
    did $iif($_getsetup(away,antiidle.status),-c,-u) $dname 1210
    did -i $dname 1211 1 $_setdnum($_getsetup(away,antiidle.time),1)
    did $iif($_getsetup(away,refreshr.status),-c,-u) $dname 1213
    did -i $dname 1214 1 $_setdnum($_getsetup(away,refreshr.time),2)
    did $iif($_getsetup(away,autoaway.status),-c,-u) $dname 1302
    did -i $dname 1303 1 $_setdnum($_getsetup(away,autoaway.time),15)
    did $iif($_getsetup(away,autoaway.silent),-c,-u) $dname 1305
    did $iif($_getsetup(away,pager.away),-c,-u) $dname 1402
    did $iif($_getsetup(away,pager.here),-c,-u) $dname 1403
    did $iif($_getsetup(away,pager.flushonaway),-c,-u) $dname 1404
    did $iif($_getsetup(away,pager.showonback),-c,-u) $dname 1405
    did $iif($_getsetup(away,awaylog.status),-c,-u) $dname 1502
    did $iif($_getsetup(away,awaylog.flushonaway),-c,-u) $dname 1503
    did $iif($_getsetup(away,awaylog.private),-c,-u) $dname 1504
    did $iif($_getsetup(away,awaylog.channel),-c,-u) $dname 1505
    did $iif($_getsetup(away,awaylog.channelme),-c,-u) $dname 1506
    did $iif($_getsetup(away,autoaway.status),-c,-u) $dname 1302
    did $iif($_getsetup(away,announce),-c,-u) $dname 1601
    did $iif($_getsetup(away,reminder.status),-c,-u) $dname 1602
    did -i $dname 1603 1 $_setdnum($_getsetup(away,reminder.time),60)
    did $iif($_getsetup(away,chanonly.state),-c,-u) $dname 1605
    if ($_fixchans($_getsetup(away,chanonly.chans)) != $null) { did -o $dname 1606 1 $ifmatch }
    _dummy $_lang.loaddialog($dname,$dname,00086969,main.lang,$scriptdir)
  }
  elseif ($devent == sclick) && ($did == 2991) {
    _settsetup away minimize $did($dname,1203).state
    _settsetup away minimize2tray $did($dname,1204).state
    _settsetup away deopself $did($dname,1205).state
    _settsetup away closequeries $did($dname,1701).state
    _settsetup away blockqueries $did($dname,1702).state
    _settsetup away noticequeries $did($dname,1703).state
    _settsetup away setonreconnect $did($dname,1207).state
    _settsetup away changenick.o $did($dname,1208).state
    if ($did($dname,1209,1) != $null) { _settsetup away changenick.t $ifmatch }
    _settsetup away antiidle.status $did($dname,1210).state
    _settsetup away antiidle.time $_getdnum($dname,1211)
    _settsetup away refreshr.status $did($dname,1213).state
    _settsetup away refreshr.time $_getdnum($dname,1214)
    _settsetup away autoaway.status $did($dname,1302).state
    _settsetup away autoaway.time $_getdnum($dname,1303)
    _settsetup away autoaway.silent $did($dname,1305).state
    _settsetup away pager.away $did($dname,1402).state
    _settsetup away pager.here $did($dname,1403).state
    _settsetup away pager.flushonaway $did($dname,1404).state
    _settsetup away pager.showonback $did($dname,1405).state
    _settsetup away awaylog.status $did($dname,1502).state
    _settsetup away awaylog.flushonaway $did($dname,1503).state
    _settsetup away awaylog.private $did($dname,1504).state
    _settsetup away awaylog.channel $did($dname,1505).state
    _settsetup away awaylog.channelme $did($dname,1506).state
    _settsetup away announce $did($dname,1601).state
    _settsetup away reminder.status $did($dname,1602).state
    _settsetup away reminder.time $_getdnum($dname,1603)
    _settsetup away chanonly.state $did($dname,1605).state
    if ($_fixchans($did($dname,1606,1)) != $null) { _settsetup away chanonly.chans $ifmatch }
    __hashsavebuf _aircsetup script.dat
    _loadsetup
    if (%c.away.flags != $null) { %c.away.flags = $_setaway.preflags }
  }
  var %d = $dname
  did $iif($did(%d,1203).state,-e,-ub) %d 1204
  did $iif($did(%d,1210).state,-e,-b) %d 1211
  did $iif($did(%d,1213).state,-e,-b) %d 1214
  did $iif($did(%d,1208).state,-e,-b) %d 1209
  did $iif($did(%d,1302).state,-e,-b) %d 1303
  did $iif($did(%d,1505).state,-e,-b) %d 1506
  did $iif($did(%d,1602).state,-e,-b) %d 1603
  did $iif($did(%d,1605).state,-e,-b) %d 1606
}
ON *:START:{ unset %c.away.* }
ON *:CONNECT:{
  unset %c.away.306rcvd
  if ($_group(#_awaylog.private)) { _awaylog.add Connected to $server $port }
  if (%c.away.reason != $null) && ($_getsetup(away,setonreconnect)) {
    if (%c.away.flags == $null) { %c.away.flags = $_setaway.preflags }
    if (%c.away.time == $null) { %c.away.time = $ctime }
    _setaway.onaway + %c.away.time %c.away.reason
    _quoteaway 0
  }
  else { unset %c.away.* }
}
ON *:DISCONNECT:{
  unset %c.away.306rcvd
  if ($_group(#_awaylog.private)) { _awaylog.add Disconnected from $server }
}
; _quoteaway <play sounds?>
alias _quoteaway {
  if ($_awaymsg($_defmsg(away.whois)) != $null) { .quote away : $+ $ifmatch }
  else { .quote away : $+ %c.away.reason }
  if ($1) {
    if (a isin %c.away.flags) { ^playthemesound SETAUTOAWAY }
    else { ^playthemesound SETAWAY }
  }
}
; /_setaway flags reason
;  flags:
;    a autoaway
;    k ask
;
;    p pager
;    l awaylog
;    s announce
;    n minimize
;    t tray
;    d deop self
;    q close queries
;    b clock queries
;    r reply via notice
;
alias _setaway {
  if ($_disconnected) { return }
  var %flags = $_changemodes($_setaway.preflags,$1),%reason = $2-
  if (%flags == $null) { %flags = + }
  if (%reason == $null) || (k isincs %flags) { return $_askaway($removecs(%flags,k),%reason) }
  %c.away.flags = %flags
  %c.away.reason = %reason
  %c.away.time = $ctime
  if (%c.away.oldnick == $null) && ($_getsetup(away,changenick.o)) {
    if ($replace($_getsetup(away,changenick.t),<ME>,$me) != $null) {
      if ($ifmatch != $me) {
        nick $ifmatch
        %c.away.oldnick = $me
      }
    }
  }
  _setaway.onaway +f $ctime %reason
  _quoteaway 1
}
alias _setaway.preflags {
  var %flags = +
  if ($_getsetup(away,minimize)) {
    %flags = %flags $+ n
    if ($_getsetup(away,minimize2tray)) { %flags = %flags $+ t }
  }
  if ($_getsetup(away,deopself)) { %flags = %flags $+ d }
  if ($_getsetup(away,closequeries)) { %flags = %flags $+ q }
  if ($_getsetup(away,blockqueries)) { %flags = %flags $+ b }
  if ($_getsetup(away,noticequeries)) { %flags = %flags $+ r }
  if ($_getsetup(away,pager.away)) { %flags = %flags $+ p }
  if ($_getsetup(away,awaylog.status)) { %flags = %flags $+ l }
  if ($_getsetup(away,announce)) { %flags = %flags $+ s }
  return %flags
}
alias _setaway.onaway {
  var %flags = %c.away.flags,%opts = $1,%time = $2,%reason = $3-,%tf
  if (a !isincs %flags) && (?? != %reason) && (%reason != $null) { _recent.add awayreason 20 %reason }
  if (f isin %opts) {
    if ($_getsetup(away,pager.flushonaway)) { .pager flush }
    if ($_getsetup(away,awaylog.flushonaway)) { .awaylog flush }
  }
  _away.loadvars
  if (n isincs %flags) { showmirc $iif(t isincs %flags,-t,-n) }
  if (q isincs %flags) { close -m }
  if (s isincs %flags) { _away.sendchans $_awaymsg($_defmsg(away.msg)) }
  if (d isincs %flags) { cdeop $me }
  _away.loadvars
}
alias back {
  if ($_disconnected) { return }
  if ($away) {
    .quote away
    ^playthemesound SETBACK
    if ($_getsetup(away,changenick.o)) {
      if (%c.away.oldnick != $null) && (%c.away.oldnick != $me) { nick %c.away.oldnick }
    }
  }
  else { error.a You are not away }
}
alias _autoaway {
  var %flags = +a,%reason = $_awaymsg($_defmsg(away.autoawayreason))
  if ($_getsetup(away,autoaway.silent)) { %flags = %flags $+ -s }
  if (%reason == $null) { %reason = autoaway }
  _setaway %flags %reason
}
alias _away.antiidle { .quote PRIVMSG $me :aIRC_antiidle_ $+ $ticks $+  }
alias _away.remind { _away.sendchans $_awaymsg($_defmsg(away.chanreminder)) }
alias _away.sendchans {
  var %msg = $1-
  if (%msg == $null) { return }
  if ($_getsetup(away,chanonly.state)) {
    var %chans = $_getsetup(away,chanonly.chans),%i = $numtok(%chans,44),%fc
    while (%i) {
      if ($gettok(%chans,%i,44) ischan) { %fc = $addtok(%fc,$ifmatch,44) }
      dec %i
    }
    if (%fc != $null) { _massmsgnotice - describe %fc %msg }
  }
  elseif ($chan(0)) { ame %msg }
}
alias _awaymsg { return $_evaltext($replace($1-,<AWAYLOG>,$iif(%.awaylog.status,on,off),<PAGER>,$iif(%.pager.status,on,off),<AWAYREASON>,%c.away.reason,<AWAYTIME>,%c.away.time,<AWAYGONE>,$_awaysecsgone,<AUTOAWAYMINS>,$_getsetup(away,autoaway.time)))) }
alias _awaysecsgone {
  if ($calc($ctime - %c.away.time) > 0) { return $ifmatch }
  return 0
}

;;
; /_away.loadvars [1|0]
;      0 - use %c.away.flags
;
alias _away.loadvars {
  var %file = $_pager.file,%lines = $lines(%file),%pager,%awaylog = $_getsetup(away,awaylog.status),%awaylogp = $_getsetup(away,awaylog.private),%awaylogc = $_getsetup(away,awaylog.channel)
  %.pager.all = %lines
  if (%.pager.new !isnum) || (%.pager.new < 0) { %.pager.new = 0 }
  %.pager.new = $int(%.pager.new)
  if (%.pager.new > %.pager.all) { %.pager.new = %.pager.all }

  if ($_not($1)) { %pager = $iif(p isincs %c.away.flags,1,0) }
  elseif ($away) { %pager = $_getsetup(away,pager.away) }
  else { %pager = $_getsetup(away,pager.here) }
  %.pager.status = $iif(%pager,1,0)

  if ($_not($1)) { %awaylog = $iif(l isincs %c.away.flags,1,0) }
  elseif ($_not($away)) { %awaylog = 0 }
  if (%awaylog) {
    %.awaylog.status = 1
    if (%awaylogp) { .enable #_awaylog.private }
    if (%awaylogc) { .enable #_awaylog.channel }
  }
  else {
    unset %.awaylog.status
    .disable #_awaylog.*
  }
}
alias _away.unsetvars {
  unset %c.away.*
  _away.loadvars 1
}
raw 305:*:{
  unset %c.away.306rcvd
  if (s isincs  %c.away.flags) { _away.sendchans $_awaymsg($_defmsg(away.back)) }
  if (%.pager.new) && ($_getsetup(away,pager.showonback)) { .timer -o 1 0 pages }
  resetidle
  .timer -o 1 0 _away.unsetvars
}
raw 306:*:{
  if (%c.away.306rcvd) { halt }
  %c.away.306rcvd = $ctime
  if (%c.away.flags == $null) || (%c.away.reason == $null) || (%c.away.time == $null) {
    if (%c.away.flags == $null) { %c.away.flags = $_setaway.preflags }
    if (%c.away.reason == $null) { %c.away.reason = ?? }
    if (%c.away.time == $null) { %c.away.time = $ctime }
    _setaway.onaway +f $ctime ??
  }
}

;;
;
; -( askaway )-
;
;;

alias _askaway {
  var %d = _askaway
  if ($dialog(%d)) { return }
  %c.askaway.flags = $1
  %c.askaway.reason = $2
  return $dialog(%d,%d,-4)
}
dialog _askaway {
  size -1 -1 200 115
  option dbu
  title "Away [/away]"

  text "Away Reason:",1,10 5 180 8
  combo 2,10 15 180 100,drop edit result
  box ""3,10 30 180 60

  check "Pager",1001,20 40 50 8
  check "Awaylog",1002,100 40 50 8
  check "Announce",1003,20 52 50 8
  check "Minimize",1005,20 64 50 8
  check "Minimize to tray",1006,100 64 50 8
  check "Deop self",1007,100 52 50 8
  check "Close queries",1008,20 76 50 8
  check "Block queries",1009,100 76 50 8

  button "&OK",2990,114 95 33 15,ok disable
  button "&Cancel",2991,157 95 33 15,cancel
  edit "",3000,1000 1000 100 100,hide autohs
}
ON *:DIALOG:_askaway:init:0:{
  _mdx.init $_icofile(away.ico)
  _askaway.refresh
  _askaway.init
  _dummy $_lang.loaddialog($dname,$dname,00086969,main.lang,$scriptdir)
}
ON *:DIALOG:_askaway:*:*:{
  _askaway.refresh
  if ($devent == sclick) {
    if ($did == 2990) { _askaway.save }
  }
}
alias _askaway.refresh {
  var %d = _askaway
  did $iif($did(%d,2) != $null,-e,-b) %d 2990
  did $iif($did(%d,1005).state,-e,-bu) %d 1006
}
alias _askaway.save {
  var %d = _askaway,%flags = + $+ $did(%d,3000),%reason = $did(%d,2)
  if (%reason == $null) { halt }
  %flags = %flags $+ $iif($did(%d,1001).state,+,-) $+ p
  %flags = %flags $+ $iif($did(%d,1002).state,+,-) $+ l
  %flags = %flags $+ $iif($did(%d,1003).state,+,-) $+ s
  %flags = %flags $+ $iif($did(%d,1005).state,+,-) $+ n
  %flags = %flags $+ $iif($did(%d,1006).state,+,-) $+ t
  %flags = %flags $+ $iif($did(%d,1007).state,+,-) $+ d
  %flags = %flags $+ $iif($did(%d,1008).state,+,-) $+ q
  .timer -o 1 0 _setaway %flags %reason
}
alias _askaway.init {
  ^playthemesound QUESTION
  var %file = $_recent.file(awayreason)
  if ($isfile(%file)) {
    if (%c.askaway.reason == $null) { _dialog.loadbuf $dname 2 %file }
    else {
      var %win = @__askaway,%i = 1
      _openwins %win
      loadbuf %win $"(%file)
      while (%i <= $line(%win,0)) {
        if ($line(%win,%i) != %c.askaway.reason) { did -a $dname 2 $ifmatch }
        inc %i
      }
      close -@ %win
    }
  }
  if (%c.askaway.reason != $null) { did -i $dname 2 1 $ifmatch }
  if (p isincs %c.askaway.flags) { did -c $dname 1001 }
  if (l isincs %c.askaway.flags) { did -c $dname 1002 }
  if (s isincs %c.askaway.flags) { did -c $dname 1003 }
  if (n isincs %c.askaway.flags) { did -c $dname 1005 }
  if (t isincs %c.askaway.flags) { did -c $dname 1006 }
  if (d isincs %c.askaway.flags) { did -c $dname 1007 }
  if (q isincs %c.askaway.flags) { did -c $dname 1008 }
  if (b isincs %c.askaway.flags) { did -c $dname 1009 }
  did -o $dname 3000 1 $removecs(%c.askaway.flags,p,l,s,r,n,t,d,q,r,a)
  unset %c.askaway.*
  did -c $dname 2 1 1 99999999999999999999
  _askaway.refresh
}

;;
;
; -( Pager )-
;
;;
CTCP *:PAGE:?:{
  if ($_pager.add($2-) != $null) {
    %+ctcp.replymsg = PAGE $ifmatch
    %+ctcp.reply = 1
  }
  if ($_group(#_awaylog.private)) { _awaylog.add CTCP from $nick ( $+ $address $+ ) $1- }
}
CTCP *:aIRC_antiidle_*:?:{
  if ($nick == $me) {
    %+ctcp.show = 0
    halt
  }
  if ($_group(#_awaylog.private)) { _awaylog.add CTCP from $nick ( $+ $address $+ ) $1- }
}
; $_pager.add(msg)
alias _pager.add {
  _away.loadvars
  if ($_flood.main(1,0,5,0,60,__ctcppage.botnet,0)) || ($_flood.main(1,0,3,0,60,$_nospaces(__ctcppage.,%++maskclon),0)) { return }
  if ($_not(%.pager.status)) { return }
  flash - (aIRC $_vers $+ ) PAGE from $nick $+ : $1-
  if ($1- == $null) { tokenize 32 [no message] }
  write " $+ $_pager.file $+ " $ctime $fulladdress $1-
  _away.loadvars
  inc %.pager.new
  inc %.pager.all
  _away.loadvars
  ^playthemesound PAGE
  return $_awaymsg($_defmsg($iif($away,away.pageraway,away.pagerhere)))
}
alias _pager.file { return $_chfile($_tmpdir(pager.txt)) }
;
;;
;
; /pager [a[way]|h[ere]] [on|off]
; /pager [f[lush]]
;
alias pager {
  var %file = $_pager.file,%lines = $lines(%file),%win = @Pager,%type = away,%toggle
  if (f* iswm $1) {
    write -c $"(%file)
    _away.loadvars
    close -@ %win
    if ($show) { info.a Pager flushed! $iif(%lines,$_nsingoplur(%lines,page deleted,pages deleted)) }
    return
  }
  if (a* iswm $1) || (h* iswm $1) {
    %type = $iif(a* iswm $1,away,here)
    tokenize 32 $2-
  }
  else { %type = $iif($away,away,here) }
  if ($istok(on off,$1,32)) { %toggle = $1 }
  if (%toggle != $null) { _setsetup away pager. $+ %type $iif(%toggle == on,1,0) }
  if ($show) { info.a Pager is $^b($iif($iif(%type == away,$_getsetup(away,pager.away),$_getsetup(away,pager.here)),on,off)) (when $iif(%type == away,away,not away) $+ ) }
  _away.loadvars
}
alias pages {
  var %file = $_pager.file,%win = @Pager,%winbuf = @__pagerbuf,%i = 1,%lines = $lines(%file),%line
  %.pager.new = 0
  _away.loadvars
  if ($_not(%lines)) {
    error.a No pages recorded
    close -@ %win
    return
  }
  _openwins %winbuf
  loadbuf %winbuf $"(%file)
  if ($window(%win) == $null) { window -hlk +st %win $_window.conf(%win) }
  clear %win
  aline %win -
  while (%i <= %lines) {
    %line = $line(%winbuf,%i)
    aline %win Nick: $gettok($gettok(%line,2,32),1,33) ( $+ $gettok($gettok(%line,2,32),2,33) $+ )
    aline %win Time: $asctime($gettok(%line,1,32))
    aline %win Page: $gettok(%line,3-,32)
    aline %win -
    inc %i
  }
  titlebar %win ( $+ $_nsingoplur(%lines,page,pages) $+ )
  window -ab %win
  close -@ %winbuf
}
menu @Pager {
  &flush:{ pager flush }
}
alias _windowsize.Pager { return C C 350 200 }
alias _windowopts.Pager { return 0 1 1 }

;;
;
; -( Awaylog )-
;
;;

alias awaylog {
  var %file = $_awaylog.file,%win = @Awaylog,%lines = $lines(%file)
  if (f* iswm $1) {
    write -c $"(%file)
    _away.loadvars
    close -@ %win
    if ($show) { info.a Awaylog flushed! $iif(%lines,$_nsingoplur(%lines,event deleted,events deleted)) }
  }
  elseif ($istok(on off,$1,32)) {
    _setsetup away awaylog.status $iif($1 == on,1,0)
    if ($show) { info.a Awaylog is $^b($1) }
  }
  else {
    if ($_not(%lines)) {
      error.a No events recorded. Awaylog empty.
      close -@ %win
    }
    else {
      if ($window(%win) == $null) { window -lk +ts %win $_window.conf(%win) }
      clear %win
      loadbuf %win $"(%file)
      window -b %win
      titlebar %win ( $+ $_nsingoplur(%lines,event,events) $+ )
    }

  }
  _away.loadvars
}
menu @Awaylog {
  &flush:{ awaylog flush }
}
alias _windowsize.Awaylog { return C C 600 400 }
alias _windowopts.Awaylog { return 0 1 1 }
alias _awaylog.file { return $_chfile($_tmpdir(awaylog.txt)) }
alias _awaylog.add { write " $+ $_awaylog.file $+ " $timestamp $1- }


ON ^*:OPEN:?:{
  if ($away) {
    if (r isincs %c.away.flags) {
      if ($_flood.main(1,0,8,0,60,__awaysendnotice.botnet,0)) || ($_flood.main(1,0,2,0,300,$_nospaces(__awaysendnotice.,%++maskclon),0)) {  }
      elseif ($_awaymsg($_defmsg(away.noticeuser)) != $null) { _puthelp $nick & _qnotice $nick $ifmatch }
    }
    if (b isincs %c.away.flags) {
      if ($_group(#_awaylog.private)) { _awaylog.add Rejected query from $nick ( $+ $address $+ ): $1- }
      info.a Rejected query from $nick ( $+ $address $+ )
      halt
    }
  }
}
#_awaylog.private off
CTCP *:*:?:{
  if ($nick == $me) && (airc_* iswm $1-) { return }
  _awaylog.add CTCP from $nick ( $+ $address $+ ) $1-
}
ON *:TEXT:*:?:{ _awaylog.add < $+ $nick $+ > $1- }
ON *:ACTION:*:?:{ _awaylog.add * $nick $1- }
ON *:NOTICE:*:?:{ _awaylog.add - $+ $nick $+ - $1- }
ON *:CTCPREPLY:*:{
  if ($nick == $me) && (airc_* iswm $1) { return }
  _awaylog.add CTCPREPLY from $nick ( $+ $address $+ ) $1-
}
ON *:INVITE:#:{ _awaylog.add $nick ( $+ $address $+ ) invites you to $chan }
ON *:FILERCVD:*:{ _awaylog.add Received $^'($filename) from $nick }
ON *:FILESENT:*:{ _awaylog.add Sent $^'($filename) to $nick }
ON *:GETFAIL:*:{ _awaylog.add Failed to get $^'($filename) from $nick }
ON *:SENDFAIL:*:{ _awaylog.add Failed to send $^'($filename) to $nick }
ON *:NOTIFY:{ _awaylog.add Notify: $nick }
ON *:UNOTIFY:{ _awaylog.add Unotify: $nick }
ON *:OPEN:=:{ _awaylog.add Opened DCC Chat with $nick ( $+ $1- $+ ) }
ON *:CLOSE:=:{ _awaylog.add Closed DCC Chat with $nick }
ON *:OPEN:!:{ _awaylog.add Opened Fserve with $nick }
ON *:CLOSE:!:{ _awaylog.add Closed Fserve with $nick }
ON *:OPEN:?:{ _awaylog.add Opened Query with $nick }
ON *:CLOSE:?:{ _awaylog.add Closed Query with $nick }
#_awaylog.private end
#_awaylog.channel off
CTCP *:*:#:{ _awaylog.add [[ $+ $chan $+ ]] CTCP from $nick ( $+ $address $+ ) $1- }
ON *:RAWMODE:#:{
  if ($_getsetup(away,awaylog.channelme)) && ($nick != $me) && ($me !ison $1-) { return }
  _awaylog.add [[ $+ $chan $+ ]] $nick ( $+ $address $+ ) sets mode: $1-
}
ON *:TOPIC:#:{
  if ($_getsetup(away,awaylog.channelme)) && ($me !ison $1-) { return }
  _awaylog.add [[ $+ $chan $+ ]] $nick ( $+ $address $+ ) sets topic: $1-
}
ON *:PART:#:{
  if ($_getsetup(away,awaylog.channelme)) && ($me != $nick) { return }
  _awaylog.add [[ $+ $chan $+ ]] $nick ( $+ $address $+ ) has left $chan
}
ON *:JOIN:#:{
  if ($_getsetup(away,awaylog.channelme)) && ($me !ison $nick) { return }
  _awaylog.add [[ $+ $chan $+ ]] $nick ( $+ $address $+ ) has joined $chan
}
ON *:KICK:#:{
  if ($_getsetup(away,awaylog.channelme)) && ($me !ison $nick) && ($me != $knick) { return }
  _awaylog.add [[ $+ $chan $+ ]] $nick ( $+ $address $+ ) has kicked $knick - Reason: $1-
}
ON *:NICK:{
  if ($_getsetup(away,awaylog.channelme)) && ($me != $newnick) { return }
  _awaylog.add [*] $nick ( $+ $address $+ ) is now $newnick
}
ON *:QUIT:{
  if ($_getsetup(away,awaylog.channelme)) && ($me != $nick) && ($me != $knick) { return }
  _awaylog.add [*] $nick ( $+ $address $+ ) has left IRC
}
#_awaylog.channel end