All pastes #1854944 Raw Edit

Session Resume r0005 by Alyx

public text v1 · immutable
#1854944 ·published 2010-04-02 13:13 UTC
rendered paste body
; ==============================================
;  Name:     Session Resume
;  Version:  20/03/10 21:04 (r0005)
;  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. It is neccersary for this script to work.
;
; Changelog:
;  20/03/10:
;   21:04 r0005:
;    ! @XXXX: Fixed a small irritating bug, now nickserv info always stays
;  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) .timer 1 %i /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) {
    var %nspass = $readini(SessionResume.ini,$1,ns)
    /remini SessionResume.ini $1
    if (%nspass != $null) /writeini SessionResume.ini $1 ns %nspass
  }
}