All pastes #485716 Raw Edit

Something

public text v1 · immutable
·published 2007-05-13 05:19 UTC
rendered paste body
/*
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦                                                ¦¦
¦¦ AWAY SCRIPT by synth                           ¦¦
¦¦ irc.digitaltoxicty.net -j #digitaltoxicity     ¦¦
¦¦                                                ¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
*/

alias away.intro {
  set %away.version 2.2.4
  echo -a 
  echo -a Away Script v $+ %away.version Successfully Loaded!
  echo -a Copyright © 2005-2006. All Rights Reserved
  echo -a Written by: 14synth7 Email: 14synth.seven@gmail.com
  echo -a Preferences: To change settings, access 'Configuration' from your new "Away Script" right click menu.
  echo -a For usage syntax, /away.help - easy for setting an away you will only use once, so you don't have to save it
  echo -a 
}

alias away.help { 
  echo -a 
  echo -a Usage: /away 03<nicksuffix> 07<away reason>
  echo -a Ex: /away 03away 07I am currently away -- this would change your nick to '<currentname>|away' and your away reason as 'I am currently away'.
  echo -a Ex: /away 03* 07I am currently away -- If you wish to have only an <away reason> and no <nicksuffix>, use a * in place of <nicksuffix>.
  echo -a Ex: /away 03away -- If you only supply a <nicksuffix>, your nick will be '<currentname>|away' and your default reason will be used.
  echo -a Ex: /away -- If no <nicksuffix> or <away reason> is supplied, your defaults will be used for both.
  echo -a Preferences: To change settings, access 'Configuration' from your new "Away Script" right click menu.
  echo -a 
}

on *:LOAD: {
  away.intro
  dialog -m away.config away.config
}

on *:CONNECT: {
  if ($network == ZiRC) && (%away.auto.enabled == 1) {
    if (!%away.temp.reason) {
      away.autostart
    }
  }
}

alias away.autostart {
  .timer(AutoAway) 0 15 away.autoawaycheck 
}

alias away.autoawaycheck {
  if ($idle > $calc(%away.auto.time * 60)) && (!%away.temp.reason) {
    away %away.auto.nick $replace(%away.auto.away,$(%t,0), $+ %away.auto.time)
    .timer(AutoAway) off
  }
}

alias away {
  if (%away.auto.enabled == 1) .timer(AutoAway) off
  if (!%away.temp.reason) {
    if (%away.timesetting == 12) { 
      if (%away.showampm == 1) set %away.temp.gonesince $time(hh:nntt)
      elseif (%away.showampm == 0) set %away.temp.gonesince $time(hh:nn)
    }
    if (%away.timesetting == 24) set %away.temp.gonesince $time(HH:nn)
    if (!$1 && !$2-) { 
      set %away.temp.reason %away.dflt.away
      set %away.temp.nick %away.dflt.nick
      !.away %away.dflt.away (since %away.temp.gonesince $+ )
    }
    elseif ($1 && !$2-) { 
      set %away.temp.reason %away.dflt.away
      set %away.temp.nick $1
      !.away %away.dflt.away (since %away.temp.gonesince $+ )
    }
    else {
      set %away.temp.reason $2-
      set %away.temp.nick $1
      !.away $2- (since %away.temp.gonesince $+ )
    }
    set %away.temp.time $ctime
    describe # is away: $+(,%away.temp.reason,) $+($chr(40),left %away.temp.gonesince,$chr(41))
    if (%away.changenick == 1) {
      set %away.temp.oldnick $me
      set %away.temp.newnick %away.temp.oldnick $+ $chr(124) $+ %away.temp.nick
      nick %away.temp.oldnick $+ %away.temp.nick
    }
  }
  else { 
    dialog -m away.errorwindow away.errorwindow
    did -a away.errorwindow 1 You are already away
  }
}

alias back {
  if (%away.temp.reason) {
    !.away
    describe # is back from: $+(,%away.temp.reason,) $+($chr(40),gone $duration($calc($ctime - %away.temp.time)),$chr(41))
    if (%away.changenick == 1) nick %away.temp.oldnick
    unset %away.temp.*
    if (%away.auto.enabled == 1) { 
      resetidle 0 
      away.autostart
    }
  }
  else { 
    dialog -m away.errorwindow away.errorwindow
    did -a away.errorwindow 1 You are not away
  }
}

dialog away.editor {
  title "Away Reason Editor"
  size -1 -1 97 124
  option dbu
  text "Away Title:", 1, 8 8 50 9
  text "Away Nick Suffix:", 2, 8 32 50 9
  text "Away Reason", 3, 8 56 50 9
  edit "", 4, 8 16 81 10, autohs limit 16
  edit "", 5, 8 40 80 10, autohs limit 16
  edit "", 6, 8 64 81 32, multi
  button "Save", 7, 32 102 34 15, ok
}

dialog away.errorwindow {
  title "Away Script"
  size -1 -1 101 35
  option dbu
  text "", 1, 6 6 88 9, center
  button "Close", 2, 31 18 39 13, ok
}

