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