; ; Away Logging script ; v0.01 ; For use with mIRC 5.6+ ; Written by Bekar (EFNet @#mIRC) ; For support, or bug reporting, please email: bekar@virtual.net.au ; ON 1:LOAD: { if ($exists($scriptdirAWAY) == $false) { mkdir $scriptdir $+ AWAY } writeini $awayINI options OldAway Gone if ($server != $Null) { .timerAwayCheck 0 15 AwayCheck } } dialog AwayMenu { Title "Away Configuration" option bpu Size 20 20 300 300 Button "O&K", 99, 240 265 50 25 , ok Button "&Cancel", 98, 180 265 50 25 , Cancel Check "&Activiate Away System", 1, 85 10 150 20 Box "Settings:", 2, 10 30 280 220 Check "&Change nick when setting away", 3, 20 45 190 20 Button "A&dd Nick", 4, 210 45 60 20 Text "Current Default :", 5, 20 65 100 15, Right Text "Unset", 6, 125 65 80 15, Left Check "&Set Away Automatically After:", 7, 20 80 190 20 Edit "0", 8, 210 77 40 20, Right Text "secs.", 9, 250 80 30 20 Check "&Log Private messages whilst away", 10, 20 100 190 20 Check "Log &Public messages with your nick whilst away", 11, 20 120 260 20 Check "&Delete logs once viewed", 12, 40 140 220 20 Check "S&how that you are away in channels", 13, 20 160 220 20 Check "A&nnounce away status every :", 14, 40 180 160 20 Edit "600", 15, 210 179 40 20, Right Text "secs.", 16, 250 180 30 20 Check "Show away s&tatus in Private Messages", 17, 20 200 220 20 Check "Tell privates &once every :", 18, 40 220 140 20 Edit "600", 19, 210 219 40 20, Right Text "secs.", 20, 250 220 30 20 } dialog NickList { Title "Away Nick List" Size 20 20 200 206 Button "O&K", 99, 140 143 50 25 , ok Button "&Cancel", 98, 140 173 50 25 , cancel vsbar List 1, 10 10 120 200, ExtSel Button "&Add", 2, 140 10 50 25 Button "&Up", 3, 140 40 50 25 Button "&Down", 4, 140 70 50 25 Button "&Remove", 5, 140 100 50 25 } ON *:DIALOG:NickList:Init:0: { if ($numtok($lscript(NickNames),44) > 0) { didtok $dname 1 44 $lscript(NickNames) } } ON *:DIALOG:NickList:SCLICK:2: { .timerAddNick -m 1 0 AddNickName } alias -l AddNickName did -a NickList 1 $remove($$?="Please enter a nickname:", $chr(44), $chr(32), $chr(160), $chr(46)) ON *:DIALOG:NickList:SCLICK:3: { if (($did($dname, 1, 0).sel == 1) && ($did($dname, 1, 1).sel != 1)) { var %temp, %sel %sel = $did($dname, 1, 1).sel %temp = $did($dname, 1, $calc(%sel - 1)) did -o $dname 1 $calc(%sel - 1) $did($dname, 1, %sel) did -o $dname 1 %sel %temp did -c $dname 1 $calc(%sel - 1) } | else { beep } } ON *:DIALOG:NickList:SCLICK:4: { if (($did($dname, 1, 0).sel == 1) && ($did($dname, 1, $calc($did($dname, 1, 1).sel + 1)) != $null)) { var %temp, %sel %sel = $did($dname, 1, 1).sel %temp = $did($dname, 1, $calc(%sel + 1)) did -o $dname 1 $calc(%sel + 1) $did($dname, 1, %sel) did -o $dname 1 %sel %temp did -c $dname 1 $calc(%sel + 1) } | else { beep } } ON *:DIALOG:NickList:SCLICK:5: { if ($did($dname, 1, 0).sel > 0) { while ($did($dname, 1, 0).sel > 0) { did -d $dname 1 $did($dname, 1, 1).sel } } | else { beep } } ON *:DIALOG:NickList:SCLICK:99: { if ($didtok(NickList, 1, 44) != $null) { writeini $awayINI options n2 $didtok(NickList, 1, 44) } | else { remini $awayINI options n2 } if ($gettok($lscript(NickNames), 1, 44) != $Null) { did -o AwayMenu 6 1 $gettok($lscript(NickNames), 1, 44) } | else { did -o AwayMenu 6 1 Unset } } ON *:DIALOG:AwayMenu:Init:0: { if $lscript(Active) { did -c $dname 1 } if $lscript(ChangeNickName) { did -c $dname 3 } | else { did -b $dname 4 } if ($lscript(NickNames) != $null) { did -o $dname 6 1 $gettok($lscript(NickNames),1,44) } if $lscript(AutoAway) { did -c $dname 7 } | else { did -b $dname 8 } did -o $dname 8 1 $lscript(AutoAwayPeriod) if ($did(8).text == $null) { did -o $dname 8 1 3600 } if $lscript(PrivateLog) { did -c $dname 10 } if $lscript(PublicLog) { did -c $dname 11 } if $lscript(DeleteLog) { did -c $dname 12 } if $lscript(ShowChannel) { did -c $dname 13 } | else { did -b $dname 14 did -b $dname 15 did -b $dname 16 } if $lscript(ReShowChannel) { did -c $dname 14 } | else { did -b $dname 15 did -b $dname 16 } did -o $dname 15 1 $lscript(ReShowChannelBreak) if ($did(15).text == $null) { did -o $dname 15 1 3600 } if $lscript(ShowPrivate) { did -c $dname 17 } | else { did -b $dname 18 did -b $dname 19 did -b $dname 20 } if $lscript(ReShowPrivate) { did -c $dname 18 } | else { did -b $dname 19 did -b $dname 20 } did -o $dname 19 1 $lscript(ReShowPrivateBreak) if ($did(19).text == $null) { did -o $dname 19 1 3600 } if (($did(10).state == 1) || ($did(11).state == 1)) { did -e $dname 12 } | else { did -b $dname 12 } } ON *:DIALOG:AwayMenu:SCLICK:99: { ; ok this is where we save all the settings var %string if ($returnini($awayINI, options, n1) == $null) { writeini $awayINI options n1 0,0,0,0,0,0,0,0,0,0,0,0,0 } %string = $returnini($awayINI, options, n1) %string = $puttok(%string, $did(1).state, 1, 44) %string = $puttok(%string, $did(3).state, 2, 44) %string = $puttok(%string, $did(7).state, 3, 44) %string = $puttok(%string, $did(8).text, 4, 44) %string = $puttok(%string, $did(10).state, 5, 44) %string = $puttok(%string, $did(11).state, 6, 44) %string = $puttok(%string, $did(12).state, 7, 44) %string = $puttok(%string, $did(13).state, 8, 44) %string = $puttok(%string, $did(14).state, 9, 44) %string = $puttok(%string, $did(15).text, 10, 44) %string = $puttok(%string, $did(17).state, 11, 44) %string = $puttok(%string, $did(18).state, 12, 44) %string = $puttok(%string, $did(19).text, 13, 44) Writeini $awayINI options n1 %string if $lscript(ReShowChannel) { if ($timer(ReShowChannel) != $Null) { .timerReShowChannel 0 $lscript(ReShowChannelBreak) ShowChannels is still away - $returnini($awayINI, options, AwayMsg) - Dont bother me! ( $+ $lscript $+ ) } } | else { .timerReShowChannel Off } } ON *:DIALOG:AwayMenu:SCLICK:4: { ; dialog(NickList, NickList) dialog -ma NickList NickList } ON *:DIALOG:AwayMenu:SCLICK:13: { if ($did($did).state == 1) { did -e $dname 14 if ($did(14).state == 1) { did -e $dname 15 did -e $dname 16 } } | else { did -b $dname 14 did -b $dname 15 did -b $dname 16 } } ON *:DIALOG:AwayMenu:SCLICK:14: { if ($did(14).state == 1) { did -e $dname 15 did -e $dname 16 } | else { did -b $dname 15 did -b $dname 16 } } ON *:DIALOG:AwayMenu:SCLICK:17: { if ($did($did).state == 1) { did -e $dname 18 if ($did(18).state == 1) { did -e $dname 19 did -e $dname 20 } } | else { did -b $dname 18 did -b $dname 19 did -b $dname 20 } } ON *:DIALOG:AwayMenu:SCLICK:18: { if ($did(18).state == 1) { did -e $dname 19 did -e $dname 20 } | else { did -b $dname 19 did -b $dname 20 } } ON *:DIALOG:AwayMenu:SCLICK:10,11: { if (($did(10).state == 1) || ($did(11).state == 1)) { did -e $dname 12 } | else { did -b $dname 12 } } ON *:DIALOG:AwayMenu:SCLICK:7: { if ($did($did).state == 1) { did -e $dname 8 } | else { did -b $dname 8 } } ON *:DIALOG:AwayMenu:SCLICK:3: { if ($did($did).state == 1) { did -e $dname 4 } | else { did -b $dname 4 } } ; ok, format of ini file. ; [options] ; n1=X,X,X,X,X,X,X,X,X,X,X,X,X ; n2=nick,nick,nick ; 1. Active ; 2. Change Nick ; 3. Auto Away ; 4. Time Interval for Auto Away ; 5. Log Private ; 6. Log Public ; 7. Delete once viewed ; 8. Show away in channels ; 9. Re Announce ? ; 10. Re-Announce interval ; 11. Show away privately ; 12. Re Announce ? ; 13. Re-Announce Interval alias lscript { if ($1 == Active) { return $iif($gettok($returnini($awayINI, options, n1), 1, 44) == 1, $true, $false) } elseif ($1 == NickNames) { return $returnini($awayINI, options, n2) } elseif ($1 == ChangeNickName) { return $iif($gettok($returnini($awayINI, options, n1), 2, 44) == 1, $true, $false) } elseif ($1 == AutoAway) { return $iif($gettok($returnini($awayINI, options, n1), 3, 44) == 1, $true, $false) } elseif ($1 == AutoAwayPeriod) { return $gettok($returnini($awayINI, options, n1), 4, 44) } elseif ($1 == PrivateLog) { return $iif($gettok($returnini($awayINI, options, n1), 5, 44) == 1, $true, $false) } elseif ($1 == PublicLog) { return $iif($gettok($returnini($awayINI, options, n1), 6, 44) == 1, $true, $false) } elseif ($1 == DeleteLog) { return $iif($gettok($returnini($awayINI, options, n1), 7, 44) == 1, $true, $false) } elseif ($1 == ShowChannel) { return $iif($gettok($returnini($awayINI, options, n1), 8, 44) == 1, $true, $false) } elseif ($1 == ReShowChannel) { return $iif($gettok($returnini($awayINI, options, n1), 9, 44) == 1, $true, $false) } elseif ($1 == ReShowChannelBreak) { return $gettok($returnini($awayINI, options, n1), 10, 44) } elseif ($1 == ShowPrivate) { return $iif($gettok($returnini($awayINI, options, n1), 11, 44) == 1, $true, $false) } elseif ($1 == ReShowPrivate) { return $iif($gettok($returnini($awayINI, options, n1), 12, 44) == 1, $true, $false) } elseif ($1 == ReShowPrivateBreak) { return $gettok($returnini($awayINI, options, n1), 13, 44) } else { return 6[2A-Thingy6] } } alias -l awayINI return $scriptdir $+ AWAY\Away. $+ $nopath($mircini) alias -l returnini return $readini $$1 $$2 $$3 alias -l lb2tok { if ($did($$1, $$2, 1) != $null) { var %temp, %loop %Loop = 1 %temp = "" while ($did($1, $2, %loop) != $null) { %temp = $addtok(%temp, $did($1, $2, %loop), 44) inc %Loop } return %temp } } alias AwayCheck { if $lscript(AutoAway) { if ($idle > $lscript(AutoAwayPeriod)) { if ($away == $false) { away [ $readini $awayINI options oldaway ] } } } } ON *:CONNECT: { .timerAwayCheck 0 15 AwayCheck remini $awayINI Announce if ($calc($ctime - $ReturnINI($awayINI, Options, Disc)) > 3600) { remini $awayINI announce remini $awayINI Options Disc remini $awayINI Options AwayTime remini $awayINI Options AwayMsg .raw away } } ON *:DISCONNECT: { writeini $awayINI Options Disc $ctime } raw 305:*: { if $lscript(Active) { if (($returnini($awayINI, options, AwayTime) != $null) && ($returnini($awayINI, options, AwayMsg) != $null)) { .timerReShowChannel off echo 5 -st $lscript AWAY:- Marked back at : $fulldate . Away for $duration($calc($ctime - $returnini($awayINI, options, AwayTime))) if $lscript(ShowChannel) { ShowChannels is no longer away - $returnini($awayINI, options, AwayMsg) - Been away for $duration($calc($ctime - $returnini($awayINI, options, AwayTime))) } if $lscript(ChangeNickName) { .nick $readini $awayINI Options Nick.Orig } remini $awayINI announce remini $awayINI options AwayTime remini $awayINI options AwayMsg } | else { echo 5 -st $lscript AWAY:- You were not previously away } halt } } raw 306:*: { if $lscript(Active) { writeini $awayINI Options OldAway $returnini($awayINI, Options, AwayMsg) if (($returnini($awayINI, options, AwayTime) == $null) && ($returnini($awayINI, options, AwayMsg) != $null)) { if ($idle > $lscript(AutoAwayPeriod)) { writeini $awayINI Options AwayMsg Probably Still :- $returnini($awayINI, options, OldAway) } if $lscript(ShowChannel) { ShowChannels is away - $returnini($awayINI, options, AwayMsg) - Dont bother me! ( $+ $lscript $+ ) if $lscript(ReShowChannel) { .timerReShowChannel 0 $lscript(ReShowChannelBreak) ShowChannels is still away - $returnini($awayINI, options, AwayMsg) - Dont bother me! ( $+ $lscript $+ ) } } writeini $awayINI Options AwayTime $ctime writeini $awayINI Options Nick.Orig $me if $lscript(ChangeNickName) { .nick $gettok($lscript(NickNames), 1, 44) } } echo 5 -st $lscript AWAY:- Marked away at : $fulldate halt } } alias away { if ($away == $false) { if ($1 != $null) { writeini $awayINI Options AwayMsg $1- away $1- } | else { if ($?!="Not away. Cannot set back whilst not away. $lf Do you wish to set away?") { away $returnini($awayINI, options, OldAway) } } } else { if ($1- != $null) { echo 5 -st $lscript AWAY:- Already Set Away. Away Message Changed. writeini $awayINI Options AwayMsg $1- away $1- } else { away } } } alias aw away RAW 4:*: { if (*hybrid-6* iswm $2-) { writeini $awayINI options hybrid 6 } | else { writeini $awayINI options hybrid 6 } } alias showchannels { if (($chan(0) > 0) && ($1 != $null)) { if ($returnini($awayINI, options, hybrid) == 5) { ame $1- } | else { var %loop %loop = 1 while ($chan(0) >= %loop) { describe $chan(%loop) $1- inc %loop } } } } ON *:TEXT:$(* $+ $me $+ *):#: { if $away { if $lscript(Active) { if $lscript(PublicLog) { write [ $nofile($awayINI) $+ [ $safefilename($chan) ] $+ .log ] $timestamp < $+ $nick $+ > $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } ON *:TEXT:*:?: { if $away { if $lscript(Active) { if $lscript(PrivateLog) { write [ $nofile($awayINI) $+ [ $safefilename($nick) ] $+ .log ] $timestamp < $+ $nick $+ > $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } ON *:ACTION:$(* $+ $me $+ *):#: { if $away { if $lscript(Active) { if $lscript(PublicLog) { write [ $nofile($awayINI) $+ [ $safefilename($chan) ] $+ .log ] $timestamp * $nick $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } ON *:ACTION:*:?: { if $away { if $lscript(Active) { if $lscript(PrivateLog) { write [ $nofile($awayINI) $+ [ $safefilename($nick) ] $+ .log ] $timestamp * $nick $+ > $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } ON *:NOTICE:$(* $+ $me $+ *):#: { if $away { if $lscript(Active) { if $lscript(PublicLog) { write [ $nofile($awayINI) $+ [ $safefilename($chan) ] $+ .log ] $timestamp - $+ $nick $+ - $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } ON *:NOTICE:*:?: { if $away { if $lscript(Active) { if $lscript(PrivateLog) { write [ $nofile($awayINI) $+ [ $safefilename($nick) ] $+ .log ] $timestamp - $+ $nick $+ - $1- if $lscript(ReShowPrivate) { if ($ctime > $calc($returnini($awayINI, Announce, $nick) + $lscript(ReShowPrivateBreak))) { .msg $nick $lscript I'm currently not here as you can probably tell (Reason: $returnini($awayINI, Options, AwayMsg) $+ ). Your message has been logged. writeini $awayINI Announce $nick $ctime } } } } } } menu channel,status,menubar { .- Away .Set Yourself $iif($away, as Here!, Away) : { if $away { away } | else { away $?="Type in away message" } } .Configuration: dialog -m AwayMenu AwayMenu .Read Messages: dialog -m AwayMessages AwayMessages } alias AwaySetup dialog -m AwayMenu AwayMenu alias AwayMessages dialog -m AwayMessages AwayMessages dialog AwayMessages { Title "Away Nick List" Size 20 20 200 206 Button "O&K", 99, 140 173 50 25 , Ok Button "&Open", 3, 140 40 50 25 List 1, 10 10 120 200, ExtSel Button "&Delete", 2, 140 10 50 25 } ON *:DIALOG:AwayMessages:Init:0: { if ($findfile($nofile($awayINI), *.log, 0) > 0) { var %loop %Loop = 1 while ($FindFile($nofile($awayINI), *.log, 0) >= %Loop) { did -a $dname 1 $remove($nopath($findfile($nofile($awayINI), *.log, %Loop, 1)), .log) inc %Loop } } } ON *:DIALOG:AwayMessages:SCLICK:2: { if ($did($dname, 1,$did(1).sel) != $null) { .remove $nofile($awayINI) $+ $did($dname, 1,$did(1).sel) $+ .log did -d $dname 1 $did(1).sel } | else { beep } } ON *:DIALOG:AwayMessages:DCLICK:1: { window -adog0k0 +bt @AwayMessage: $+ $did($dname, 1, $did(1).sel) loadbuf -p @AwayMessage: $+ $did($dname, 1, $did(1).sel) $nofile($awayINI) $+ $did($dname, 1, $did(1).sel) $+ .log } ON *:DIALOG:AwayMessages:SCLICK:3: { window -adog0k0 +bt @AwayMessage: $+ $did($dname, 1, $did(1).sel) loadbuf -p @AwayMessage: $+ $did($dname, 1, $did(1).sel) $nofile($awayINI) $+ $did($dname, 1, $did(1).sel) $+ .log } ON *:CLOSE:@: { if ((@AwayMessage* iswm $target) && $lscript(DeleteLog)) { .remove $nofile($awayINI) $+ $did(AwayMessages, 1,$did(AwayMessages, 1).sel) $+ .log if ($dialog(AwayMessages) != $null) { did -d AwayMessages 1 $did(AwayMessages, 1).sel } } } ;raw 303:*: { ; if ($away == $false) { ; if ($3 == $null) { .nick $readini $mircini mirc nick } ; elseif (($me == [ $readini $mircini mirc anick ] ) || ($findtok($lscript(NickNames), $me, 1, 44) != $Null)) { .timer 1 5 .raw ISON $me $readini $mircini mirc nick } ; } ; halt ;} raw 433:*: { if $away && $lscript(ChangeNickName) && $lscript(Active) { if ($findtok($lscript(NickNames), $2, 1, 44) != $Null) { .nick $gettok($lscript(NickNames), $iif($numtok($lscript(NickNames), 44) < $findTok($lscript(NickNames), $2, 1, 44), $calc($findTok($lscript(NickNames), $2, 1, 44) + 1), 1), 44) } } } alias -l SafeFileName { return $replace($$1, \, _, `, _) }