MSN Messenger for mIRC — File Browser
MSNMessengerformIRCv3.46 / MSNMessengerformIRCv3.46 / msn / msn.mrc
msn.mrc — 35.14 KB — Download this file
;--------------------------------------------------------------------------------------------------------------------------------
;MSN Messenger for mIRC
;Andy Carvell 2003-2005
;Version 3.46
;Pass this on complete to anyone you know by any means.
;Do not steal bits from this code for your own use.
;Check http://www.burningimage.net/msn for updates
;Editing this code will result in errors, which the creator will
;not provide support for.
;--------------------------------------------------------------------------------------------------------------------------------
;Thanks to Erdinc for major help with Proxy/Socks :) [ Erdinc@hotmail.com ]
;Thanks for foreign character help: vIndEx, Jorge, Madis, Per Ståle Kvam, Sen, Webmaster de Niputagracia.com, Francisco del Valle, Lasse Brun, Ferminho Stealth Angel
;--------------------------------------------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------------------------------------------
;Thanks to Artwerks and sax for their help
;Thanks to Dan from the forum.
;Thanks to rom for the code in msnauth2kxp.mrc
;blah.dll is by sax
;listfiles.dll is by Misanthrop
;--------------------------------------------------------------------------------------------------------------------------------
on *:LOAD:{
.load -rs $shortfn($scriptdir) $+ /msnlog.mrc
.load -rs $shortfn($scriptdir) $+ /msndialog.mrc
.load -rs $shortfn($scriptdir) $+ /msnnewver.mrc
.load -rs $shortfn($scriptdir) $+ /msnfilercvd.mrc
.load -rs $shortfn($scriptdir) $+ /msnfilesend.mrc
.load -rs $shortfn($scriptdir) $+ /msnauth.mrc
.load -rs $shortfn($scriptdir) $+ /msnauth2kxp.mrc
set %msn.log 1
set %msn.chat.style $no
set %msn.useproxy no
set %msn.server messenger.hotmail.com
set %msn.server.port 1863
set %msn.sounds on
set %msn.messenger.font Verdana 10
set %msn.maxidle 600
set %msn.autoidle no
set %msn.showtype YES
set %msn.motd Welcome to MSN Messenger for mIRC!
set %msn.background $yes
set %msn.autoconnect $no
set %msn.awaysync $no
set %msn.mailnotification yes
set %msn.chat.style msn
set %msn.window.minimise $no
set %msn.showlogon $true
echo -a ---
echo -a MSN Messenger for mIRC v $+ $msnversion
echo -a /msn to connect.
echo -a /msncontrol for the control panel.
echo -a Alternatively, use the menu in mIRC.
echo -a
echo -a Commands:
echo -a /msn.name <new msn name>
echo -a /msn.status <status> (type /msn.status help for more information)
echo -a ---
if ( $version < 6.03 ) { echo -a $+ MSN Messenger for mIRC does not work with anything lower than mIRC 6.03. You WILL experience problems with password authentication. Download the latest version at http://www.mirc.com/get.html }
if ( $os != 2K ) && ( $os != XP ) { echo -a You are not using Windows 2000 or Windows XP. It is therefore highly likely that you will experience problems with password authentication }
}
on *:START:{
if ( %msn.autoconnect == $yes ) {
if ( %msn.rememberpass == 0 ) { echo -a Error: You must have 'Remember my username and password' enabled for MSN for mIRC to automatically connect to MSN }
msnstart }
}
alias msncontrol {
dialog -m control control
}
alias msn {
dialog -m connect connect
if ( %msn.rememberpass == 1 ) { did -c connect 9 }
}
alias msnstart {
newver
:top
msnauth
;hadd -m msnauth path $iif(*@hotmail.com iswm %msn.user,loginnet.passport.com,$iif(*@msn.com iswm %msn.user,msnialogin.passport.com,login.passport.com))
hadd -m msnauth path $iif(*@hotmail.com iswm %msn.user,loginnet.passport.com,$iif(*@hotmail.co.uk iswm %msn.user,loginnet.passport.com,$iif(*@msn.com iswm %msn.user,msnialogin.passport.com,login.passport.com)))
hadd -m messenger email %msn.user
hadd -m messenger password $decode(%msn.pass,pwd)
delgroupinfo
if ( %msn.user == $null ) { halt }
set %msn.main 0
sockclose msn
window -c @Messenger
if (%msn.window.minimise == $yes) {
window -l50k0nSz @Messenger %msn.messenger.font $shortfn($scriptdir) $+ /msn.ico
}
else {
window -l50k0Sz @Messenger %msn.messenger.font $shortfn($scriptdir) $+ /msn.ico
}
if ( %msn.background == $yes ) { background -f @Messenger $shortfn($scriptdir) $+ bg.jpg }
else { background -x @Messenger }
if (%msn.autoidle = yes) { .timer 0 30 .checkmsnidle }
aline @Messenger v $+ $msnversion
aline @Messenger $+ ---- Message of the Day ----
aline @Messenger %msn.motd
if (%msn.useproxy == no) sockopen msnno %msn.server %msn.server.port
elseif (%msn.useproxy == proxy) sockopen msnproxy %msn.server.proxy %msn.server.proxy.port
elseif (%msn.useproxy == socks) sockopen msnsocks %msn.server.socks %msn.server.socks.port
else aline @messenger 4Error! Please reset your proxy settings.
aline @Messenger 10*** Connecting...
}
on *:sockopen:msnsocks:{
bset &binvar 1 4 | bset &binvar 2 1 | bset &binvar 3 $int($calc(%msn.server.port / 256)) | bset &binvar 4 $calc(%msn.server.port % 256) | bset &binvar 5 $gettok(%msn.server,1,46)
bset &binvar 6 $gettok(%msn.server,2,46) | bset &binvar 7 $gettok(%msn.server,3,46) | bset &binvar 8 $gettok(%msn.server,4,46) | bset &binvar 9 0
if ($sock($sockname).status == active) {
sockwrite $sockname &binvar
aline @messenger 10*** Connecting to MSN via Socks...
sockrename $sockname msn
.timer 1 3 sendmsn VER %msn.main MSNP8 CVRO
.timermsnsocks 1 3 sendmsn INF $calc(%msn.main + 1 )
}
}
on *:sockopen:msnproxy:{
if ($sock($sockname).status == active) {
sockwrite -n $sockname CONNECT %msn.server $+ : $+ %msn.server.port http/1.0
sockrename $sockname msn
aline @messenger 10*** Connecting to MSN through HTTP Proxy...
.timermsnprox 1 3 sendmsn VER %msn.main MSNP8 CVR0
.timermsnprox2 1 6 sendmsn INF $calc(%msn.main + 1)
}
}
on *:sockopen:msnno:{
if ( %msn.debug == 1 ) { aline @messenger 10*** Connected }
sockrename $sockname msn
sendmsn VER %msn.main MSNP8 CVRO
}
alias sendmsn {
if ( $sock(msn) != $null ) {
sockwrite -n msn $1-
if ( %msn.debug == 1 ) { aline @messenger 4 $+ $1- }
inc %msn.main 1
}
}
on *:close:@:{
if ( $target == @Messenger ) { sockclose msn | sockclose chat.* | halt }
sockclose chat. $+ $right($target, $calc($len($target) - 1))
}
on *:sockread:msn:{
if ($sockerr > 0) return
:nextread
if ( $sock($sockname) == $null ) { halt }
sockread %msn.data
set %msn.data.nodecode %msn.data
if ($sockbr == 0) return
if ( %msn.data == $null ) { goto fdf }
if ( $gettok(%msn.data,1-3,32) == USR $calc(%msn.main - 1) OK ) {
set %msn.name $rawurldecode( $gettok(%msn.data,5,32))
}
set %msn.data $rawurldecode(%msn.data)
set %msn.data $replace(%msn.data,Â,$null)
if ( %msn.debug == 1 ) { aline @messenger %msn.data | echo %msn.data }
:fdf
if ( %msn.data == VER $calc(%msn.main - 1) MSNP8 ) {
hadd -m messenger session $calc($hget(messenger,session) + 1)
sendmsn CVR %msn.main 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS %msn.user
}
if ( $left(%msn.data,3) == CVR ) {
hadd -m messenger session $calc($hget(messenger,session) + 1)
sendmsn USR %msn.main TWN I %msn.user
}
if ( $left(%msn.data,3) == XFR ) && ( $gettok(%msn.data,3,32) != SB ) {
set %msn.newserver $gettok(%msn.data,4,32)
sockclose msn
if ( %msn.debug == 1 ) { aline @messenger 4 $+ Switching to server %msn.newserver ... }
set %msn.server $gettok(%msn.newserver,1,58)
set %msn.server.port $gettok(%msn.newserver,2,58)
if (%msn.useproxy == no) .timer 1 1 sockopen msnno %msn.server %msn.server.port
elseif (%msn.useproxy == proxy) .timer 1 1 sockopen msnproxy %msn.server.proxy %msn.server.proxy.port
elseif (%msn.useproxy == socks) .timer 1 1 sockopen msnsocks %msn.server.socks %msn.server.socks.port
else aline @messenger 4Error! Please reset your proxy settings.
return
}
if ( $left(%msn.data,11) == USR $calc(%msn.main - 1) MD5 S ) { sendmsn USR %msn.main MD5 S $md5($gettok(%msn.data,5,32) $+ %msn.pass) }
if ( $left(%msn.data,3) = ILN ) {
set %msn.nick $gettok(%msn.data,5-,32)
set %msn.temp4 $calc($numtok(%msn.nick,32)-1)#
set %msn.nick $gettok(%msn.nick,1 - %msn.temp4 ,32)
if ( $gettok(%msn.data,3,32) == NLN ) { aline -l @Messenger 3 $+ %msn.nick 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == AWY ) { aline -l @Messenger 7 $+ %msn.nick [AWAY] 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == BSY ) { aline -l @Messenger 13 $+ %msn.nick [BUSY] 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == BRB ) { aline -l @Messenger 10 $+ %msn.nick [BRB] 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == PHN ) { aline -l @Messenger 11 $+ %msn.nick [PHN] 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == LUN ) { aline -l @Messenger 6 $+ %msn.nick [LUNCH] 15< $+ $gettok(%msn.data,4,32) $+ > }
if ( $gettok(%msn.data,3,32) == IDL ) { aline -l @Messenger 5 $+ %msn.nick [IDLE] 15< $+ $gettok(%msn.data,4,32) $+ > }
}
if ( $left(%msn.data,3) == NLN ) {
set %msn.nick $gettok(%msn.data,4-,32)
set %msn.temp4 $calc($numtok(%msn.nick,32)-1)
set %msn.nick $gettok(%msn.nick,1 - %msn.temp4 ,32)
if ( $gettok(%msn.data,2,32) == NLN ) {
if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { aline -l @Messenger 3 $+ %msn.nick 15< $+ $gettok(%msn.data,3,32) $+ > | goto willy }
rline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) 3 $+ %msn.nick 15< $+ $gettok(%msn.data,3,32) $+ >
:willy
if ( Messenger !isin $active ) && ( %msn.showlogon == $true ) { echo -a 7 $+ %msn.nick has logged on. }
aline @Messenger $timestamp 7 $+ %msn.nick has logged on.
if ( %msn.sounds == on ) { splay $shortfn($scriptdir) $+ blip.wav }
}
if ( $gettok(%msn.data,2,32) == AWY ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set1 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set1 | aline -l @Messenger 7 $+ %msn.nick [AWAY] 15< $+ $gettok(%msn.data,3,32) $+ > }
if ( $gettok(%msn.data,2,32) == BSY ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set2 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set2 | aline -l @Messenger 13 $+ %msn.nick [BUSY] 15< $+ $gettok(%msn.data,3,32) $+ > }
if ( $gettok(%msn.data,2,32) == BRB ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set3 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set3 | aline -l @Messenger 10 $+ %msn.nick [BRB] 15< $+ $gettok(%msn.data,3,32) $+ > }
if ( $gettok(%msn.data,2,32) == PHN ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set4 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set4 | aline -l @Messenger 11 $+ %msn.nick [PHN] 15< $+ $gettok(%msn.data,3,32) $+ > }
if ( $gettok(%msn.data,2,32) == LUN ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set5 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set5 | aline -l @Messenger 6 $+ %msn.nick [LUNCH] 15< $+ $gettok(%msn.data,3,32) $+ > }
if ( $gettok(%msn.data,2,32) == IDL ) { if ( $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) == $null ) { goto set6 } | dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,3,32) $+ >,1,1) | :set6 | aline -l @Messenger 5 $+ %msn.nick [IDLE] 15< $+ $gettok(%msn.data,3,32) $+ > }
}
if ( $left(%msn.data,3) == FLN ) {
set %msn.temp $gettok($line(@Messenger,$fline(@Messenger,*< $+ $gettok(%msn.data,2,32) $+ >,1,1),1),1,60)
set %msn.temp $mid($gettok($line(@Messenger,$fline(@Messenger,*< $+ $gettok(%msn.data,2,32) $+ >,1,1),1),1,60),3)
set %msn.temp $left(%msn.temp,$calc($len(%msn.temp)-4))
aline @Messenger $timestamp 4 $+ %msn.temp logged off.
dline -l @Messenger $fline(@Messenger,*< $+ $gettok(%msn.data,2,32) $+ >,1,1)
}
if ( $left(%msn.data,3) == CHL ) {
sendmsn QRY %msn.main msmsgs@msnmsgr.com 32
aline -p @messenger 10*** Online Contacts Received, displayed on the right
sockwrite msn $md5( $gettok(%msn.data,3,32) $+ Q1P7W2E4J9R8U3S5)
}
if ( $left(%msn.data,3) == XFR ) && ( $gettok(%msn.data,3,32) == SB ) {
set %msn.chatserver $gettok(%msn.data,4,32)
sockopen chat. $+ %msn.clickemail $gettok(%msn.chatserver,1,58) $gettok(%msn.chatserver,2,58)
set %msn.chat.hash $gettok(%msn.data,6,32)
msnopenwindow %msn.clickemail
aline @ $+ %msn.clickemail 10*** Please wait for the user to join... ***
}
if ( $left(%msn.data,3) == RNG ) {
set %msn.chat.hash $gettok(%msn.data,5,32) $gettok(%msn.data,2,32)
set %msn.chatserver $gettok(%msn.data,3,32)
set %msn.status answering
sockclose chat. $+ $gettok(%msn.data,6,32)
sockopen chat. $+ $gettok(%msn.data,6,32) $gettok(%msn.chatserver,1,58) $gettok(%msn.chatserver,2,58)
msnopenwindow $gettok(%msn.data,6,32)
}
if ( $left(%msn.data,3) == 911 || $left(%msn.data,3) == 911 ) { beep | echo -a 4ERROR: Authentication failed }
if ( $left(%msn.data,3) == LST ) && ( $gettok(%msn.data,3,32) == BL ) {
window -lk0zd @BlockList
aline -l @BlockList 14 $gettok(%msn.data,8-,32) 15 $+ < $+ $gettok(%msn.data,7,32) $+ >
}
if ( $gettok(%msn.data,1,32) == Inbox-Unread: ) && ( $gettok(%msn.data,2,32) != 0 ) { set %msn.newmail You have $gettok(%msn.data,2,32) new e-mail message(s) | if ( %msn.mailnotification == yes ) { dialog -m mail mail } }
if ( $gettok(%msn.data,1-2,32) == Content-Type: text/x-msmsgsemailnotification; ) { set %msn.newmail You have 1 new e-mail message | if ( %msn.mailnotification == yes ) { dialog -m mail mail } }
if ( $gettok(%msn.data,1,32) == LSG ) {
set %msn.group. $+ $rawurldecode( $gettok(%msn.data.nodecode,2,32) ) $+ .name $replace( $rawurldecode( $gettok(%msn.data.nodecode,3,32) ), $chr(32) ,_)
}
if ( $left(%msn.data,3) == LST ) && ( $gettok(%msn.data,3,32) == FL ) {
window -lk0d @ $+ $replace($rawurldecode( %msn.tab. [ $+ [ $gettok(%msn.data.nodecode,9,32) ] ] ),$chr(32),$null)
set %msn.name.temp $left($gettok(%msn.data,8-,32),$calc($len($gettok(%msn.data,8-,32))-2))
aline -l @ $+ $replace($rawurldecode( %msn.tab. [ $+ [ $gettok(%msn.data.nodecode,9,32) ] ] ),$chr(32),$null) 14 %msn.name.temp 15 $+ < $+ $gettok(%msn.data,7,32) $+ >
}
if ( $gettok(%msn.data,1,32) == USR && $gettok(%msn.data,3,32) == TWN && $gettok(%msn.data,4,32) == S ) {
aline -p @messenger 10*** Authorising via SSL... (this may take a while)
if ( $os == 2K ) || ( $os == XP ) {
hadd -m msnauth info Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in= $+ $replace(%msn.user,@,$(%40,0)) $+ ,pwd= $+ $decode(%msn.pass,pwd) $+ , $+ $gettok(%msn.data,5-,32)
msnauth2
}
else {
set %vknc $gettok(%msn.data,5-,32)
openssl
}
}
if ( $left(%msn.data,8) == ClientIP ) {
sendmsn SYN %msn.main 0
newver in
}
if ($left(%msn.data,3) = SYN) {
set %_t $gettok(%msn.data,4,32)
set %_i 0
}
if ($left(%msn.data,3) = LST) {
inc %_i
if (%_i = %_t) {
if ( %msn.chg == 0 ) { sendmsn CHG %msn.main NLN | titlebar @Messenger -=[ Online ]=- }
else { sendmsn CHG %msn.main HDN | titlebar @Messenger -=[ Appear Offline ]=- }
}
}
if ($left(%msn.data,3) = LST) {
mkdir $shortfn($scriptdir) $+ groups
set %msn.groupnumber $gettok(%msn.data.nodecode,5,32)
write $shortfn($scriptdir) $+ groups\ $+ [ %msn.group. [ $+ [ %msn.groupnumber ] $+ ] .name ] $+ .grp $rawurldecode( $gettok(%msn.data.nodecode,3,32) ) 15< $+ $gettok(%msn.data,2,32) $+ >
}
goto nextread
}
on *:sockclose:msn:{
window -l50k0Sz @Messenger %msn.messenger.font $shortfn($scriptdir) $+ msn.ico
aline @messenger 10*** Disconnected
titlebar @Messenger -=[ Offline ]=-
dline -l @Messenger 1- $+ $line(@Messenger,0,1)
if ( %msn.reconnect == $true && $window(@Messenger) != $null ) { msnstart }
}
on *:sockopen:chat*:{
set %msn.$gettok($sockname,2-,46) 1
msnopenwindow $gettok($sockname,2-,46)
;aline @ $+ $gettok($sockname,2-,46) 10*** Connected, Please Wait...
if ( %msn.showtype == YES ) { starttype $gettok($sockname,2-,46) }
if ( %msn.status != answering ) { sockwrite -n $sockname USR %msn.$gettok($sockname,2-,46) %msn.user %msn.chat.hash }
if ( %msn.status == answering ) { sockwrite -n $sockname ANS %msn.$gettok($sockname,2-,46) %msn.user %msn.chat.hash | unset %msn.status }
inc %msn. $+ $gettok($sockname,2-,46) 1
}
on *:sockread:chat*:{
if ($sockerr > 0) return
:nextread
if ( $sock($sockname) == $null ) { halt }
sockread -f %msn.chat.data
if ($sockbr == 0) return
if ( %msn.chat.data == $null ) {
msnopenwindow $gettok($sockname,2-,46)
}
;aline @ $+ $gettok($sockname,2-,46) %msn.chat.data
:fdfdf
if ( $gettok(%msn.chat.data,1,32) == USR ) && ( $gettok(%msn.chat.data,3,32) == OK ) {
sockwrite -n $sockname CAL %msn.$gettok($sockname,2-,46) $gettok($sockname,2-,46)
inc %msn.$gettok($sockname,2-,46) 1
}
if ( $gettok(%msn.chat.data,1,32) == JOI ) {
if ( %msn.irc == done ) {
unset %msn.iro
halt
}
msnopenwindow $right($sockname,$calc($len($sockname)-5))
rline @ $+ $right($sockname,$calc($len($sockname)-5)) $line(@ $+ $right($sockname,$calc($len($sockname)-5)),0) 10*** $rawurldecode($gettok(%msn.chat.data,3,32)) has joined the conversation
}
if ( $left(%msn.chat.data,3) == MSG ) {
set %msn.msgnick 14 $+ $rawurldecode( $gettok(%msn.chat.data,3,32) )
set %msn.msgnick.log $rawurldecode( $gettok(%msn.chat.data,3,32) )
set %msn.email.msg $right($sockname,$calc($len($sockname)-5))
set %tmp 0
:beg
;echo -a 9 $+ %msn.chat.data
if ( %tmp == 5 ) {
if ( %msn.chat.data == $null ) {
msnopenwindow %msn.email.msg
titlebar @ $+ %msn.email.msg ----------=[ TYPING ]=----------
.timertype $+ %msn.email.msg off
.timertype $+ %msn.email.msg 1 6 titlebar @ $+ %msn.email.msg
halt
}
msnopenwindow %msn.email.msg
starttype %msn.email.msg
titlebar @ $+ %msn.email.msg
if ( $left(%msn.chat.data,24) == Invitation-Cookie: %msn.invitation.cookie ) { declinefile }
if ( $left(%msn.chat.data,17) == Invitation-Cookie ) { goto endofsay }
if ( $left(%msn.chat.data,11) == Application ) { goto filebit }
if (%msn.chat.style == msn) {
aline -hp @ $+ %msn.email.msg $timestamp %msn.msgnick says:
aline -hp @ $+ %msn.email.msg $replace(%msn.chat.data ,Ã¥,å,ä,ä,ö,ö,Ä,Ä,Ã…,Å,Ö,Ö,Ö,Ö,õ,õ,ü,ü,á,á,é,é,$+($chr(37),20),$chr(32),è,è,à ,à,ç,ç,ê,ê,ù,ù,ë,ë,ï,ï,É,É,À,À,È,È,ô,ô,â,â,ð,°,ñ,ñ,Ñ,Ñ,á,á,é,é,Ã,í,ó,ó,ú,ú,Ã,Á,É,É,Ã,Í,Ó,Ó,Ú,Ú,ü,ü,Ü,Ü,ø,ø,æ,æ,¡,¡,¿,¿,Æ,Æ,Ø,Ø ))
}
else {
aline -hp @ $+ %msn.email.msg $timestamp 14 $+ < $+ %msn.msgnick $+ > $replace(%msn.chat.data ,Ã¥,å,ä,ä,ö,ö,Ä,Ä,Ã…,Å,Ö,Ö,Ö,Ö,õ,õ,ü,ü,á,á,é,é,$+($chr(37),20),$chr(32),è,è,à ,à,ç,ç,ê,ê,ù,ù,ë,ë,ï,ï,É,É,À,À,È,È,ô,ô,â,â,ð,°,ñ,ñ,Ñ,Ñ,á,á,é,é,Ã,í,ó,ó,ú,ú,Ã,Á,É,É,Ã,Í,Ó,Ó,Ú,Ú,ü,ü,Ü,Ü,ø,ø,æ,æ,¡,¡,¿,¿,Æ,Æ,Ø,Ø ))
}
flash @ $+ %msn.email.msg
if ( %msn.sounds == on ) { splay $shortfn($scriptdir) $+ type.wav }
addlog %msn.email.msg $urlencode(%msn.msgnick.log) %msn.chat.data
:endofsay
return
}
:filebit
sockread -f %msn.chat.data
if ( %msn.chat.data == Invitation-Command: ACCEPT ) {
sockread -f %msn.temp
if ( $left(%msn.temp,25) = Invitation-Cookie: %msn.invitation.cookie ) { acceptfile }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
sockread -f %msn.temp
if ( $gettok( %msn.temp ,1,32) == IP-Address: ) { set %msn.file.ip $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == Port: ) { set %msn.file.port $gettok( %msn.temp ,2,32) }
if ( $gettok( %msn.temp ,1,32) == AuthCookie: ) { set %msn.file.authcookie $gettok( %msn.temp ,2,32) }
msnfileconnect
halt
}
if ( %msn.chat.data == Invitation-Command: INVITE ) {
sockread -f %msn.file.cookie
sockread -f %msn.file.filename
sockread -f %msn.file.filesize
msnfilercvd %msn.email.msg
halt
}
inc %tmp 1
goto beg
}
if ( $left(%msn.chat.data,3) == IRO ) {
set %msn.temp.name $rawurldecode($gettok(%msn.chat.data,6-,32))
msnopenwindow $right($sockname,$calc($len($sockname)-5))
aline @ $+ $right($sockname,$calc($len($sockname)-5)) 10*** $rawurldecode($gettok(%msn.chat.data,6,32)) has joined the conversation
set %msn.iro done
}
if ( $left(%msn.chat.data,3) == ANS ) {
msnopenwindow $gettok($sockname,2-,46)
; aline @ $+ $gettok($sockname,2-,46) 10*** %msn.temp.name has joined the conversation
}
if ( $left(%msn.chat.data,3) == BYE ) {
set %msn.temp $gettok($line(@Messenger,$fline(@Messenger,*< $+ $gettok(%msn.chat.data,2,32) $+ >,1,1),1),1,60)
set %msn.temp $mid($gettok($line(@Messenger,$fline(@Messenger,*< $+ $gettok(%msn.chat.data,2,32) $+ >,1,1),1),1,60),3)
set %msn.temp $left(%msn.temp,$calc($len(%msn.temp)-4))
window -k0ezd @ $+ $gettok($sockname,2-,46) Arial 12 $shortfn($scriptdir) $+ msn.ico
aline @ $+ $gettok($sockname,2-,46) 10*** %msn.temp has left the conversation (closed the window)
set %msn.clickemail $gettok(%msn.chat.data,2,32)
sockclose chat. $+ %msn.clickemail
sendmsn XFR %msn.main SB
}
goto nextread
}
menu @Messenger {
dclick: {
set %msn.clickemail $gettok($line(@Messenger,$1,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
sockclose chat. $+ %msn.clickemail
sendmsn XFR %msn.main SB
}
}
menu @Messenger {
Change Status
.Online:.sendmsn CHG %msn.main NLN | titlebar @Messenger -=[ Online ]=-
.Away:.sendmsn CHG %msn.main AWY | titlebar @Messenger -=[ Away ]=-
.Busy:.sendmsn CHG %msn.main BSY | titlebar @Messenger -=[ Busy ]=-
.Be Right Back:.sendmsn CHG %msn.main BRB | titlebar @Messenger -=[ Be Right Back ]=-
.Phone:.sendmsn CHG %msn.main PHN | titlebar @Messenger -=[ Phone ]=-
.Lunch:.sendmsn CHG %msn.main LUN | titlebar @Messenger -=[ Lunch ]=-
.Appear Offline:.sendmsn CHG %msn.main HDN | titlebar @Messenger -=[ Appear Offline ]=-
Control Panel:dialog -m control control
-
Block User: {
set %msn.clickemail $gettok($sline(@Messenger,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
if ( %msn.clickemail == $null ) { halt }
blockuser %msn.clickemail
}
Unblock User:{
set %msn.clickemail $gettok($sline(@Messenger,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
if ( %msn.clickemail == $null ) { halt }
unblockuser %msn.clickemail
}
View Profile:{
set %msn.clickemail $gettok($sline(@Messenger,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
if ( %msn.clickemail == $null ) { halt }
run http://members.msn.com/ $+ %msn.clickemail
}
Delete Contact:{
set %msn.clickemail $gettok($sline(@Messenger,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
if ( %msn.clickemail == $null ) { halt }
delmsnuser %msn.clickemail
}
-
}
menu @BlockList {
Unblock User:{
set %msn.clickemail $gettok($sline(@BLockList,1),2-,60)
set %msn.clickemail $left(%msn.clickemail,$calc($len(%msn.clickemail)-1))
if ( %msn.clickemail == $null ) { halt }
unblockuser %msn.clickemail
if ( $sock(msn) == msn ) {
window -c @BlockList
sendmsn LST %msn.main BL }
}
}
on *:INPUT:@:{
if (@*@*@ICQ iswm $active) { return }
if ( /msnaccept isin $1- ) || ( /msndecline isin $1- ) { return }
if ( @ isin $right($active,$calc($len($active)-1))) {
set %msn.texttosend $replacecs($1- ,å,Ã¥,ä,ä,ö,ö,Å,Ã…,Ä,Ä,Ö,Ö,õ,õ,ü,ü,á,á,é,é,$chr(32),$+($chr(37),20),è,è,à,$+(Ã,$chr(160)),ç,ç,ê,ê,ù,ù,ë,ë,ï,ï,É,É,À,À,È,È,ô,ô,â,â,°,ð,ñ,ñ,Ñ,Ñ,á,á,é,é,í,Ã,ó,ó,ú,úÁ,,Ã,É,É,Í,Ã,Ó,Ó,Ú,Ú,ü,ü,Ü,Ü,ø,ø,æ,æ,¡,¡,¿,¿,Æ,Æ,Ø,Ø ))
set %msn.texttosend $rawurldecode(%msn.texttosend)
if (%msn.chat.style == msn) {
aline -p @ $+ $right($active,$calc($len($active)-1)) $timestamp 14 $+ %msn.name says:
aline -p @ $+ $right($active,$calc($len($active)-1)) $1-
}
else {
aline -hp @ $+ $right($active,$calc($len($active)-1)) $timestamp 14 $+ < $+ %msn.name $+ > $1-
}
sockwrite -n chat. $+ $right($active,$calc($len($active)-1)) MSG %msn. [ $+ [ $right($active,$calc($len($active)-1)) ] ] N $calc($len(%msn.texttosend) + 132)
sockwrite -n chat. $+ $right($active,$calc($len($active)-1)) MIME-Version: 1.0
sockwrite -n chat. $+ $right($active,$calc($len($active)-1)) Content-Type: text/plain; charset=UTF-8
sockwrite -n chat. $+ $right($active,$calc($len($active)-1)) X-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; EF=; CO=0; CS=1; PF=22
sockwrite -n chat. $+ $right($active,$calc($len($active)-1))
sockwrite chat. $+ $right($active,$calc($len($active)-1)) %msn.texttosend
addlog $right($active,$calc($len($active)-1)) $urlencode(%msn.name) $1-
}
}
alias starttype {
.timer $+ $$1 -m 0 1 checktype $1
}
alias checktype {
if ( $editbox(@ $+ $1) != $null ) {
saytype $1
.timer $+ $1 off
.timer 1 6 starttype $1
}
}
alias saytype {
if ( %msn.showtype == NO ) { return }
sockwrite -n chat. $+ $1 MSG %msn. [ $+ [ $1 ] ] U $calc(73 + $len( %msn.user ))
sockwrite -n chat. $+ $1 MIME-Version: 1.0
sockwrite -n chat. $+ $1 Content-Type: text/x-msmsgscontrol
sockwrite -n chat. $+ $1 TypingUser: %msn.user
sockwrite chat. $+ $1 $crlf
sockwrite chat. $+ $1 $crlf
inc %msn. [ $+ [ $1 ] ] 1
}
alias addmsnuser {
if ( $sock(msn) != msn ) { halt }
sendmsn ADD %msn.main FL $$1 $$1 0
sendmsn ADD %msn.main AL $$1 $$1
aline @Messenger 10*** $$1 was added to your contact list
}
alias delmsnuser {
if ( $sock(msn) != msn ) { halt }
sendmsn REM %msn.main FL $$1
set %msn.temp $gettok($line(@Messenger,$fline(@Messenger,*< $+ $$1 $+ >,1,1),1),1,60)
set %msn.temp $mid($gettok($line(@Messenger,$fline(@Messenger,*< $+ $$1 $+ >,1,1),1),1,60),3)
set %msn.temp $left(%msn.temp,$calc($len(%msn.temp)-4))
if ( $fline(@Messenger,*< $+ $$1 $+ >,1,1) == $null ) {
aline @Messenger 4 $+ *** $$1 not a valid address.
halt
}
dline -l @Messenger $fline(@Messenger,*< $+ $$1 $+ >,1,1)
aline @Messenger 10*** %msn.temp was removed from your contact list
}
alias blockuser {
if ( $sock(msn) != msn ) { halt }
sendmsn REM %msn.main AL $$1
sendmsn ADD %msn.main BL $$1 $$1
set %msn.temp $gettok($line(@Messenger,$fline(@Messenger,*< $+ $$1 $+ >,1,1),1),1,60)
set %msn.temp $mid($gettok($line(@Messenger,$fline(@Messenger,*< $+ $$1 $+ >,1,1),1),1,60),3)
set %msn.temp $left(%msn.temp,$calc($len(%msn.temp)-4))
if ( $fline(@Messenger,*< $+ $$1 $+ >,1,1) == $null ) {
aline @Messenger 4 $+ *** $$1 not a valid address.
halt
}
;dline -l @Messenger $fline(@Messenger,*< $+ $$1 $+ >,1,1)
aline @Messenger 10*** %msn.temp has been blocked.
}
alias unblockuser {
if ( $sock(msn) != msn ) { halt }
sendmsn REM %msn.main BL $$1
sendmsn ADD %msn.main AL $$1 $$1
aline @Messenger 10*** $$1 has been unblocked
}
alias rawurldecode {
var %decode = $1-
while ($regex($eval(%decode,1), /\%([a-fA-F0-9]{2})/)) {
var %t = $regsub($eval(%decode,1), /\%([a-fA-F0-9]{2})/, $chr($base($regml(1),16,10)), %decode)
}
return %decode
}
alias rawurldecode {
var %i = 0, %r, %c | while (%i < $gettok($1-,0,37)) {
inc %i
%c = $chr($base($gettok($1-,%i,37),16,10,2))
%r = %r $+ $iif($asc(%c) == 32,\32\,%c)
}
return $replace(%r,\32\,$chr(32))
}
alias urlencode {
var %i = 0, %r | while (%i < $len($1-)) {
inc %i
%r = %r $+ $chr(37) $+ $base($asc($mid($1-,%i,1)),10,16,2)
}
return %r
}
menu MenuBar {
MSN Messenger
.$iif($sock(msn) == $null,Login,$null) { msn }
.$iif($sock(msn) != $null,Logout,$null) {
sockclose msn sockclose chat.*
window -c @Messenger
}
.Control Panel:dialog -m control control
.Website:run http://www.burningimage.net/msn
}
alias aboutmsn {
set %msn.temp $input(MSN Messenger for mIRC v $+ $msnversion $crlf $+ www.burningimage.net/msn $crlf $+ Andy Carvell 2003-2005,4,About)
}
alias msnversion return 3.46
alias msn.name {
if ( $sock(msn) == $null ) {
echo -a You are not connected to MSN
halt }
set %msn.newname $iif($1,$1,$?"New MSN Name?")
set %msn.newname $urlencode(%msn.newname)
if ( %msn.newname == $null ) { halt }
set %msn.newname $replace(%msn.newname,$chr(32),$chr(37) $+ 20)
sendmsn REA %msn.main %msn.user %msn.newname
set %msn.name $rawurldecode( %msn.newname )
echo @Messenger 10 $+ *** MSN Name changed to $rawurldecode( %msn.name )
}
alias msn.status {
if ( $sock(msn) == $null ) {
echo -a You are not connected to MSN
halt }
if ( $1 == online ) { sendmsn CHG %msn.main NLN | titlebar @Messenger -=[ Online ]=- }
if ( $1 == away ) { sendmsn CHG %msn.main AWY | titlebar @Messenger -=[ Away ]=- }
if ( $1 == busy ) { sendmsn CHG %msn.main BSY | titlebar @Messenger -=[ Busy ]=- }
if ( $1 == brb ) { sendmsn CHG %msn.main BRB | titlebar @Messenger -=[ Be Right Back ]=- }
if ( $1 == phone ) { sendmsn CHG %msn.main PHN | titlebar @Messenger -=[ Phone ]=- }
if ( $1 == lunch ) { sendmsn CHG %msn.main LUN | titlebar @Messenger -=[ Lunch ]=- }
if ( $1 == aoffline ) { sendmsn CHG %msn.main HDN | titlebar @Messenger -=[ Appear Offline ]=- }
if ( $1 == help || $1 = $null ) {
echo -a /msn.status <status>
echo -a <status> can be
echo -a online, away, busy, brb, phone, lunch, aoffline
echo -a eg. /msn.status away
}
}
alias checkmsnidle {
if ($idle >= %msn.maxidle) {
if ( %msn.autoidle == no ) { halt }
sendmsn CHG %msn.main IDL
if ( $sock(msn) == msn ) {
titlebar @Messenger -=[ IDLE ]=-
}
}
}
alias msn.winlist {
if ($fline(@ $+ $1,*Invite MSN User*,1,1) == $null) { /aline -l @ $+ $1 14Invite MSN User }
if ($fline(@ $+ $1,*Send File or Photo*,1,1) == $null) { /aline -l @ $+ $1 14Send File or Photo }
if ($fline(@ $+ $1,*Send E-mail*,1,1) == $null) { /aline -l @ $+ $1 14Send E-mail }
if ($fline(@ $+ $1,*Block User*,1,1) == $null) { /aline -l @ $+ $1 14Block User }
if ($fline(@ $+ $1,*Unblock User*,1,1) == $null) { /aline -l @ $+ $1 14Unblock User }
if ($fline(@ $+ $1,*View Profile*,1,1) == $null) { /aline -l @ $+ $1 14View Profile }
}
menu @*@* {
dclick {
if (@*@*@ICQ iswm $active) { return }
set %msn.clickemail $right($active,$calc($len($active) - 1))
var %a = $line(@ $+ %msn.clickemail,$1,1)
if (*Unblock User* iswm %a) { if ( %msn.clickemail == $null ) { halt } | unblockuser %msn.clickemail | return }
elseif (*Block User* iswm %a) { if ( %msn.clickemail == $null ) { halt } | blockuser %msn.clickemail }
elseif (*Send File or Photo* iswm %a) { msnsendfile }
elseif (*Send E-mail* iswm %a) { run http://www.hotmail.com }
elseif (*View Profile* iswm %a) { if ( %msn.clickemail == $null ) { halt } | run explorer.exe http://members.msn.com/ $+ %msn.clickemail }
elseif (*Invite MSN User* iswm %a) {
if ( %msn.clickemail == $null ) { halt }
set %msn.temp $input(Enter the person you wish to invite's e-mail address,eoq,Invite User)
if ( %msn.temp == $null ) { halt }
sockwrite -n chat. $+ %msn.clickemail CAL [ %msn. [ $+ [ %msn.clickemail ] ] ] %msn.temp
;echo -a 13 chat. $+ %msn.clickemail CAL [ %msn. [ $+ [ %msn.clickemail ] ] ] %msn.temp
}
elseif (*Delete Contact* iswm %a) { if ( %msn.clickemail == $null ) { halt } | delmsnuser %msn.clickemail }
else { aline @ $+ %msn.clickemail 4Error: %a Is not a command built into the code. }
}
}
alias msnopenwindow {
if ( %msn.chat.style == $no ) {
window -ek0zdl20 @ $+ $1 Arial 12 $shortfn($scriptdir) $+ msn.ico | $msn.winlist( $1 )
}
else { window -ek0zl20z @ $+ $1 Arial 12 $shortfn($scriptdir) $+ msn.ico | $msn.winlist( $1 ) }
}
alias away {
if ( $1 == $null ) {
away
if ( %msn.awaysync == $yes ) { msn.status online }
halt
}
away $1-
if ( %msn.awaysync == $yes ) { msn.status away }
}
alias delgroupinfo {
unset %msn.group.*
set %msn.temp $dll($shortfn($scriptdir) $+ listfiles.dll, setoutput, <fname>)
set %msn.temp $dll($shortfn($scriptdir) $+ listfiles.dll,listfiles, fhs* > $mircdirmsn\groups.grp > $shortfn($scriptdir) $+ groups)
set %msn.counter 0
while ($lines($mircdirmsn\groups.grp) > %msn.counter) {
inc %msn.counter
set %msn.group.file $read( $shortfn($scriptdir) $+ groups.grp , %msn.counter )
.remove $shortfn($scriptdir) $+ groups\ $+ %msn.group.file
}
.rmdir $shortfn($scriptdir) $+ groups
}