Simple/Auto/Multiserver Away System

By dRain on May 17, 2010

Screenshots

Multi server away script, with auto away function after idling and some other functions also ;) have fun!

;Code wriitten by dRain (@:www.gtpk.gr, mail:kakos.belas@hotmail.com, irc:chat.gtpk.gr)

alias awaydialog { dialog -m AW AW }
dialog AW {
  title "Away System"
  size -1 -1 195 83
  option dbu
  button "Go Away", 1, 6 8 37 12
  button "Come Back", 2, 6 42 37 12
  button " Change Reason", 3, 6 20 37 22, multi
  check " Set Prefix With Your nick +", 15, 49 6 76 8
  edit "", 16, 125 4 65 11, autohs
  check " Set a Prefixed Away nick:", 17, 49 17 73 10
  edit "", 18, 125 17 65 11, autohs
  check " Auto Away After idling for", 7, 49 32 73 10
  edit "", 8, 125 31 19 11, autohs center
  text " minutes!", 9, 146 33 27 8
  button "Exit!", 10, 153 69 37 12, ok
  check " */ame* Reason every", 12, 49 45 73 10
  edit "", 13, 125 45 19 11, autohs center
  text " minutes!", 6, 146 48 27 8
  text "Simple/Auto/Multi Away System by dRain ;P", 4, 6 71 106 8, disable
  check " Disable Sounds While Away", 5, 49 57 79 10
}
on *:DIALOG:AW:*:*: {
  if ($devent == init) {
    if (%AAWAY == On) { did -c $dname 7 }
    if (%amereason == On) { did -c $dname 12 }
    if (%dis.aw.snd == On) { did -c $dname 5 }
    did -ra $dname 8 $calc(%away.idle / 60)
    did -ra $dname 13 $calc(%amereasondelay / 60)
    did -ra $dname 16 %awayn
    did -ra $dname 18 %away.pr.nick
    $iif(%_awayn == 1, did -c $dname 15, did -c $dname 17)
  }
  if ($devent == sclick) {
    if ($did == 1) {
      if (%dis.aw.snd == On) { .sound off }
      if (%_away != Multi && %_away != Single) {
        if ($scon(0) > 1) {
          if ($?!="You are connected to more than one networks! Enable Multi Server Away?" == $true ) { 
            set %awayreason $$?="Away reason?"
            unset %AutoAway_*
            set %_away Multi
            set %scon $scon(0)
            scon -a away %awayreason 
            scon -a ame [:] Away Mode Enabled.Reason: %awayreason [:]
            set %atmsg [:] Still Away.Reason: %awayreason [:]
            set %awaytime $ctime
            .timeraway.ms.ame 0 %amereasondelay scon -a ame %atmsg
            while (%scon > 0) {
              if ($scon(%scon).server != $null) { 
                $iif(%_awayn == 1, scon %scon nick $scon(%scon).me $+ %awayn, scon %scon nick %away.pr.nick)
                set %awayserv $addtok(%awayserv,$scon(%scon).server,44)
                set %backnick_ [ $+ [ $scon(%scon).server ] ] $scon(%scon).me 
              }
              dec %scon
            }
            halt
          }
          else {
            set %awayreason_ [ $+ [ $server ] ] $$?="Away reason?"
            set %_away Single
            set %awayserv $addtok(%awayserv,$server,44)
            if (%AutoAway_ [ $+ [ $server ] != $null) { unset %AutoAway_ [ $+ [ $server ] }
            set %backnick_ [ $+ [ $server ] ] $me 
            set %awaytime_ [ $+ [ $server ] ] $ctime
            $iif(%_awayn == 1, nick $me $+ %awayn, nick %away.pr.nick)
            ame [:] Away Mode Enabled.Reason: %awayreason_ [ $+ [ $server ] ] [:] 
            set %atmsg_ [ $+ [ $server ] ] [:] Still Away.Reason: %awayreason_ [ $+ [ $server ] ] [:]
            .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
            .away %awayreason_ [ $+ [ $server ] ] 
            halt
          }
        }
        else {
          set %awayreason_ [ $+ [ $server ] ] $$?="Away reason?"
          set %_away Single
          set %awayserv $addtok(%awayserv,$server,44)
          if (%AutoAway_ [ $+ [ $server ] != $null) { unset %AutoAway_ [ $+ [ $server ] }
          set %backnick_ [ $+ [ $server ] ] $me 
          set %awaytime_ [ $+ [ $server ] ] $ctime
          $iif(%_awayn == 1, nick $me $+ %awayn, nick %away.pr.nick)
          ame [:] Away Mode Enabled.Reason: %awayreason_ [ $+ [ $server ] ] [:] 
          set %atmsg_ [ $+ [ $server ] ] [:] Still Away.Reason: %awayreason_ [ $+ [ $server ] ] [:]
          .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
          .away %awayreason_ [ $+ [ $server ] ] 
          halt
        }
      }
      if (%_away != Multi && %_away == Single && $findtok(%awayserv,$server,1,44) != $null) {
        echo -a 7°14 $+ $time $+ 7° 7* 14You are already away @7 $server $+ 14!
        halt
      }
      if (%_away != Multi && %_away == Single && $findtok(%awayserv,$server,1,44) == $null) {
        set %awayreason_ [ $+ [ $server ] ] $$?="Away reason?"
        set %_away Single
        set %awayserv $addtok(%awayserv,$server,44)
        if (%AutoAway_ [ $+ [ $server ] != $null) { unset %AutoAway_ [ $+ [ $server ] }
        set %backnick_ [ $+ [ $server ] ] $me 
        set %awaytime_ [ $+ [ $server ] ] $ctime
        $iif(%_awayn == 1, nick $me $+ %awayn, nick %away.pr.nick)
        ame [:] Away Mode Enabled.Reason: %awayreason_ [ $+ [ $server ] ] [:]
        set %atmsg_ [ $+ [ $server ] ] [:] Still Away.Reason: %awayreason_ [ $+ [ $server ] ] [:]
        .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
        .away %awayreason_ [ $+ [ $server ] ] 
        halt
      }
      if (%_away == Multi) { 
        echo -a 7°14 $+ $time $+ 7° 7* 14You are already away @7 All Servers14!
        halt 
      }  
    }
    if ($did == 2) { 
      if (%dis.aw.snd == On) { .sound on }
      if (%_away == Single) {
        if ($findtok(%awayserv,$server,1,44) != $null) {
          if (%AutoAway_ [ $+ [ $server ] ] == 1) { 
            unset %AutoAway_ [ $+ [ $server ] ]
            resetidle 0
            nick %backnick_ [ $+ [ $server ] ]
            unset set %atmsg_ [ $+ [ $server ] ]
            set %awayserv $remtok(%awayserv,$server,1,44)
            if (%away.disc_ [ $+ [ $server ] ] >= 1) {
              ame [:] Auto Away Disabled After $duration($calc( $ctime - %awaytime_ [ $+ [ $server ] ] )) [:] ( $+ %away.disc_ [ $+ [ $server ] ] dC's)
            }
            else {
              ame [:] Auto Away Disabled After $duration($calc( $ctime - %awaytime_ [ $+ [ $server ] ] )) [:] (nO dC's)
            }
            .timeraway_ [ $+ [ $server ] ] off
            unset %backnick_ [ $+ [ $server ] ]
            unset %awayreason_ [ $+ [ $server ] ]
            unset %awaytime_ [ $+ [ $server ] ]
            unset %away.disc_ [ $+ [ $server ] ]
            if ($gettok(%awayserv,1,46) == $null) { unset %_away }
            .timer 1 2 away 
            halt
          }
        } 
        if (%AutoAway_ [ $+ [ $server ] ] != 1) { 
          resetidle 0
          .timeraway_ [ $+ [ $server ] ] off
          set %awayserv $remtok(%awayserv,$server,1,44)
          nick %backnick_ [ $+ [ $server ] ]
          if (%away.disc_ [ $+ [ $server ] ] >= 1) { ame [:] Away Mode Disabled After $duration($calc( $ctime - %awaytime_ [ $+ [ $server ] ] )) $+ .Reason Was: %awayreason_ [ $+ [ $server ] ] [:] ( $+ %away.disc_ [ $+ [ $server ] ] dC's) }
          else { ame [:] Away Mode Disabled After $duration($calc( $ctime - %awaytime_ [ $+ [ $server ] ] )) $+ .Reason Was: %awayreason_ [ $+ [ $server ] ] [:] (nO dC's) }
          unset %atmsg_ [ $+ [ $server ] ]
          unset %awayreason_ [ $+ [ $server ] ]
          unset %away.disc_ [ $+ [ $server ] ]
          unset %backnick_ [ $+ [ $server ] ]
          unset %awaytime_ [ $+ [ $server ] ]
          if ($gettok(%awayserv,1,46) == $null) { unset %_away }
          .timer 1 2 away
          halt
        }
      }
      if (%_away == Multi) {
        set %scon $scon(0)
        while (%scon > 0) {
          if ($scon(%scon).server != $null) { 
            scon %scon resetidle 0
            $iif(%away.disc_ [ $+ [ $scon(%scon).server ] ] >= 1, scon %scon ame [:] Away Mode Disabled After $duration($calc( $ctime - %awaytime )) $+ .Reason Was: %awayreason [:] ( $+ %away.disc_ [ $+ [ $scon(%scon).server ] ] dC's), scon %scon ame [:] Away Mode Disabled After $duration($calc( $ctime - %awaytime )) $+ .Reason Was: %awayreason [:] (nO dC's)) 
            set %awayserv $remtok(%awayserv,$scon(%scon).server,1,44)
            scon %scon nick %backnick_ [ $+ [ $scon(%scon).server ] ]
          }
          dec %scon
        } 
        unset %_away
        .timeraway.ms.ame off
        unset %AutoAway_ [ $+ [ $server ] 
        unset %atmsg
        unset %awaytime
        unset %awayreason
        scon -a away
        halt
      }
    } 
    if ($did == 3) { 
      if (%_away == Single) {
        if ($findtok(%awayserv,$server,1,44) != $null) && (%AutoAway_ [ $+ [ $server ] ] == 1) { 
          unset %AutoAway_ [ $+ [ $server ] ] 
          unset %atmsg_ [ $+ [ $server ] ]
        }
        set %awayreason_ [ $+ [ $server ] ] $$?="New away reason?"
        set %awaytime_ [ $+ [ $server ] ] $ctime
        .timeraway_ [ $+ [ $server ] ] off
        .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
        set %atmsg_ [ $+ [ $server ] ] [:] Still Away.Reason: %awayreason_ [ $+ [ $server ] ] [:]
        ame [:] Away Reason Changed To: %awayreason_ [ $+ [ $server ] ] [:]
        .away %awayreason_ [ $+ [ $server ] ] 
      }
      if (%_away == Multi) {
        set %awayreason $$?="Away reason?"
        set %awaytime $ctime
        .timeraway.ms.ame off
        set %atmsg [:] Still Away.Reason: %awayreason [:]
        scon -a ame [:] Away Reason Changed To: %awayreason [:]
        .timeraway.ms.ame 0 %amereasondelay scon -a ame %atmsg
        scon -a away %awayreason 
      }
    }
    if ($did == 5) { 
      if ($did(5).state == 1) { 
        set %dis.aw.snd On
      .sound off
      } 
      else { 
      .sound on
        set %dis.aw.snd Off 
      }
    }
    if ($did == 7) {
      if ($did(7).state == 1) { 
        set %AAWAY On 
      } 
      else { 
        set %AAWAY Off 
      }
    }
    if ($did == 12) { 
      if ($did(12).state == 1) { 
        set %amereason On
      } 
      else { 
        set %amereason Off 
      }
    }
    if ($did == 15) { did -u $dname 17 | set %_awayn 1 }
    if ($did == 17) { did -u $dname 15 | set %_awayn 2 }
  }
  if ($devent == edit) {
    if ($did == 8) { set %away.idle $calc($did($dname,8).text * 60) }
    if ($did == 13) {
      set %amereasondelay $calc($did($dname,13).text * 60)
      echo -a 7°14 $+ $time $+ 7° 7* 14Changes 7(/ame reason every $duration(%amereasondelay) $+ )14 will work for the next Away's and won't affect active Away's14! 
    }
    if ($did == 16) { set %awayn $did($dname,16) }
    if ($did == 18) { set %away.pr.nick $did($dname,18) }
  }
}
alias check.ame {
  if (%amereason == On) {
    if (%_away == Single) { 
      if (%atmsg_ [ $+ [ $server ] ] && $findtok(%awayserv,$server,1,44)) { 
        ame %atmsg_ [ $+ [ $server ] ] 
      }
    }
  }
}
alias auto.away {
  if ($idle > %away.idle && $away == $false && %AAWAY == On && $findtok(%awayserv,$server,1,44) == $null) {
    if (%dis.aw.snd == On) {
      .sound off
    }
    ame [:] Auto Away After $duration(%away.idle) Idle [:] 
    .timeraway_ $+ $server 0 %amereasondelay check.ame
    set %atmsg_ [ $+ [ $server ] ] [:] Still Away After $duration(%away.idle) Idle [:]
    set %_away Single
    set %awayserv $addtok(%awayserv,$server,44)
    set %backnick_ [ $+ [ $server ] ] $me 
    set %awaytime_ [ $+ [ $server ] ] $ctime
    set %AutoAway_ [ $+ [ $server ] ] 1
    set %awayreason_ [ $+ [ $server ] ] [:] Auto Away After $duration(%away.idle) Idle [:]
    $iif(%_awayn == 1, nick $me $+ %awayn, nick %away.pr.nick)
    .away [:] Auto Away After $duration(%away.idle) Idle [:]
  }
}
on *:load:{
echo -ta *** You have loaded dRain's away system ;)
  set %awayn [aFk]
  set %away.pr.nick AWAYYY
  set %away.idle 3600
  set %_awayn 1
  set %AAWAY On
  set %amereasondelay 3600
  set %amereason On
  set %away.idle 3600
}
on *:unload:{
echo -ta *** You have unloaded dRain's away system :(
  timeraway* off
  timeraway_* off
  timeraway.ms.ame off
  unset %_awayn
  unset %AAWAY
  unset %away.idle
  unset %amereason
  unset %amereasondelay
  unset %awayn
  unset %away.pr.nick
  unset %_away
  unset %AutoAway*
  unset %awayserv*
  unset %awayreason*
  unset %backnick*
  unset %awaytime*
  unset %away.disc*
  unset %atmsg*
  unset %dis.aw.snd
}
on *:start:{
  unset %_away
  unset %AutoAway*
  unset %awayserv*
  unset %awayreason*
  unset %backnick*
  unset %awaytime*
  unset %away.disc*
  unset %atmsg*
}
on *:DISCONNECT: { if ($findtok(%awayserv,$server,1,44) != $null) { nick %backnick_ [ $+ [ $server ] ] } }
on *:CONNECT:{
  .timeraway [ $+ [ $server ] ] 0 60 auto.away
  if ($findtok(%awayserv,$server,1,44) != $null) { 
    if ($me != %backnick_ [ $+ [ $server ] ]) { nick %backnick_ [ $+ [ $server ] ] }
    inc %away.disc_ [ $+ [ $server ] ] 
    $iif(%_awayn == 1, .timer 1 10 nick $me $+ %awayn, .timer 1 10 nick %away.pr.nick)
    if (%_away == Single) {
      if (%AutoAway_ [ $+ [ $server ] ] == 1) {
        .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
        .timer 1 10 ame [:] Auto Away After $duration(%away.idle) Idle [:] (Auto Away after DC)
        away [:] Auto Away After $duration(%away.idle) Idle [:] 
      }
      if (%AutoAway_ [ $+ [ $server ] ] != 1) {
        .timeraway_ [ $+ [ $server ] ] 0 %amereasondelay check.ame
        .timer 1 10 ame [:] Away Mode Enabled.Reason: %awayreason_ [ $+ [ $server ] ] [:] (Auto Away after DC) 
        away %awayreason_ [ $+ [ $server ] ] 
      }
    }
    if (%_away == Multi) {
      .timeraway.ms.ame 0 %amereasondelay scon -a ame %atmsg
      .timer 1 10 ame [:] Away Mode Enabled.Reason: %awayreason [:] (Auto Away after DC) 
      away %awayreason.ms 
    }
  }
}

Comments

Sign in to comment.
dRain   -  May 21, 2010

@Aucun50 and @WorldDMT thnx for the advises.. i will update the code asap!
@Antrophobic With the code copied/pasted in a clean mirc and running the initialization, it works.. :/

Edit: Some splay events were deleted..

 Respond  
Anthrophobic   -  May 18, 2010

Found a bug, when you go away on all servers you are connected to you can not come back from being away. You can click the button, but nothing happens.

 Respond  
WorldDMT   -  May 18, 2010

for init u dont need to use did -ra $dname ID %var just put the %var in the dialog

like this

dialog AW {
  title "Away System"
  size -1 -1 195 83
  option dbu
  button "Go Away", 1, 6 8 37 12
  button "Come Back", 2, 6 42 37 12
  button " Change Reason", 3, 6 20 37 22, multi
  check " Set Prefix With Your nick +", 15, 49 6 76 8
  edit %awayn, 16, 125 4 65 11, autohs
  check " Set a Prefixed Away nick:", 17, 49 17 73 10
  edit %away.pr.nick, 18, 125 17 65 11, autohs
  check " Auto Away After idling for", 7, 49 32 73 10
  edit $calc(%away.idle / 60), 8, 125 31 19 11, autohs center
  text " minutes!", 9, 146 33 27 8
  button "Exit!", 10, 153 69 37 12, ok
  check " */ame* Reason every", 12, 49 45 73 10
  edit $calc(%amereasondelay / 60), 13, 125 45 19 11, autohs center
  text " minutes!", 6, 146 48 27 8
  text "Simple/Auto/Multi Away System by dRain ;P", 4, 6 71 106 8, disable
  check " Disable Sounds While Away", 5, 49 57 79 10
}
on *:DIALOG:AW:*:*: {
  if $devent == init {
    if (%AAWAY == On) did -c $dname 7
    if (%amereason == On) did -c $dname 12
    if (%dis.aw.snd == On) did -c $dname 5
    did -c $dname $iif(%_awayn == 1,15,17)
  }
 Respond  
Aucun50   -  May 17, 2010

I noticed you have a lot of unset's, you could set all your vars with a prefix like %myscript.varname then when you go to unset use "unset %myscript.*"

 Respond  
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.