All pastes #752007 Raw Edit

away system

public text v1 · immutable
#752007 ·published 2007-10-27 22:54 UTC
rendered paste body
dialog away {
  title "AwayScript by Marius"
  size -1 -1 202 124
  option dbu
  box "Away //  Back", 1, 1 0 200 77
  button "Away", 3, 46 62 37 12
  button "Back", 4, 90 62 37 12, disable
  text "Away Reason:", 5, 5 10 35 8
  text "Away Message:", 2, 5 20 38 8
  text "Return Message:", 6, 5 30 41 8
  check "Inform channels when you are away/back", 7, 5 40 115 10
  radio "AMSG", 8, 20 50 30 10, disable
  radio "AME", 9, 50 50 30 10, disable
  box "Channel Ignorer", 10, 1 125 200 81
  check "Do not message ignored channels", 11, 85 140 95 10
  list 12, 5 133 70 70, size
  button "Add Channel", 13, 85 160 37 12
  button "Del Channel", 14, 85 180 37 12
  box "Highlight Control", 15, 1 78 55 45
  check "Log highlights", 16, 5 95 50 10
  check "Log PM's", 17, 5 85 50 10
  button "Add", 18, 68 90 15 10
  button "Del", 19, 68 105 15 10
  list 20, 93 83 105 38, size
  box "Highlights", 21, 56 78 145 45
  edit "", 22, 50 29 100 10, autohs
  edit "", 23, 50 9 100 10, autohs
  edit "", 24, 50 19 100 10, autohs
  link "More", 25, 150 10 15 8
  link "More", 26, 150 20 15 8
  link "More", 27, 150 30 15 8
}
dialog away_ext {
  title "Away Help"
  size -1 -1 154 42
  option dbu
  link "Current Time", 1, 2 3 33 8
  link "Away Reason", 2, 37 3 34 8
  link "Away Duration", 3, 73 3 36 8
  button "Done", 4, 49 27 37 12, ok
  link "Away Start Time", 5, 111 3 40 8
  link "Highlight Log Status", 6, 2 14 50 8
  link "PM Log Status", 7, 55 14 35 8
}

on *:DIALOG:away_ext:sclick:*: {
  if ($did == 1) { .did -a away %away.help $chr(13) $+ &ctime }
  if ($did == 2) { .did -a away %away.help $chr(13) $+ &reason }
  if ($did == 3) { .did -a away %away.help $chr(13) $+ &duration }
  if ($did == 5) { .did -a away %away.help $chr(13) $+ &stime }
  if ($did == 6) { .did -a away %away.help $chr(13) $+ &hl }
  if ($did == 7) { .did -a away %away.help $chr(13) $+ &pm }
}
on *:DIALOG:away:edit:22,23,24: {
  if ($did == 22) {
    .set %away.msg.back $did($dname,22)
  }
  if ($did == 23) {
    .set %away.reason $did($dname,23)
  }
  if ($did == 24) {
    .set %away.msg.away $did($dname,24)
  }
}
on *:DIALOG:away:init:0: {
  if (%away.amsg) { .did -c $dname 8 }
  else { .did -c $dname 9 }
  if (%away.inform) { .did -c $dname 7 | .did -e $dname 8,9 | .dialog -s away $dialog(away).x $dialog(away).y 410 415 }
  var %a = 1
  while (%a <= $lines(away.highilght.txt)) { .did -a $dname 20 $read(away.highlight.txt,%a) | inc %a }
  var %a = 1
  while (%a <= $lines(away.channelignore.txt)) { .did -a $dname 12 $read(away.channelignore.txt,%a) | inc %a }
  if (%away.ig) { .did -c $dname 11 }
  if (%away.log.pm) { .did -c $dname 17 }
  if (%away.log.hl) { .did -c $dname 16 }
  .did -a $dname 22 %away.msg.back
  .did -a $dname 23 %away.reason
  .did -a $dname 24 %away.msg.away
}
on *:DIALOG:away:sclick:*: {
  if ($did == 7) {
    .set %away.inform $iif($did($dname,7).state == 1,$true,$false)
    .dialog -s away $dialog(away).x $dialog(away).y 410 $iif($did($dname,7).state == 1,415,250)
    if (%away.inform) { .did -e $dname 8,9 }
    else { .did -b $dname 8,9 }
  }
  if ($did == 8) { .set %away.amsg $true | .set %away.ame $false }
  if ($did == 9) { .set %away.ame $true | .set %away.amsg $false }
  if ($did == 17) { .set %away.log.pm $iif($did($dname,17).state == 1,$true,$false) }
  if ($did == 16) { .set %away.log.hl $iif($did($dname,16).state == 1,$true,$false) }
  if ($did == 18) {
    var %nhl = $$?="Enter a highlight string/word"
    .write away.highlight.txt %nhl
    .did -a $dname 20 %nhl
    .did -c $dname 20 $lines(away.highlight.txt)
  }
  if ($did == 19) {
    if (!$did($dname,20).seltext) { halt }
    .write $+(-dl,$did($dname,20).sel) away.highlight.txt
    .did -d $dname 20 $did($dname,20).sel
  }
  if ($did == 11) { .set %away.ig $iif($did($dname,11).state == 1,$true,$false) }
  if ($did == 13) {
    var %nci = $$?="Enter channel to ignore"
    .write away.channelignore.txt %nci
    .did -a $dname 12 %nci
  }
  if ($did == 14) {
    if (!$did($dname,12).seltext) { halt }
    .write $+(-dl,$did($dname,12).sel) away.channelignore.txt
    .did -d $dname 20 $did($dname,20).sel
  }
  if ($did == 25) { .set %away.help 23 | .dialog -mdo away_ext away_ext }
  if ($did == 26) { .set %away.help 24 | .dialog -mdo away_ext away_ext }
  if ($did == 27) { .set %away.help 22 | .dialog -mdo away_ext away_ext }
  if ($did == 3) {
    if ($away) { halt }
    .did -c $dname 4
    .did -b $dnaem 3
    .setaway %away.reason
  }
  if ($did == 4) {
    if (!$away) { halt }
    .did -c $dname 3
    .did -b $dname 4
    .setaway
  }
}
alias same {
  var %a = 1
  while (%a <= $chan(0)) {
    if ($read(away.channelignore.txt,s,$1)) { describe $chan(%a) $2- }
    inc %a
  }
}
alias samsg {
  var %a = 1
  while (%a <= $chan(0)) {
    if ($read(away.channelignore.txt,s,$1)) { msg $chan(%a) $2- }
    inc %a
  }
}
menu * {
  AwaySystem
  .Open AwaySystem:.dialog -md away away
  .Logs
  ..Show PM Logs:.awaylog pm
  ..Show Highlight Logs:.awaylog hl
  .-
  . $iif($away,Back,Away) :.setaway
}
alias awaylog {
  if (!$window(@away.log)) { .window @away.log }
  var %sf = $iif($1 == hl,away.log.hl.txt,away.log.pm.txt),%a = 1
  while (%a <= $lines(%sf)) {
    .aline @away.log $read(%sf,%a)
    inc %a
  }
}

