Away Logger v1.0b

By Anarchy[MKD] on Aug 14, 2007

Manual Away Activation/Deactivation System
Smart Auto Away System, Turns On And Off By Itself
Notices When Nick Said In Channel & Msges Back When Pmd
o Ability To Set 2 Different Messages For Each Situation
o An allowed total of 5 nick triggers to set off in channel
Keeps All Logged Messages In Easy Read Text File Which Can Be Red Via A Mirc Window
o Easily Allows You To Delete And/OR Back Up Logged Messages
Choose Your Own Main Nick & Away Nick (and ability to choose weather to change or not (auto change available when auto away activated)
Allows You To Select Specific Channels Where When Your Nick Is Said A Notice Is Sent
On Arrival, Allows You To Choose Weather To Notify Those Who Msged You Of Your Return (With Own Custom Message)
Easy To Use Dialog For Setting Up And Easy To Navigate Popups For Quick Setup
Mirc Version 6.14 Friendly

To Load:

First Extract All Files Into Your Main Mirc Directory.

Next Open Mirc And Type /load rs AwayLogger.mrc (If Prompted To Continue Please Select Yes)

First Time Setup:

Right Click In Chan -> Away Logger: -> AwayLogger Main Config

1st Set All 3 Messages One For When Nick Said In Channel, Another When PMd And The Last Your Notify Back Message

;      Away Logger           ;
;Created Anarchy[MKD] ;

on *:LOAD: {
  echo 4 -a  Away Logger v1.0b By: Anarchy[MKD]
  if ((!%AwayLoggerNoticeMsg) || (!%AwayLoggerPMMsg) || (!%AwayLoggerAlertNick1) || (!%NotifyBackMsg)) {
    if ($$input(You Have Not Configured AwayLogger Yet - Configure It Now?,y,Configure Now?) = $true) { dialog -m AwayLogger AwayLogger }
    else { $input(Please Note You Will Not Be Able To Use AwayLogger Till You Configure It,o,Note:) }
  }
}

on *:START: { hmake AwayLoggerChannels | hload AwayLoggerChannels AwayLoggerChannels.hsh }

ctcp *:VERSION:*:{ ctcpreply $nick VERSION Away Logger v1.0b By: Anarchy[MKD] }

alias afk {
  $iif($group(#nicklogger) = off,.enable #nickLogger,.disable #Nicklogger)
  echo 4 -a $iif($group(#nicklogger) = off,** AwayLogger Has Been Turned Off,**AwayLogger Has Been Turned On)
  if (($group(#nicklogger) = off) && $input(Do you wanna change back to your normal nick?,y,Change To Normal Nick) && ((*-afk iswm $me) || (%AwayLoggerAwayNick == $me))) {
    if (%AwayLoggerMainNick) { nick %AwayLoggerMainNick }
    else { nick $left($me,-4) }
  }
  if (($group(#nicklogger) = off) && $query(0) && $input(Do you wanna notify everyone?,y,Notify Prompt)) { notifyback }
  if (($group(#nicklogger) = on) && ($input(Do you wanna change to your AFK Nick?,y,Change To AFK Nick)) && ((AFK !isin $me) || (%AwayLoggerAwayNick != $me))) {
    if (%AwayLoggerAwayNick) { nick %AwayLoggerAwayNick | set %New_Messages 0 }
    else { nick $me $+ -AFK | set %New_Messages 0 }
  }
  if ($group(#nicklogger) = off) && (%New_Messages >= 1) { echo 4 -a **  You have %New_Messages New Messages since you went AFK! | unset %New_Messages | unset %NotifyingNickAwayLogger }
  if ($group(#nicklogger) = off) && (%New_Messages < 1) { echo 4 -a **  You have Have No New Messages since you went AFK! | unset %New_Messages | unset %NotifyingNickAwayLogger }
  if ($group(#nicklogger) = on) {  set %New_Messages 0 }
}
alias afk2 {
  $iif($group(#nicklogger) = off,.enable #nickLogger,.disable #Nicklogger)
  echo 4 -a $iif($group(#nicklogger) = off,**AwayLogger Has Been Auto Turned Off,**AwayLogger Has Automatically Been Turned On)
  if (($group(#nicklogger) = off) && (%Autochangenicks == on) && ((*-afk iswm $me) || (%AwayLoggerAwayNick == $me))) {
    if (%AwayLoggerMainNick) { nick %AwayLoggerMainNick }
    else { nick $left($me,-4) }
  }
  if (($group(#nicklogger) = on) && (%Autochangenicks == on) && ((AFK !isin $me) || (%AwayLoggerAwayNick !== $me))) {
    if (%AwayLoggerAwayNick) { nick %AwayLoggerAwayNick | set %New_Messages 0 }
    else { nick $me $+ -AFK | set %New_Messages 0 }
  }
  if ($group(#nicklogger) = off) && (%New_Messages >= 1) { echo 4 -a **  You have %New_Messages New Messages since you went AFK! | unset %New_Messages }
  if ($group(#nicklogger) = off) && (%New_Messages < 1) { echo 4 -a **  You have Have No New Messages since you went AFK! | unset %New_Messages }
  if ($group(#nicklogger) = on) { set %New_Messages 0 }
}

alias messages {
  if ($isfile(Loggedmessages.txt) == $true) {
    window @messages
    loadbuf 1000 -imp @messages LoggedMessages.txt
  }
  else { echo 4 -a ** No Messages Have Been Recorded }
}

alias clearmessages {
  if ($exists(loggedmessages.txt)) {
    if ($input(Do You Want To Backup These Messages,y,Keep Backup?)) { .copy -ao loggedmessages.txt loggedmessages $+ $date(dd-mm-yy) $+ .txt | .remove loggedmessages.txt | echo 4 -a ** Logged Messages Have Been Deleted But Are Backed Up }
    else { .remove loggedmessages.txt | echo 4 -a ** Logged Messages Have Been Deleted }
  }
  else { echo 4 -a ** There Are No Current Logged Messages }
}

alias notifyback {
  var %z = 1
  tokenize 32 %NotifyingNickAwayLogger
  while ($($+($,%z),2)) {
    msg $($+($,%z),2) %NotifyBackMsg
    inc %z
  }
}
alias changechanmsg { set %AwayLoggerNoticeMsg $$input(What Message Would You Like Noticed To User When Name Said In Chan, ev, Channel Message) | echo 4 -a ** Notice Message Successfully Changed }
alias changepmmsg { set %AwayLoggerPmMsg $$input(What Message Would You Like To Reply When PM'd, ev, PM Message) | echo 4 -a ** PM Message Reply Succesfully Changed }
alias listtriggers { var %z = 1 | while ( $($+(%,AwayLoggerAlertNick,%z),2) ) { echo -a 11,1WordTrigger $+ %z $+ $chr(58) 9,1 $($+(%,AwayLoggerAlertNick,%z),2) | inc %z } }
alias changenotifybackmsg { set %NotifyBackMsg $$input(What Would You Like Msged To Users When/If You Choose To Notify Them Of Your Arrival,ev,Notify Back Msg) }
alias triggerwords {
  var %x = $$input(How Many Trigger Words To Be Added?,ev,How Many Trigger Words)
  if ((%x > 5) || (%x !isnum)) {
    echo 4 -a ** Sorry Only A Maximum Of 5 Trigger Words Can Be Entered And Only Single Numbers To Be Entered
  }
  else {
    var %y 1
    while (%y <= %x) {
      set %AwayLoggerAlertNick $+ %y $$Input(Please Enter Trigger Word %y ,ev,Trigger Word %y )
      if (%y == %x) {
        inc %y
        while ( $($+(%,AwayLoggerAlertNick,%y),2) ) { unset $($+(%,AwayLoggerAlertNick,%y),1) | inc %y }
        listtriggers
      }
      inc %y
    }
  }
}

alias autoidleaway {
  if ($input(Auto Change Nicks To AFK And Back?,y,Auto Change Nicks) == $true) { set %AutoChangeNicks on }
  else { set %AutoChangenicks off }
  if (m isin %awayloggeridletime) {
    .timerawayloggeridle1 0 30 if (($idle >= $calc(60 * $remove( %awayloggeridletime ,m)) ) && ($group(#nicklogger) = off) ) $({,) afk2 $(|,) .enable #idle-check $(},)
  }
  elseif (h isin %awayloggeridletime) { .timerawayloggeridle 0 30 if ($idle >= $calc(3600 * $remove(%z,h))) { afk2 | .timerawayloggeridle off } }
}

#idle-check off
on *:INPUT:*: { afk2 | .disable #idle-check }
#idle-check end

menu channel,menubar {
  -
  Away Logger:
  .AwayLogger Main Config: { dialog -m awaylogger awaylogger }
  .-
  . Activate/Disable Away Logger: { afk }
  .Change Messages:
  ..Notice Message When Nick Said In Chan { changechanmsg }
  ..PM Message When Msged By Someone { changepmmsg }
  ..Notify Back Msg { changenotifybackmsg }
  .Logged Messages:
  ..Check Messages: { messages }
  ..Clear Messages: { clearmessages }
  .Nick Triggers:
  ..Set Nick Triggers In Chan { triggerwords }
  ..List Nick Triggers In Chan { ListTriggers }
  .Set Nicks
  ..Set Main Nick { set %AwayLoggerMainNick $$input(Please Enter Your Main Nick,ev,Main Nick) | echo 4 -a Set Main Nick To: %AwayLoggerMainNick }
  ..Set Away Nick { set %AwayLoggerAwayNick $$input(Please Enter Your Away Nick,ev,Away Nick) | echo 4 -a Set Away Nick To: %AwayLoggerAwayNick }
  .Auto Idle:
  ..Turn On: {
    if (%awayloggeridletime) { autoidleaway | echo 4 -a ** Auto Away On Idle Has Been Turned On }
    else { echo 4 -a ** No Interval Time Has Been Set! }
  }
  ..Turn off: { .timerawayloggeridle1 off | echo 4 -a ** Auto Away On Idle Has Been Turned Off }
  ..Current Status: {
    if ($timer(timerawayloggeridle1)) { echo 4 -a ** It Is Currently Active And Set To Go AFK Every: %awayloggeridletime . }
    else { echo 4 -a ** Auto Away Is Currently DISABLED }
  }
  ..Interval Time
  ...Set: {  set %awayloggeridletime $$input(Idle How Long Before Going Away (Format is Xm,Xh (m = min, h=hours)),ev,Auto Idle After How Long?) }
  ...Current Setting: {
    if (%awayloggeridletime) { echo 4 -a ** Current Auto Away Idle Time Set At: %awayloggeridletime }
    else { echo 4 -a ** No Current Idle Time Set }
  }
}

#NickLogger off
on *:TEXT:*:#: {
  if ($hfind(AwayLoggerChannels,$chan,1).data) {
    if (( %AwayLoggerAlertNick1 isin $1- ) || ( %AwayLoggerAlertNick2 isin $1- ) || ( %AwayLoggerAlertNick3 isin $1- ) || ( %AwayLoggerAlertNick4 isin $1- ) || ( %AwayLoggerAlertNick5 isin $1- )) {
      if !$istok(%nicks,$nick,32) {
        notice $nick %AwayLoggerNoticeMsg
      }
      write loggedmessages.txt $nick Said $1- in $chan on $time $date
      set %query.response.nicks $addtok(%query.response.nicks,$nick,32)
      $+(.timer,$nick) 1 120 set %query.response.nicks $remtok(%query.response.nicks,$nick,1,32)
      if ((%NotifyingNickAwayLogger) && ($nick !isin %NotifyingNickAwayLogger)) { set %NotifyingNickAwayLogger %NotifyingNickAwayLogger $+ $chr(32) $+ $nick }
      elseif (!%NotifyingNickAwayLogger) { set %NotifyingNickAwayLogger $nick }
      inc %New_Messages
    }
  }
}
on *:TEXT:*:?: {
  if !$istok(%query.response.nicks,$nick,32) {
    msg $nick %AwayLoggerPmMsg
  }
  write loggedmessages.txt $nick said $1- in PM on $time $date
  set %query.response.nicks $addtok(%query.response.nicks,$nick,32)
  $+(.timer,$nick) 1 120 set %query.response.nicks $remtok(%query.response.nicks,$nick,1,32)
  if ((%NotifyingNickAwayLogger) && ($nick !isin %NotifyingNickAwayLogger)) { set %NotifyingNickAwayLogger %NotifyingNickAwayLogger $+ $chr(32) $+ $nick }
  elseif (!%NotifyingNickAwayLogger) { set %NotifyingNickAwayLogger $nick }
  inc %New_messages
}
#NickLogger End
; Credits To Pariah Here, For His Great Help On The Redesign! ;
dialog AwayLogger {
  title "Away Logger v1.0b By Anarchy[MKD]"
  size -1 -1 161 127
  option dbu
  button "Finished", 34, 2 113 37 12
  box "Manual Away Status", 1, 2 2 58 25
  list 3, 6 10 50 12, size
  box "Auto Away", 5, 2 28 58 48
  text "Auto Away Status:", 10, 8 36 47 8
  text "Current Idle Time:", 11, 9 55 44 8
  list 9, 5 63 52 10, size
  list 7, 5 44 52 10, size
  box "Logged Messages", 22, 2 77 58 35
  button "View Current", 23, 6 86 48 10
  button "Delete Logged", 24, 6 98 48 10
  box "Set Nicks", 25, 62 2 97 35
  edit "", 27, 96 10 60 10, autohs
  text "Normal Nick:", 28, 65 12 30 8
  text "Away Nick:", 31, 67 25 27 8
  edit "", 30, 96 23 60 10, autohs
  box "Away Messages", 12, 62 37 97 75
  text "Current Notice Message", 19, 80 46 58 8
  edit "", 14, 66 54 91 11, autohs
  text "Current PM Message", 20, 84 67 51 8
  edit "", 16, 66 75 91 11, autohs
  text "Current Notify Back Message", 21, 74 88 71 8
  edit "", 18, 66 96 91 11, autohs
  button "Apply", 13, 41 113 37 12
  button "Triggers", 15, 122 113 37 12
  combo 32, 167 12 60 88, size
  button "Add", 35, 167 99 30 10
  button "Remove", 36, 197 99 30 10
  button "Nick Triggers", 37, 163 113 68 12
  box "Channel Triggers", 33, 163 3 68 109
  menu "File", 17
  item "Save", 26, 17
  item "Save And Exit", 29, 17
  item "Exit Without Saving", 41, 17
  menu "Status", 2
  menu "Manual Away", 4, 2
  item "Status", 47, 4
  menu "AutoAway", 99, 2
  item "Status", 6, 99
  item "Set Idle Time", 8, 99
}
on *:dialog:Awaylogger:*:*:{
  if ($devent == init) {
    if ($group(#NickLogger) = on) {
      if ($timer(awayloggeridle1)) { did -a $dname 3 Status: Off | did -a $dname 7 Status: On }
      else { did -a $dname 3 Status: On | did -a $dname 7 Status: Off }
    }
    else { did -a $dname 3 Status: Off | did -a $dname 7 Status: Off }
    if (%awayloggeridletime) { did -a $dname 9 Idle Time: %Awayloggeridletime }
    else { did -a $dname 9 No Set Idle Time }
    if (%AwayLoggerNoticeMsg) { did -a $dname 14 %AwayLoggerNoticeMsg }
    else { did -a $dname 14 No Set Notice Message! }
    if (%AwayLoggerPmMsg) { did -a $dname 16 %AwayLoggerPmMsg }
    else { did -a $dname 16 No Set PM Message! }
    if (%NotifyBackMsg) { did -a $dname 18 %NotifyBackMsg }
    else { did -a $dname 18 No Set Notify Back Message! }
    if (%AwayLoggerMainNick) { did -a $dname 27 %AwayLoggerMainNick }
    else { did -a $dname 27 $me }
    if (%AwayLoggerAwayNick) { did -a $dname 30 %AwayLoggerAwayNick }
    else { did -a $dname 30 $me $+ -AFK }
    if ($Group(#nicklogger) = on) {
      if (!$timer(awayloggeridle1)) { did -c $dname 47 }
      else { did -c $dname 6 }
    }
    if ( !$hget(AwayLoggerChannels) ) { hmake AwayLoggerChannels 100 }
    else {
      var %z = 1
      while ( $hget(AwayLoggerChannels,%z).item ) { did -a $dname 32 $ifmatch | inc %z }
    }
    set %AwayLoggerSavedChanges No
    set %AwayLoggerExpandRetract off
    set %AwayLoggerChn On
  }
  elseif ($devent == sclick) {
    if ($did == 23) { messages }
    elseif ($did == 24) { clearmessages }

    elseif ($did == 39) {
      if ($did(37).sel) { hdel AwayLoggerChannels $did(37).seltext | did -d $dname 37 $ifmatch | did -u $dname 37 }
    }
    elseif ($did == 43) {
      if ($did(33).sel) {
        var %z = $did(33).sel
        unset %AwayLoggerAlertNick $+ %z
        did -d $dname 33 %z
        inc %z
        if ( $($+(%,AwayLoggerAlertNick,%z),2) ) {
          while ( $($+(%,AwayLoggerAlertNick,%z),2) ) {
            var %xx = $calc(%z - 1)
            set %AwayLoggerAlertNick $+ %xx $($+(%,AwayLoggerAlertNick,%z),2)
            unset $($+(%,AwayLoggerAlertNick,%z),1)
            inc %z
          }
        }
        else { unset $($+(%,AwayLoggerAlertNick,$calc(%z - 1)),1) }
      }
    }
    elseif ( $did == 13 ) { set %AwayLoggerNoticeMsg $did(14) | set %AwayLoggerPmMsg $did(16) | set %NotifyBackMsg $did(18) | set %AwayLoggerMainNick $did(27) | set %AwayLoggerAwayNick $did(30) | set %AwayLoggerSavedChanges Yes }
    elseif ( $did == 34 ) {
      if (%AwayLoggerSavedChanges != Yes) {
        var %xyz $$input(You Have Not Saved Your Changes! Would You Like To Quit Anyway?,y,Settings Not Saved!)
        if ( %xyz = $true ) { dialog -x AwayLogger AwayLogger | hsave -o AwayLoggerChannels AwayLoggerChannels.hsh }
      }
      else { dialog -x AwayLogger AwayLogger | hsave -o AwayLoggerChannels AwayLoggerChannels.hsh }
    }
    elseif ($did == 15) {
      if (%AwayLoggerExpandRetract = off ) { expand $dname | set %AwayLoggerExpandRetract = on }
      else { collapse $dname | set %awayloggerexpandretract off }
    }
    elseif ($did == 37) {
      if (%AwayLoggerChn = on) {
        did -ra $dname 37 Channel Triggers
        did -ra $dname 33 Nick Triggers
        did -r $dname 32
        set %AwayLoggerChn Off
        if (%AwayLoggerAlertNick1) {
          var %y = 1
          while ( $($+(%,AwayLoggerAlertNick,%y),2) ) {
            did -a $dname 32 $($+(%,AwayLoggerAlertNick,%y),2)
            inc %y
          }
          else { did -a $dname 33 No Nick Triggers Set! }
        }
      }
      else {
        did -ra $dname 37 Nick Triggers
        did -ra $dname 33 Channel Triggers
        did -r $dname 32
        set %AwayLoggerChn On
        if ( !$hget(AwayLoggerChannels) ) { hmake AwayLoggerChannels 100 }
        else {
          var %z = 1
          while ( $hget(AwayLoggerChannels,%z).item ) { did -a $dname 32 $ifmatch | inc %z }
        }
      }
    }
    elseif ($did == 35) {
      if (%AwayLoggerChn = on) {
        if ($did(32) != $null) {  hadd -m AwayLoggerChannels $ifmatch $ifmatch | did -a $dname 32 $ifmatch | did -u $dname 32 }
      }
      else {
        var %x $did(32).lines
        if (%x < 5) {
          if ($did(32) != $null) {
            inc %x
            set %AwayLoggerAlertNick $+ %x $ifmatch
            did -a $dname 32 $ifmatch
            did -u $dname 32
          }
        }
        else { $input(Sorry You Have Used Up All 5 Nick Triggers,o,Error:) }
      }
    }
    elseif ($did == 36) {
      if (%AwayLoggerChn = On) {
        if ($did(32).sel) { hdel AwayLoggerChannels $did(32).seltext | did -d $dname 32 $ifmatch | did -u $dname 32 }
      }
      else {
        if ($did(32).sel) {
          var %z = $did(32).sel
          unset %AwayLoggerAlertNick $+ %z
          did -d $dname 32 %z
          inc %z
          if ( $($+(%,AwayLoggerAlertNick,%z),2) ) {
            while ( $($+(%,AwayLoggerAlertNick,%z),2) ) {
              var %xx = $calc(%z - 1)
              set %AwayLoggerAlertNick $+ %xx $($+(%,AwayLoggerAlertNick,%z),2)
              unset $($+(%,AwayLoggerAlertNick,%z),1)
              inc %z
            }
          }
          else { unset $($+(%,AwayLoggerAlertNick,$calc(%z - 1)),1) }
        }
      }
    }
  }
  elseif ($devent == menu) {
    if ($did == 47) {
      if ($timer(awayloggeridle1)) { $input(Error: Auto Away Is Currently On - Cant Turn On Manually - Please Turn Off To Continue,o,Error:) }
      else {
        if ($group(#nicklogger) = off) { afk | did -ra $dname 3 Status: On | did -c $dname 47 }
        else { afk | did -ra $dname 3 Status: Off | did -u $dname 47 }
      }
    }
    elseif ($did == 6) {
      if (($group(#nicklogger) = on) && (!$timer(awayloggeridle1))) { $$input(Error: Manual Away Is Currently On - Please Turn Off To Continue,o,Error:) }
      else {
        if (!$timer(awayloggeridle1)) {
          if ($group(#nicklogger) = off) {
            if (%awayloggeridletime) { autoidleaway | did -ra $dname 7 Status: On | did -c $dname 6 }
            else { $$input(Error: No Idle Time Has Been Set!) }
          }
        }
        else { .timerawayloggeridle1 off | did -ra $dname 7 Status: Off | did -u $dname 6 }
      }
    }
    elseif ($did == 8) { set %awayloggeridletime $$input(Idle How Long Before Going Away (Format is Xm,Xh (m = min, h=hours)),ev,Auto Idle After How Long?) | did -ra $dname 9 Idle Time: %awayloggeridletime }
    elseif ($did == 26) { set %AwayLoggerNoticeMsg $did(14) | set %AwayLoggerPmMsg $did(16) | set %NotifyBackMsg $did(18) | set %AwayLoggerMainNick $did(27) | set %AwayLoggerAwayNick $did(30) | set %AwayLoggerSavedChanges Yes }
    elseif ($did == 29) { set %AwayLoggerNoticeMsg $did(14) | set %AwayLoggerPmMsg $did(16) | set %NotifyBackMsg $did(18) | set %AwayLoggerMainNick $did(27) | set %AwayLoggerAwayNick $did(30) | set %AwayLoggerSavedChanges Yes | dialog -x AwayLogger AwayLogger }
    elseif ($did == 41) {
      if (%AwayLoggerSavedChanges != Yes) {
        var %xyz $$input(You Have Not Saved Your Changes! Are You Sure You Would You Like To Quit Anyway?,y,Settings Not Saved!)
        if ( %xyz = $true ) { dialog -x AwayLogger AwayLogger | hsave -o AwayLoggerChannels AwayLoggerChannels.hsh }
      }
      else { dialog -x AwayLogger AwayLogger | hsave -o AwayLoggerChannels AwayLoggerChannels.hsh }
    }
  }
}
alias -l expand {
  var %len = 161,%tot = 233
  while (%len <= %tot) { dialog -srb $1 -1 -1 %len 137 | inc %len }
}
alias -l collapse {
  var %len = 233,%tot = 161
  while (%len >= %tot) { dialog -srb $1 -1 -1 %len 137 | dec %len }
}

Comments

Sign in to comment.
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.