All pastes #1803828 Raw Edit

Miscellany

public text v1 · immutable
#1803828 ·published 2010-02-20 17:04 UTC
rendered paste body
; ==============================================
;  Name:     Session Resume
;  Version:  06/01/10 01:00 (r0004)
;  Author:   Alyx/TigerTails (AlyxUK@gmail.com)      
; ==============================================
;
; Description:
;  This script will automaticaly rejoin servers and channels when you open mIRC.
;  No commands are neccersary to change the autojoin list, when you close mIRC
;  the list of current servers and channels are logged.
;
; Notes:
;  If you are running this script for the FIRST TIME, disconnect and reconnect 
;  to all servers. Sorry, it's neccersary for how this script works.
;
; Changelog:
;  06/01/10:
;   01:00 r0004:
;    ! @XXXX: Fixed an important bug in the "closed or disconnected" detection.
;  24/12/09:
;   18:04 r0003:
;    * Automatic NickServ identification, based on your previous authentication
;  23/12/09:
;   11:54 r0002:
;    ! @0001: Closing mIRC will no longer remove all servers from the join list
;             Bit of a hack-up fix, but it does the job!
;    ! @XXXX: Many fixes, a lot of code changed.
;
;  20/12/09:
;   03:21 r0001:
;    * Initial script.
;    # @0001: Closing mIRC results in the removal of all servers from the join list.
;
; * = New Feature (...)
; ! = Fixed bug 
; # = Known bug
;
; ==============================================

on *:START:{
  var %i = 1
  while ($ini(SessionResume.ini,%i) != $null) {
    if ($readini(SessionResume.ini,$ini(SessionResume.ini,%i),1) != $null) /server $iif(%i == 1,$null,-m) $ini(SessionResume.ini,%i)
    inc %i
  }
}

on *:CONNECT:{
  /remini SessionResume.ini $server 0
  /writeini SessionResume.ini $server 1 1

  if ($readini(SessionResume.ini,$server,ns) != $null) $readini(SessionResume.ini,$server,ns)

  var %i = 2
  while ($readini(SessionResume.ini,$server,%i) != $null) {
    if ($readini(SessionResume.ini,$server,%i) != empty) /join $readini(SessionResume.ini,$server,%i)
    inc %i
  }
}

on *:DISCONNECT:{
  /writeini SessionResume.ini $server 0 1
  .timer -o 1 1 /sessionresume_checkserver $server 
}

on *:JOIN:#:{
  if ($nick == $me) {
    var %i = 2
    while ($readini(SessionResume.ini,$server,%i) != $null) {
      if ($readini(SessionResume.ini,$server,%i) == empty) || ($readini(SessionResume.ini,$server,%i) = $chan) /break
      inc %i
    }
    /writeini SessionResume.ini $server %i $chan
  }
}

on *:PART:#:{
  if ($nick == $me) {
    var %i = 2
    while ($readini(SessionResume.ini,$server,%i) != $null) {
      if ($readini(SessionResume.ini,$server,%i) == $chan) {
        /writeini SessionResume.ini $server %i empty
        /break
      }
      inc %i
    }
  }
}

on *:INPUT:*:{
  if ($ctrlenter == $false) {
    if (/msg isin $1) && ($2 == NickServ) && ($3 == IDENTIFY) && ($4 != $null) /writeini SessionResume.ini $server ns $1-
    if (/ns isin $1) && ($2 == identify) && ($3 != $null) /writeini SessionResume.ini $server ns $1-
  }
}

alias sessionresume_checkserver {
  if ($readini(SessionResume.ini,$1,0) != $null) /remini SessionResume.ini $1
}