alias setaway {
  if ($away) {
    if (%away.inform) {
      if (%away.amsg) { $iif(%away.ig,samsg,amsg) $away.p(%away.msg.back) }
      if (%away.ame) { $iif(%away.ig,same,ame) $away.p(%away.msg.back) }
    }
    .away
  }
  if (!$away) {
    if (!$1) { .set %away.reason $$?="Enter an away reason"> }
    else { .set %away.reason $1- }
    if (%away.inform) {
      if (%away.amsg) { $iif(%away.ig,samsg,amsg) $away.p(%away.msg.away) }
      if (%away.ame) { $iif(%away.ig,same,ame) $away.p(%away.msg.away) }
    }
    if ($exists(away.log.pm.txt) || $exists(away.log.hl.txt)) { var %lc = $input(Would you like ot remove old log files?,y,Away Log Management) }
    if (%lc) {
      if ($exists(away.log.pm.txt)) { .remove away.log.pm.txt }
      if ($exists(away.log.hl.txt)) { .remove away.log.hl.txt }
    }
    .set %away.start $fulldate
    .away $away.p(%away.reason)
  }
}
alias away {
  if (!$1) { .dialog -md away away }
  .setaway $1-
}
alias away.p {
  var %ret = $1-
  var %ret = $replace(%ret,&ctime,$time)
  var %ret = $replace(%ret,%reason,%away.reason)
  var %ret = $replace(%ret,&duration,$duration($awaytime))
  var %ret = $replace(%ret,&stime,%away.start)
  var %ret = $replace(%ret,&hl,$iif(%away.log.hl,On,Off))
  var %ret = $replace(%ret,&pm,$iif(%away.log.pm,On,Off))
  return %ret
}
on ^*:TEXT:*:?: {
  if (!$away || !%away.log.pm) { return }
  .write away.log.pm.txt $nick - $fulldate - $1-
  .msg $nick I am currently away ( $+ %away.reason $+ ) - Your message has been logged.
  .close -m $nick
  haltdef
}
on *:TEXT:*:#: {
  if (!$away || !%away.log.hl) { halt }
  var %a = 1
  while (%a <= $lines(away.highlight.txt)) {
    if ($read(away.highlight.txt,%a) isin $1-) { .write away.log.hl.txt $chan - $nick - $fulldate - $1- | break }
    inc %a
  }
}