All pastes #798663 Raw Edit

Mine

public text v1 · immutable
#798663 ·published 2007-11-26 22:50 UTC
rendered paste body
; ############################################## 
; # Start Idle Away Timer                      # 
; ############################################## 
on *:start: if ($readini(Settings.ini,Away.Config,AutoAway) == on) .timerAway.IdleCheck -o 0 30 Away.IdleCheck 

; ############################################## 
; # Load Default Options                       # 
; ############################################## 
on *:load: { 
  if (!$readini(AwaySettings.ini,Config,NickEditType))      writeini AwaySettings.ini Config NickEditType Suffix 
  if (!$readini(AwaySettings.ini,Config,NickPrefix))        writeini AwaySettings.ini Config NickPrefix Away| 
  if (!$readini(AwaySettings.ini,Config,NickSuffix))        writeini AwaySettings.ini Config NickSuffix |Away 
  if (!$readini(AwaySettings.ini,Config,NickSetTo))         writeini AwaySettings.ini Config NickSuffix Away 
  if (!$readini(AwaySettings.ini,Config,AutoAway))          writeini AwaySettings.ini Config AutoAway off 
  if (!$readini(AwaySettings.ini,Config,AutoAwayTime))      writeini AwaySettings.ini Config AutoAwayTime 900 
  if (!$readini(AwaySettings.ini,Config,IdleSettings))      writeini AwaySettings.ini Config IdleSettings Suffix~|Idle~Auto away after %time minutes idle 
  if (!$readini(AwaySettings.ini,Config,LeavingTime))       writeini AwaySettings.ini Config LeavingTime off 
  if (!$readini(AwaySettings.ini,Config,LeavingTimeFormat)) writeini AwaySettings.ini Config LeavingTimeFormat HH:nn:ss 
  if (!$readini(AwaySettings.ini,Config,TimeAway))          writeini AwaySettings.ini Config TimeAway off 
  if (!$readini(AwaySettings.ini,Config,TimeAwayFormat))    writeini AwaySettings.ini Config TimeAwayFormat Short 
  if (!$readini(AwaySettings.ini,Config,ARChannelMessage))  writeini AwaySettings.ini Config ARChannelMessage off 
  if (!$readini(AwaySettings.ini,Config,ARPrivateMessage))  writeini AwaySettings.ini Config ARPrivateMessage off 
  if (!$readini(AwaySettings.ini,Config,MsgChans))          writeini AwaySettings.ini Config MsgChans on 
  if (!$readini(AwaySettings.ini,Config,MsgQueries))        writeini AwaySettings.ini Config MsgQueries off 
  if (!$readini(AwaySettings.ini,Config,RespondHilights))   writeini AwaySettings.ini Config RespondHilights on 
  if (!$readini(AwaySettings.ini,Config,RespondPM))         writeini AwaySettings.ini Config RespondPM on 
  if (!$readini(AwaySettings.ini,Config,RespondNotice))     writeini AwaySettings.ini Config RespondNotice on 
  echo -a 4>>> Successfully loaded $remove($script,$scriptdir) - Away System script by Urza 
} 
; ############################################## 
; # Remove Away if unloaded                    # 
; ############################################## 
on *:unload: { 
  disable #away 
  unset %away.* 
  hfree away.*.responses 
  timerAway.Idlecheck off 
} 
; ############################################## 
; # Cancel Away on exit                        # 
; ############################################## 
on *:exit: { 
  disable #away 
  unset %away.* 
  timerAway.Idlecheck off 
} 
; ############################################## 
; # Popup Menus                                # 
; ############################################## 
menu status,channel,query,menubar,@Away.Logs { 
  - 
  Away Settings 
  .Open away options: Dialog $iif($dialog(away),-o,-m) away away 
  .$iif($active == @Away.Logs,Close window):window -c $active 
  . - 
  . Set away $+ $chr(58) $iif($group(#away) == off,on,off): { 
    if ($group(#away) == off) away $?="Enter away reason or leave black for default (if set)" 
    else back 
  } 
  .- 
  .$iif($group(#away) == on && %Away.Preset == 1,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,1),$style(2))) Preset 1 - $iif($readini(AwaySettings.ini,Presets,1),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,1),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 2,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,2),$style(2))) Preset 2 - $iif($readini(AwaySettings.ini,Presets,2),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,2),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 3,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,3),$style(2))) Preset 3 - $iif($readini(AwaySettings.ini,Presets,3),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,3),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 4,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,4),$style(2))) Preset 4 - $iif($readini(AwaySettings.ini,Presets,4),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,4),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 5,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,5),$style(2))) Preset 5 - $iif($readini(AwaySettings.ini,Presets,5),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,5),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 6,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,6),$style(2))) Preset 6 - $iif($readini(AwaySettings.ini,Presets,6),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,6),1,126) 
  .$iif($group(#away) == on && %Away.Preset == 7,$style(3),$iif($group(#away) == on || !$readini(AwaySettings.ini,Presets,7),$style(2))) Preset 7 - $iif($readini(AwaySettings.ini,Presets,7),$gettok($v1,1,126),Not set):away $gettok($readini(AwaySettings.ini,Presets,7),1,126) 
} 

; ############################################## 
; # Main Dialog                                # 
; ############################################## 
dialog away { 
  title Away System Settings 
  size -1 -1 150 177 
  option dbu 
  tab "Basic Settings"                 100,0   0     150 156 
  tab "Exceptions and Messaging"       200,0   0     150 156 
  Box "Default Away Settings",         2,  4   15    142 45, tab 100 
  text "Nick:",                        1,  8   28    12  10, tab 100 
  combo                                3,  22  26    50  10, drop tab 100 
  edit "",                             5,  75  26    50  10, tab 100 
  button "?",                          6,  130 26    10  10, tab 100 
  text "Default Away Message:",        24, 8   39    100 10, tab 100 
  edit "",                             25, 8   47    117 10, autohs tab 100 
  button "?",                          26, 130 47    10  10, tab 100 
  box "Global Options"                 4,  4   62    142 92, tab 100 
  check "A&uto Away After",            7,  12  71    50  10, tab 100 
  edit "",                             8,  63  71    10  10, tab 100 
  text "minutes.",                     9,  75  72.5  40  10, tab 100 
  button "?",                          10, 130 71    10  10, tab 100 
  button "options",                    27, 98  71    30  10, tab 100 
  check "Show &Leaving Time?"          11, 12  85    60  10, tab 100 
  edit ""                              12, 75  85    50  10, tab 100 
  button "?",                          13, 130 85    10  10, tab 100 
  check "Show &Time Away?"             14, 12  100   55  10, tab 100 
  combo                                15, 75  100   50  10, drop tab 100 
  button "?",                          16, 130 100   10  10, tab 100 
  box "Auto Return"                    17, 7   115   136 35, tab 100 
  text "Cancel away on:"               18, 12  125   80  10, tab 100 
  check  "&Channel Message"            19, 60  124   50  10, tab 100 
  check  "&Private Message"            20, 60  134   50  10, tab 100 
  button "?",                          21, 130 134   10  10, tab 100 

  ;Exception + messaging options:  - display only does nothing yet 
  box "Messaging",                     30, 4   15   142  90, tab 200 
  text "Send messages to:",            31, 8   26   50   10, tab 200 
  check "All open channels"            32, 60  25   50   10, tab 200 
  check "All open queries"             33, 60  35   50   10, tab 200 
  button "?",                          34, 130 26   10   10, tab 200 
  box "Response Messages",             35, 8   48   134  38, tab 200 
  text "Respond to:",                  36, 12  56   50   10, tab 200 
  check "Channel highlight",           37, 60  55   50   10, tab 200 
  check "Private message",             38, 60  65   50   10, tab 200 
  check "Private notice",              39, 60  75   50   10, tab 200 
  button "?",                          40, 130 55   10   10, tab 200 
  button "Get mIRC hilights",          42, 18  90   50   10, tab 200 
  button "Modify Hilights",            43, 70  90   50   10, tab 200 
  button "?",                          44, 130 90   10   10, tab 200 
  box "Exceptions",                    45, 4   109  142  24, tab 200 
  button "Modify Away System Exceptions"   46, 8   118  100  10, tab 200 
  button "?",                          48, 130 118  10   10, tab 200 

  button "Edit &Presets"               22, 12  159  60  15 
  button "&Ok"                         23, 80  159  60  15, ok 
} 
; ############################################## 
; # Custom presets dialog                      # 
; ############################################## 
dialog Custom.Aways { 
  title Custom Away Messages 
  size -1 -1 236 110 
  option dbu 
  box  "Custom Away Triggers"          1,  4   4  227 85 
  text "Trigger",                      2,  16  12 30  10 
  text "Nick Settings",                3,  50  12 50  10 
  text "Away Message",                 4,  130 12 50  10 
  list                                 5,  10  20 30  50 
  list                                 6,  40  20 50  50 
  list                                 7,  90  20 134 50, autohs 
  button "Add",                        8,  10  70 50  15 
  button "Edit",                       10, 65  70 50  15 
  button "Delete",                     9,  120 70 50  15 
  button "Clear",                      12, 175 70 50  15 
  button "OK",                         11, 90  90 50  15, OK 

} 
; ############################################## 
; # Idle Away Settings + Help dialogs          # 
; ############################################## 
dialog Idle.Away.Settings { 
  title Idle Away Settings 
  size -1 -1 120 85 
  option dbu 
  box "Idle away settings",           1, 4  4  112 55 
  text "Nick Settings:",              2, 8  12 50  10 
  combo                               3, 8  20 50  10, drop 
  edit "",                            4, 62 20 50  10 
  text "Idle away message:",          5, 8  35 50  10 
  edit "",                            6, 8  43 104 10, autohs 
  button "&Help"                      7, 5  65 50  15 
  button "&Ok",                       8, 65 65 50  15, OK 
} 
Dialog Idle.Away.Help { 
  title Away System Help 
  size -1 -1 150 90 
  option dbu 
  box "Idle away help",           1, 4  4  142 60 
  text "Idle away nick and automatic message settings work in the same way as the default away settings in the main dialog, except that they define the settings used when you are automatically set away from Idle"   2, 8  15  133 25 
  text "you can use %time to refer to the time you must idle before being set as away",  3, 8  45  133 20                                                                                                                                                
  button "&Ok",                   4, 50 70 50 15, OK 
} 
; ############################################## 
; # Preset Settings + Help dialogs             # 
; ############################################## 
dialog Preset.Settings { 
  title Preset Settings 
  size -1 -1 120 100 
  option dbu 
  box "Preset settings",              1,  4  4  112 70 
  text "Trigger:",                    2,  8  14 50  10 
  edit "",                            3,  30 13 50  10 
  text "Nick Settings:",              4,  8  27 50  10 
  combo                               5,  8  35 50  10, drop 
  edit "",                            6,  62 35 50  10 
  text "Away message:",               7,  8  50 50  10 
  edit "",                            8,  8  58 104 10, autohs 
  button "&Help"                      9,  5  80 50  15 
  button "&Ok",                       10, 65 80 50  15, OK 
} 
Dialog Preset.Help { 
  title Away System Help 
  size -1 -1 150 90 
  option dbu 
  box "Presets help",             1, 4  4  142 60 
  text "Preset nick and Away message settings work in the same way as the default away settings in the main dialog, except that they define the settings used for the preset you are creating"   2, 8  15  133 27 
  text "To use a preset once you have created it simply type /Away TRIGGER",  3, 8  45  133 20                                                                                                                                                
  button "&Ok",                   4, 50 70 50 15, OK 
} 
; ############################################## 
; # Exceptions dialogs                         # 
; ############################################## 
dialog Away.Exceptions { 
  title Away System Exceptions 
  size -1 -1 120 100 
  option dbu 
  box "Exceptions"         1,  4  4  112 75 
  text "Networks"          2,  8  12  50 10, center 
  list                     3,  8  19 50 58 
  button "Add"             6,  61 20 50 10 
  button "Delete"          7,  61 34 50 10 
  button "Edit"            8,  61 49 50 10 
  button "Clear"           9,  61 63 50 10 
  button "OK"              10, 35 82 50 15, oks 
} 
dialog Away.AddException { 
  title Add Exception 
  size -1 -1 156 190 
  option dbu 
  box "Add Exception"                                                                              1,  4  4   148 165 
  text "Network Name:"                                                                             2,  8  16  40  10 
  edit ""                                                                                          3,  50 15  60  10 
  text "If you are unsure of a network name you can type: //echo -a $network in mIRC to view it."  20, 8  30  130 15 
  box "Exception scope"                                                                            4,  8  50  140 55 
  Text "This exception affects:"                                                                   5,  12 60  55  10 
  radio "Entire network"                                                                           6,  69 59  65  10 
  radio "certain channels only"                                                                    7,  69 69  65  10 
  Text "Enter Channels to be excepted, seperated by spaces."                                       8,  12 80  130 10 
  edit ""                                                                                          9,  12 90  130 10 
  box "Exception Options"                                                                          10, 8  110  140 55 
  text "On this network:"                                                                          11, 12 120 45  10 
  check "Do not change nick"                                                                       12, 55 120 55  10 
  check "Do not send away messages"                                                                13, 55 130 80  10 
  check "Do not send hilight responses"                                                            14, 55 140 80  10 
  check "Do not send PM responses"                                                                 15, 55 150 80  10 
  button "OK"                                                                                      16, 53 172 50  15, Ok 
} 

; ############################################## 
; # Help Dialogs                               # 
; ############################################## 
dialog Away.Help.6 { 
  title Away System Help 
  size -1 -1 150 120 
  option dbu 
  box "Nick Settings Help",                                                                   1, 5  5   140 90 
  text "Nick PREFIX: Adds the specified text to the FRONT of your nick when going away",      2, 8  15  133 20 
  text "Nick SUFFIX: Adds the specified text to the END of your nick when going away",        3, 8  35  133 20 
  text "Set to: Sets your nick to the specified nick when you set away",                      4, 9  55  133 20    
  text "Don’t Change: Means that you’re nick will not change when going away or coming back", 5, 8  75  133 20          
  button "OK",                                                                                7, 50 100 50 15, OK 
} 
dialog Away.Help.10 { 
  title Away System Help 
  size -1 -1 150 90 
  option dbu 
  box "Auto Away Help",                                                                                1, 5  5  140 60 
  text "Enabling Auto-Away will automatically set you as away if you are idle for the specified time", 2, 8  15 134 20 
  text "Time must be between 1 and 60 minutes",                                                        3, 8  35 134 20 
  text "Options for settings Idle nick and message can be found by clicking the options button",       4, 8  45 134 20 
  button "OK",                                                                                         5, 50 70 50 15, ok 
} 
dialog Away.Help.13 { 
  title Away System Help 
  size -1 -1 150 80 
  option dbu 
  box "Show Leaving Time Help",                                                                                                    1, 5 5 140 50 
  text "Enabling 'Show Leaving Time' will display the time you went away in all your away messages in the specified Time Format",  2, 8 15 134 20 
  button "Click Here for a list of codes used in time format",                                                                     3, 8 40 134 10 
  button "OK",                                                                                                                     4, 50 60 50 15, ok 
} 
dialog Away.Help.16 { 
  title Away System Help 
  size -1 -1 150 90 
  option dbu 
  box "Show Time Away Help",                                                                                                         1, 5 5 140 60 
  text "Enabling 'Show Time Away' will display how long you have been away in all your away messages in the specified Time Format",  2, 8 15 134 20 
  text "Example of Short format: 5h 6m 10s"                                                                                          3, 8 40 134 10 
  text "Example of Medium format: 5hrs 6mins 10secs"                                                                                 4, 8 48 134 10 
  text "Example of long format: 5 hours 6 minutes 10 seconds"                                                                        5, 8 56 134 10 
  button "OK",                                                                                                                       6, 50 70 50 15, ok 
} 
dialog Away.Help.21 { 
  title Away System Help 
  size -1 -1 150 65 
  option dbu 
  box "Automatic Return Help",                                                                                                    1, 5 5 140 35 
  text "Enabling 'Automatic Return' will automatically bring you back from away if you send any Channel And/Or Private message",  2, 8 15 134 20 
  button "OK",                                                                                                                    5, 50 45 50 15, ok 
} 
dialog Away.Help.26 { 
  title Away System Help 
  size -1 -1 150 55 
  option dbu 
  box "Default Message Help",                                                    1, 5  5  140 27 
  text "If you do not enter a reason when going away this default will be used", 2, 8  15 134 20 
  button "OK",                                                                   3, 50 35 50 15, ok 
} 
dialog Away.Help.34 { 
  title Away System Help 
  size -1 -1 150 60 
  option dbu 
  box "Message sending help",                                                                                                         1, 5  5  140 32 
  text "These options refer to weather your away message will be sent to channels and/or Pm's (Queries) when leaving and returning.", 2, 8  15 134 20 
  button "OK",                                                                                                                        3, 50 40 50 15, ok 
} 
dialog Away.Help.40 { 
  title Away System Help 
  size -1 -1 150 80 
  option dbu 
  box "Auto Response Help",                                                                                       1, 5  5  140 50 
  text "These options refer to what actions will trigger an auto message alerting the person that you are away.", 2, 8  15 134 20 
  text "Channel highlight is triggered whenever someone says a word that is in your hilights list",               3, 8  35 134 20 
  button "OK",                                                                                                    4, 50 60 50  15, ok 
} 
dialog Away.Help.44 { 
  title Away System Help 
  size -1 -1 150 120 
  option dbu 
  box "Hilight help",                                                                                                                                                        1, 5  5  140 92 
  text "'Hilight' occurs whenever somebody says a word that is in your hilights list.",                                                                                      2, 8  15 134 20 
  text "Your away hilights determine what words, when said, will cause the script to notify the person that you are away, and log the message",                              3, 8  31 134 20 
  text "If you have hilights set in mIRC you can click 'Get mIRC Hilights' to have the away system use these same hilights",                                                 4, 8  54 134 20 
  text "You may also add or modify seperate ones using the 'Modify Hilights' button. Note that Identifiers such as $me (which refers to your current nick) are also allowed" 5, 8  75 134 20 
  button "OK",                                                                                                                                                               6, 50 100 50  15, ok 
} 
dialog Away.Help.48 { 
  title Away System Help 
  size -1 -1 150 65 
  option dbu 
  box "Exceptions help",                                                                                                                        1, 5  5  140 35 
  text "Exceptions allow you to specify networks/channels in which away messages are not sent, or networks in which your nick is not changed",  2, 8  15 134 25      
  button "OK",                                                                                                                                  3, 50 45 50  15, ok 
} 

dialog Away.Help.Time { 
  title Away System Help 
  size -1 -1 150 155 
  option dbu 
  box "Time Format Help",                                                   1, 5 5 140 120 
  text "The following is a list of Codes that can be used in Time Formats", 2, 8 15 134 20 
  box "Time Format Codes",                                                  3, 8 30 134 88 
  list                                                                      4, 20 40 20 75 
  list                                                                      5, 40 40 90 75 
  button "OK",                                                              6, 50 130 50 15, ok 
} 


; ############################################## 
; # Dialog Initiation events                   # 
; ############################################## 
; ----- Populate Time help 
on *:dialog:Away.Help.Time:init:*: { 
  did -a $dname 4 HH 
  did -a $dname 5 Hours - 2 Digit 24 hour time - $time(HH) 
  did -a $dname 4 H 
  did -a $dname 5 Hours - 1 Digit 24 hour time - $time(H) 
  did -a $dname 4 hh 
  did -a $dname 5 Hours - 2 Digit 12 hour time - $time(hh) 
  did -a $dname 4 h 
  did -a $dname 5 Hours - 1 Digit 12 hour time - $time(h) 
  did -a $dname 4 nn 
  did -a $dname 5 Minutes - 2 Digit - $time(nn) 
  did -a $dname 4 n 
  did -a $dname 5 Minutes - 1 Digit - $time(n) 
  did -a $dname 4 ss 
  did -a $dname 5 Seconds - 2 Digit - $time(ss) 
  did -a $dname 4 s 
  did -a $dname 5 Seconds - 1 Digit - $time(s) 
  did -a $dname 4 tt 
  did -a $dname 5 am/pm - Lower case - $time(tt) 
  did -a $dname 4 TT 
  did -a $dname 5 AM/PM - Upper Case - $time(TT) 
} 
; ----- Populate main dialog settings 
on *:dialog:away:init:*: { 
  ;Tab 100 Controls 
  did -a $+ $iif($readini(AwaySettings.ini,Config,NickEditType) == Prefix,c) $dname 3 Prefix 
  did -a $+ $iif($readini(AwaySettings.ini,Config,NickEditType) == Suffix,c) $dname 3 Suffix 
  did -a $+ $iif($readini(AwaySettings.ini,Config,NickEditType) == Set to,c) $dname 3 Set to 
  did -a $+ $iif($readini(AwaySettings.ini,Config,NickEditType) == Don't Change,c) $dname 3 Don't Change 
  if ($readini(AwaySettings.ini,Config,NickEditType) == Don't Change) did -m $dname 5 
  if ($readini(AwaySettings.ini,Config,NickPrefix)) && ($did(away,3).seltext == Prefix) did -ra $dname 5 $readini(AwaySettings.ini,Config,NickPrefix) 
  if ($readini(AwaySettings.ini,Config,NickSuffix)) && ($did(away,3).seltext == Suffix) did -ra $dname 5 $readini(AwaySettings.ini,Config,NickSuffix) 
  if ($readini(AwaySettings.ini,Config,NickSetTo)) && ($did(away,3).seltext == Set To) did -ra $dname 5 $readini(AwaySettings.ini,Config,NickSetTo) 
  if ($readini(AwaySettings.ini,Config,AutoAway) == on) did -c $dname 7 | else did -m $dname 8 
  if ($readini(AwaySettings.ini,Config,AutoAwayTime)) did -a $dname 8 $calc($ifmatch / 60) | else did -a $dname 8 900 
  if ($readini(AwaySettings.ini,Config,LeavingTime) == on) did -c $dname 11                | else did -m $dname 12 
  if ($readini(AwaySettings.ini,Config,LeavingTimeFormat)) did -a $dname 12 $ifmatch       | else did -a $dname 12 HH:nn:ss 
  if ($readini(AwaySettings.ini,Config,TimeAway) == on) did -c $dname 14                   | else did -b $dname 15 
  if ($readini(AwaySettings.ini,Config,TimeAwayFormat) == Short) did -ac $dname 15 Short   | else did -a $dname 15 Short 
  if ($readini(AwaySettings.ini,Config,TimeAwayFormat) == Medium) did -ac $dname 15 Medium | else did -a $dname 15 Medium 
  if ($readini(AwaySettings.ini,Config,TimeAwayFormat) == Long) did -ac $dname 15 Long     | else did -a $dname 15 Long 
  if ($readini(AwaySettings.ini,Config,ARChannelMessage) == on) did -c $dname 19 
  if ($readini(AwaySettings.ini,Config,ARPrivateMessage) == on) did -c $dname 20 
  if ($readini(AwaySettings.ini,Config,DefaultMessage)) did -a $dname 25 $ifmatch 
  ;Tab 200 controls 
  if ($readini(AwaySettings.ini,Config,MsgChans) == on) did -c $dname 32 
  if ($readini(AwaySettings.ini,Config,MsgQueries) == on) did -c $dname 33 
  if ($readini(AwaySettings.ini,Config,RespondHilights) == on) did -c $dname 37 
  if ($readini(AwaySettings.ini,Config,RespondPM) == on) did -c $dname 38 
  if ($readini(AwaySettings.ini,Config,RespondNotice) == on) did -c $dname 39 
} 
; ----- Populate Custom presets list 
on *:dialog:Custom.Aways:init:*: { 
  var %x = 1 
  while (%x <= 7) { 
    if ($readini(AwaySettings.ini,Presets,%x)) { 
      did -a $dname 5 $gettok($v1,1,126) 
      did -a $dname 6 $gettok($v1,2,126) 
      did -a $dname 7 $gettok($v1,3-,126) 
    } 
    else halt 
    inc %x 
  } 
} 
; ----- Populate Idle Away Settings 
on *:dialog:Idle.Away.Settings:init:*: { 
  tokenize 126 $readini(AwaySettings.ini,n,Config,IdleSettings) 
  did -a $+ $iif($1 == Prefix,c) $dname 3 Prefix 
  did -a $+ $iif($1 == Suffix,c) $dname 3 Suffix 
  did -a $+ $iif($1 == Set to,c) $dname 3 Set to 
  did -a $+ $iif($1 == Don't Change,c) $dname 3 Don't Change 
  if ($1 == Don't Change) did -m $dname 5 
  else did -ra $dname 4 $2 
  if ($3) did -a $dname 6 $3- 
} 
; ----- Populate Preset settings 
on *:dialog:Away.Preset:init:*: { 
  if (%Away.EditPreset) { 
    var %pre = %Away.EditPreset, %trigger = $did(Custom.Aways,5).seltext 
    var %edittype = $gettok($did(Custom.Aways,6).seltext,1,58), %nickedit = $gettok($did(Custom.Aways,6).seltext,2,58) 
    var %reason = $did(Custom.Aways,7).seltext 
    did -a $dname  3 %trigger 
    did -a $+ $iif(%edittype == Prefix,c) $dname 5 Prefix 
    did -a $+ $iif(%edittype == Suffix,c) $dname 5 Suffix 
    did -a $+ $iif(%edittype == Set to,c) $dname 5 Set to 
    did -a $+ $iif(%edittype == Don't Change,c) $dname 5 Don't Change 
    if (%edittype == Don't Change) did -m $dname 6 
    else did -ra $dname 6 %nickedit 
    if (%reason) did -a $dname 8 %reason 
  } 
  else { 
    did -a $dname 5 Prefix 
    did -a $dname 5 Suffix 
    did -a $dname 5 Set to 
    did -a $dname 5 Don't Change 
  } 
} 
; Exception initiation events 
on *:dialog:Away.Exceptions:init:*: { 
  var %x = 1,%total = $ini(AwaySettings.ini,Exceptions,0) 
  while (%x <= %total) { 
    did -a $dname 3 $ini(AwaySettings.ini,Exceptions,%x) 
    inc %x 
  } 
} 
on *:dialog:Away.AddException:init:*: { 
  if (%Away.Exception) { 
    var %info = $readini(AwaySettings.ini,Exceptions,%away.Exception) 
    var %scope = $gettok(%info,1,126), %options = $gettok(%info,2,126), %chans = $gettok(%info,3-,126) 
    did -a $dname 3 %Away.Exception 
    if (%scope == 1) { 
      did -c $dname 6 
      did -b $dname 9 
    } 
    else { 
      did -c $dname 7 
      did -b $dname 12,15 
      did -e $dname 9 
      did -a $dname 9 %chans 
    } 
    if ($left(%options,1) == 1) && (%scope == 1) did -c $dname 12 
    if ($mid(%options,2,1) == 1) did -c $dname 13 
    if ($mid(%options,3,1) == 1) did -c $dname 14 
    if ($right(%options,1) == 1) && (%scope == 1) did -c $dname 15 
  } 
  else { 
    did -c $dname 6 
    did -b $dname 9 
  } 
} 

; ############################################## 
; # Dialog Sclick Events                       # 
; ############################################## 
; ----- Open Time Help dialog 
on *:dialog:Away.Help.13:sclick:3: { 
  dialog $iif($dialog(Away.Help.Time),-o,-m) Away.Help.Time Away.Help.Time 
  dialog -x $dname 
} 
; ----- Select same line in each column in time help dialog 
on *:dialog:Away.Help.Time:sclick:*: { 
  if ($did == 4) did -c $dname 5 $did(4).sel 
  elseif ($did == 5) did -c $dname 4 $did(5).sel 
} 
; ----- Processing clicks for main dialog 
on *:dialog:away:sclick:*: { 
  ; Tab 100 
  if ($did == 3) { 
    writeini AwaySettings.ini Config NickEditType $did(3).seltext 
    if ($did(3).seltext == Prefix) did -nra $dname 5 $readini(AwaySettings.ini,Config,NickPrefix) 
    elseif ($did(3).seltext == suffix) did -nra $dname 5 $readini(AwaySettings.ini,Config,NickSuffix) 
    elseif ($did(3).seltext == Set to) did -nra $dname 5 $readini(AwaySettings.ini,Config,NickSetTo) 
    else did -rm $dname 5 
  } 
  if ($did == 7) && ($did(7).state == 0) did -m $dname 8 
  elseif ($did == 7) && ($did(7).state == 1) did -n $dname 8 
  elseif ($did == 11) && ($did(11).state == 0) did -m $dname 12 
  elseif ($did == 11) && ($did(11).state == 1) did -n $dname 12 
  elseif ($did == 14) && ($did(14).state == 0) did -b $dname 15 
  elseif ($did == 14) && ($did(14).state == 1) did -e $dname 15 
  elseif ($istok(6|10|13|16|21|26|34|40|44|48,$did,124)) dialog $iif($dialog($+(Away.Help.,$did)),-o,-m) $+(Away.Help.,$did) $+(Away.Help.,$did) 
  elseif ($did == 22) dialog $iif($dialog(Custom.Aways),-o,-m) Custom.Aways Custom.Aways 
  elseif ($did == 27) dialog $iif($dialog(Idle.Away.Settings),-o,-m) Idle.Away.Settings Idle.Away.Settings 
  ; Tab 200 
  elseif ($did == 42) { 
    if ($input(Retrieved the following hilights from your current mIRC settings: $crlf $crlf $+ $Get.Highlights $Crlf $crlf $+ Would you like to use these as your away system highlights? You can use the 'Modify Hilights' button to modify or add to these.,yi,Highlights)) { 
      writeini AwaySettings.ini Config Hilights $Get.Highlights 
    } 
  } 
  elseif ($did == 43) { 
    var %hilights = $input(Enter Hilight words or identifiers seperated by commans ONLY. $crlf $+ Eg: $+($me,$chr(44),ALTNICK,$chr(44),$ $+ me),oe,Modify Hilights,$readini(AwaySettings.ini,n,Config,Hilights))) 
    if (%hilights) writeini AwaySettings.ini Config Hilights $remove(%hilights,$chr(32)) 
    else remini Settings.ini Away.Config Hilights 
  } 
  elseif ($did == 46) { 
    dialog $iif($dialog(Away.Exceptions),-v,-m) Away.Exceptions Away.Exceptions 
  } 
} 
; ----- Process button clicks and keep selection of all columns the same in presets dialog 
on *:dialog:Custom.Aways:sclick:*: { 
  if ($did == 5)     did -c $dname 6,7 $did(5).sel 
  elseif ($did == 6) did -c $dname 5,7 $did(6).sel 
  elseif ($did == 7) did -c $dname 5,6 $did(7).sel 
  elseif ($did == 8) dialog $iif($dialog(Away.Preset),-v,-m) Away.Preset Preset.Settings 
  elseif ($did == 9) { 
    if (!$did(5).sel) var %x = $input(Error: You must select an entry to delete,wo,Invalid Selection) 
    elseif ($?!="Are you sure you want to delete this entry - $did(5).seltext ") { 
      did -d $dname 5 $did(5).sel  
      did -d $dname 6 $did(6).sel  
      did -d $dname 7 $did(7).sel  
    } 
  } 
  elseif ($did == 10) { 
    if (!$did(5).sel) { var %x = $input(Error: You must select an entry to edit,wo,Invalid Selection) | halt } 
    set %Away.EditPreset $did(5).sel 
    dialog $iif($dialog(Away.Preset),-v,-m) Away.Preset Preset.Settings 
  } 
  elseif ($did == 12) { 
    if ($input(Are you sure you want to clear all your presets?,qy,Validation Prompt)) { 
      var %x = 7 
      while (%x > 0) { 
        did -c $dname 5 %x 
        if ($did(5).seltext) did -d $dname 5,6,7 $did(5).sel 
        dec %x 
      } 
    } 
  } 
} 

; ----- Process Idle Away clicks/settings 
on *:dialog:Idle.Away.Settings:sclick:*: { 
  var %time = $calc($readini(AwaySettings.ini,Config,AutoAwayTime) / 60) 
  if ($did == 3) { 
    if ($did(3).seltext == Don't Change) did -rm $dname 4 
    else did -n $dname 4 
  } 
  elseif ($did == 7) dialog $iif($dialog(Idle.Away.help),-v,-m) Idle.Away.help Idle.Away.Help 
} 
; ----- Process Preset dialog clicks/settings 
on *:dialog:Away.Preset:sclick:*: { 
  if ($did == 5) { 
    if ($did(5).seltext == Don't Change) did -rm $dname 6 
    else did -n $dname 6 
  } 
  elseif ($did == 9) dialog $iif($dialog(Preset.Help),-v,-m) Preset.Help Preset.Help 
} 
; ----- Exception Clicks 
on *:dialog:Away.Exceptions:sclick:*: { 
  if ($did == 6) dialog $iif($dialog(Away.AddException),-v,-m) Away.AddException Away.AddException 
  elseif ($did == 7) { 
    if (!$did(3).sel) var %x = $input(You must select an entry to delete,wo,Invalid Selection) 
    elseif ($?!="Are you sure you want to delete this entry - $did(3).seltext ") { 
      remini AwaySettings.ini Exceptions $did(3).seltext 
      did -d $dname 3 $did(3).sel 
    } 
  } 
  elseif ($did == 8) { 
    if (!$did(3).sel) var %x = $input(You must select an entry to edit,wo,Invalid Selection) 
    else { 
      set %Away.Exception $did(3).seltext 
      set %Away.ExceptionNum $did(3).sel 
      dialog $iif($dialog(Away.AddException),-v,-m) Away.AddException Away.AddException 
    } 
  } 
  elseif ($did == 9) { 
    if ($input(Are you sure you want to clear all your network exceptions?,qy,Validation Prompt)) { 
      var %x = $did(3).lines 
      remini AwaySettings.ini Exceptions 
      while (%x > 0) { 
        did -c $dname 3 %x 
        if ($did(3).seltext) did -d $dname 3 $did(3).sel 
        dec %x 
      } 
    } 
  } 
} 
on *:dialog:Away.AddException:Sclick:*: { 
  if ($did == 6) { 
    did -e $dname 12,15 
    did -b $dname 9 
    did -r $dname 9 
  } 
  elseif ($did == 7) { 
    did -b $dname 12,15 
    did -e $dname 9 
    if ($did(12).state == 1) did -u $dname 12 
    if ($did(15).state == 1) did -u $dname 15 
  } 
} 
; ############################################## 
; # Dialog Close Events                        # 
; ############################################## 
; ----- Main dialog - save data 
on *:dialog:Away:close:*: { 
  ; tab 100 settings 
  if ($did(5)) { 
    if ($did(3).seltext == Prefix) writeini AwaySettings.ini Config NickPrefix $did(5) 
    elseif ($did(3).seltext == Suffix) writeini AwaySettings.ini Config NickSuffix $did(5) 
    elseif ($did(3).seltext == Set to) writeini AwaySettings.ini Config  NickSetTo $did(5) 
  }  
  else { 
    writeini AwaySettings.ini Config NickPrefix Away| 
    writeini AwaySettings.ini Config NickSuffix |Away 
  } 
  writeini AwaySettings.ini Config AutoAway $iif($did(7).state == 0,off,on) 
  writeini AwaySettings.ini Config AutoAwayTime $iif($did(8),$calc($did(8) * 60),900) 
  writeini AwaySettings.ini Config LeavingTime $iif($did(11).state == 0,off,on) 
  writeini AwaySettings.ini Config LeavingTimeFormat $iif($did(12),$did(12),HH:nn:ss) 
  writeini AwaySettings.ini Config TimeAway $iif($did(14).state == 0,off,on) 
  writeini AwaySettings.ini Config TimeAwayFormat $iif($did(15),$did(15),Shorts) 
  writeini AwaySettings.ini Config ARChannelMessage $iif($did(19).state == 0,off,on) 
  writeini AwaySettings.ini Config ARPrivateMessage $iif($did(20).state == 0,off,on) 
  if ($did(25)) writeini AwaySettings.ini Config DefaultMessage $did(25) 
  else remini Settings.ini Away.Config DefaultMessage 
  if ($readini(AwaySettings.ini,Config,AutoAway) == on) .timerAway.IdleCheck -o 0 30 Away.IdleCheck 
  elseif ($timer(Away.IdleCheck)) .timerAway.IdleCheck off 

  ;Tab 200 settings 
  writeini AwaySettings.ini Config MsgChans $iif($did(32).state == 0,off,on) 
  writeini AwaySettings.ini Config MsgQueries $iif($did(33).state == 0,off,on) 
  writeini AwaySettings.ini Config RespondHilights $iif($did(37).state == 0,off,on) 
  writeini AwaySettings.ini Config RespondPM $iif($did(38).state == 0,off,on) 
  writeini AwaySettings.ini Config RespondNotice $iif($did(39).state == 0,off,on) 
} 
; ----- Save presets 
on *:dialog:Custom.Aways:close:*: { 
  var %x = 1, %lines = $did(5).lines 
  while (%x <= %lines) { 
    did -c $dname 5,6,7 %x 
    writeini AwaySettings.ini presets %x $+($did(5).seltext,~,$did(6).seltext,~,$did(7).seltext) 
    inc %x 
  } 
  dec %x 
  while (%x < 7) { 
    inc %x 
    if ($readini(AwaySettings.ini,presets,%x)) remini AwaySettings.ini Presets %x 
  } 
} 
; ----- Save Idle away settings 
on *:dialog:Idle.Away.Settings:close:*: { 
  writeini AwaySettings.ini Config IdleSettings $+($did(3).seltext,~,$iif($did(4),$ifmatch,IDLE),~,$iif($did(6),$ifmatch,Auto away after % $+ time minutes idle)) 
} 
; ----- Save Preset settings 
on *:dialog:Away.Preset:close:*: { 
  var %pre = %away.EditPreset 
  if (!$did(3)) var %x = $input(Error: No trigger was specified,ow,Input Error) 
  elseif (!$did(6)) && ($did(5).seltext != Don't Change) var %x = $input(Error: You did not specify $iif($did(5).seltext,a nick $iif($did(5).seltext == set to,to change to,$ifmatch),any nick settings),ow,Input Error) 
  elseif ($remove($did(6),$chr(91),$chr(93),$chr(92),$chr(45),$chr(95),$chr(123),$chr(124),$chr(125)) !isalnum) && ($did(6)) { var %x = $input(Error: Invalid Characters detected in specified nick,wo,Input Error) | halt } 
  elseif (!$did(5).seltext) var %x = $input(Error: You have not specified how to change your nick - Select an option from the nick settings drop down,ow,Error) 
  elseif ($numtok($did(3),32) > 1) || ($numtok($did(6),32) > 1) var %x = $input(Error: Trigger and nick Settings can each only be one word long,wo,Input Error) 
  else { 
    did $iif(%pre,-o,-a) Custom.Aways 5 $iif(%pre,%pre) $did(3) 
    did $iif(%pre,-o,-a) Custom.Aways 6 $iif(%pre,%pre) $did(5).seltext $+ $iif($did(5).seltext != Don't Change,: $did(6)) 
    did $iif(%pre,-o,-a) Custom.Aways 7 $iif(%pre,%pre) $did(8) 
    unset %away.EditPreset 
  } 
} 
; ---- Save Exception settings 
on *:dialog:Away.AddException:close:*: { 
  if (!$did(3)) var %x = $input(No Network name was entered,wo,Input Error) 
  elseif ($numtok($did(3),32) > 1) var %x = $input(Network name may not contain spaces,wo,Input Error) 
  else { 
    var %scope = $iif($did(6).state == 1,1,2) 
    var %x = 1, %numchans = $numtok($did(9),32) 
    while (%x <= %numchans) { 
      var %token = $gettok($did(9),%x,32) 
      if (#?* iswm %token) var %chans = %chans %token 
      elseif (%token != $chr(35)) var %chans = %chans $+($chr(35),%token) 
      inc %x 
    } 
    var %x = 12 
    while (%x <= 15) { 
      var %options = %options $+ $did(%x).state 
      inc %x 
    }  
    did $iif(%Away.ExceptionNum,-o,-a) Away.Exceptions 3 $iif(%Away.ExceptionNum,$ifmatch) $did(3) 
    writeini AwaySettings.ini Exceptions $did(3) $+(%scope,~,%options,~,%chans) 
    unset %Away.Exception* 
  } 
} 
; ############################################## 
; # /Away And /back aliases                    # 
; ############################################## 
alias away { 
  ; ----- Unset Idle timer, Get highlights, enable #away group for logging etc 
  if ($timer(Away.IdleCheck)) .timerAway.IdleCheck off 
  set %Away.Hilights $readini(awaySettings.ini,n,Config,Hilights) 
  .enable #away 

  ; ---- Retrieve away settings from config/User entry 
  var %time = $calc($readini(AwaySettings.ini,Config,AutoAwayTime) / 60) 
  if ($1) set %away.Reason $1- 
  elseif ($readini(AwaySettings.ini,Config,DefaultMessage)) set %away.Reason $v1 
  set %Away.LeftAt $ctime 
  if ($readini(AwaySettings.ini,Config,LeavingTime) == on) { 
    var %LeavingTimeFormat = $readini(AwaySettings.ini,Config,LeavingTimeFormat) 
    set %away.LeaveTime $time(%LeavingTimeFormat) 
  } 
  ; ---- Check for idleaway 
  If ($1- = Auto.Idle.Away) { 
    var %IdleInfo = $readini(AwaySettings.ini,Config,IdleSettings) 
    var %edittype = $gettok(%IdleInfo,1,126) 
    if (%edittype == Set to) var %nickset = $gettok(%IdleInfo,2,126) 
    else var %nickadd = $gettok(%IdleInfo,2,126) 
    set %Away.Reason $($gettok(%IdleInfo,3-,126),2) 
  } 
  else { 
    var %edittype = $readini(AwaySettings.ini,Config,NickEditType) 
    if (%edittype == Set To) var %nickset = $readini(AwaySettings.ini,Config,NickSetTo) 
    else var %nickadd = $readini(AwaySettings.ini,Config,Nick $+ %edittype) 
  } 
  ; ----- Check for presets 
  var %x 1 
  while (%x <= 7) { 
    if ($readini(AwaySettings.ini,Presets,%x)) { 
      var %preset = $v1 
      if ($1- == $gettok(%preset,1,126)) { 
        var %edittype = $gettok($gettok(%preset,2,126),1,58) 
        var %nickadd = $remove($gettok($gettok(%preset,2,126),2,58),$chr(32)) 
        set %Away.Reason $gettok(%preset,3-,126) 
        set %Away.Preset %x 
        var %x = 7 
      } 
    } 
    inc %x 
  } 
  ; ----- Cycle Connections to change nick/send msg 
  var %x = 1, %connections = $scon(0) 
  while (%x <= %connections) { 
    scon %x 
    if ($status == connected) { 
      unset %Except.* 
      if ($readini(AwaySettings.ini,Exceptions,$network)) { 
        var %Except.info = $v1 
        var %Except.Scope = $gettok(%Except.info,1,126) 
        var %Except.Options = $gettok(%Except.info,2,126) 
        if (%Except.Scope == 2) && ($mid(%Except.Options,2,1) == 1) var %Except.NoMsgChans = $gettok(%Except.Info,3-,126) 
        if (%Except.Scope == 1) && ($left(%Except.Options,1) == 1) var %Except.NoNickChange = 1 
        if (%Except.Scope == 1) && ($mid(%Except.Options,2,1) == 1) var %Except.NoAwayMsg = 1 
      } 
      set $+(%,Away.Oldnick.,$network) $me 
      if ($readini(AwaySettings.ini,Config,NickEditType) != Don't Change) && (!%Except.NoNickChange) { 
        if (%edittype == Set To) && (%NickSet != $me) var %newnick = %NickSet 
        if (%edittype == Prefix) && ($+(%nickadd,*) !iswm $me) var %newnick = $+(%nickadd,$me) 
        if (%edittype == Suffix) && ($+(*,%nickadd) !iswm $me) var %newnick = $+($me,%nickadd) 
        set $+(%,Away.Newnick.,$network) $iif(%newnick,$ifmatch,$me) 
        if (%newnick) nick %newnick 
      } 
      if ($chan(0)) && ($readini(AwaySettings.ini,Config,MsgChans) == on) && (!%Except.NoAwayMsg) { 
        amsg 7[14Away7] $iif(%Away.Reason,14Reason:07 %Away.Reason) $iif(%Away.leavetime,14Left at:07 %Away.Leavetime (14+1 GMT7)) 
      } 
      if ($readini(AwaySettings.ini,Config,MsgQueries) == on) && (!%Except.NoAwayMsg)  { 
        qmsg 7[14Away7] $iif(%Away.Reason,14Reason:07 %Away.Reason) $iif(%Away.leavetime,14Left at:07 %Away.Leavetime (14+1 GMT7)) 
      } 
      !away 7[14Away7] $iif(%Away.Reason,14Reason:07 %Away.Reason) $iif(%Away.leavetime,14Left at:07 %Away.Leavetime (14+1 GMT7)) 
    } 
    inc %x 
  } 
} 

alias back { 
  var %x = 1, %connections = $scon(0) 
  while (%x <= %connections) { 
    scon %x 
    if ($status == connected) { 
      unset %Except.* 
      if ($readini(AwaySettings.ini,Exceptions,$network)) { 
        var %Except.info = $v1 
        var %Except.Scope = $gettok(%Except.info,1,126) 
        var %Except.Options = $gettok(%Except.info,2,126) 
        if (%Except.Scope == 2) && ($mid(%Except.Options,2,1) == 1) var %Except.NoMsgChans = $gettok(%Except.Info,3-,126) 
        if (%Except.Scope == 1) && ($left(%Except.Options,1) == 1) var %Except.NoNickChange = 1 
        if (%Except.Scope == 1) && ($mid(%Except.Options,2,1) == 1) var %Except.NoAwayMsg = 1 
      } 

      if (!%Except.NoNickChange) && ($($+(%,Away.Oldnick.,$network),2)) nick $ifmatch 

      ; ----- Cycle Connections to change nick/send msg 
      if ($chan(0)) && ($readini(AwaySettings.ini,Config,MsgChans) == on) && (!%Except.NoAwayMsg) { 
        amsg 7[14Back7] $iif(%away.Reason,14From:07 %Away.Reason) $iif(%Away.Leavetime,14Left at:07 %Away.Leavetime (14+1 GMT7)) $iif($Away.GoneFor,14Gone for:07 $Away.GoneFor) 
      } 
      if ($readini(AwaySettings.ini,Config,MsgQueries) == on) && (!%Except.NoAwayMsg) { 
        qmsg 7[14Back7] $iif(%away.Reason,14From:07 %Away.Reason) $iif(%Away.Leavetime,14Left at:07 %Away.Leavetime (14+1 GMT7)) $iif($Away.GoneFor,14Gone for:07 $Away.GoneFor) 
      } 
      !away 
    } 
    inc %x 
  } 
  .disable #away 
  unset %away.* 
  if ($hget(Away.PM.Responses)) || ($hget(Away.Highlight.Responses)) hfree -w Away.*.Responses 
  if ($readini(AwaySettings.ini,Config,AutoAway) == on) .timerAway.IdleCheck -o 0 30 Away.IdleCheck 
} 
; ############################################## 
; # Other Aliases                              # 
; ############################################## 
alias -l Away.Gonefor { 
  if ($readini(AwaySettings.ini,Config,TimeAway) == on) { 
    var %TimeAwayFormat = $readini(AwaySettings.ini,Config,TimeAwayFormat) 
    if (%Away.LeftAt) { 
      var %duration = $duration($calc($ctime - %Away.LeftAt),%TimeAwayFormat) 
      if (%TimeAwayFormat == Short) return $Short.Duration(%duration) 
      elseif (%TimeAwayFormat == medium) return %duration 
      elseif (%TimeAwayFormat == long) return $Long.Duration(%duration) 
    } 
  } 
  else return $false 
} 
alias -l Short.Duration return $replacex($1-,secs,s,sec,s,mins,m,min,m,hrs,h,hr,h,days,d,day,d,wks,w,wk,w) 
alias -l Long.Duration return $replacex($1-,sec,second,secs,seconds,min,minute,mins,minutes,hr,hour,hrs,hours,wk,week,wks,weeks) 

alias -l Get.Highlights { 
  var %x = 1, %Groups = $ini(mirc.ini,highlight,0) 
  while (%x <= %groups) { 
    var %Away.Highlights = $addtok(%Away.highlights,$highlight(%x),44) 
    inc %x 
  } 
  return %Away.Highlights 
} 
alias -l Check.For.highlights { 
  if (!%Away.Highlights) set %Away.Highlights $readini(AwaySettings.ini,n,Config,Hilights) 
  var %x = 1, %highlights = $numtok(%Away.highlights,44) 
  while (%x <= %highlights) { 
    var %chighlight = $($gettok(%Away.Highlights,%x,44),2) 
    if ($istok($1-,%chighlight,32)) return %chighlight 
    inc %x 
  } 
  return $false 
} 
alias -l Away.Logwin { 
  if (!$window(@Away.Logs)) window -eknz @Away.Logs 
  echo -ti2 @Away.Logs $1- 
} 
alias -l Highlight.Response { 
  if (!$hget(Away.highlight.Responses,$+($1,.,$2))) { 
    scid $1 .notice $2 7[14Away7] $iif(%Away.Reason,14Reason:7 %Away.Reason) $iif(%Away.LeaveTime,14Left at:07 %Away.LeaveTime (14+1 GMT7)) $iif($away.gonefor,14Gone for:07 $away.gonefor) 
    hadd -m Away.Highlight.Responses $+($1,.,$2) 1 
  } 
} 
alias -l Private.Message.Response { 
  if (!$hget(Away.PM.Responses,$+($1,.,$2))) { 
    scid $1 .msg $2 7[14Away7] $iif(%Away.Reason,14Reason:7 %Away.Reason) $iif(%Away.LeaveTime,14Left at:07 %Away.LeaveTime (14+1 GMT7)) $iif($away.gonefor,14Gone for:07 $away.gonefor) 
    hadd -m Away.PM.Responses $+($1,.,$2) 1 
  } 
} 
alias -l Away.IdleCheck { 
  var %x = 1, %networks = $scon(0) 
  var  %AutoAwayTime = $readini(AwaySettings.ini,Config,AutoAwayTime) 
  while (%x <= %networks) { 
    scon %x { 
      if ($status == Connected) && ($idle < %AutoAwayTime) var %Idle = off 
    }    
    inc %x 
  } 
  if (%idle != off) away Auto away 
} 
alias Away.Config dialog  $iif($dialog(Away),-v,-m) Away Away 
; ############################################## 
; # Logging and hilight resposes               # 
; ############################################## 
#away off
;Hilight responses 
on *:text:*:#: { 
  if (!$Check.For.highlights($1-)) && (!$istok($1-,$me,32)) && (!$istok($1-,$($+(%,Away.Oldnick.,$network),2),32)) return 
  if ($nick == [DM]) halt 
  else { 
    Away.Logwin 4[10CHANNEL MESSAGE4] $+(4[10,$iif($scon(0) > 1,$+($network,12/10)),$chan,12/10,$nick,4]) $1- 
    if ($readini(AwaySettings.ini,Exceptions,$network)) { 
      var -s %Except.info = $v1 
      var -s %Except.Scope = $gettok(%Except.info,1,126), %Except.Options = $gettok(%Except.info,2,126) 
      if (%Except.Scope == 2) && ($mid(%Except.Options,3,1) == 1) var %Except.NoHilight = $gettok(%Except.Info,3-,126) 
      elseif (%Except.Scope == 1) && ($mid(%Except.Options,3,1) == 1) return 
    } 
    if (!$istok(%Except.NoHilight,$chan,32)) && ($readini(AwaySettings.ini,Config,RespondHilights) == on) Highlight.Response $cid $nick 
  } 
} 
on *:action:*:#: { 
  if (!$check.for.highlights($1-)) && (!$istok($1-,$me,32)) && (!$istok($1-,$($+(%,Away.Oldnick.,$network),2),32)) return 
  else { 
    Away.Logwin 4[10CHANNEL  10ACTION4] $+(4[10,$iif($scon(0) > 1,$+($network,12/10)),$chan,12/10,$nick,4]) * $nick $1- 
    if ($readini(AwaySettings.ini,Exceptions,$network)) { 
      var %Except.info = $v1 
      var %Except.Scope = $gettok(%Except.info,1,126), %Except.Options = $gettok(%Except.info,2,126) 
      if (%Except.Scope == 2) && ($mid(%Except.Options,3,1) == 1) var %Except.NoHilight = $gettok(%Except.Info,3-,126) 
      elseif (%Except.Scope == 1) && ($mid(%Except.Options,3,1) == 1) return 
    }    
    if (!$istok(%Except.NoHilight,$chan,32)) && ($readini(AwaySettings.ini,Config,RespondHilights) == on) Highlight.Response $cid $nick 
  } 
} 
; Private notice response 
on *:notice:*:?: { 
  if (*serv !iswm $nick) { 
    Away.Logwin 4[10PRIVATE NOTICE4] $+(4[10,$iif($scon(0) > 1,$+($network,12/10)),Private,12/10,$nick,4]) $1- 
    if ($readini(AwaySettings.ini,Exceptions,$network)) { 
      var %Except.info = $v1 
      var %Except.Scope = $gettok(%Except.info,1,126), %Except.Options = $gettok(%Except.info,2,126) 
      if (%Except.Scope == 1) && ($right(%Except.Options,1) == 1) return 
    }    
    if ($readini(AwaySettings.ini,Config,RespondNotice) == on) Private.Message.Response $cid $nick 
  } 
} 
;PM responses 
on *:text:*:?: { 
  if ($readini(AwaySettings.ini,Config,RespondPM) == on) && (*serv !iswm $nick) { 
    if ($readini(AwaySettings.ini,Exceptions,$network)) { 
      var %Except.info = $v1 
      var %Except.Scope = $gettok(%Except.info,1,126), %Except.Options = $gettok(%Except.info,2,126) 
      if (%Except.Scope == 2) && ($mid(%Except.Options,3,1) == 1) var %Except.NoHilight = $gettok(%Except.Info,3-,126) 
      elseif (%Except.Scope == 1) && ($right(%Except.Options,1) == 1) return 
    }    
    Private.Message.Response $cid $nick 
  } 
} 
;Return from away on input if set 
on *:input:#: { 
  if ($left($1,1) != $readini(mirc.ini,text,commandchar)) { 
    if ($readini(AwaySettings.ini,Config,ARChannelMessage) == on) back 
  } 
} 
on *:input:?: { 
  if ($left($1,1) != $readini(mirc.ini,text,commandchar)) { 
    if ($readini(AwaySettings.ini,Config,ARPrivateMessage) == on) back 
  } 
} 
#away end 

alias reset.away { 
  set %away.LeaveTime $time 
  set %Away.LeftAt $ctime 
  echo -ta Reset away