rendered paste body; #################################################################
; ## Away system script ##
; ## Designed and written by Urza ##
; ## Email: Urza23@hotmail.com ##
; ## Written and tested in mIRC 6.17 ##
; ## Also tested in mIRC 6.16 ##
; ## May not work correctly in earlier versions ##
; ## ----------------------------------------------------------- ##
; ## Usage: ##
; ## /Away.Config - Opens the options dialog ##
; ## /Away [Reason] - Set yourself away ##
; ## /Away [Preset] - Set yourself away using a preset trigger ##
; ## /Back - Return from away ##
; ## Options are also avaliable via menus ##
; #################################################################
; ##############################################
; # 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
}
; ##############################################
; # Check for away on connect #
; ##############################################
on *:connect: {
if ($group(#away) == on) {
if ($($+(%,Away.Newnick.,$network),2) != $me) nick $ifmatch
ame is currently away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavtime) $iif($Away.Gonefor,- Gone for $Away.Gonefor)
!away Away: $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavtime) $iif($Away.Gonefor,- Gone for $Away.Gonefor)
}
}
; ##############################################
; # 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 "Dont Change: Means that youre 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) {
var %Chan = 1, %TotalChans = $chan(0)
while (%chan <= %TotalChans) {
if (!$istok(%Except.NoMsgChans,$chan(%chan),32)) describe $chan(%chan) is now away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavetime)
inc %chan
}
}
if ($readini(AwaySettings.ini,Config,MsgQueries) == on) && (!%Except.NoAwayMsg) {
qme is now away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavetime)
}
!away Away: $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavetime)
}
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) {
var %Chan = 1, %TotalChans = $chan(0)
while (%chan <= %TotalChans) {
if (!$istok(%Except.NoMsgChans,$chan(%chan),32)) describe $chan(%chan) is back $iif(%away.Reason,- from %Away.Reason) $iif(%Away.Leavetime,- Left at %Away.Leavetime) $iif($Away.GoneFor,- Gone for $Away.GoneFor)
inc %chan
}
}
if ($readini(AwaySettings.ini,Config,MsgQueries) == on) && (!%Except.NoAwayMsg) {
qme is now away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.leavetime,- Left at %Away.Leavetime)
}
!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 I am currently away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.LeaveTime,- Left at %Away.LeaveTime) $iif($away.gonefor,- Gone for $away.gonefor) - One time response to highlight
hadd -m Away.Highlight.Responses $+($1,.,$2) 1
}
}
alias -l Private.Message.Response {
if (!$hget(Away.PM.Responses,$+($1,.,$2))) {
scid $1 .notice $2 I am currently away $iif(%Away.Reason,- %Away.Reason) $iif(%Away.LeaveTime,- Left at %Away.LeaveTime) $iif($away.gonefor,- Gone for $away.gonefor) - One time response to Private Message
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.Idle.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
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
; #############################################################################
; ## Auto Startup script ##
; ## Written by Urza ##
; ## urza23@hotmail.com ##
; #############################################################################
; #############################################################################
; # Options alias/menu #
; #############################################################################
alias Startup_Manager {
dialog $iif($dialog(Startup),-v,-m) Startup Startup
}
menu * {
Startup Manager:/Startup_Manager
}
; #############################################################################
; # Options dialog #
; #############################################################################
dialog -l Startup {
title "Auto Startup Manager"
size -1 -1 275 240
option dbu
box "Networks", 1, 4 2 130 100
list 2, 10 10 65 85, size
button "Add", 3, 78 10 40 15
button "Delete", 4, 78 30 40 15
button "Move up", 5, 78 50 40 15
button "Move down", 6, 78 70 40 15
box "Channels", 7, 140 2 130 100
list 8, 146 10 65 85, size
button "Add", 9, 214 11 40 15
button "Delete", 10, 214 30 40 15
button "Move up", 11, 214 50 40 15
button "Move down", 12, 214 70 40 15
box "Network Information and Options", 13, 4 105 130 125
text "Address:", 16, 8 112 42 8
text "Port:", 17, 101 112 14 8
edit "", 18, 8 120 86 10
text ":", 19, 94 120 4 8, center
edit "", 20, 97 120 19 10, limit 4
text "Description:", 21, 8 132 30 8
edit "", 22, 8 140 121 10, autohs
text "Nick on this network:", 23, 8 155 53 8
edit "", 24, 59 153 50 10
check "Connect on startup", 25, 8 165 58 10
button "Perform commands", 14, 70 165 60 10
check "Enable Auto ID/Auth", 26, 8 176 63 10
check "Enable auto ghost", 27, 72 176 54 10
text "Auth Type:", 28, 6 190 30 8, right
combo 29, 38 190 50 10, drop
text "User name:", 30, 6 203 30 8, right
edit "", 31, 38 202 50 10, autohs
text Pasword:, 32, 6 214 30 8, right
edit "", 33, 38 213 50 10, password autohs
box "Channel Information and Options", 34, 140 105 130 117
text "Description:", 35, 144 112 34 8
edit "", 36, 144 120 121 10, autohs
check "Message when you join (identifiers allowed)", 37, 144 133 115 10
edit "", 38, 144 143 121 10, autohs
check "Message when others join (identifiers allowed)", 43, 144 156 120 10
edit "", 44, 144 166 121 10, autohs
check "Join on connect", 45, 144 180 50 10
text "Key:", 46, 195 181 10 10
edit "", 47, 210 180 50 10, password autohs
check "Identify to Chanserv", 39, 144 190 63 10
text Pasword:, 40, 145 200 30 8, right
edit "", 41, 176 200 50 10, password autohs
check "Set +q (founder access)", 42, 152 210 71 10
button "Close", 48, 229 224 40 15, ok
}
; #############################################################################
; # Perform dialog #
; #############################################################################
dialog -l Perform {
title "Perfoms"
size -1 -1 135 139
option dbu
box "", 2, 3 3 128 115
box "Performs", 1, 3 3 128 25
text "Enter any commands to be performed upon connecting. One command per line.", 3, 9 11 119 16, center
text "Network:", 4, 8 32 23 8
combo 5, 33 31 60 10, drop
edit "", 6, 7 45 120 70, multi hsbar vsbar return
button "Close", 7, 94 121 37 15, ok
}
; #############################################################################
; # Dialog Initiation events #
; #############################################################################
on *:dialog:Startup:init:*: {
var %x = 1, %networks = $readini(Startup.ini,Config,networks), %total = $numtok(%networks,44)
while (%x <= %total) {
var %network = $gettok(%networks,%x,44)
did -a $dname 2 %network
inc %x
}
did -a $dname 29 Nickserv
did -a $dname 29 Authserv
did -a $dname 29 Quakenet (Q)
did -a $dname 29 Undernet (X)
did -a $dname 29 NetGamers (P)
did -b $dname 9,10,11,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47
}
on *:dialog:Perform:init:*: {
var %Network = %Perform.Network | unset %Perform.Network
var %networks = $readini(Startup.ini,config,networks)
var %x = 1, %total = $numtok(%networks,44)
while (%x <= %total) {
var %net = $gettok(%networks,%x,44)
if (%net == %Network) did -ac $dname 5 %net
else did -a $dname 5 %net
inc %x
}
LoadPerforms %network
}
; #############################################################################
; # Dialog Sclick events #
; #############################################################################
on *:dialog:Startup:sclick:*: {
var %network = $did(2).seltext, %networks = $readini(Startup.ini,config,networks)
var %channel = $did(8).seltext, %chans = $readini(Startup.ini,$replace(%network,$chr(32),-),channels)
if ($did == 2) && ($did(2).sel) {
did -e $dname 9,10,11,12,14,16,17,18,19,20,21,22,23,24,25,26,27
LoadOptions network $did(2).seltext
ClearChanOptions
}
elseif ($did == 3) {
var %network = $$?="Enter the name of the network you wish to add $crlf $crlf $+ Note: This MUST be proper name of the network. If you are unsure of the proper name type //echo -a $ $+ network and copy the result."
if ($istok(%networks,%network,44)) var %x = $input(%network has already been added,oh,Error)
else {
did -a $dname 2 %network
writeini -n Startup.ini $replace(%network,$chr(32),-) name %network
writeini -n Startup.ini $replace(%network,$chr(32),-) nick $me
writeini -n Startup.ini $replace(%network,$chr(32),-) connect 1
writeini -n Startup.ini $replace(%network,$chr(32),-) Authtype 1
var %x = 1, %total = $scon(0)
while (%x <= %total) {
if ($scon(%x).network == %network) {
writeini -n Startup.ini $replace(%network,$chr(32),-) nick $scon(%x).me
writeini -n Startup.ini $replace(%network,$chr(32),-) address $scon(%x).server
writeini -n Startup.ini $replace(%network,$chr(32),-) port $scon(%x).port
}
inc %x
}
var %x = $input(%network has been successfully added. $crlf $+ Edit the network information and options below. $crlf $+ Edit channel options for this server to the right,oi,Success)
}
ArrangeNetworks
}
elseif ($did == 4) {
if ($did(2).sel) {
if ($input(Would you also like to delete the settings saved for %network $+ ?,yq,Delete settings?)) {
remini Startup.ini $replace(%network,$chr(32),-)
}
did -d $dname 2 $did(2).sel
did -b $dname 9,10,11,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
did -r $dname 8,18,20,22,24,31,33
did -u $dname 25,26,27
did -c $dname 29 0
}
ArrangeNetworks
}
elseif ($did isnum 5-6) {
var %pos = $did(2).sel, %newpos = $calc($did(2).sel $iif($did == 5,-,+) 1)
if (%newpos == 0) || (%newpos > $did(2).lines) return
else {
did -d $dname 2 %pos
did -i $dname 2 %newpos %network
did -c $dname 2 %newpos
}
ArrangeNetworks
}
elseif ($did == 14) {
set %Perform.network %network
dialog $iif($dialog(Perform),-v,-m) Perform Perform
}
elseif ($did == 25) {
writeini -n Startup.ini %network Connect $did(25).state
}
elseif ($did == 26) {
writeini -n Startup.ini %network Auth $did(26).state
if ($did(26).state == 1) {
did -e $dname 28,29,32,33
if ($did(29).sel > 1) did -e $dname 30,31
else did -b $dname 30,31
}
elseif ($did(27).state == 0) did -b $dname 28,29,30,31,32,33
}
elseif ($did == 27) {
writeini -n Startup.ini %network Ghost $did(27).state
if ($did(27).state == 1) {
did -e $dname 28,29,32,33
if ($did(29).sel > 1) did -e $dname 30,31
else did -b $dname 30,31
}
elseif ($did(26).state == 0) did -b $dname 28,29,30,31,32,33
}
elseif ($did == 29) {
var %Authtype = $did(29).sel
if (%Authtype == 1) { did -b $dname 30,31 | LoadOptions Channel %network %channel }
else { did -e $dname 30,31 | did -b $dname 39,40,41,42 }
if (%Authtype isnum 3-4) did -b $dname 27
else did -e $dname 27
writeini -n Startup.ini %network AuthType %Authtype
}
elseif ($did == 8) && ($did(8).sel) {
did -e $dname 35,36,37,38,43,44,45,46,47
LoadOptions Channel %network $did(8).seltext
}
elseif ($did == 9) {
var %channel = $$?="Enter the name of the channel you wish to add"
var %chans = $readini(Startup.ini,%network,channels)
if ($istok(%chans,%channel,44)) var %x = $input(%channel has already been added,oh,Error)
elseif ($istok(%chans,$+($chr(35),%channel),44)) var %x = $input($+($chr(35),%channel) has already been added,oh,Error)
elseif ($numtok(%channel,32) > 1) var %x = $input(Channel names can not contain spaces,oh,Error)
else {
if ($left(%channel,1) != $chr(35)) var %channel = $+($chr(35),%channel)
did -a $dname 8 %channel
writeini -n Startup.ini $replace(%network,$chr(32),-) %channel NULL¦0¦NULL¦0¦NULL¦1¦0¦NULL¦0
writeini -n Startup.ini $replace(%network,$chr(32),-) channels $addtok(%chans,%channel,44)
}
}
elseif ($did == 10) {
if ($did(8).sel) {
if ($input(Would you also like to delete the settings saved for %channel $+ ?,yq,Delete settings?)) {
remini Startup.ini $replace(%network,$chr(32),-) %channel
}
if ($did(8).lines == 1) remini Startup.ini $replace(%network,$chr(32),-) channels
else writeini -n Startup.ini $replace(%network,$chr(32),-) channels $remtok(%chans,%channel,1,44)
ClearChanOptions
did -d $dname 8 $did(8).sel
}
}
elseif ($did isnum 11-12) {
var %pos = $did(8).sel, %newpos = $calc($did(8).sel $iif($did == 11,-,+) 1)
if (%newpos == 0) || (%newpos > $did(8).lines) return
else {
did -d $dname 8 %pos
did -i $dname 8 %newpos %channel
did -c $dname 8 %newpos
}
ArrangeChans %network
}
elseif ($did == 39) {
if ($did(39).state == 1) did -e $dname 40,41,42
else did -b $dname 40,41,42
SaveChanOptions %network %channel
}
elseif ($did == 37) {
SaveChanOptions %network %channel
if ($did(37).state == 1) did -e $dname 38
else did -b $dname 38
}
elseif ($did == 43) {
SaveChanOptions %network %channel
if ($did(43).state == 1) did -e $dname 44
else did -b $dname 44
}
elseif ($did == 42) || ($did == 45) {
SaveChanOptions %network %channel
}
}
on *:dialog:Perform:sclick:5: {
LoadPerforms $did(5).seltext
}
; #############################################################################
; # Dialog Edit events #
; #############################################################################
on *:dialog:Startup:edit:*: {
var %network = $did(2).seltext, %pos = $did(2).sel
var %channel = $did(8).seltext
if ($did($did)) {
if ($did == 18) writeini -n Startup.ini %network Address $did(18)
elseif ($did == 20) writeini -n Startup.ini %network Port $did(20)
elseif ($did == 22) writeini -n Startup.ini %network Description $did(22)
elseif ($did == 24) writeini -n Startup.ini %network Nick $did(24)
elseif ($did == 31) writeini -n Startup.ini %network User $did(31)
elseif ($did == 33) writeini -n Startup.ini %network Pass $ifencode($did(33),m)
}
else {
if ($did == 18) remini Startup.ini %network Address
elseif ($did == 20) remini Startup.ini %network Port
elseif ($did == 22) remini Startup.ini %network Description
elseif ($did == 24) remini Startup.ini %network Nick
elseif ($did == 31) remini Startup.ini %network User
elseif ($did == 33) remini Startup.ini %network Pass
}
if ($did == 36) || ($did == 38) || ($did == 41) || ($did == 44) || ($did == 47) {
if ($chr(166) isin $did($did)) {
did -ra $dname $did $remove($did($did),$chr(166))
var %x = $input(Due to the character $+(',$chr(166),') being used as a data seperator it may not be used here,oh,Error)
}
SaveChanOptions %network %channel
}
}
on *:dialog:Perform:edit:6: {
var %network = $did(5).seltext
var %x = 1, %total = $did(6).lines
remini StartupPerform.ini %network
while (%x <= %total) {
if ($did(6,%x)) writeini -n StartupPerform.ini %network %x $did(6,%x)
inc %x
}
}
; #############################################################################
; # Aliases #
; #############################################################################
alias -l SaveChanOptions {
var %dname = Startup, %network = $1, %channel = $2
var %desc = $iif($did(%dname,36),$ifmatch,NULL)
var %sendmsgme = $did(%dname,37).state
var %joinmsgme = $iif($did(%dname,38),$ifmatch,NULL)
var %sendmsgother = $did(%dname,43).state
var %joinmsgother = $iif($did(%dname,44),$ifmatch,NULL)
var %join = $did(%dname,45).state
var %ID = $did(%dname,39).state
var %Pass = $iif($did(%dname,41),$ifencode($ifmatch,m),NULL)
var %Setq = $did(%dname,42).state
var %key = $iif($did(%dname,47),$ifencode($ifmatch,m),NULL)
var %s = $chr(166)
var %data = $+(%desc,%s,%sendmsgme,%s,%joinmsgme,%s,%sendmsgother,%s,%joinmsgother,%s,%join,%s,%ID,%s,%pass,%s,%Setq,%s,%key)
writeini Startup.ini %network %channel %data
}
alias -l ClearChanOptions {
var %dname = Startup
did -b %dname 35,36,37,38,39,40,41,42,43,44,45,46,47
did -r %dname 36,38,41,44,47
did -u %dname 37,39,42,43,45
}
alias -l LoadOptions {
var %dname = Startup
if ($1 == network) {
var %network = $2
did -r %dname 8
if ($readini(Startup.ini,%network,channels)) {
var %chans = $v1
var %x = 1, %total = $numtok(%chans,44)
while (%x <= %total) {
var %chan = $gettok(%chans,%x,44)
did -a %dname 8 %chan
inc %x
}
}
did -ra %dname 18 $readini(Startup.ini,%network,Address)
did -ra %dname 20 $readini(Startup.ini,%network,Port)
did -ra %dname 22 $readini(Startup.ini,%network,Description)
did -ra %dname 24 $readini(Startup.ini,%network,Nick)
if ($readini(Startup.ini,%network,Connect) == 1) did -c %dname 25 | else did -u %dname 25
if ($readini(Startup.ini,%network,Auth) == 1) did -c %dname 26 | else did -u %dname 26
if ($readini(Startup.ini,%network,Ghost) == 1) did -c %dname 27 | else did -u %dname 27
did -c %dname 29 $readini(Startup.ini,%network,AuthType)
did -ra %dname 31 $readini(Startup.ini,%network,User)
did -ra %dname 33 $ifdecode($readini(Startup.ini,%network,Pass),m)
if ($readini(Startup.ini,%network,Auth) == 1) || ($readini(Startup.ini,%network,Ghost) == 1) {
did -e $dname 28,29,30,31,32,33
if ($readini(Startup.ini,%network,Authtype == 1)) did -b $dname 31
else did -e $dname 31
}
else did -b $dname 28,29,30,31,32,33
}
else {
var %network = $2, %channel = $3
if (!%network) || (!%channel) return
var %data = $readini(Startup.ini,n,%network,%channel)
tokenize 166 %data
if ($1 != NULL) did -ra %dname 36 $1
if ($2 == 1) { did -c %dname 37 | did -e %dname 38 }
else { did -u %dname 37 | did -b %dname 38 }
if ($3 != NULL) did -ra %dname 38 $3
if ($4 == 1) { did -c %dname 43 | did -e %dname 44 }
else { did -u %dname 43 | did -b %dname 44 }
if ($5 != NULL) did -ra %dname 44 $5
if ($6 == 1) did -c %dname 45
else did -u %dname 45
if ($7 == 1) { did -c %dname 39 | did -e %dname 40,41,42 }
else { did -u %dname 39 | did -b %dname 40,41,42 }
if ($8 != NULL) did -ra %dname 41 $ifdecode($8,m)
if ($9 == 1) did -c %dname 42 | else did -u %dname 42
if ($10 != NULL) did -ra %dname 47 $ifdecode($10,m)
if ($did(29).sel != 1) did -b $dname 39,40,41,42
else did -e $dname 39
}
}
alias -l LoadPerforms {
var %dname = Perform, %network = $1
did -r %dname 6
var %x = 1, %total = $ini(StartupPerform.ini,%network,0)
while (%x <= %total) {
did -i %dname 6 %x $readini(StartupPerform.ini,-n,%network,%x)
inc %x
}
}
alias -l ArrangeNetworks {
var %dname = Startup, %x = 1, %total = $did(%dname,2).lines
while (%x <= %total) {
var %networks = $addtok(%networks,$did(2,%x),44)
inc %x
}
if (%networks) writeini -n Startup.ini Config Networks %networks
}
alias -l ArrangeChans {
var %dname = Startup, %network = $1, %x = 1, %total = $did(%dname,8).lines
while (%x <= %total) {
var %chans = $addtok(%chans,$did(8,%x),44)
inc %x
}
if (%chans) writeini -n Startup.ini %network channels %chans
}
; #############################################################################
; # Start event #
; #############################################################################
on *:start: {
var %networks = $readini(Startup.ini,config,networks)
var %x = 1, %total = $numtok(%networks,44), %connects = 1
while (%x <= %total) {
var %network = $gettok(%networks,%x,44), %server = $readini(Startup.ini,%network,address)
var %port = $iif($readini(Startup.ini,%network,port),$ifmatch,6667)
if ($readini(Startup.ini,%network,connect) == 1) {
if (%connects == 1) server %server %port
else server -m %server %port
inc %connects
}
inc %x
}
}
; #############################################################################
; # Connect event #
; #############################################################################
on *:connect: {
if ($ini(Startup.ini,$network)) {
nick $readini(Startup.ini,$network,nick)
if ($readini(Startup.ini,$network,auth) == 1) {
var %authtype = $readini(Startup.ini,$network,AuthType)
var %user = $readini(Startup.ini,$network,User)
var %pass = $ifdecode($readini(Startup.ini,$network,pass),m)
if (%authtype == 1) .msg nickserv identify %pass
elseif (%authtype == 2) .msg AuthServ auth %user %pass
elseif (%authtype == 3) .msg Q@CServe.quakenet.org auth %user %pass
elseif (%authtype == 4) .msg x@channels.undernet.org login %user %pass
elseif (%authtype == 5) .msg P@cservice.netgamers.org login %user %pass
}
var %x = 1
while ($readini(StartupPerform.ini,$network,%x)) {
$v1
inc %x
}
var %chans = $readini(Startup.ini,$network,channels)
var %x = 1, %total = $numtok(%chans,44)
while (%x <= %total) {
var %chan = $gettok(%chans,%x,44), %chandata = $readini(Startup.ini,n,$network,%chan)
var %key = $iif($gettok(%chandata,10,166) != $null,$ifdecode($v1,m))
if ($gettok(%chandata,6,166) == 1) join %chan %key
inc %x
}
}
}
; #############################################################################
; # Join event #
; #############################################################################
on *:join:#: {
if ($readini(Startup.ini,n,$network,$chan)) {
tokenize 166 $v1
if ($nick == $me) {
if ($2 == 1) && ($3 != NULL) msg $chan $($3,2)
if ($7 == 1) {
if ($8 != NULL) .msg chanserv identify $chan $ifdecode($8,m)
if ($9 == 1) .msg chanserv owner $chan
}
}
else {
if ($4 == 1) && ($5 != NULL) msg $chan $($5,2)
}
}
}
; #############################################################################
; # Auto ID on nickserv notice. Auth to authserv if @... is required #
; #############################################################################
on *:notice:*:?: {
if ($readini(Startup.ini,$network,auth) == 1) {
if ($nick == nickserv) || ($nick == authserv) {
var %user = $readini(Startup.ini,$network,user)
var %pass = $ifdecode($readini(Startup.ini,$network,pass),m)
if (*registered and protected* iswm $1-) .msg nickserv identify %pass
elseif ($regex($1-,/Authserv@([^ ]*)/Si)) .msg $regml(1) auth %user %pass
}
}
}
; #############################################################################
; # Nick in use raw - Auto ghost/recover #
; #############################################################################
raw 433:*: {
if ($2 == $readini(Startup.ini,$network,nick)) && (!%GhostTimer) {
var %nick = $2
var %authtype = $readini(Startup.ini,$network,AuthType)
var %user = $readini(Startup.ini,$network,User)
var %pass = $ifdecode($readini(Startup.ini,$network,pass),m)
if (%authtype == 1) {
if ($($+(%,dc.,$network),2)) .msg nickserv ghost %nick %pass
else {
.msg nickserv recover %nick %pass
.msg nickserv release %nick %pass
}
}
elseif (%authtype == 2) .msg authserv ghost %nick %pass
elseif (%authtype == 5) .msg P@cservice.netgamers.org recover %nick %user %pass
set -u5 %GhostTimer on
.timer 1 2 nick %nick
}
}
; #############################################################################
; # Disconnect event. Set variable to decide between ns ghost and ns release #
; #############################################################################
on *:disconnect: {
set -u120 $+(%,dc.,$network)
}