All pastes #1725475 Raw Edit

Session Resume by Alyx

public text v1 · immutable
#1725475 ·published 2009-12-24 00:25 UTC
rendered paste body
; ==============================================
;  Name:     Session Resume
;  Version:  23/12/09 11:54 (r0002)
;  Author:   Alyx/TigerTails (AlyxUK@gmail.com)      
; ==============================================
;
; 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:
;  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

  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 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
    }
  }
}

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