dialog away.helpdialog {
  title "Away Script"
  size -1 -1 124 53
  option dbu
  text "", 1, 6 8 111 21
  button "Close", 2, 42 34 39 13, ok
}

dialog -l away.config {
  title "Away Script Config"
  size -1 -1 215 151
  option dbu
  tab "General", 33, 1 1 213 124
  tab "Away Messages", 34
  tab "Auto-Away", 54
  tab "About", 65
  check "Change nick on away?", 1, 9 55 70 10, tab 33
  text "Default away reason:", 2, 108 30 82 8, tab 33
  edit "", 3, 107 39 92 29, tab 33 autovs multi
  text "Default away nick:", 4, 108 71 82 8, tab 33
  edit "", 5, 107 80 92 11, tab 33
  button "Save and OK", 6, 177 135 34 12, ok
  box "General", 8, 5 20 89 50, tab 33
  text "Permanent Nickname:", 9, 10 32 65 8, tab 33
  edit "", 10, 9 42 76 11, tab 33
  box "Default Away Settings", 12, 97 20 112 104, tab 33
  box "Current Away Messages", 36, 2 20 89 104, tab 34
  list 37, 8 31 77 78, tab 34 vsbar
  box "Away Details", 40, 97 20 112 104, tab 34
  button "Add New", 41, 8 106 77 14, tab 34
  text "", 43, 101 39 100 8, tab 34
  text "", 44, 101 61 100 21, tab 34
  text "Nick Change:", 45, 101 31 50 8, tab 34
  text "Away Reason:", 46, 101 53 50 8, tab 34
  button "Delete", 47, 133 109 29 9, tab 34
  button "Edit", 48, 101 109 29 9, tab 34
  button "Cancel", 49, 139 135 34 12, cancel
  box "Time Setting", 51, 5 76 89 48, tab 33
  radio "12 hour time (ex. 1:23pm)", 52, 11 88 77 8, tab 33
  radio "24 hour time (ex. 13:23)", 53, 11 110 77 8, tab 33
  text "-[ Auto-Away ]-", 55, 61 20 92 8, tab 54 center
  text "With this enabled, if you are idle in IRC for XX number of minutes, you will automatically be set as 'away'.", 56, 6 32 199 14, tab 54
  check "Enable Auto-Away?", 57, 6 50 89 8, tab 54
  edit "", 58, 10 71 17 10, tab 54
  text "minutes before auto-away is set", 59, 30 72 119 8, tab 54
  box "Auto-Away Settings", 60, 5 61 203 63, tab 54
  text "Auto-Away nick:", 61, 10 86 49 8, tab 54
  edit "", 62, 62 85 50 10, tab 54
  text "Auto-Away reason:", 63, 10 98 49 8, tab 54
  edit "", 64, 62 97 139 22, tab 54 autovs multi
  text "", 66, 10 25 144 8, tab 65
  text "© Copyright 2005-2006. All Rights Reserved.", 67, 10 34 144 8, tab 65
  text "Written by synth7", 68, 10 43 144 8, tab 65
  text "Email: synth.seven@gmail.com", 70, 22 52 87 8, tab 65
  text "AIM: myceL ESP", 71, 22 61 87 8, tab 65
  text "Bug? Error? Write me at synth.seven@gmail.com", 72, 4 137 128 8
  text "These are your defaults if you do not set them when using the /away command.", 73, 102 96 102 24, tab 33 center
  check "Show am/pm?", 76, 22 98 50 8, tab 33
  button "help", 77, 35 107 23 8, tab 54
}

alias away.config.awaylist {
  var %i = 1
  while (%i <= $ini(synaway.ini,AWAYS,0)) {
    did -a away.config 37 $ini(synaway.ini,AWAYS,%i)
    inc %i
  }
}

on *:DIALOG:*:*:*: {
  if ($dname = away.config) {
    if ($devent = init) {
      did -a $dname 66 Away Script v $+ %away.version
      did -a $dname 10 $iif(%away.mainnick,%away.mainnick,$me)
      if (%away.changenick == 1) did -c $dname 1
      if (%away.dflt.away) did -a $dname 3 $ifmatch
      if (%away.dflt.nick) did -a $dname 5 $ifmatch
      if (%away.timesetting == 12) did -c $dname 52
      if (%away.timesetting == 24) { did -c $dname 53 | did -b $dname 76 }
      if (%away.showampm == 1) did -c $dname 76
      away.config.awaylist
      did -b $dname 47,48
      if (%away.auto.enabled == 1) did -c $dname 57
      if (%away.auto.enabled != 1) did -m $dname 58,62,64
      if (%away.auto.time) did -a $dname 58 $ifmatch
      if (%away.auto.nick) did -a $dname 62 $ifmatch
      if (%away.auto.away) did -a $dname 64 $ifmatch
    }
    if ($devent = sclick) {
      if ($did = 6) {
        set %away.changenick $iif($did($dname,1).state == 1,1,0)
        if ($did($dname,3).text) set %away.dflt.away $ifmatch
        if ($did($dname,5).text) set %away.dflt.nick $ifmatch
        if ($did($dname,10).text) set %away.mainnick $ifmatch
        if ($did($dname,52).state == 1) set %away.timesetting 12
        if ($did($dname,53).state == 1) set %away.timesetting 24
        set %away.showampm $iif($did($dname,76).state == 1,1,0)
        if ($did($dname,57).state == 1) {
          set %away.auto.enabled 1
          away.autostart
        }
        if ($did($dname,57).state != 1) {
          set %away.auto.enabled 0
          .timer(AutoAway) off
        }
        if ($did($dname,58).text) set %away.auto.time $ifmatch
        if ($did($dname,62).text) set %away.auto.nick $ifmatch
        if ($did($dname,64).text) set %away.auto.away $ifmatch
        if ($did($dname,58).text != %away.auto.time) away.autostart
      }
      if ($did = 37) {
        did -e $dname 47,48
        var %nick = $gettok($readini(synaway.ini,AWAYS,$did($dname,37).seltext),1,32)
        var %reason = $gettok($readini(synaway.ini,AWAYS,$did($dname,37).seltext),2-,32)
        if ($did($dname,37).seltext) { 
          did -a $dname 43 %away.mainnick $+ $chr(124) $+ %nick
          did -a $dname 44 %reason
        }
      }
      if ($did = 41) {
        dialog -m away.editor away.editor
      }
      if ($did = 47) {

        var %awayname = $ini(synaway.ini,AWAYS,$ini(synaway.ini,AWAYS,$did($dname,37).seltext))
        var %confirm = $input(Are you sure you want to delete the ' $+ %awayname $+ ' away message?,y,Delete away)
        if (%confirm = $true) {
          remini synaway.ini AWAYS %awayname
          did -r $dname 37,43,44
          away.config.awaylist
        }
      }
      if ($did = 48) {
        dialog -m away.editor away.editor
        did -a away.editor 4 $did($dname,37).seltext
        did -b away.editor 4
        did -a away.editor 5 $gettok($readini(synaway.ini,AWAYS,$did($dname,37).seltext),1,32)
        did -a away.editor 6 $gettok($readini(synaway.ini,AWAYS,$did($dname,37).seltext),2-,32)
      }
      if ($did = 52) did -e $dname 76
      if ($did = 53) did -b $dname 76
      if ($did = 57) {
        if ($did($dname,57).state = 1) did -n $dname 58,62,64
        else { did -m $dname 58,62,64 }
      }
      if ($did = 77) {
        dialog -m away.helpdialog away.helpdialog
        did -a away.helpdialog 1 $(%t,0) = auto-away length (minutes)
      }
    }
  }
  if ($dname = away.editor) {
    if ($devent = sclick) {
      if ($did = 7) {
        if ($numtok($did($dname,4).text,32) = 1) && ($numtok($did($dname,5).text,32) = 1) {
          writeini synaway.ini AWAYS $gettok($did($dname,4).text,1,32) $gettok($did($dname,5).text,1,32) $gettok($did($dname,6).text,1-,32)
          did -a away.config 37 $did($dname,4).text
          if ($dialog(away.config)) {
            did -r away.config 37
            away.config.awaylist
          }
        }
        elseif ($numtok($did($dname,4).text,32) >= 2) {
          dialog -x away.editor
          dialog -m away.editor away.editor
          dialog -m away.errorwindow away.errorwindow
          did -a away.errorwindow 1 'Away Title' may only be one word
        }
        elseif ($numtok($did($dname,5).text,32) >= 2) {
          dialog -x away.editor
          dialog -m away.editor away.editor
          dialog -m away.errorwindow away.errorwindow
          did -a away.errorwindow 1 'Away Nick Suffix' may only be one word
        }
      }
    }
  }
}

menu channel,status {
  Away Script %away.version
  .$iif($away == $true,$null,$style(2)) Back:/back
  .$submenu($awayreasons($1))
  .-
  .Configuration:/dialog -m away.config away.config
  .Unload Script {
    var %confirm = $input(Are you sure you want to unload Away Script %away.version $+ ? All settings and away messages will be lost.,yv,Unload?)
    if (%confirm = $yes) {
      .timer 1 0 echo -a Unloading Away Script v $+ %away.version $+ ...please wait...
      .timer 1 1 .unload -rs " $+ $script $+ " | .unset %away.* | .timer(AutoAway) off | .remove $+(",$mircdir,synaway.ini,")
      .timer 1 2 echo -a Done! Away Script v $+ %away.version Unloaded.
    }
  }
}

alias awayreasons {
  var %i 1
  if ($1 == begin) return -
  while (%i <= $ini(synaway.ini,AWAYS,0)) {
    if ($1 == %i) return $ini(synaway.ini,AWAYS,%i) $+ : /away $readini(synaway.ini,AWAYS,$ini(synaway.ini,AWAYS,%i))
    inc %i
  }
  if ($1 == end) return -
}