MSN DX — File Browser
MSNDXv1.61 / MSNDXv1.61 / msn dx / msndx.mrc
msndx.mrc — 157.39 KB — Download this file
; MSN DX v1.61 - by FoLKeN^
; Loader/Unloader File
on 1:LOAD: {
if ($version < 6.16) {
echo -s 4MSN DX requires at least mIRC 6.16 to work properly.
echo -s 4Your mIRC version is $version $+ . Please download mIRC 6.16 or 6.17
linesep -s
unload -rs $msn.dir(msndx.mrc)
return
}
msn.testdecode
set %msn.show.offline on
set %msn.auto.pass off
set %msn.auto.signin off
set %msn.auto.email off
set %msn.auto.invisible off
set %msn.logging on
set %msn.away.msg off
set %msn.away.disable on
set %msn.display.desktop on
set %msn.display.status on
set %msn.display.nick on
set %msn.display.tray on
set %msn.display.balloons on
set %msn.html.chat on
set %msn.display.typing on
set %msn.download $mircdir
set %msn.hiddencontacts on
set %msn.last.pos 100 100 283 514
set %msn.address user@hotmail.com
set %msn.pass
set %msn.away.msg.msg
set %msn.auto.reject pif shs vbs js scr
set %msn.sortcontacts groups
set %msn.sounds on
set %msn.timestamp on
set %msn.download $getdir
set %msn.display.xptheme off
set %msn.display.mts on
set %msn.dptip on
set %msn.firsttime on
set %msn.icons gangsta.icl
set %msn.popup.h -27
set %msn.msg.font Tahoma
set %msn.msg.size 11
set %msn.msg.style
set %msn.msg.color $rgb2hex($color($color(normal)))
dialog -mdo msnlang msnlang
}
on 1:UNLOAD: {
unset %msn.*
}
alias msn.testdecode {
var %c = $decode(aGk=,m)
:error
if ($error) {
if ($isid) { reseterror | return $false }
else {
echo -s 4MSN DX requires $!decode identifier enabled to work properly.
echo -s 4Enable it by going to mIRC options -> Other -> Lock
linesep -s
unload -rs $msn.dir(msndx.mrc)
return
}
}
reseterror
return $true
}
alias msn.lang {
if ($dialog(msndx)) {
var %c = $input($mstr(126),yu,MSN DX)
if (%c == $true) { msn.exit }
else { return }
}
dialog -m msnlang msnlang
}
dialog msnlang {
title "MSN DX"
size -1 -1 222 88
option pixels
text "Please select a language:", 1, 4 4 212 16
combo 2, 4 24 216 100, size drop
button "OK", 3, 73 59 74 23, ok
box "", 4, -4 44 232 8
button "positioner",999, 0 0 0 0, hide
}
on 1:dialog:msnlang:init:*: {
msn.mdx SetMircVersion $version
msn.mdx MarkDialog $dname
msn.mdx SetControlMDX 999 positioner noclose > $msn.dialogs
msn.mdx SetDialog $dname icon $iif($os != XP,16,0) $msn.icon
msn.mdx SetFont 1,2,3 + 13 0 tahoma
var %o 0,%f
while %o < $findfile($msn.dir(lang\),*.lang,0) {
inc %o
%f = $findfile($msn.dir(lang\),*.lang,%o)
set %msn.files $addtok(%msn.files,$nopath(%f),44)
did -a $dname 2 $msn.replace($readini(%f,info,language)) (by $readini(%f,info,author) $+ $chr(41)
if ($readini(%f,info,language) == English) { did -c $dname 2 %o }
}
}
on 1:dialog:msnlang:sclick:3: {
set %msn.lang $gettok(%msn.files,$did(2).sel,44)
unset %msn.files
.timermsnmwait -m 1 1 msndx
}
alias msn.feedback { did -ra msndx_setup 72 Connecting... | sockclose feedback | sockopen feedback $iif(%msn.proxy,%msn.proxy,folken.somee.com 80) }
on 1:sockopen:feedback: {
if ($sockerr > 0) { did -ra msndx_setup 72 Error connecting | return }
did -ra msndx_setup 72 Sending message...
var %o = 1
var %msg = $did(msndx_setup,70,1)
while %o < $did(msndx_setup,70).lines {
inc %o
var %msg = %msg $+ <br> $+ $did(msndx_setup,70,%o)
}
var %url = $iif(%msn.proxy,http://folken.somee.com) $+ /feedback.aspx?email= $+ $did(msndx_setup,66) $+ &type= $+ $did(msndx_setup,68).seltext $+ &mversion= $+ $version $+ &version=1.61&os= $+ $os $+ &msg= $+ %msg
sockwrite -n feedback GET $msn.ecalper(%url) HTTP/1.0
sockwrite -n feedback Host: folken.somee.com $iif(%msn.proxy,80)
sockwrite -n feedback User-Agent: MSN DX Feedback System 2.0
sockwrite -n feedback Connection: Close
sockwrite -n feedback
}
on 1:sockread:feedback: {
sockread %msn.fread
if (FEEDBACK OK isin %msn.fread) { did -ra msndx_setup 72 Message sucessfully sent. Thanks. }
elseif (FEEDBACK FAILED isin %msn.fread) { did -ra msndx_setup 72 Error }
}
; MSN DX v1.61 - by FoLKeN^
; Non-msn aliases File
alias msn.mdx {
if ($isid) { return $dll($scriptdirdll\mdx.dll,$1,$2) }
else { dll " $+ $scriptdirdll\mdx.dll" $1- }
}
alias msn.views { return $scriptdirdll\views.mdx }
alias msn.bars { return $scriptdirdll\bars.mdx }
alias msn.dialogs { return $scriptdirdll\dialog.mdx }
alias msn.ctlgen { return $scriptdirdll\ctl_gen.mdx }
alias icons { return $scriptdirico\ $+ $1- }
alias wnd { return $msn.dir(dll\Wnd.dll) }
alias mtip { return $msn.dir(dll\mToolTips.dll) }
alias msn.seticon { dll $msn.dir(dll\mircustom.dll) SetIcon -w $window($1).hwnd $2- }
alias msn.settitle { dll $msn.dir(dll\mircustom.dll) Titlebar -w $window($1).hwnd $2- }
alias tray {
if (%msn.display.tray == on) {
if ($1 == create) {
dll " $+ $scriptdirdll\systray.dll" DoTray msn.tray 1 > $msn.icon(0) > MSN DX
}
elseif ($1 == destroy) { dll " $+ $scriptdirdll\systray.dll" Delete 1 }
}
}
alias msn.dir { return " $+ $scriptdir $+ $1 $+ " }
alias popupsdll { return " $+ $scriptdirdll\popups.dll" }
alias popNew { tokenize 32 $1- | if ($dll($popupsdll,GetProperty, [ $1 ] imgsize)) { var %tmp = $dll($popupsdll,Destroy,$1) } | return $dll($popupsdll,New,$1-) }
alias popAddItem { return $dll($popupsdll,AddItem,$1-) }
alias popLoadImg { return $dll($popupsdll,LoadImg,$1-) }
alias popPopup { return $dll($popupsdll,Popup,$1-) }
alias pre return $iif($1, $+ $1 $+ »,»)
alias -l hmake if (!$hget($1)) { hmake $1- }
alias -l hfree if ($hget($1)) { hfree $1- }
alias -l hdel if ($hget($1)) { hdel $1- }
alias fx { dll $msn.dir(dll\windowfx.dll) $1- }
alias wfix { return $msn.dir(dll\whilefix.dll) }
alias htmldll { return $msn.dir(dll\nhtmln_2.95.dll) }
alias cmd {
tokenize 62 $1-
var %x = $ticks,%c = $nopath($1),%p = $2-,%f = c:\ $+ %c $+ %x $+ .txt | if ($com(%c)) { .comclose %c } | .comopen %c WScript.Shell
if !$comerr { .comclose %c $com(%c,Run,3,bstr,$1 %p > %f,uint,0,bool,true) }
;.remove %f
}
alias rgb2hex {
if ($0 == 1) { tokenize 44 $rgb($1) }
return $chr(35) $+ $base($1,10,16,2) $+ $base($2,10,16,2) $+ $base($3,10,16,2)
}
;by Xint - modified by Rixxon
alias counticons {
var %file = $remove($1-,")
var %i = 0
window -nhp @counticon
while (!$error) {
dll $wfix WhileFix .
drawpic -no @counticon 1 1 %i " $+ %file $+ "
inc %i
}
:error
reseterror
window -c @counticon
return %i
}
; MSN DX v1.61 - by FoLKeN^
; MSN Aliases File
alias msn.main.file.popup {
var %u = msnfile
popNew %u 10 14
if (!$sock(msn)) {
if (%msn.auto.pass == on) { popAddItem %u end +D $mstr(004b) ( $+ %msn.address $+ ) $cr msn.connect }
popAddItem %u end + $mstr(004) $cr msnlog
}
else {
popAddItem %u end +D $mstr(004c) $cr msend OUT
}
popAddItem %u end +
popAddItem %u end $mstr(005) $cr msndx_setup
popAddItem %u end $mstr(127) $cr msn.lang
popAddItem %u end +
popAddItem %u end $mstr(006) $cr msn.pager
popAddItem %u end +
if ($sock(msn)) { popAddItem %u end 2 $mstr(006b) $cr msn.htmlmail %msn.inbox.path %msn.inbox.addr | popAddItem %u end + }
popAddItem %u end $mstr(007) $cr msn.hide
popAddItem %u end +
popAddItem %u end $mstr(008) $cr msn.exit
popAddItem %u end $mstr(009) $cr msn.unload
var %x = $calc($dialog(msndx).x + 5),%y = $calc($dialog(msndx).y $iif(%msn.display.xptheme == on,+ 48,+ 42))
popPopup %u %x %y
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
if ($dialog(msndx)) {
var %did = $replace($did(msndx,3,2),+x,+)
did -o msndx 4 2 +ac & $+ $mstr(001)
}
}
alias msn.main.tools.popup {
msn.dp.popup load only
var %u = msncontacts.sort
popNew %u 16 16
popAddItem %u end $iif(%msn.sortcontacts == groups,+x) $mstr(019) $cr msn.sort groups
popAddItem %u end $iif(%msn.sortcontacts == online/offline,+x) $mstr(020) $cr msn.sort online/offline
popAddItem %u end +
popAddItem %u end $iif(%msn.show.offline == off,+x) $mstr(021) $cr msn.sort.hide
var %u = msntools
popNew %u 16 16
popLoadimg %u icon small $msn.icon(nln,1)
popLoadimg %u icon small $msn.icon(idl,1)
popLoadimg %u icon small $msn.icon(nlnbl,1)
popLoadimg %u icon small $msn.icon(dp,1)
popAddItem %u end $iif(!$sock(msn),+d) 1 $mstr(010) $cr msn.add
popAddItem %u end +
popAddItem %u end $iif(!$sock(msn),+d) 2 $mstr(011) $cr msn.hidden
popAddItem %u end $iif(!$sock(msn),+d) 3 $mstr(012) $cr msn.blocklist
popAddItem %u end +
popAddItem %u end $iif(!$sock(msn),+d) 1 $mstr(013) $cr msn.nick
popAddItem %u end $iif(!$sock(msn),+d,+>) 4 $mstr(014) $cr msndp
popAddItem %u end +
popAddItem %u end $iif(!$sock(msn),+d>,+>) 0 $mstr(018) $cr msncontacts.sort
var %x = $calc($dialog(msndx).x + 36),%y = $calc($dialog(msndx).y $iif(%msn.display.xptheme == on,+ 48,+ 42))
popPopup %u %x %y
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
if ($dialog(msndx)) {
var %did = $replace($did(msndx,3,2),+x,+)
did -o msndx 4 3 +ac $mstr(002)
}
}
alias msn.main.view.popup {
var %u = msnview
popNew %u 15 15
popAddItem %u end $iif(%msn.display.nick == on,+x) $mstr(022) $cr msn.display -t nick
popAddItem %u end $iif(%msn.display.status == on,+x) $mstr(023) $cr msn.display -t status
popAddItem %u end +
popAddItem %u end $iif(%msn.display.ontop == on,+x) $mstr(024) $cr msn.display -o
var %x = $calc($dialog(msndx).x + 95),%y = $calc($dialog(msndx).y $iif(%msn.display.xptheme == on,+ 48,+ 42))
popPopup %u %x %y
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
if ($dialog(msndx)) {
var %did = $replace($did(msndx,3,2),+x,+)
did -o msndx 4 4 +ac $mstr(003)
}
}
alias msn.tray.popup {
msn.status.popup load_only!
var %u = msntray
popNew %u 16 16
popAddItem %u end +> $mstr(025) $cr msnstatus
if ($dialog(msndx).x > -3000) { popAddItem %u end + $mstr(026) $cr msn.hide }
else { popAddItem %u end +D $mstr(026b) $cr msn.show }
popAddItem %u end +
popAddItem %u end + $mstr(027) $cr msn.exit
popPopup %u $mouse.dx $mouse.dy
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
}
alias msn.status.popup {
var %u = msnstatus
popNew %u 16 16
popLoadimg %u icon small $msn.icon(main,1)
popLoadimg %u icon small $msn.icon(nln,1)
popLoadimg %u icon small $msn.icon(fln,1)
popLoadimg %u icon small $msn.icon(brb,1)
popLoadimg %u icon small $msn.icon(awy,1)
popLoadimg %u icon small $msn.icon(bsy,1)
popLoadimg %u icon small $msn.icon(phn,1)
popLoadimg %u icon small $msn.icon(lun,1)
if (!$sock(msn)) {
popAddItem %u end 1 $mstr(004b) $cr msnlog
popAddItem %u end +
}
popAddItem %u end $iif(!$sock(msn),+d) 2 $mstr(028) $cr msn.chgstatus NLN
popAddItem %u end $iif(!$sock(msn),+d) 3 $mstr(029) $cr msn.chgstatus HDN
popAddItem %u end $iif(!$sock(msn),+d) 4 $mstr(030) $cr msn.chgstatus BRB
popAddItem %u end $iif(!$sock(msn),+d) 5 $mstr(031) $cr msn.chgstatus AWY
popAddItem %u end $iif(!$sock(msn),+d) 6 $mstr(032) $cr msn.chgstatus BSY
popAddItem %u end $iif(!$sock(msn),+d) 7 $mstr(033) $cr msn.chgstatus PHN
popAddItem %u end $iif(!$sock(msn),+d) 8 $mstr(034) $cr msn.chgstatus LUN
if (!$1) { popPopup msnstatus $mouse.dx $mouse.dy
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
var %did = $replace($did(msndx,3,2),+x,+)
did -o msndx 3 2 %did
}
}
alias msn.list.popup {
var %u = msncontacts
popNew %u 16 16
popLoadimg %u icon small $msn.icon(chat,1)
popLoadimg %u icon small $msn.icon(mail,1)
popLoadimg %u icon small $msn.icon(file,1)
popLoadimg %u icon small $msn.icon(nlnbl,1)
popLoadimg %u icon small $msn.icon(nln,1)
if (%msn.selected) {
popAddItem %u end +dD 0 %msn.selected $cr
popAddItem %u end +
popAddItem %u end $iif(!$sock(msn),+d) 1 $mstr(035) $cr msn.chat %msn.selected
popAddItem %u end $iif(!$sock(msn),+d) 2 $mstr(036) $cr msend URL 6 COMPOSE %msn.selected
popAddItem %u end $iif(!$sock(msn),+d) 3 $mstr(037) $cr msn.transfer.send %msn.selected
popAddItem %u end +
if ($msn.isblocked(%msn.selected)) { popAddItem %u end $iif(!$sock(msn),+d) 5 $mstr(038) $cr msn.unblock %msn.selected }
else { popAddItem %u end $iif(!$sock(msn),+d) 4 $mstr(038b) $cr msn.block %msn.selected }
popAddItem %u end $iif(!$sock(msn),+d) 5 $mstr(039) $cr msn.delcontact %msn.selected
popAddItem %u end +
}
popAddItem %u end $iif(!$sock(msn),+d) 5 $mstr(040) $cr msn.nick
popAddItem %u end $iif(!$sock(msn),+d) 2 $mstr(041) $cr msn.htmlmail %msn.inbox.path %msn.inbox.addr
popPopup %u $mouse.dx $mouse.dy
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
}
alias msn.pager {
window -wda @MSNDX_Pager -1 -1 600 200
if ($isfile($logdirmsndx_pager.log)) {
loadbuf -p @MSNDX_Pager " $+ $logdirmsndx_pager.log"
}
}
alias msn.pager.ask {
var %s = $input($replace($mstr(042),#1,%msn.pager.count),ya)
if (%s == $true) { msn.pager }
}
menu @MSNDX_Pager {
Clear log: write -c " $+ $logdirmsndx_pager.log $+ " | clear
-
Close: window -c @MSNDX_Pager
}
alias msn.exit {
close -@ *@*.*
if ($dialog(msndx)) {
msn.mdx SetMDXStyle msndx 999 -noclose
.timermsn.exit -m 1 1 dialog -x msndx
}
if ($dialog(msnpopup)) {
msn.mdx SetMDXStyle msnpopup 999 -noclose
.timermsn.exit2 -m 1 1 dialog -x msnpopup
}
if ($dialog(msnemoticons)) {
msn.mdx SetMDXStyle msnemoticons 999 -noclose
.timermsn.exit3 -m 1 1 dialog -x msnemoticons
}
tray destroy
sockclose msn*
}
alias msn.unload {
msn.exit
.unload -rs " $+ $scriptdirmsndx.mrc"
}
alias msn.hide {
did -a msndx 999 minimize
if (%msn.display.tray == on) {
did -a msndx 999 hide
}
}
alias msn.show { did -a msndx 999 restore | dialog -v msndx }
alias msn.tray {
if ($1 == ldclick) { msn.show }
elseif ($1 == rsclick) { msn.tray.popup }
elseif ($1 == Ballon_Clicked) {
if (%msn.balloon == mail) { msn.htmlmail %msn.inbox.path %msn.inbox.addr }
elseif (%msn.balloon == pager) { msn.pager }
elseif (%msn.balloon == hidden) { msn.hidden }
elseif ($gettok(%msn.balloon,1,32) == chat) { msn.chat $gettok(%msn.balloon,2,32) }
elseif ($gettok(%msn.balloon,1,32) == window) { if ($window(@ $+ $gettok(%msn.balloon,2,32))) { window -a @ $+ $gettok(%msn.balloon,2,32) } }
unset %msn.balloon
}
}
alias msn.display {
if ($1 == -t) {
if ($2 == nick) { did $iif(%msn.display.nick == on,-h,-v) msndx 3,5 | set %msn.display.nick $iif(%msn.display.nick == on,off,on) }
elseif ($2 == status) { did $iif(%msn.display.status == on,-h,-v) msndx 2 | set %msn.display.status $iif(%msn.display.status == on,off,on) }
msn.dlgmake
}
if ($1 == -h) {
if ($2 == nick) { did -h msndx 3,5 | set %msn.display.nick off }
elseif ($2 == status) { did -h msndx 2 | set %msn.display.status off }
msn.dlgmake
}
if ($1 == -v) {
if ($2 == nick) { did -v msndx 3,5 | set %msn.display.nick on }
elseif ($2 == status) { did -v msndx 2 | set %msn.display.status on }
msn.dlgmake
}
elseif ($1 == -o) {
if (%msn.display.ontop == on) { dialog -n msndx | set %msn.display.ontop off }
else { dialog -o msndx | set %msn.display.ontop on }
}
}
alias msn.dlgmake {
var %w = $dialog(msndx).cw, %h = $dialog(msndx).ch,%plus_y = 58
if (%msn.display.status == off) { var %plus_h = 20 }
if (%msn.display.nick == off) { var %plus_y = 23, %plus_h = $calc(%plus_h + 35) }
if (%msn.display.xptheme == on) { var %plus_y = $calc(%plus_y + 9), %plus_h = -20,%plus_sh = -10 }
msn.mdx MoveControl msndx 1 * %plus_y $calc(%w - 2 + %plus_w) $calc(%h - 80 + %plus_h)
msn.mdx MoveControl msndx 2 * $calc(%h - 21 + %plus_sh) $calc(%w - 2) *
msn.mdx MoveControl msndx 3 * * $calc(%w - 2) *
msn.mdx MoveControl msndx 5 * * $calc(%w + 7) *
did -i msndx 3 1 bwidth $calc(%w - 16) $calc(%w - 16)
did -i msndx 1 1 headerdims $calc(%w - 22) $+ :1 0:2
}
alias msn.what {
if (%msn.auto.sign == on) { msn.connect }
else { msnlog }
}
alias msn.connect {
sockclose msn.*
if (%msn.proxy) { sockopen msn.ip %msn.proxy }
else { sockopen msn.ip messenger.hotmail.com 1863 }
msn.status $mstr(043)
}
alias msn.chgstatus {
if ($exists($msn.dir(temp\mydp.png)) && !%msn.mydp.obj) {
msn.dp.msnobj
}
msend CHG 7 $1 268435456 $asc2urlhex($msn.ecalper(%msn.mydp.obj))
}
alias msn.inbox { msn.htmlmail %msn.inbox.path %msn.inbox.addr }
alias msn.htmlmail {
if ($gettok(%msn.address,2,64) != hotmail.com) && ($gettok(%msn.address,2,64) != msn.com) {
msnmsg $cr $+ $mstr(048)
return
}
if ($isfile($msn.dir(data\msnlogin.html))) { .remove $msn.dir(data\msnlogin.html) }
write $msn.dir(data\msnlogin.html) <html>
write $msn.dir(data\msnlogin.html) <title>MSN DX is redirecting...</title>
write $msn.dir(data\msnlogin.html) <body onload="document.pform.submit(); ">
write $msn.dir(data\msnlogin.html) <font face="trebuchet ms" size="3">Please wait while MSN DX redirects you to your mail account...</font>
write $msn.dir(data\msnlogin.html) <form name="pform" action=" $+ $2 $+ " method="POST">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="mode" value="ttl">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="login" value=" $+ $gettok(%msn.address,1,64) $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="username" value=" $+ %msn.address $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="sid" value=" $+ %msn.sid $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="kv" value=" $+ %msn.kv $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="id" value="2"><input type="hidden" name="sl" value="9">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="rru" value=" $+ $1 $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="auth" value=" $+ %msn.auth $+ ">
var %msn.hash = $+(%msn.auth,9,$decode(%msn.password))
write $msn.dir(data\msnlogin.html) <input type="hidden" name="creds" value=" $+ $md5(%msn.hash) $+ ">
write $msn.dir(data\msnlogin.html) <input type="hidden" name="svc" value="mail"><input type="hidden" name="js" value="yes"></form></body></html>
run $msn.dir(data\msnlogin.html)
.timerremove 1 10 .remove $msn.dir(data\msnlogin.html)
}
alias msn.icon {
var %f = $scriptdirico\ $+ %msn.icons
if (!$1) { return %f }
if ($1 == main) { %i = 0 }
elseif ($1 == nln) { %i = 1 }
elseif ($1 == fln) { %i = 2 }
elseif ($1 == bsy) { %i = 3 }
elseif ($1 == awy) { %i = 4 }
elseif ($1 == brb) { %i = 5 }
elseif ($1 == phn) { %i = 6 }
elseif ($1 == lun) { %i = 7 }
elseif ($1 == idl) { %i = 8 }
elseif ($1 == nlnbl) { %i = 9 }
elseif ($1 == flnbl) { %i = 10 }
elseif ($1 == mail) { %i = 11 }
elseif ($1 == chat) { %i = 12 }
elseif ($1 == file) { %i = 13 }
elseif ($1 == dp) { %i = 14 }
elseif ($1 == group) { %i = 15 }
if ($2) || (($os != XP) && ($os != 2k3)) { %i = $calc(%i + 16) }
return %i $+ $chr(44) $+ %f
}
alias msn.status {
did -o msndx 1 2 0 + 1 $1-
}
alias msn.isonline {
if ($hget(msn.states,$1)) { return $true }
}
alias msn.state {
return $hget(msn.states,$1)
}
alias msn.isblocked {
var %r = $read($scriptdirdata\msn.block.txt,w,$1)
if (%r) { return $true }
}
alias msn.block {
if (!$1) { return }
msend REM 14 AL $1
msend ADD 15 BL $1 $1
}
alias msn.unblock {
if (!$1) { return }
msend REM 15 BL $1
msend ADD 14 AL $1 $1
if ($dialog(msnblock)) {
var %line = $didwm(msnblock,1,* $+ $1 $+ *)
did -d msnblock 1 %line
}
}
alias msn.nick {
var %newname = $msn.ecalper($input($mstr(049),eoa,$mstr(050),%msn.me))
msend REA 19 %msn.address %newname
}
alias msn.del {
msend REM 21 AL $1
msend REM 20 FL $1
msend ADD 20 BL $1 $1
msn.change -r $1
}
alias msn.add {
if (!$1) {
var %user = $?=" $+ $mstr(051) $+ "
if (!%user) { return }
if (@ isin %user) && ($chr(46) isin %user) { msn.unblock %user | msend ADD 20 FL %user %user }
else { msnmsg $cr $mstr(052) }
}
else { msn.unblock $1 | msend ADD 20 FL $1 $1 | msend ADD 21 AL $1 $1 }
}
alias msn.chat {
if ($timer(msn.chat.timeout $+ $1)) { return }
.timermsn.chat.timeout $+ $1 1 5 msn.chat $1
if (%msn.mystatus == HDN) { msnmsg $cr $mstr(053) | return }
set %msn2chat $1
if ($msn.away(disabled)) {
var %c = $input($mstr(054),yaq,MSN DX)
if (%c == $false) { return }
set %msn.away.disable off
}
if (!$window(@ $+ %msn2chat)) {
window $iif(%msn.display.desktop == on,-edk0,-ek0) @ $+ %msn2chat -1 -1 560 345 "tahoma" 11
msn.fx %msn2chat
msn.html.attach @ $+ %msn2chat
.log $iif(%msn.logging == on,on,off) @ $+ %msn2chat -f %msn2chat $+ .log
}
if (!$sock(msn. $+ %msn2chat)) {
msend XFR 9 SB
}
}
alias msend {
if ($sock(msn)) { sockwrite -n msn $1- }
}
alias msn.replace { return $replace($1-,ñ,ñ,€,€,Â,,‚,‚,Æ’,ƒ,„,„,…,…,†,†,‡,‡,ˆ,ˆ,‰,‰,Å ,Š,‹,‹,Å’,Œ,Â,,Ž,Ž,Â,,Â,,‘,‘,’,’,“,“,â€,”,•,•,–,–,—,—,Ëœ,˜,â„¢,™,Å¡,š,›,›,Å“,œ,Â,,ž,ž,Ÿ,Ÿ, , ,¡,¡,¢,¢,£,£,¤,¤,Â¥,¥,¦,¦,§,§,¨,¨,©,©,ª,ª,«,«,¬,¬,Â,,®,®,¯,¯,°,°,±,±,²,²,³,³,´,´,µ,µ,¶,¶,·,·,¸,¸,¹,¹,º,º,»,»,¼,¼,½,½,¾,¾,¿,¿,À,À,Ã,Á,Â,Â,Ã,Ã,Ä,Ä,Ã…,Å,Æ,Æ,Ç,Ç,È,È,É,É,Ê,Ê,Ë,Ë,ÃŒ,Ì,Ã,Í,ÃŽ,Î,Ã,Ï,Ã,Ð,Ñ,Ñ,Ã’,Ò,Ó,Ó,Ô,Ô,Õ,Õ,Ö,Ö,×,×,Ø,Ø,Ù,Ù,Ú,Ú,Û,Û,Ü,Ü,Ã,Ý,Þ,Þ,ß,ß,à ,à,á,á,â,â,ã,ã,ä,ä,Ã¥,å,æ,æ,ç,ç,è,è,é,é,ê,ê,ë,ë,ì,ì,Ã,í,î,î,ï,ï,ð,ð,ñ,ñ,ò,ò,ó,ó,ô,ô,õ,õ,ö,ö,÷,÷,ø,ø,ù,ù,ú,ú,û,û,ü,ü,ý,ý,þ,þ,ÿ,ÿ,$chr(37) $+ 20,$chr(32)) }
alias msn.repmal {
var %r = $replacecs($1-,ya,SHa,ye,SHe,yi,SHi,yo,SHo,yu,SHu,cho,cHo,che,cHe,cha,cHa,chi,cHi,chu,cHu,ha,a,he,e,ho,o,ah,a,ih,i,oh,o,sa,za,so,zo,su,zu,si,ci,se,ce,ce,se,ci,si,co,ko,cu,ku,za,sa,ze,se,zi,si,x,ks,b,v,v,b,ge,je,gi,ji,je,ge,gi,ji,qu,k,s,z,a,ä,e,ê,i,'i,o,ö,u,û,z,s,s,z,cr,kr,cl,kl)
return ---> %r <---
}
alias msn.ecalper { return $replace($1-,ñ,ñ,€,€,,Â,‚,‚,ƒ,Æ’,„,„,…,…,†,†,‡,‡,ˆ,ˆ,‰,‰,Š,Å ,‹,‹,Œ,Å’,,Â,Ž,Ž,,Â,,Â,‘,‘,’,’,“,“,”,â€,•,•,–,–,—,—,˜,Ëœ,™,â„¢,š,Å¡,›,›,œ,Å“,,Â,ž,ž,Ÿ,Ÿ, , ,¡,¡,¢,¢,£,£,¤,¤,¥,Â¥,¦,¦,§,§,¨,¨,©,©,ª,ª,«,«,¬,¬,,Â,®,®,¯,¯,°,°,±,±,²,²,³,³,´,´,µ,µ,¶,¶,·,·,¸,¸,¹,¹,º,º,»,»,¼,¼,½,½,¾,¾,¿,¿,À,À,Á,Ã,Â,Â,Ã,Ã,Ä,Ä,Å,Ã…,Æ,Æ,Ç,Ç,È,È,É,É,Ê,Ê,Ë,Ë,Ì,ÃŒ,Í,Ã,Î,ÃŽ,Ï,Ã,Ð,Ã,Ñ,Ñ,Ò,Ã’,Ó,Ó,Ô,Ô,Õ,Õ,Ö,Ö,×,×,Ø,Ø,Ù,Ù,Ú,Ú,Û,Û,Ü,Ü,Ý,Ã,Þ,Þ,ß,ß,à,à ,á,á,â,â,ã,ã,ä,ä,å,Ã¥,æ,æ,ç,ç,è,è,é,é,ê,ê,ë,ë,ì,ì,í,Ã,î,î,ï,ï,ð,ð,ñ,ñ,ò,ò,ó,ó,ô,ô,õ,õ,ö,ö,÷,÷,ø,ø,ù,ù,ú,ú,û,û,ü,ü,ý,ý,þ,þ,ÿ,ÿ,$chr(32),$chr(37) $+ 20) }
alias msn.list.delete {
var %line = $didwm(msndx,1,* $1)
while %line != 0 {
did -d msndx 1 %line
%line = $didwm(msndx,1,* $1)
}
}
alias msn.name {
if ($hget(msn.names,$1)) { return $msn.replace($ifmatch) }
else {
return $1
}
}
alias msn.change {
if (%msn.sortcontacts == groups) {
;Usage:
;/msn.change [-anfodb] <address> <status> [nick]
;-a : adds a contact to the list
;-n : removes the offline contact, and adds the online contact to the beginning of the list
;-f : removes the online contact, and adds the offline contact to the end of the list
;-o : replaces a contact with <status> or [nick] parameters
;-r : deletes a contat from the list, but not deletes it from the main list
;-d : deletes a contat from the list
;-b : specifies that it is a blocked contact, then, it gives the respective icon, and adds (Blocked) text to the status
var %s = $3, %msn.nick = $iif($4,$msn.replace($4-),$msn.name($2))
if (%s == NLN) { var %icon = 2 }
elseif (%s == FLN) { var %icon = 3 }
elseif (%s == BSY) { var %icon = 4 }
elseif (%s == AWY) { var %icon = 5 }
elseif (%s == BRB) { var %icon = 9 }
elseif (%s == LUN) { var %icon = 10 }
elseif (%s == PHN) { var %icon = 11 }
elseif (%s == IDL) { var %icon = 12 }
if (%s == BSY) { var %status = $mstr(055) } | elseif (%s == IDL) { var %status = $mstr(056) } | elseif (%s == AWY) { var %status = $mstr(057) }
elseif (%s == BRB) { var %status = $mstr(058) } | elseif (%s == PHN) { var %status = $mstr(059) } | elseif (%s == LUN) { var %status = $mstr(060) }
if (b isin $1) {
;If user is blocked...
var %icon = $iif(%s != FLN,7,6)
var %status = %status $mstr(061)
}
var %status = $chr(160) $+ %status
if (a isin $1) {
;Adds a contact to the list, but only if the user isn't in it yet
var %groups = $readini($msn.dir(data\groups.ini),contacts,$2)
var %t = $numtok(%groups,44),%o 0
while %o < %t {
inc %o
var %g = $gettok(%groups,%o,44)
var %g = $readini($msn.dir(data\groups.ini),groups,%g)
var %gname = $msn.replace(%g)
var %line = $didwm(msndx,1,1 +* 8* $+ %gname $+ *)
if (%s == FLN) { did -i msndx 1 $calc(%line + $ini($msn.dir(data\contacts.ini),%g,0)) $iif(%msn.ghost == on,+c) 2 + %icon %msn.nick $+ $chr(9) $2 }
else { did -i msndx 1 $calc(%line +1) 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2 }
}
}
if (n isin $1) {
;When a user goes online, use this switch
msn.list.delete $2
var %groups = $readini($msn.dir(data\groups.ini),contacts,$2)
var %t = $numtok(%groups,44),%o 0
while %o < %t {
inc %o
var %g = $gettok(%groups,%o,44)
var %g = $readini($msn.dir(data\groups.ini),groups,%g)
var %gname = $msn.replace(%g)
var %line = $didwm(msndx,1,1 +* 8* $+ %gname $+ *)
did -i msndx 1 $calc(%line + 1) 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2
}
}
if (f isin $1) {
;When a user goes offline, use this switch
msn.list.delete $2
if ($msn.state($2) != NLN) { var %msn.nick = $gettok(%msn.nick,1- $+ $calc($numtok(%msn.nick,32) -1),32) }
var %groups = $readini($msn.dir(data\groups.ini),contacts,$2)
var %t = $numtok(%groups,44),%o 0
while %o < %t {
inc %o
var %g = $gettok(%groups,%o,44)
var %g = $readini($msn.dir(data\groups.ini),groups,%g)
var %gname = $msn.replace(%g)
var %line = $didwm(msndx,1,1 +* 8* $+ %gname $+ *)
did -i msndx 1 $calc(%line + $ini($msn.dir(data\contacts.ini),%g,0)) 2 $iif(%msn.ghost == on,+c,+) %icon %msn.nick %status $+ $chr(9) $2
}
}
if (o isin $1) {
;When a user changes its status, use this switch
var %o = o
:check
inc %o
var %o = $didwm(msndx,1,* $2,%o)
if (%o == 0) { goto done }
did -o msndx 1 %o 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2
goto check
:done
}
if (r isin $1) {
;Deletes a user from the dialog id 1, but it is still a contact of the main list
msn.list.delete $2
}
elseif (d isin $1) {
msn.list.delete $2
var %o = 0,%t = $ini($msn.dir(data\contacts.ini),0)
while %o < %t { inc %o | remini $msn.dir(data\contacts.ini) $ini($msn.dir(data\contacts.ini),%o) $2 }
remini $msn.dir(data\groups.ini) contacts $2
hdel msn.states $2 | hdel msn.dp $2 | hdel msn.msgqueue $2
}
hadd -m msn.states $2 %s
:skip
}
else {
;Usage:
;/msn.change [-anfodb] <address> <status> [nick]
;-a : adds a contact to the list
;-n : removes the offline contact, and adds the online contact to the beginning of the list
;-f : removes the online contact, and adds the offline contact to the end of the list
;-o : replaces a contact with <status> or [nick] parameters
;-r : deletes a contat from the list, but not deletes it from the main list
;-d : deletes a contat from the list
;-b : specifies that it is a blocked contact, then, it gives the respective icon, and adds (Blocked) text to the status
var %s = $3, %msn.nick = $iif($4,$msn.replace($4-),$msn.name($2))
if (%s == NLN) { var %icon = 2 }
elseif (%s == FLN) { var %icon = 3 }
elseif (%s == BSY) { var %icon = 4 }
elseif (%s == AWY) { var %icon = 5 }
elseif (%s == BRB) { var %icon = 9 }
elseif (%s == LUN) { var %icon = 10 }
elseif (%s == PHN) { var %icon = 11 }
elseif (%s == IDL) { var %icon = 12 }
if (%s == BSY) { var %status = $mstr(055) } | elseif (%s == IDL) { var %status = $mstr(056) } | elseif (%s == AWY) { var %status = $mstr(057) }
elseif (%s == BRB) { var %status = $mstr(058) } | elseif (%s == PHN) { var %status = $mstr(059) } | elseif (%s == LUN) { var %status = $mstr(060) }
if (b isin $1) {
;If user is blocked...
var %icon = $iif(%s != FLN,7,6)
var %status = %status $mstr(061)
}
if (a isin $1) {
if (%s != FLN) { did -i msndx 1 4 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2 }
else { did -a msndx 1 2 + %icon %msn.nick $+ $chr(9) $2 }
}
elseif (n isin $1) {
msn.list.delete $2
did -i msndx 1 4 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2
}
elseif (f isin $1) {
msn.list.delete $2
did -a msndx 1 2 + %icon %msn.nick %msn.status $+ $chr(9) $2
}
elseif (o isin $1) {
var %line = $didwm(msndx,1,* $2)
if (%line != 0) did -o msndx 1 %line 2 + %icon %msn.nick $iif(%status != NLN,%status) $+ $chr(9) $2
}
elseif (r isin $1) {
msn.list.delete $2
}
elseif (d isin $1) {
msn.list.delete $2
var %o = 0,%t = $ini($msn.dir(data\contacts.ini),0)
while %o < %t { inc %o | remini $msn.dir(data\contacts.ini) $ini($msn.dir(data\contacts.ini),%o) $2 }
remini $msn.dir(data\groups.ini) contacts $2
hdel msn.states $2 | hdel msn.dp $2 | hdel msn.msgqueue $2
}
hadd -m msn.states $2 %s
:skip
}
}
alias msn.away {
if (!$sock(msn)) { return }
if (!$1) {
if (%msn.mystatus != NLN) && (%msn.mystatus != HDN) { return $true }
}
elseif ($1 == disabled) {
if ((%msn.mystatus != NLN) && (%msn.mystatus != HDN)) && (%msn.away.disable == on) { return $true }
}
elseif ($1 == message) {
if ((%msn.mystatus != NLN) && (%msn.mystatus != HDN)) && (%msn.away.msg == on) { return $true }
}
}
alias msn.sort {
if (!$sock(msn)) { return }
did -r msndx 1
write -c $msn.dir(data\list.txt)
set %msn.sortcontacts $1
msn.status $mstr(044)
var %o = $ini($msn.dir(data\contacts.ini),0)
if ($1 == groups) {
while %o > 0 {
var %g = $ini($msn.dir(data\contacts.ini),%o)
write $msn.dir(data\list.txt) 1 + 8 $msn.replace(%g)
var %t2 = $ini($msn.dir(data\contacts.ini),%g,0),%o2 = $ini($msn.dir(data\contacts.ini),%g,0)
if (%msn.show.offline == on) {
while %o2 > 0 {
var %addr = $ini($msn.dir(data\contacts.ini),%g,%o2)
var %nick = $msn.name(%addr)
write $msn.dir(data\list.txt) 2 + $iif($msn.isblocked(%addr),6,3) $msn.replace(%nick) $iif($msn.isblocked(%addr),$mstr(061)) $+ $chr(9) $+ %addr
dec %o2
;End while %o2 > 0
}
;End if (%msn.show.offline == on)
}
dec %o
;End while %o > 0
}
loadbuf -o msndx 1 $msn.dir(data\list.txt)
;End if ($1 == groups)
}
else {
write $msn.dir(data\list.txt) 1 + 8 $mstr(062)
if (%msn.show.offline == on) {
write $msn.dir(data\list.txt) 1 + 8 $mstr(063)
while %o > 0 {
var %g = $ini($msn.dir(data\contacts.ini),%o)
var %t2 = $ini($msn.dir(data\contacts.ini),%g,0),%o2 = $ini($msn.dir(data\contacts.ini),%g,0)
while %o2 > 0 {
var %addr = $ini($msn.dir(data\contacts.ini),%g,%o2)
var %nick = $msn.name(%addr)
if ($read($msn.dir(data\list.txt),w,* %addr)) { goto skip }
write $msn.dir(data\list.txt) 2 + $iif($msn.isblocked(%addr),6,3) $msn.replace(%nick) $iif($msn.isblocked(%addr),$mstr(061)) $+ $chr(9) $+ %addr
dec %o2
:skip
;End while %o2 > 0
}
dec %o
;End while %o > 0
}
;End if (%msn.show.offline == on)
}
loadbuf -o msndx 1 $msn.dir(data\list.txt)
;End else
}
var %o 0, %t = $hget(msn.states,0).item
while %o < %t {
inc %o
var %addr = $hget(msn.states,%o).item
var %st = $msn.state(%addr)
if (%st != FLN) {
msn.change $iif(%msn.show.offline == on,-n,-a) $+ $iif($msn.isblocked(%addr),b) %addr %st
}
}
msn.status %msn.me ( $+ %msn.address $+ )
}
alias msn.sort.hide {
set %msn.show.offline $iif(%msn.show.offline == on,off,on)
msn.sort %msn.sortcontacts
}
alias urldecode {
var %o 0,%ret = $1-
while %o < $numtok($1-,37) {
inc %o
var %hex = $mid($gettok($1-,%o,37),1,2)
var %dec = $base(%hex,16,10)
%ret = $replace(%ret,$chr(37) $+ $mid($gettok($1-,%o,37),1,2),$chr(%dec))
}
return %ret
}
alias msn.dp {
var %file = $sfile($mircdir,Select an image file,Select)
if (!%file) { return }
var %ext = $gettok(%file,$numtok(%file,46),46)
if ((%ext != png) && (%ext != bmp) && (%ext != jpg)) || ($numtok(%file,46) == 1) {
var %c = $input(Incorrect file extension. $crlf $+ Please use png $+ $chr(44) jpg or bmp,o,Image error)
return
}
if ($pic(%file).width > 96) && ($pic(%file).height > 96) {
var %win = @Center the square
window -pd +t @Preview -1 -1 104 123
window -pkd +t %win $calc($window(@Preview ).x + 120) $window(@Preview ).y $calc($pic(%file).width + 8) $calc($pic(%file).height + 27)
titlebar %win and click the area you want to show as display picture
drawpic -c %win 0 0 " $+ %file $+ "
set %msn.dpfile " $+ %file $+ "
}
else {
window -pd +t @Preview -1 -1 104 123
drawpic -s @Preview 0 0 96 96 " $+ %file $+ "
msn.dp.select
}
}
alias msn.dp.stretch {
var %file = $sfile($mircdir,Select an image file,Select)
if (!%file) { return }
var %ext = $gettok(%file,$numtok(%file,46),46)
if ((%ext != png) && (%ext != bmp) && (%ext != jpg)) || ($numtok(%file,46) == 1) {
var %c = $input(Incorrect file extension. $crlf $+ Please use png $+ $chr(44) jpg or bmp,o,Image error)
return
}
window -pd +t @Preview -1 -1 104 123
drawpic -s @Preview 0 0 96 96 " $+ %file $+ "
msn.dp.select
}
menu @Center the square {
mouse: {
var %win = @Center the square
drawpic -cn %win 0 0 %msn.dpfile
var %x = $calc($mouse.x - 49),%y = $calc($mouse.y - 49)
if ($mouse.x < 49) { var %x = 0 } | elseif ($mouse.x > $calc($window(%win).w - 57)) { var %x = $calc($window(%win).w - 106) }
if ($mouse.y < 49) { var %y = 0 } | elseif ($mouse.y > $calc($window(%win).h - 77)) { var %y = $calc($window(%win).h - 125) }
drawrect -ni %win 14 1 %x %y 98 98
drawdot %win
drawcopy @Center the square $calc(%x +1) $calc(%y +1) 96 96 @Preview 0 0
}
sclick: { msn.dp.select }
}
alias msn.dp.select {
.remove $msn.dir(temp\mydp.png)
drawsave -b24 @Preview $msn.dir(temp\mydp.bmp)
; dll $iodll ReleaseProcess bmp2png
;dll $iodll RunConsole bmp2png [ $msn.dir(bmp2png) -6QIEO $msn.dir(temp\mydp.png) $msn.dir(temp\mydp.bmp) ]
cmd $msn.dir(bmp2png) > -6QIEO $msn.dir(temp\mydp.png) $msn.dir(temp\mydp.bmp)
window -c @Center the square
window -c @Preview
.timerwait.msnobj -m 1 500 msn.dp.msnobj
}
alias msn.dp.msnobj {
msn.waitdlg
.timermsnobj -m 1 1 msn.dp.obj.create
}
alias msn.dp.obj.create {
if ($exists($msn.dir(temp\mydp.png))) {
var %obj = $&
"Creator $+ %msn.address $&
$+ Size $+ $lof($msn.dir(temp\mydp.png)) $&
$+ Type3 $&
$+ Locationmydp.png $&
$+ FriendlyAAA="
.remove $msn.dir(temp\mydp.txt)
run $msn.dir(msnobj.exe) %obj $msn.dir(temp\mydp.png) $msn.dir(temp\mydp.txt)
while $lines($msn.dir(temp\mydp.txt)) != 2 { dll $wfix WhileFix . }
set %msn.mydp.obj <msnobj Creator=" $+ %msn.address $+ " $&
Size=" $+ $file($scriptdirtemp\mydp.png).size $+ " $&
Type="3" $&
Location="mydp.png" $&
Friendly="AAA=" $&
SHA1D=" $+ $read($msn.dir(temp\mydp.txt),1) $+ " $&
SHA1C=" $+ $read($msn.dir(temp\mydp.txt),2) $+ "/>
msn.chgstatus %msn.mystatus
var %o 0 | while %o < $window(@*@*.*,0) { inc %o | did -g msnfx. $+ $mid($window(@*@*.*,%o),2) 1 $msn.dir(temp\mydp.png) }
}
msn.waitdlg
}
alias msn.bigdp {
var %file = $sfile($mircdir,Select an image file,Select)
if (!%file) { return }
var %ext = $gettok(%file,$numtok(%file,46),46)
if ((%ext != png) && (%ext != bmp) && (%ext != jpg)) || ($numtok(%file,46) == 1) {
var %c = $input(Incorrect file extension. $crlf $+ Please use png $+ $chr(44) jpg or bmp,o,Image error)
return
}
var %w = $pic(%file).width,%h = $pic(%file).height
if (%w >= 300) || (%h >= 300) {
var %t = $input($mstr(064) $+ $crlf $+ $mstr(065),yu,WTF!?)
if (%t == $false) { return }
}
window -pd +t @Preview -1 -1 $calc(%w + 8) $calc(%h + 27)
drawpic @Preview 0 0 " $+ %file $+ "
if (%msn.dptip == on) {
msnmsg $mstr(066) $crlf $mstr(067)
unset %msn.dptip
}
msn.dp.select
}
alias msn.stealdp {
if ($hget(msn.dp,$1)) {
.copy -o $msn.dir(temp\ $+ $hget(msn.dp,$1)) $msn.dir(temp\mydp.png)
.timerwait.msnobj -m 1 500 msn.dp.msnobj
}
}
alias msn.savedp {
if ($hget(msn.dp,$1)) {
var %file = $sfile($mircdir untitled.png,Save user's display picture,Save)
if (%file) { .copy -o $msn.dir(temp\ $+ $hget(msn.dp,$1)) " $+ %file $+ " }
}
}
alias msn.dp.popup {
var %u = msndp
popNew %u 16 16
popLoadimg %u icon small $msn.icon(dp,1)
popAddItem %u end $iif(!$sock(msn) && !$1,+d) 1 $mstr(015) $cr msn.dp.stretch
popAddItem %u end $iif(!$sock(msn) && !$1,+d) 1 $mstr(016) $cr msn.dp
popAddItem %u end $iif(!$sock(msn) && !$1,+d) 1 $mstr(017) $cr msn.bigdp
if (!$1) {
popAddItem %u end +
popAddItem %u end $iif(!$sock(msn) || !$hget(msn.dp,%msn.msnfx),+d) 1 $mstr(017b) $cr msn.stealdp %msn.msnfx
popAddItem %u end $iif(!$sock(msn) || !$hget(msn.dp,%msn.msnfx),+d) 1 $mstr(017c) $cr msn.savedp %msn.msnfx
}
if (!$1) {
popPopup msndp $mouse.dx $mouse.dy
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
}
}
alias asc2urlhex {
return $replace($1-,<,$chr(37) $+ 3C,>,$chr(37) $+ 3E,=,$chr(37) $+ 3D,",$chr(37) $+ 22,@,$chr(37) $+ 40,/,$chr(37) $+ 2F,+,$chr(37) $+ 2B)
}
on 1:CLOSE:@Center the square: { window -c @Preview }
on 1:CLOSE:@Preview : { window -c @Center the square }
menu status,channel,query,menubar {
-
MSN DX
.$mstr(068):msndx
.-
.$mstr(069):msndx_setup
.$mstr(127):msn.lang
.-
.http $+ $chr(58) $+ //www.msndx.com.ar:run http://www.msndx.com.ar
.-
.$mstr(070):msn.unload
}
on 1:START: { msn.temp.clean }
alias msn.temp.clean {
var %o 0,%t = $findfile($scriptdirtemp,*.*,0)
while %o < %t {
inc %o
var %file = $findfile($scriptdirtemp,*.*,%o)
if ($nopath(%file) != mydp.png) {
if ($file(%file).mtime < $calc($ctime - 86400)) { .remove " $+ %file $+ " }
}
}
}
alias mstr {
if ($0 == 1) {
return $msn.replace($readini($msn.dir(lang\ $+ %msn.lang $+ ),general,$1))
}
else {
return $msn.replace($readini($msn.dir(lang\ $+ %msn.lang $+ ),$1,$2))
}
}
alias msn.notify {
window -p @msn.notify 300 300 163 82
fx SetStyle @msn.notify > notitle
drawrect -fr @msn.notify $rgb(60,124,188) 1 0 0 200 18
; drawrect -fr @msn.notify $rgb(60,124,188) 1 0 0 18 200
drawline -r @msn.notify 0 2 0 18 200 18
}
; MSN DX v1.61 - by FoLKeN^
; Notfication Server File
on 1:sockopen:msn.ip: {
if ($sockerr > 0) { msnmsg $cr $mstr(071) | msn.status $mstr(045) | return }
if (%msn.proxy) { sockwrite -tn $sockname CONNECT messenger.hotmail.com:1863 HTTP/1.0 | sockwrite -tn $sockname }
else { msn.ds.start }
}
alias msn.ds.start {
sockwrite -tn msn.ip VER 1 MSNP9 MSNP8 CVR0
sockwrite -tn msn.ip CVR 2 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS %msn.address
sockwrite -tn msn.ip USR 3 TWN I %msn.address
}
on 1:sockread:msn.ip: {
sockread %msn.ip.temp
if (%msn.proxy) && (HTTP/1.0 200 * iswm %msn.ip.temp) { msn.ds.start }
if ($gettok(%msn.ip.temp,1,32) == XFR) {
set %msn.ns.ip $gettok($gettok(%msn.ip.temp,4,32),1,58)
set %msn.ns.port $gettok($gettok(%msn.ip.temp,4,32),2,58)
if (%msn.proxy) { sockopen msn %msn.proxy }
else { sockopen msn %msn.ns.ip %msn.ns.port }
unset %msn.ip.temp
}
}
on 1:sockopen:msn: {
if ($sockerr > 0) { msnmsg $cr $mstr(072) | msn.status $mstr(045) | return }
if (%msn.proxy) { sockwrite -tn $sockname CONNECT %msn.ns.ip $+ : $+ %msn.ns.port HTTP/1.0 | sockwrite -tn $sockname }
else { msn.ns.start }
msn.status $mstr(046)
unset %msn.ns.*
}
alias msn.ns.start {
sockwrite -tn msn VER 1 MSNP9 MSNP8 CVR0
sockwrite -tn msn CVR 2 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS %msn.address
sockwrite -tn msn USR 3 TWN I %msn.address
}
on 1:sockread:msn: {
sockread %msn.buffer
if ($sockbr == 0) return
var %c = $gettok(%msn.buffer,1,32)
if (%msn.proxy) && (HTTP/1.0 200 * iswm %msn.buffer) { msn.ns.start }
if (USR 3 == $gettok(%msn.buffer,1-2,32)) {
;set %msn.auth.var $gettok(%msn.buffer,5-,32) | msn.auth
var %msn.var = $gettok(%msn.buffer,5-,32)
var %msn.ticket = $dll($msn.dir(dll\ssl.dll),msnp8,%msn.address > $decode(%msn.password) > %msn.var)
if (%msn.ticket) { msend USR 4 TWN S %msn.ticket }
}
elseif (USR 4 == $gettok(%msn.buffer,1-2,32)) {
set %msn.me $msn.replace($gettok(%msn.buffer,5,32)))
msend URL 5 INBOX
}
elseif (URL 5 == $gettok(%msn.buffer,1-2,32)) { set %msn.inbox.path $gettok(%msn.buffer,3,32) | set %msn.inbox.addr $gettok(%msn.buffer,4,32) }
elseif (URL 6 == $gettok(%msn.buffer,1-2,32)) { var %path = $gettok(%msn.buffer,3,32) | var %addr $gettok(%msn.buffer,4,32) | msn.htmlmail %path %addr }
elseif (ClientIP: == $gettok(%msn.buffer,1,32)) { set %msn.client.ip $gettok(%msn.buffer,2,32) }
elseif (sid: == $gettok(%msn.buffer,1,32)) { set %msn.sid $gettok(%msn.buffer,2,32) }
elseif (kv: == $gettok(%msn.buffer,1,32)) { set %msn.kv $gettok(%msn.buffer,2,32) }
elseif (MSPAuth: == $gettok(%msn.buffer,1,32)) {
set %msn.auth $gettok(%msn.buffer,2,32)
msend SYN 1 0 0
msn.status $mstr(047)
if (%msn.waiting.show.offline == on) { set %msn.show.offline on }
elseif (%msn.waiting.show.offline == off) { set %msn.show.offline off }
unset %msn.waiting.show.offline
did -i msndx 2 3 + 8 $mstr(073)
}
elseif (Inbox-Unread: == $gettok(%msn.buffer,1,32)) {
var %n = $gettok(%msn.buffer,2,32)
if (%n) && (%n != 0) {
if (%msn.auto.email == on) { msn.inbox | halt }
did -i msndx 2 3 + 8 $replace($mstr(074),#1,%n)
if (%msn.display.balloons == on) {
;tray balloon 1 3 > $mstr(075) > $replace($mstr(076),#1,%n) $iif($os == XP,$mstr(077))
msn.popup.popup $replace($mstr(076),#1,%n) $+ <br><a href="mirc: msn.htmlmail" class="link"> $+ $mstr(077) $+ </a>
;set %msn.balloon mail
}
if (%msn.sounds == on) { .splay $msn.dir(sounds/newmail.wav) }
}
}
elseif (text/x-msmsgsemailnotification isin $gettok(%msn.buffer,2,32)) {
var %t
while (id: !isin %t) {
sockread %t
tokenize 32 %t
if ($1 == From:) { var %from = $2- }
elseif ($1 == Message-URL:) { var %msg.url = $2- }
elseif ($1 == Post-URL:) { var %post.url = $2- }
elseif ($1 == Subject:) { var %subject = $2- }
elseif ($1 == From-Addr:) { var %from.addr = $2- }
}
msn.popup.popup <a href="mirc: msn.htmlmail %msg.url %post.url $+ " class="link">You received an e-mail from %from.addr ( $+ %from $+ )</a>
}
elseif (CHL == $gettok(%msn.buffer,1,32)) {
var %chl.hash = $gettok(%msn.buffer,3,32)
msend QRY 10 msmsgs@msnmsgr.com 32
sockwrite $sockname $md5(%chl.hash $+ Q1P7W2E4J9R8U3S5)
if (%msn.hiddencontacts == on) && (!$msn.away(disabled)) && ($lines($scriptdirdata\msn.hidden.txt) != 0) {
if (%msn.display.balloons == on) {
;tray balloon 1 3 > $mstr(078) > $replace($mstr(079),#1,$lines($scriptdirdata\msn.hidden.txt)) $iif($os == XP,$mstr(080))
msn.popup.popup $replace($mstr(079),#1,$lines($scriptdirdata\msn.hidden.txt)) $+ <br><a href="mirc: msn.hidden" class="link"> $+ $mstr(080) $+ </a>
;set %msn.balloon hidden
}
if (%msn.sounds == on) { .splay $msn.dir(sounds/newmail.wav) }
}
}
elseif (XFR == $gettok(%msn.buffer,1,32) && (SB == $gettok(%msn.buffer,3,32))) {
set %ckihash2 $gettok(%msn.buffer,6,32)
set %msn.mode blah
sockclose msn. $+ %msn2chat
set %msn.sb.ip $gettok($gettok(%msn.buffer,4,32),1,58)
set %msn.sb.port 1863
if (%msn.proxy) { sockopen msn. $+ %msn2chat %msn.proxy }
else { sockopen msn. $+ %msn2chat %msn.sb.ip %msn.sb.port }
}
elseif (RNG == $gettok(%msn.buffer,1,32)) {
set %id $gettok(%msn.buffer,2,32)
set %ckihash $gettok(%msn.buffer,5,32) | var %user = $gettok(%msn.buffer,6,32)
unset %msn.mode
if (!$sock(msn. $+ %user)) {
set %msn2chat %user
set %msn.sb.ip $gettok($gettok(%msn.buffer,3,32),1,58)
set %msn.sb.port $gettok($gettok(%msn.buffer,3,32),2,58)
if (%msn.proxy) { sockopen msn. $+ %msn2chat %msn.proxy }
else { sockopen msn. $+ %msn2chat %msn.sb.ip %msn.sb.port }
}
}
elseif (NLN == $gettok(%msn.buffer,1,32)) {
var %usr = $gettok(%msn.buffer,3,32),%status = $gettok(%msn.buffer,2,32)
var %msn.nick = $msn.replace($gettok(%msn.buffer,4,32))
var %o 0,%t = $ini($msn.dir(data\contacts.ini),0)
hadd -m msn.names %usr %msn.nick
if ($hget(msn.obj,%usr) != $urldecode($gettok(%msn.buffer,6,32))) {
hadd -m msn.obj %usr $urldecode($gettok(%msn.buffer,6,32))
if ($dialog(msnfx. $+ %usr)) {
if ($sock(msn. $+ %usr).status == active) { msn.dp.invite %usr }
else { hdel msn.dp %usr | msn.chat %usr }
}
else { if ($hget(msn.dp)) { hdel msn.dp %usr } }
}
if ($dialog(msnfx. $+ %usr)) {
did -e $ifmatch 3,4,5
var %st
if (%status == NLN) { %st = $mstr(081) } | elseif (%status == BSY) { %st = $mstr(082) } | elseif (%status == IDL) { %st = $mstr(083) } | elseif (%status == AWY) { %st = $mstr(084) } | elseif (%status == BRB) { %st = $mstr(085) } | elseif (%status == PHN) { %st = $mstr(086) } | elseif (%status == LUN) { %st = $mstr(087) }
if (%status == $msn.state(%usr)) { }
elseif (%status == NLN) && ($msn.state(%usr) == FLN) { msn.echo @ $+ %usr $pre(3) $+ $replace($mstr(088),#1,$msn.name(%usr)) }
else { msn.echo @ $+ %usr $pre(7) $+ $replace($mstr(089),#1,$msn.name(%usr),#2,%st) }
}
msnfx.refresh.names %usr
if ($active != @ $+ %usr) && (!$msn.away(disabled)) {
if (%msn.sounds == on) && ($msn.state(%usr) == FLN) { .splay $msn.dir(sounds/online.wav) }
if (%msn.display.balloons == on) && ($msn.state(%usr) == FLN) {
msn.popup.popup <a href="mirc: msn.chat %usr $+ " class="link" title=" $+ %usr $+ "> $+ $iif($len(%msn.nick) >= 45,$mid(%msn.nick,1,45) $+ ...,%msn.nick) $+ </a><br> $+ $mstr(090)
}
}
if ($msn.state(%usr) == FLN) || (!$msn.state(%usr)) { msn.change $iif(%msn.show.offline == on,-n,-a) $+ $iif($msn.isblocked(%usr),b) %usr %status %msn.nick }
else { msn.change -o $+ $iif($msn.isblocked(%usr),b) %usr %status %msn.nick }
}
elseif (FLN == $gettok(%msn.buffer,1,32)) {
var %msn.nick = $msn.name($gettok(%msn.buffer,2,32))
if ($active != @ $+ $gettok(%msn.buffer,2,32)) && (%msn.display.balloons == on) && (!$msn.away(disabled)) {
;tray balloon 1 3 > $msn.name($gettok(%msn.buffer,2,32)) > $mstr(091)
msn.popup.popup $iif($len(%msn.nick) >= 45,$mid(%msn.nick,1,45) $+ ...,%msn.nick) $+ <br> $+ $mstr(091)
}
if (%msn.show.offline == on) { msn.change -f $+ $iif($msn.isblocked($gettok(%msn.buffer,2,32)),b) $gettok(%msn.buffer,2,32) FLN }
else { msn.change -r $gettok(%msn.buffer,2,32) FLN }
if ($dialog(msnfx. $+ $gettok(%msn.buffer,2,32))) {
did -b $ifmatch 3,4,5
msn.echo @ $+ $gettok(%msn.buffer,2,32) $pre(4) $+ $replace($mstr(092),#1,$msn.name($gettok(%msn.buffer,2,32)))
}
sockclose msn. $+ $gettok(%msn.buffer,2,32)
}
elseif (REA 19 == $gettok(%msn.buffer,1-2,32)) {
set %msn.me $msn.replace($gettok(%msn.buffer,5,32))
msn.status %msn.me ( $+ %msn.address $+ )
msnfx.refresh.names
}
elseif (ADD 15 == $gettok(%msn.buffer,1-2,32)) {
if ($dialog(msn.nc. $+ $gettok(%msn.buffer,5,32))) { dialog -x $ifmatch | goto skipchange }
msn.change -ob $gettok(%msn.buffer,5,32) $msn.state($gettok(%msn.buffer,5,32))
:skipchange
if ($dialog(msnfx. $+ $gettok(%msn.buffer,5,32))) { did -o $ifmatch 5 3 +a 2 $mstr(msnfx,5b) }
write $msn.dir(data\msn.block.txt) $gettok(%msn.buffer,5,32)
}
elseif (ADD 14 == $gettok(%msn.buffer,1-2,32)) {
msn.change -o $gettok(%msn.buffer,5,32) $msn.state($gettok(%msn.buffer,5,32)) $msn.name($gettok(%msn.buffer,5,32))
if ($dialog(msnfx. $+ $gettok(%msn.buffer,5,32))) { did -o $ifmatch 5 3 +a 3 $mstr(msnfx,5c) }
write -dw $+ $gettok(%msn.buffer,5,32) $msn.dir(data\msn.block.txt)
}
elseif (ADD 20 == $gettok(%msn.buffer,1-2,32)) {
var %msn.nick = $iif($dialog(msn.nc. $+ $gettok(%msn.buffer,5,32)),$did($ifmatch,9),$gettok(%msn.buffer,5,32))
writeini $msn.dir(data\groups.ini) contacts $gettok(%msn.buffer,5,32) 0
writeini $msn.dir(data\contacts.ini) $readini($msn.dir(data\groups.ini),groups,0) $gettok(%msn.buffer,5,32) %msn.nick
hadd -m msn.names $gettok(%msn.buffer,5,32) %msn.nick
if (%msn.show.offline == on) { msn.change -a $gettok(%msn.buffer,5,32) FLN }
if ($dialog(msn.nc. $+ $gettok(%msn.buffer,5,32))) { dialog -x $ifmatch }
}
elseif (ADD 0 RL == $gettok(%msn.buffer,1-3,32)) {
if ($readini($msn.dir(data\groups.ini),contacts,$gettok(%msn.buffer,5,32)) == $null) {
msn.newcontact $gettok(%msn.buffer,5,32) $gettok(%msn.buffer,6,32)
}
}
elseif (CHG == $gettok(%msn.buffer,1,32)) {
var %st = $gettok(%msn.buffer,3,32)
if (%st == NLN) { did -o msndx 3 2 +cv 2 $mstr(093) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 2 $mstr(093) }
elseif (%st == AWY) { did -o msndx 3 2 +cv 4 $mstr(094) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 4 $mstr(094) }
elseif (%st == BRB) { did -o msndx 3 2 +cv 5 $mstr(095) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 5 $mstr(095) }
elseif (%st == BSY) { did -o msndx 3 2 +cv 3 $mstr(096) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 3 $mstr(096) }
elseif (%st == PHN) { did -o msndx 3 2 +cv 7 $mstr(097) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 7 $mstr(097) }
elseif (%st == LUN) { did -o msndx 3 2 +cv 6 $mstr(098) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 6 $mstr(098) }
elseif (%st == HDN) { did -o msndx 3 2 +cv 1 $mstr(099) ( $+ %msn.address $+ ) | did -i msndx 2 2 + 1 $mstr(099) }
set %msn.mystatus %st
if (!$msn.away(disabled)) {
if (%msn.pager.count) {
if (%msn.display.balloons == on) {
;tray balloon 1 3 > $mstr(102) > $mstr(103) $crlf $+ $replace($mstr(104),#1,%msn.pager.count) $iif($os == XP,$mstr(105))
;set %msn.balloon pager
msn.popup.popup $mstr(103) $+ <br> $+ $replace($mstr(104),#1,%msn.pager.count) $+ <br><a href='mirc: msn.pager'> $+ $mstr(105) $+ </a>
}
.timermsn.pager -m 1 1 msn.pager.ask
}
unset %msn.pager.count
}
}
elseif (SYN == %c) {
write -c $msn.dir(data\contacts.ini)
write -c $msn.dir(data\groups.ini)
write -c $msn.dir(data\list.txt)
set %msn.ctotal $gettok(%msn.buffer,4,32)
set %msn.ccount 0
hmake msn.states %msn.ctotal
hmake msn.names %msn.ctotal
write -c $msn.dir(data\msn.block.txt)
write -c $msn.dir(data\msn.hidden.txt)
}
elseif (LSG == %c) {
writeini $msn.dir(data\groups.ini) groups $gettok(%msn.buffer,2,32) $gettok(%msn.buffer,3,32)
write $msn.dir(data\contacts.ini) $chr(91) $+ $gettok(%msn.buffer,3,32) $+ $chr(93)
}
elseif (LST == %c) {
inc %msn.ccount
if ($and($gettok(%msn.buffer,4,32),1) == 1) {
var %t = $numtok($gettok(%msn.buffer,5,32),44),%o = 0
while %o < %t {
inc %o
var %g = $gettok($gettok(%msn.buffer,5,32),%o,44)
writeini $msn.dir(data\contacts.ini) $readini($msn.dir(data\groups.ini),groups,%g) $gettok(%msn.buffer,2,32) $gettok(%msn.buffer,3,32)
}
hadd -m msn.names $gettok(%msn.buffer,2,32) $gettok(%msn.buffer,3,32)
writeini $msn.dir(data\groups.ini) contacts $gettok(%msn.buffer,2,32) $gettok(%msn.buffer,5,32)
hadd -m msn.states $gettok(%msn.buffer,2,32) FLN
}
if ($and($gettok(%msn.buffer,4,32),8) == 8) && ($and($gettok(%msn.buffer,4,32),2) == 2) && ($and($gettok(%msn.buffer,4,32),1) == 0) { write $msn.dir(data\msn.hidden.txt) $gettok(%msn.buffer,2,32) }
if ($and($gettok(%msn.buffer,4,32),4) == 4) { write $msn.dir(data\msn.block.txt) $gettok(%msn.buffer,2,32) }
if ($gettok(%msn.buffer,4,32) == 8) { msn.newcontact $gettok(%msn.buffer,2,32) $gettok(%msn.buffer,3,32) }
if (%msn.ccount == %msn.ctotal) {
msn.sort %msn.sortcontacts
msn.chgstatus $iif(%msn.auto.invisible == on,HDN,NLN) 0 | unset %msn.ctotal | unset %msn.ccount
}
}
elseif (ILN == $gettok(%msn.buffer,1,32)) {
var %s = $gettok(%msn.buffer,3,32)
msn.change $iif(%msn.show.offline == on,-n,-a) $+ $iif($msn.isblocked($gettok(%msn.buffer,4,32)),b) $gettok(%msn.buffer,4,32) %s $gettok(%msn.buffer,5,32)
hadd -m msn.names $gettok(%msn.buffer,4,32) $gettok(%msn.buffer,5,32)
hadd -m msn.obj $gettok(%msn.buffer,4,32) $urldecode($gettok(%msn.buffer,7,32))
}
;Error reports
elseif (911 == %c) {
sockclose msn
msnmsg $cr $mstr(106)
}
}
on 1:sockclose:msn: {
did -rh msndx 1
did -v msndx 1
hfree msn.states
hfree msn.msgqueue
hfree msn.names
hfree msn.dp
msn.status $mstr(045)
did -o msndx 3 2 +cv 1 $mstr(101)
did -i msndx 2 2 + 1 $mstr(100)
did -i msndx 2 3 + 8 $mstr(101)
}
alias msn.auth {
if ($gettok(%msn.address,2,64) == hotmail.com) { var %host = loginnet.passport.com }
elseif ($gettok(%msn.address,2,64) == msn.com) { var %host = msnialogin.passport.com }
else { var %host = login.passport.com }
sockopen msn.auth $iif(%msn.proxy,%msn.proxy,%host 80)
set %msn.auth.host %host
}
on 1:sockopen:msn.auth:{
sockwrite -n msn.auth GET http:// $+ %msn.auth.host $+ /login2.srf HTTP/1.1
sockwrite -n msn.auth Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in= $+ $replace(%msn.address,@,$chr(37) $+ 40) $+ ,pwd= $+ $decode(%msn.password) $+ , $+ %msn.auth.var
sockwrite -n msn.auth Host: %msn.auth.host
sockwrite -n msn.auth User-Agent: MSMSGS
sockwrite -n msn.auth Connection: Close
sockwrite -n msn.auth Cache-Control: no-cache
sockwrite -n msn.auth
}
on 1:sockread:msn.auth:{
var %msn.auth.read | sockread %msn.auth.read
if (HTTP/1.1 401 Unauthorized isin %msn.auth.read) {
sockclose msn
msnmsg $cr $mstr(106)
}
if (Authentication-Info: == $gettok(%msn.auth.read,1,32)) {
msend USR 4 TWN S $gettok(%msn.auth.read,2,39)
unset %msn.auth.*
return
}
}
; MSN DX v1.61 - by FoLKeN^
; Switchboard Server File
on 1:sockopen:msn.*.*: {
if ($sockerr > 0) { return }
if (%msn.proxy) { sockwrite -tn $sockname CONNECT %msn.sb.ip $+ : $+ %msn.sb.port HTTP/1.0 | sockwrite -tn $sockname }
else { msn.sb.start }
unset %msn.sb.*
}
alias msn.sb.start {
var %s = $sock($sockname).status
.timerwait. $+ $mid($target,2) off
if (%msn.mode) { sockwrite -tn $sockname USR 1 %msn.address %ckihash2 }
else { if (%s == active) { sockwrite -tn $sockname ANS 1 %msn.address %ckihash %id } }
}
on 1:sockread:msn.*.*: {
:start
if ($hget(msn.rq,data)) { var %c = $hget(msn.rq,data,&data) | hfree msn.rq | goto resume_read }
var %msn.buf. [ $+ [ $sockname ] ]
sockread %msn.buf. [ $+ [ $sockname ] ]
tokenize 32 %msn.buf. [ $+ [ $sockname ] ]
var %c = $1
if (%msn.proxy) && (HTTP/1.0 200 * iswm $1-) { msn.sb.start }
if (%c == MSG) {
bunset &data
set %msn.len.total $4
:resume_read
sockread $calc(%msn.len.total - $bvar(&data,0)) &data.append
bcopy &data $calc($bvar(&data,0) +1) &data.append 1 -1
if ($bvar(&data,0) < %msn.len.total) { hadd -mb msn.rq data &data | return }
var %msn.user = $mid($sockname,5)
var %msn.nick = $msn.name($2)
set %msn.type $gettok($gettok($msn.txtread(2),2,32),1,59)
if (%msn.type == text/plain) {
var %msg.font = $msn.replace($gettok($gettok($gettok($msn.txtread(3),2-,32),1,59),2,61))
var %msg.color = # $+ $reverse($gettok($gettok($gettok($msn.txtread(3),2-,32),3,59),2,61))
var %msg.style = $gettok($gettok($gettok($msn.txtread(3),2-,32),2,59),2,61)
var %o = 5
while %o <= $msn.txtread(0) {
var %msg = $msn.replace($msn.txtread(%o))
if (!$msn.away(disabled)) {
if (!$window(@ $+ %msn.user)) {
window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ %msn.user -1 -1 560 345 "tahoma" 11
msn.html.attach @ $+ %msn.user
msn.fx %msn.user
.log $iif(%msn.logging == on,on,off) @ $+ %msn.user -f %msn.user $+ .log
}
msn.message.echo @ $+ %msn.user $2 %msg.font $+ ; $+ %msg.color $+ ; $+ %msg.style > %msg
;titlebar @ $+ %msn.user - $replace($msn.replace($msn.name(%msn.user)),$chr(32),$chr(160))
.timertyping $+ %msn.user off
did -ra msnfx. $+ %msn.user 4 %msn.user
if ($active != @ $+ %msn.user) || ($appactive == $false) {
flash -r1 @ $+ %msn.user %msn.nick
if (%msn.sounds == on) { .splay $msn.dir(sounds\msg.wav) }
if (%msn.display.balloons == on) {
;tray balloon 1 3 > %msn.nick > $mstr(109) %msg
;set %msn.balloon window %msn.user
msn.popup.popup <a href="mirc: window -a @ $+ %msn.user $+ " class="link" title=" $+ %msn.user $+ "> $+ $iif($len(%msn.nick) >= 45,$mid(%msn.nick,1,45) $+ ...,%msn.nick) $+ </a> $mstr(109) $+ <br> $iif($len(%msg) >= 60,$mid(%msg,1,60) $+ ...,%msg)
}
}
}
else {
write " $+ $logdirmsndx_pager.log $+ " $asctime([dd/mm/yyyy H:nn:ss]) [ $+ %msn.nick $+ ] %msg
inc %msn.pager.count
}
if ($msn.away(message)) { msn.say %msn.user MSN DX $mstr(110) $+ $crlf $+ $eval(%msn.away.msg.msg,2) }
inc %o
}
}
elseif (%msn.type == text/x-msmsgscontrol) {
if ($msn.away(disabled)) { return }
if ($2 == %msn.user) {
if (!$window(@ $+ %msn.user)) { return }
did -ra msnfx. $+ %msn.user 4 $replace($mstr(111),#1,%msn.user)
.timertyping $+ %msn.user 1 5 did -ra msnfx. $+ %msn.user 4 %msn.user
}
}
elseif (%msn.type == application/x-msnmsgrp2p) {
inc %msn.p2p.count | var %t = %msn.p2p.count
bcopy &p2pmsg 1 &data $calc($bfind(&data,1,$+($crlf,$crlf)) +4) -1
var %flags = $bvar(&p2pmsg,29-32)
if (%flags == 0 0 0 0) {
if (INVITE isin $bvar(&p2pmsg,49,10).text) {
var %p2pinvite $bvar(&p2pmsg,49,900).text
var %k 1,%n,%t
while (!%euf-guid) {
var %n = $bfind(&p2pmsg,%k,13 10)
%t = $bvar(&p2pmsg,%k $+ - $+ $calc(%n - 1)).text
if ($gettok(%t,1,32) == EUF-GUID:) { var %euf-guid = $gettok(%t,2,32) }
if ($gettok(%t,1,32) == Call-ID:) { var %callid = $gettok(%t,2,32) }
elseif ($gettok(%t,1,32) == Content-Type:) {
var %p2ptype = $gettok(%t,2,32)
if (%p2ptype == application/x-msnmsgr-transreqbody) { goto stop }
}
var %s = $calc($bfind(&p2pmsg,1,Context:) + 9)
var %m = $calc($bfind(&p2pmsg,%s,0) - %s)
%k = %n
inc %k 2
}
:stop
if (%euf-guid == {A4268EEC-FEC5-49E5-95C3-F126696BDBF6}) {
set %msn.mydp.baseid $rand(4,1980589)
bset &p2pbaseid 1 0 0 0 0 $getasc(4,%msn.mydp.baseid) 0 0 0 0 0 0 0 0 $bvar(&p2pmsg,17-24) 0 0 0 0 2 0 0 0 $bvar(&p2pmsg,5-8) $bvar(&p2pmsg,33-36) $bvar(&p2pmsg,17-24) 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pbaseid,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pbaseid
sockmark $sockname $gettok($gettok(%p2pinvite,15,32),1,13)
var %p2pbody.second = $crlf $+ SessionID: $gettok($gettok(%p2pinvite,15,32),1,13)
var %branch = $gettok($gettok(%p2pinvite,2,123),1,125)
var %callid = $gettok($gettok(%p2pinvite,3,123),1,125)
var %p2pbody.first = MSNSLP/1.0 200 OK $+ $crlf
var %p2pbody.first = %p2pbody.first $+ To: <msnmsgr: $+ %msn.user $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch= $+ $chr(123) $+ %branch $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ CSeq: 1 $crlf
var %p2pbody.first = %p2pbody.first $+ Call-ID: $chr(123) $+ %callid $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionreqbody $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Length: $calc($len(%p2pbody.second) + 3) $+ $crlf
;Concatenate %p2pbody.first + %p2pbody.second and add the 0x0 char to the end
var %p2pbody = %p2pbody.first $+ %p2pbody.second
bset -t &p2pbody200ok 1 %p2pbody
bset &p2pbody200ok $calc($bvar(&p2pbody200ok,0) +1) 13 10 0
;echo -s 12 %p2pbody
bset &p2pheader200ok 1 0 0 0 0 $getasc(4,%msn.mydp.baseid) 0 0 0 0 0 0 0 0 $getasc(8,$bvar(&p2pbody200ok,0)) $getasc(4,$bvar(&p2pbody200ok,0)) 0 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pfooter200ok 1 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pheader200ok,0) + $bvar(&p2pbody200ok,0) + $bvar(&p2pfooter200ok,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pheader200ok
sockwrite $sockname &p2pbody200ok
sockwrite $sockname &p2pfooter200ok
}
elseif (%euf-guid == {5D3E02AB-6190-11D3-BBBB-00C04F795683}) {
set %msn.ft.firstcallid %callid
bcopy &context 1 &p2pmsg %s %m
var %t = $decode(&context,mb)
set %msn.transfer.filesize $getint($bvar(&context,9,8))
breplace &context 0 124
set %msn.transfer.filename $remove($bvar(&context,21- $+ $bfind(&context,21,124 124 124 124)).text,$chr(124))
set %msn.transfer.mode receive
set %msn.transfer.method p2p
set %msn.transfer.user %msn.user
hadd -mb msn.ft.p2pdata data &p2pmsg
if (!$msn.away(disabled)) {
if (!$window(@ $+ %msn.user)) { window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ %msn.user -1 -1 560 345 "tahoma" 11 | msn.fx %msn.user | .log $iif(%msn.logging == on,on,off) @ $+ %msn.user -f %msn.user $+ .log }
msn.transfer.echo @ $+ %msn.user %msn.user is trying to send to you %msn.transfer.filename ( $+ $bytes(%msn.transfer.size).suf $+ ). Do you want to accept the transfer?
if ($active != @ $+ %msn.user) || ($appactive == $false) {
flash -r1 @ $+ %msn.user %msn.nick
if (%msn.sounds == on) { .splay $msn.dir(sounds\msg.wav) }
}
}
var %ext = $gettok(%msn.transfer.filename,$numtok(%msn.transfer.filename,46),46)
if ($istok(%msn.auto.reject,%ext,32) == $true) {
msn.transfer.cancel msn. $+ %msn.user
if (!$msn.away(disabled)) {
if (!$window(@ $+ %msn.user)) { window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ %msn.user -1 -1 560 345 "tahoma" 11 " $+ $msn.icon $+ " 29 | msn.fx %msn.user | .log $iif(%msn.logging == on,on,off) @ $+ %msn.user -f %msn.user $+ .log }
msn.echo @ $+ %msn.user $pre $+ $mstr(112) $replace($mstr(113),#1,%ext)
}
return
}
}
elseif (%p2ptype == application/x-msnmsgr-transreqbody) {
hadd -mb msn.ft.p2pdata invite &p2pmsg
}
}
elseif (BYE isin $bvar(&p2pmsg,49,3).text) {
var %k 1,%n,%t
while (!%callid) {
var %n = $bfind(&p2pmsg,%k,13 10)
%t = $bvar(&p2pmsg,%k $+ - $+ $calc(%n - 1)).text
if ($gettok(%t,1,32) == Call-ID:) { var %callid = $gettok(%t,2,32) }
elseif ($gettok(%t,1,32) == Content-Type:) { var %p2ptype = $gettok(%t,2,32) }
%k = %n
inc %k 2
}
if (%callid == $chr(123) $+ %msn.ft.callid $+ $chr(125)) {
if ($dialog(msn.transfer)) {
msn.echo @ $+ %msn.user $pre User 4aborted transfer of $nopath(%msn.transfer.filename)
dialog -x msn.transfer
unset %msn.transfer.*
}
}
elseif (%callid == %msn.ft.firstcallid) {
if (@ $+ %msn.user) { msn.echo @ $+ %msn.user $pre User 4canceled transfer of $nopath(%msn.transfer.filename) }
}
}
elseif (MSNSLP/1.0 200 OK isin $bvar(&p2pmsg,49,20).text) {
bset &p2p200ack 1 0 0 0 0 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2p200ack,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2p200ack
}
else {
}
}
elseif (%flags == 2 0 0 0) {
if ($bvar(&p2pmsg,33-36) == $getasc(4,%msn.ft.baseid)) {
;do nothing!
}
elseif ($bvar(&p2pmsg,33-36) == $getasc(4,%msn.mydp.baseid)) {
;echo -s 4woohooo!!!! $sock($sockname).mark $getasc(4,$sock($sockname).mark)
bset &p2pdataprep 1 $getasc(4,$sock($sockname).mark) $getasc(4,$calc(%msn.mydp.baseid + 1)) 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
;echo -s 6 $bvar(&p2pdataprep,1,$bvar(&p2pdataprep,0))
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pdataprep,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pdataprep
;========================== ENvio del promer paquete del PNG !!!
set %msn.mydp.pos [ $+ [ %msn.user ] ] 0
bread $msn.dir(temp\mydp.png) 0 1202 &p2pdatabody
bset &p2pdataheader 1 $getasc(4,$sock($sockname).mark) $getasc(4,$calc(%msn.mydp.baseid + 2)) 0 0 0 0 0 0 0 0 $getasc(8,$file($msn.dir(temp\mydp.png)).size) $getasc(4,$bvar(&p2pdatabody,0)) 32 0 0 0 $getasc(4,$calc(%msn.mydp.baseid + $rand(1,50))) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pdatafooter 1 0 0 0 1
;echo -s $bvar(&p2pdataheader,1-48)
;linesep -s
;echo -s $bvar(&p2pdatabody,0)
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 30 D $calc($len(%msgheader.second) + $bvar(&p2pdataheader,0) + $bvar(&p2pdatabody,0) + $bvar(&p2pdatafooter,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pdataheader
sockwrite $sockname &p2pdatabody
sockwrite $sockname &p2pdatafooter
}
else {
set %msn.temp. $+ %msn.user $rand(A,Z) $+ $rand(1,99) $+ $rand(a,z) $+ $rand(A,Z) $+ $rand(1,999) $+ .png
}
}
elseif (%flags == 32 0 0 0) {
bcopy &p2pheader 1 &p2pmsg 1 48
bcopy &p2pdata 1 &p2pmsg 49 $getint($bvar(&p2pheader,25-28))
bcopy &p2pfooter 1 &p2pmsg $calc(49 + $getint($bvar(&p2pheader,25-28))) -1
var %size = $gettok($mid($hget(msn.obj,%msn.user),$pos($hget(msn.obj,%msn.user),Size=")),2,34)
var %file = $msn.dir(temp\ $+ %msn.temp. [ $+ [ %msn.user ] ])
if ($isdir(%file)) { return }
bwrite %file -1 &p2pdata
if ($lof(%file) >= %size) {
btrunc %file %size
if ($dialog(msnfx. $+ %msn.user)) {
did -g $ifmatch 2 %file
:error
reseterror
}
hadd -m msn.dp %msn.user %msn.temp. [ $+ [ %msn.user ] ]
msn.p2p.finish %msn.user
unset %msn.temp. [ $+ [ %msn.user ] ]
}
else { set %msn.p2p.count 3 }
}
elseif (%flags == 48 0 0 1) {
bcopy &p2pheader 1 &p2pmsg 1 48
bcopy &p2pdata 1 &p2pmsg 49 $getint($bvar(&p2pheader,25-28))
bcopy &p2pfooter 1 &p2pmsg $calc(49 + $getint($bvar(&p2pheader,25-28))) -1
set %msn.ft.last.identifier $bvar(&p2pheader,5-8)
bwrite $msn.dir(temp\ft.temp) -1 &p2pdata
inc %msn.transfer.transferred $bvar(&p2pdata,0)
if ($dialog(msn.transfer)) {
var %p = $int($calc($lof($scriptdirtemp\ft.temp) * 100 / %msn.transfer.size))
dialog -t msn.transfer $mstr(118) %p $chr(37)
did -ra msn.transfer 1 $mstr(118) %p $chr(37)
did -a msn.transfer 2 %p 0 100
did -e msn.transfer 5
}
if ($lof($scriptdirtemp\ft.temp) >= %msn.transfer.size) {
msn.p2p.ft.finish $sockname
return
}
}
}
elseif (%msn.type == text/x-msmsgsinvite) {
if ($msn.txtread(5) == Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}) {
set %msn.transfer.cookie $gettok($msn.txtread(7),2,32)
set %msn.transfer.filename $gettok($msn.txtread(8),2-,32)
set %msn.transfer.filesize $gettok($msn.txtread(9),2,32)
var %ext = $gettok(%msn.transfer.filename,$numtok(%msn.transfer.filename,46),46)
if ($istok(%msn.auto.reject,%ext,32) == $true) {
msn.transfer.cancel msn. $+ %msn.user REJECT
if (!$msn.away(disabled)) {
if (!$window(@ $+ %msn.user)) { window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ %msn.user -1 -1 560 345 "tahoma" 11 " $+ $msn.icon $+ " 29 | msn.fx %msn.user | .log $iif(%msn.logging == on,on,off) @ $+ %msn.user -f %msn.user $+ .log }
msn.echo @ $+ %msn.user $pre $+ $mstr(112) $replace($mstr(113),#1,%ext)
}
return
}
if (!$msn.away(disabled)) {
if (!$window(@ $+ %msn.user)) { window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ %msn.user -1 -1 560 345 "tahoma" 11 " $+ $msn.icon $+ " 29 | msn.fx %msn.user | .log $iif(%msn.logging == on,on,off) @ $+ %msn.user -f %msn.user $+ .log }
msn.transfer.echo @ $+ %msn.user %msn.user is trying to send to you %msn.transfer.filename ( $+ $bytes(%msn.transfer.filesize).suf $+ ). Do you want to accept the transfer?
if ($active != @ $+ %msn.user) || ($appactive == $false) {
flash -r1 @ $+ %msn.user %msn.nick
if (%msn.sounds == on) { .splay $msn.dir(sounds\msg.wav) }
}
}
}
elseif ($msn.txtread(5) == Invitation-Cookie: %msn.transfer.cookie) {
if ($msn.txtread(4) == Invitation-Command: ACCEPT) {
var %o = 5
while %o < $msn.txtread(0) {
inc %o | var %field = $gettok($msn.txtread(%o),1,32), %value = $gettok($msn.txtread(%o),2,32)
if (%field == IP-Address:) { set %msn.transfer.ip %value }
elseif (%field == Port:) { set %msn.transfer.port %value }
elseif (%field == AuthCookie:) { set %msn.transfer.authcookie %value }
if (%msn.transfer.ip) && (%msn.transfer.port) && (%msn.transfer.authcookie) { set %msn.transfer.mode receive | sockopen msn.transfer %msn.transfer.ip %msn.transfer.port | halt }
}
msn.transfer.cancel $sockname TIMEOUT
}
elseif ($msn.txtread(4) == Invitation-Command: CANCEL) {
msn.echo @ $+ %msn.user $pre $+ %msn.user canceled the sending of %msn.transfer.filename
}
}
elseif ($msn.txtread(5) == Invitation-Cookie: %msn.transfer.gcookie) {
if ($msn.txtread(4) == Invitation-Command: ACCEPT) {
if (!$dialog(msn.transfer)) { dialog -md msn.transfer msn.transfer }
dialog -v msn.transfer
did -ra msn.transfer 3 Sending file: $nopath(%msn.transfer.filename)
did -ra msn.transfer 4 Size: $bytes($lof(%msn.transfer.filename)).suf
set %msn.transfer.mode send
sockclose msn.transfer.listen
socklisten msn.transfer.listen 6891
var %msg.body = MIME-Version: 1.0 $&
$+ $crlf $+ Content-Type: text/x-msmsgsinvite; charset=UTF-8 $&
$+ $crlf $&
$+ $crlf $+ Invitation-Command: ACCEPT $&
$+ $crlf $+ Invitation-Cookie: %msn.transfer.gcookie $&
$+ $crlf $+ IP-Address: %msn.client.ip $&
$+ $crlf $+ Port: 6891 $&
$+ $crlf $+ AuthCookie: 2 $&
$+ $crlf $+ Launch-Application: FALSE $&
$+ $crlf $+ Request-Data: IP-Address: $&
$+ $crlf $+ $crlf
var %msg = MSG 7 U $len(%msg.body) $+ $crlf $+ %msg.body
sockwrite msn. $+ %msn.user %msg
msn.echo @ $+ %msn.user $pre $+ %msn.user accepted the file $nopath(%msn.transfer.filename)
}
elseif ($msn.txtread(4) == Invitation-Command: CANCEL) {
msn.echo @ $+ %msn.user $pre(4) $+ %msn.user did not accept the file $nopath(%msn.transfer.filename)
unset %msn.transfer.*
}
}
}
if ($sock($sockname).rq != 0) { goto start }
}
elseif (%c == USR) { if (%msn.mode) { sockwrite -tn $sockname CAL 2 %msn2chat } }
elseif (%c = BYE) {
if ($2 != $mid($sockname,5)) {
msn.echo @ $+ $mid($sockname,5) 4 $pre $msn.name($2) has left the conversation
}
else {
var %msn.user = $2
sockclose msn. $+ %msn.user
}
}
elseif (%c == JOI) {
var %msn.user = $2
var %msn.nick = $msn.replace($3)
if (%msn.user != $mid($sockname,5)) {
msn.echo @ $+ $mid($sockname,5) 3 $pre %msn.nick joined this conversation
}
var %qmsgs = $numtok($hget(msn.msgqueue,%msn.user),13),%o = 0
while %o < %qmsgs {
inc %o
var %msg = $gettok($hget(msn.msgqueue,%msn.user),%o,13)
.msn.say %msn.user %msg
}
if ($hget(msn.msgqueue,%msn.user)) { hdel msn.msgqueue %msn.user }
if ($hget(msn.msgqueue,msnftp. $+ %msn.user)) { sockwrite msn. $+ %msn.user $hget(msn.msgqueue,msnftp. $+ %msn.user) | hdel msn.msgqueue msnftp. $+ %msn.user }
if ($hget(msn.obj,%msn.user)) && (!$hget(msn.dp,%msn.user)) { msn.dp.invite %msn.user }
}
elseif (%c == IRO) {
var %msn.user = $5
if ($hget(msn.obj,%msn.user) && !$hget(msn.dp,%msn.user)) {
msn.dp.invite %msn.user
}
}
elseif (%c == ACK) {
if ($2 == 30) { msn.dp.send.next $sockname }
}
}
on 1:INPUT:@*@*.*:{ msn.say $mid($active,2) $1- }
on 1:CLOSE:@: {
if ($sock(msn. $+ $mid($target,2))) {
sockclose msn. $+ $mid($target,2)
.timertyping $+ $mid($target,2) off
.timermsn.dp.timeout $+ $mid($target,2) off
}
}
on 1:KEYDOWN:@*@*.*:*: {
tokenize 32 $mid($target,2)
if (($sock(msn. $+ $1).status == active) && ($sock(msn. $+ $1).rcvd > $calc(32 + $len($1) + $len($msn.name($1)) + $len(%msn.me) + $len(%msn.address)))) {
if (!$timer(msn.imtyping $+ $1)) && ($keychar isalnum) { msn.imtyping $mid($target,2) }
}
else {
msn.chat $mid($target,2)
}
if ($keyval == 27) { window -c $target }
}
on 1:ACTIVE:@*@*.*: {
var %msn.user = $mid($target,2)
set %msn.active $target
if ($window($target)) { msn.fx %msn.user }
if ($hget(msn.dp,%msn.user)) && ($did(msnfx. $+ %msn.user,2) != 0 $scriptdirtemp\ $+ $hget(msn.dp,%msn.user)) {
did -g msnfx. $+ %msn.user 2 $msn.dir(temp\ $+ $hget(msn.dp,%msn.user))
}
:error
if ($error) { reseterror }
}
alias msn.say {
if ($left($2-,1) == $chr(47)) { return }
if ($msn.state($1) == FLN) { msn.echo @ $+ $1 $pre(4) $replace($mstr(114),#1,$1) | return }
if (($sock(msn. $+ $1).status == active) && ($sock(msn. $+ $1).rcvd > $calc(32 + $len($1) + $len($msn.name($1)) + $len(%msn.me) + $len(%msn.address)))) {
var %msg = $replace($iif(-r == $2,$3-,$msn.ecalper($2-)),$chr(37) $+ 20,$chr(32))
var %msg.second = MIME-Version: 1.0 $+ $crlf $+ Content-Type: text/plain; charset=UTF-8 $+ $crlf $+ X-MMS-IM-Format: FN= $+ $msn.ecalper(%msn.msg.font) $+ ; EF= $+ %msn.msg.style $+ ; CO= $+ $reverse($mid(%msn.msg.color,2)) $+ ; CS=0; PF=22 $+ $crlf $+ $crlf $+ %msg
var %msg.first = MSG 2 N $len(%msg.second) $+ $crlf
sockwrite msn. $+ $1 %msg.first
sockwrite msn. $+ $1 %msg.second
.timermsn.imtyping $+ $1 off
}
else { hadd -m msn.msgqueue $1 $iif($hget(msn.msgqueue,$1),$ifmatch $+ $cr) $+ $2- }
if ($show == $true) && ($window(@ $+ $1)) {
msn.message.echo @ $+ $1 %msn.address %msn.msg.font $+ ; $+ %msn.msg.color $+ ; $+ %msn.msg.style > $2-
}
}
alias msn.imtyping {
if (%msn.display.typing == on) {
var %msg.body = MIME-Version: 1.0 $+ $crlf $+ Content-Type: text/x-msmsgscontrol $+ $crlf $+ TypingUser: %msn.address $+ $crlf $+ $crlf
var %msg.header = MSG 50 N $len(%msg.body)
var %msg = %msg.header $+ $crlf $+ %msg.body
sockwrite msn. $+ $1 %msg
;.timermsn.imtyping $+ $1 1 5 msn.imtyping $1
}
}
alias msn.txtread {
if (!$bvar(&data,1)) { return }
var %txt = $bvar(&data,1-934).text
if ($1 == 0) { return $numtok(%txt,13) }
return $remove($gettok(%txt,$1,13),$lf)
}
alias msn.dp.send.next {
var %msn.user = $mid($1,5)
if (!$sock($1)) { return }
if ($file($msn.dir(temp\mydp.png)).size <= 1202) { return }
if ($calc($sock($1).sq + 1202) >= 10000) { .timermsndp. $+ $1 1 2 msn.dp.send.next $1 | return }
inc %msn.mydp.pos [ $+ [ %msn.user ] ] 1202
bread $msn.dir(temp\mydp.png) %msn.mydp.pos [ $+ [ %msn.user ] ] 1202 &p2pdatabody
bset &p2pdataheader 1 $getasc(4,$sock($1).mark) $getasc(4,$calc(%msn.mydp.baseid + 2)) $getasc(8,%msn.mydp.pos [ $+ [ %msn.user ] ]) $getasc(8,$file($msn.dir(temp\mydp.png)).size) $getasc(4,$bvar(&p2pdatabody,0)) 32 0 0 0 $getasc(4,$calc(%msn.mydp.baseid + $rand(1,50))) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pdatafooter 1 0 0 0 1
if ($bvar(&p2pdatabody,0) == 0) { return }
;echo -s $bvar(&p2pdataheader,1-48)
;linesep -s
;echo -s $bvar(&p2pdatabody,0)
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 40 D $calc($len(%msgheader.second) + $bvar(&p2pdataheader,0) + $bvar(&p2pdatabody,0) + $bvar(&p2pdatafooter,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pdataheader
sockwrite $1 &p2pdatabody
sockwrite $1 &p2pdatafooter
.timermsn.nezt -m 1 1 msn.dp.send.next $1
if (%msn.mydp.pos [ $+ [ %msn.user ] ] >= $file($msn.dir(temp\mydp.png)).size) { unset %msn.mydp.pos [ $+ [ %msn.user ] ] }
}
; MSN DX v1.61 - by FoLKeN^
; Dialogs File
alias msndx {
if ($msn.testdecode == $false) {
echo -s 4MSN DX requires $!decode identifier enabled to work properly.
echo -s 4Enable it by going to mIRC options -> Other -> Lock
linesep -s
return
}
if ($dialog(msndx)) { did -a msndx 999 show | dialog -v msndx }
else { dialog -m $+ $iif(%msn.display.desktop == on,d) $+ $iif(%msn.display.ontop == on,o) msndx msndx }
}
dialog msndx {
title "MSN DX"
size -1 -1 220 400
option pixels
list 1, 1 75 218 306, size
list 2, 1 378 219 20, size
list 3, 1 29 214 24, size
list 4, 1 0 219 4, size
box "", 5, -4 17 228 40
button "", 999, 0 0 0 0, hide
}
on 1:dialog:msndx:init:*: {
msn.mdx SetMircVersion $version
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $iif($os != XP,16,0) $msn.icon
msn.mdx SetControlMDX 1 listview showsel report noheader labeltip single oneclick underlinehot > $msn.views
msn.mdx SetControlMDX 3,4 toolbar arrows flat list nodivider > $msn.bars
msn.mdx SetControlMDX 2 statusbar sizegrip > $msn.bars
msn.mdx SetControlMDX 999 positioner size minbox maxbox noclose > $msn.dialogs
msn.mdx SetBorderStyle 2,3,4 windowedge
msn.mdx SetFont 3 + 16 700 trebuchet ms
msn.mdx SetFont 1,2,4 + 13 0 tahoma
if (%msn.display.status == off) { did -h $dname 2 }
if (%msn.display.nick == off) { did -h $dname 3,5 }
did -i msndx 1 1 iconsize normal small
did -i msndx 1 1 headerdims 210:1 0:2
did -i msndx 1 1 seticon normal $msn.icon(main)
did -i msndx 1 1 seticon normal $msn.icon(nln)
did -i msndx 1 1 seticon normal $msn.icon(fln)
did -i msndx 1 1 seticon normal $msn.icon(bsy)
did -i msndx 1 1 seticon normal $msn.icon(awy)
did -i msndx 1 1 seticon normal $msn.icon(flnbl)
did -i msndx 1 1 seticon normal $msn.icon(nlnbl)
did -i msndx 1 1 seticon normal $msn.icon(group)
did -i msndx 1 1 seticon normal $msn.icon(brb)
did -i msndx 1 1 seticon normal $msn.icon(lun)
did -i msndx 1 1 seticon normal $msn.icon(phn)
did -i msndx 1 1 seticon normal $msn.icon(idl)
if (%msn.display.mts == on) {
did -i msndx 1 1 setbkg color $color($color(background))
did -i msndx 1 1 settxt color $color($color(normal))
did -i msndx 1 1 settxt bgcolor $color($color(background))
}
did -a msndx 1 0 + 1 MSN DX ( $+ $mstr(101) $+ )
did -i msndx 3 1 bmpsize 16 16
did -i msndx 3 1 bwidth 202 202
did -i msndx 3 1 setimage icon large $msn.icon(fln)
did -i msndx 3 1 setimage icon large $msn.icon(nln)
did -i msndx 3 1 setimage icon large $msn.icon(bsy)
did -i msndx 3 1 setimage icon large $msn.icon(awy)
did -i msndx 3 1 setimage icon large $msn.icon(brb)
did -i msndx 3 1 setimage icon large $msn.icon(lun)
did -i msndx 3 1 setimage icon large $msn.icon(phn)
did -a msndx 3 +cv 1 $mstr(101)
did -i msndx 2 1 setparts 100 -1
did -i msndx 2 1 seticon small $msn.icon(fln)
did -i msndx 2 1 seticon small $msn.icon(nln)
did -i msndx 2 1 seticon small $msn.icon(bsy)
did -i msndx 2 1 seticon small $msn.icon(awy)
did -i msndx 2 1 seticon small $msn.icon(brb)
did -i msndx 2 1 seticon small $msn.icon(lun)
did -i msndx 2 1 seticon small $msn.icon(phn)
did -i msndx 2 1 seticon small $msn.icon(mail)
did -i msndx 2 2 + 1 $mstr(100)
did -i msndx 2 3 + 8 $mstr(101)
did -i msndx 4 1 bmpsize 0 0
did -a msndx 4 +ac $mstr(001)
did -a msndx 4 +ac $mstr(002)
did -a msndx 4 +ac $mstr(003)
dialog -s msndx $iif(%msn.last.pos,$ifmatch,100 100 220 370)
if ($os == XP) || ($os == NET) { dll $msn.dir(dll\VStyle.dll) NoTheme $dialog($dname).hwnd }
msn.dlgmake
if (%msn.auto.pass == on) && (%msn.auto.signin == on) { msn.connect }
if (%msn.firsttime == on) {
var %t = $input($mstr(107),ya)
if (%t == $true) msndx_setup
unset %msn.firsttime
}
msn.popup.init
msn.emoticons.panel.init
.timermsndxactivate -m 1 100 dialog -v msndx
tray create
}
alias color {
color $1-
if ($dialog(msndx)) && (%msn.display.mts == on) {
did -i msndx 1 1 setbkg color $color($color(background))
did -i msndx 1 1 settxt color $color($color(normal))
did -i msndx 1 1 settxt bgcolor $color($color(background))
if (%msn.html.chat == on) {
var %o 0 | while %o < $window(@*@*.*,0) {
inc %o
dll $html select $window(@*@*.*,%o).hwnd
dll $html execScript document.body.bgColor=' $+ $rgb2hex($color($color(background))) $+ ';
}
}
}
}
on 1:dialog:msndx:sclick:3: { msn.status.popup }
on 1:dialog:msndx:dclick:3: { msn.status.popup }
on 1:dialog:msndx:sclick:4: {
if ($did(4).sel == 2) { msn.main.file.popup }
elseif ($did(4).sel == 3) { msn.main.tools.popup }
elseif ($did(4).sel == 4) { msn.main.view.popup }
}
on 1:dialog:msndx:sclick:999: {
tokenize 32 $did(999)
if (($1 == size) || ($1 == sizing)) && ($2 != state) {
msn.dlgmake
var %cw = $9, %ch = $10
if ($9 < 210) { var %cw = 210 }
if ($10 < 210) { var %ch = 210 }
did -a msndx 999 setSize c %cw %ch
}
elseif ($1 == maximize) { msn.dlgmake }
elseif ($1 == tryclose) { msn.hide }
if ($dialog(msndx).x > -3000) && ($dialog(msndx).y > -3000) && ($1 == exitSizeMove) {
set %msn.last.pos $dialog(msndx).x $dialog(msndx).y $dialog(msndx).w $dialog(msndx).h
}
}
on 1:dialog:msndx:close:*: {
sockclose msn*
hfree msn.states
hfree msn.names
hfree msn.msgqueue
hfree msn.dp
unset %msn.selected
unset %msn.buffer
unset %ctemp
unset %ckihash
unset %ckihash2
unset %msn.sid
unset %msn.kv
unset %msn.auth
unset %msn.addr
unset %msn.path
unset %msn2chat
}
on 1:dialog:msndx:menu:5: {
if ($sock(msn.ip)) || ($sock(msn)) { msend OUT }
else { msnlog }
}
on 1:dialog:msndx:menu:6: { msndx_setup }
on 1:dialog:msndx:menu:7: { msn.exit }
on 1:dialog:msndx:menu:16: { msn.htmlmail %msn.inbox.path %msn.inbox.addr }
on 1:dialog:msndx:sclick:1: {
if (rclick isin $did(1,1)) { msn.list.popup }
set %msn.selected $gettok($gettok($did(msndx,1).seltext,2,9),5,32)
}
on 1:dialog:msndx:dclick:1: {
var %addr = $gettok($gettok($did(msndx,1).seltext,2,9),5,32)
if (%addr) && ($msn.state(%addr) != FLN) { msn.chat %addr }
set %msn.selected $gettok($gettok($did(msndx,1).seltext,2,9),5,32)
}
alias msnlog { if ($event) { dialog -mdo msnlog msnlog } | else { var %c = $dialog(msnlog,msnlog,-4) } }
dialog msnlog {
title "MSN Sign in"
size -1 -1 240 104
option pixels
text "User address:", 1, 4 10 68 16, right
edit "", 2, 74 7 58 21, right autohs
combo 8, 133 8 96 100, drop edit
text "Password:", 3, 4 34 68 16, right
edit "", 4, 74 32 158 21, pass autohs
check "Remember my password", 5, 20 56 136 16
button "Sign in", 6, 58 81 65 21, default
check "Invisible", 7, 164 56 64 16
button "Cancel", 9, 127 81 65 21, cancel
box "", 10, -11 67 256 99
}
on 1:dialog:msnlog:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style title sysmenu tool
msn.mdx SetDialog $dname icon $iif($os != XP,16,0) $msn.icon
msn.mdx SetFont 1,2,3,4,8 + 11 0 tahoma
msn.mdx SetFont 5,6,7,9 + 13 0 tahoma
did -a $dname 8 @hotmail.com
did -a $dname 8 @msn.com
did -a $dname 8 @passport.com
did -a $dname 2 $gettok(%msn.address,1,64)
if (!%msn.address) { did -c $dname 8 1 }
elseif ($gettok(%msn.address,2,64) == hotmail.com) { did -c $dname 8 1 }
elseif ($gettok(%msn.address,2,64) == msn.com) { did -c $dname 8 2 }
elseif ($gettok(%msn.address,2,64) == passport.com) { did -c $dname 8 3 }
else { did -a $dname 8 @ $+ $gettok(%msn.address,2,64) | did -c $dname 8 4 }
if (%msn.auto.pass == on) { did -c $dname 5 }
if (%msn.auto.invisible == on) { did -c $dname 7 }
did -f $dname $iif(%msn.address,4,2)
msn.signin.load.strings
}
alias msn.signin.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),signin,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),signin,%o)
if ($did(msnlog,%did)) { did -ra msnlog %did $mstr(signin,%did) }
}
}
on 1:dialog:msnlog:sclick:6: {
set %msn.address $did(2) $+ $did(8)
set %msn.password $encode($did(4))
msn.connect
dialog -x $dname
}
on 1:dialog:msnlog:sclick:5: {
if ($did(5).state == 1) { set %msn.auto.pass on }
else { set %msn.auto.pass off }
}
on 1:dialog:msnlog:sclick:7: {
if ($did(7).state == 1) { set %msn.auto.invisible on }
else { set %msn.auto.invisible off }
}
alias msnmsg {
set %msn.msg $1-
if ($event) { dialog -mdo msnmsg msnmsg } | else { var %r = $dialog(msnmsg,msnmsg,-4) }
}
dialog msnmsg {
title "MSN DX Message"
size -1 -1 158 38
option dbu
text "", 1, 1 2 153 20,center
button "OK", 2, 60 24 37 12, ok
}
on 1:dialog:msnmsg:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $iif($os != XP,16,0) $msn.icon
msn.mdx SetDialog $dname style title tool sysmenu
msn.mdx SetFont 1,2 + 13 0 tahoma
msn.mdx SetBorderStyle 2 staticedge
did -ra $dname 1 %msn.msg
}
dialog msn.transfer {
title "MSN File Transfer"
size -1 -1 220 115
option pixels
text "Establishing connection...", 1, 5 4 213 16
text "0 0 0", 2, 2 24 213 16
text "", 3, 5 44 213 16
text "", 4, 5 64 213 16
button "Cancel transfer", 5, 57 86 96 25,ok disable
}
on 1:dialog:msn.transfer:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $iif($os != XP,30,14) $msn.icon
msn.mdx SetControlMDX 2 progressbar smooth > $msn.ctlgen
msn.mdx SetBorderStyle 5 staticedge
msn.mdx SetFont 1,3,4,5 + 13 0 tahoma
}
on 1:dialog:msn.transfer*:sclick:5: {
var %s = $sock(msn.transfer*,1)
if (%msn.transfer.mode == receive) {
if (%msn.transfer.method != p2p) {
if ($sock(%s)) && (Cancel isin $did(5)) {
sockwrite -tn msn.transfer CCL
sockclose msn.transfer
}
}
else {
msn.p2p.ft.abort msn. $+ %msn.transfer.user
}
}
elseif (%msn.transfer.mode == send) { if ($sock(%s)) { sockclose %s } }
elseif ($mstr(120) isin $did(5)) { run %msn.download $+ %msn.transfer.filename }
}
on 1:dialog:msn.transfer:close:*: { unset %msn.transfer.* }
alias msn.newcontact {
dialog -md msn.nc. $+ $1 msn.newcontact
did -ra msn.nc. $+ $1 9 $2
}
dialog msn.newcontact {
title "Contact added you"
size -1 -1 232 140
option pixels
box "", 1, 4 1 224 28
text "user@address.com", 2, 9 10 214 16, center
text "Has added you to his/her contact list.", 3, 4 32 222 16, center
text "What do you want to do?", 4, 4 47 222 16, center
radio "Add user to my contact list", 5, 4 66 224 20
radio "Block user", 6, 4 84 224 20
box "", 7, -8 99 244 100
button "OK", 8, 76 112 75 25,default
text "nickname" 9,0 0 0 0,hide
button "positioner" , 999, 0 0 0 0,hide
}
on 1:dialog:msn.nc.*:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style title sysmenu
msn.mdx SetDialog $dname icon $iif($os != XP,17,1) $msn.icon
msn.mdx SetControlMDX 999 positioner > $msn.dialogs
msn.mdx SetFont 2 + 13 700 tahoma
msn.mdx SetFont 3,4,5,6 + 13 0 tahoma
did -ra $dname 2 $gettok($dname,3-,46)
did -c $dname 5
msn.nc.load.strings $dname
}
alias msn.nc.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),newcontact,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),newcontact,%o)
if ($did($1,%did)) { did -ra $1 %did $mstr(newcontact,%did) }
}
}
on 1:dialog:msn.nc.*:sclick:8: {
if ($did(5).state == 1) { msn.add $gettok($dname,3-,46) }
elseif ($did(6).state == 1) { msn.block $gettok($dname,3-,46) }
dialog -x $dname
}
alias msn.blocklist { dialog -m msnblock msnblock }
dialog msnblock {
title "MSN DX - Block list"
size -1 -1 308 336
option pixels
list 1, 4 4 300 268, size
button "Close", 2, 228 310 75 23,cancel
button "Unblock", 3, 148 310 75 23, default
text "Note: if you unblock someone that is not on your contact list, MSN DX will recognize them as 'hidden contacts'. Go Options -> Contact list for more information.", 4, 4 276 302 34
}
on 1:dialog:msnblock:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style title
msn.mdx SetControlMDX 1 listview report nosortheader showsel grid rowselect > $msn.views
msn.mdx SetFont 1,4 + 11 0 tahoma
msn.mdx SetFont 2,3 + 13 0 tahoma
msn.mdx SetFont 3 + 13 700 tahoma
did -i $dname 1 1 headerdims 100:1 50:2 200:3
did -i $dname 1 1 headertext $mstr(block,1a) $+ $chr(9) $+ $mstr(block,1b) $+ $chr(9) $+ $mstr(block,1c)
var %o = 0
write -c $msn.dir(data\tempBL.txt)
while %o < $lines($msn.dir(data\msn.block.txt)) {
inc %o
var %addr = $read($msn.dir(data\msn.block.txt),%o)
write $msn.dir(data\tempBL.txt) %addr $+ $chr(9) $+ $iif($readini($msn.dir(data\groups.ini),contacts,%addr),Yes $+ $chr(9) $+ $msn.name(%addr),No $+ $chr(9) $+ N/A)
}
loadbuf -o $dname 1 $msn.dir(data\tempBL.txt)
.remove $msn.dir(data\tempBL.txt)
msn.block.load.strings
}
alias msn.block.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),block,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),block,%o)
if ($did(msnblock,%did)) { did -ra msnblock %did $mstr(block,%did) }
}
}
on 1:dialog:msnblock:sclick:3: { if ($did(1).seltext) { msn.unblock $gettok($gettok($did(1).seltext,1,9),6,32) } }
alias msn.hidden { dialog -md msnhidden msnhidden }
dialog msnhidden {
title "Hidden contacts"
size -1 -1 325 328
option pixels
list 1, 3 7 318 256, size
text "What hidden contacts are? This contacts are allowed to see your status, but they aren't in your contact list. This usually happens when you delete a contact and you don't block it in original MSN client.", 2, 4 265 317 33
button "Return to contact list", 3, 197 301 123 23
button "Block", 4, 119 301 75 23
}
on 1:dialog:msnhidden:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $msn.icon(mainbox)
msn.mdx SetControlMDX 1 listview report nosortheader rowselect showsel grid > $msn.views
msn.mdx SetFont 1,2 + 11 0 tahoma
msn.mdx SetFont 3,4 + 13 0 tahoma
did -i $dname 1 1 headerdims 300:1
did -i $dname 1 1 headertext $mstr(hidden,1a)
if ($exists($scriptdirdata\msn.hidden.txt) == $true) { loadbuf -o $dname 1 $msn.dir(data\msn.hidden.txt) }
msn.hidden.load.strings
}
alias msn.hidden.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),hidden,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),hidden,%o)
if ($did(msnhidden,%did)) { did -ra msnhidden %did $mstr(hidden,%did) }
}
}
on 1:dialog:msnhidden:sclick:3: {
var %c = $did(1).sel,%usr = $gettok($did(1).seltext,6,32)
msn.add %usr
did -d $dname 1 %c
did -c $dname 1 $iif(%c == 2,2,$calc(%c -1))
write -ds $+ %usr $msn.dir(data\msn.hidden.txt)
}
on 1:dialog:msnhidden:sclick:4: {
var %c = $did(1).sel,%usr = $gettok($did(1).seltext,6,32)
msn.block %usr
did -d $dname 1 %c
did -c $dname 1 $iif(%c == 2,2,$calc(%c -1))
write -ds $+ %usr $msn.dir(data\msn.hidden.txt)
}
alias msn.delcontact { dialog -md msndel. $+ $1 msndelcontact }
dialog msndelcontact {
title "Confirm delete contact"
size -1 -1 272 132
option pixels
text "Are you sure you want to delete", 1, 4 4 266 16, center
text "", 2, 43 27 194 16, center
text "from your contact list?", 3, 5 49 266 16, center
box "", 4, 40 17 200 28
box "", 5, -5 62 280 44
button "Yes", 6, 64 76 67 21,ok
button "No", 7, 136 76 67 21, default cancel
check "Contact can still view my status (hidden contact)", 8, 8 110 260 20
}
on 1:dialog:msndel.*:sclick:6: {
var %usr = $gettok($dname,2-,46)
msend REM 38 FL %usr
if ($did(8).state != 1) { msend ADD 39 BL %usr %usr }
msn.change -d %usr
}
on 1:dialog:msndel.*:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $iif($os != XP,17,1) $msn.icon
msn.mdx SetFont 1,3,6,7,8 + 13 0 tahoma
msn.mdx SetFont 2 + 13 700 tahoma
did -a $dname 2 $gettok($dname,2-,46)
msn.del.load.strings $dname
}
alias msn.del.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),delete,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),delete,%o)
if ($did($1,%did)) { did -ra $1 %did $mstr(delete,%did) }
}
}
alias msndx_setup {
if ($event) { dialog -mdo msndx_setup msndx_setup } | else { var %result = $dialog(msndx_setup,msndx_setup,-4) }
}
dialog msndx_setup {
title "MSN DX - Options"
size -1 -1 524 314
option pixels
list 1, 4 76 104 192, size
box "", 2, -4 -26 532 100
icon 3, 1 1 523 71
button "Close", 4, 440 284 74 24, cancel
button "", 5, 0 0 0 0, hide
box "", 6, -4 270 532 100
check "Remember my password for signing in ", 7, 124 88 208 16
text "(Not recommended if more than one user uses this addon)", 8, 336 84 182 28
check "Sign in on start", 9, 124 104 208 20
text "User address:", 10, 124 128 180 16
text "Password:", 11, 328 128 58 16
edit "", 12, 122 144 88 21, autohs right
combo 13, 212 145 104 68, size edit drop edit
edit "", 14, 326 144 84 21, pass autohs
check "Open my e-mail account in browser automatically if there are new mails ", 15, 124 206 392 20
check "Set my status to 'Appear offline' (Invisible mode) on connect", 16, 124 226 392 20
check "Enable logging", 17, 124 246 120 20
check "Sounds", 76, 250 246 99 20
check "Timestamp", 77, 350 246 150 20
check "Use proxy", 24, 124 176 80 20
text "Host:", 25, 210 180 50 16, right
edit "", 26, 265 177 70 21, autohs
text "Port:", 27, 350 180 38 16, right
edit "", 28, 390 177 40 21, autohs
text "(only for port 80 connections)", 29, 412 175 101 28, hide
check "Enable auto-message", 18, 124 78 386 20, hide
edit "", 19, 187 99 323 21, hide autohs
text "Message:", 20, 124 102 60 16, hide
check "Don't open chat windows, disable sounds and notice balloons", 21, 124 132 386 20, hide
text "Received messages during your away time are automatically paged. ", 22, 124 152 316 26, hide
text "Note: This options will execute only if your status is set to Away, Be right back, Busy, Idle, On the phone or Out to lunch", 23, 122 240 388 28, hide
check "Run on desktop", 73, 124 87 275 20, hide
check "Make contact list follow MTS theme colors", 36, 124 108 450 20, hide
check "Enable status bar", 34, 124 129 175 20, hide
check "Enable tray icon (Recommended)", 37, 300 129 300 20, hide
check "Enable adress bar", 35, 124 150 175 20, hide
check "Enable tray notice balloons", 38, 300 150 300 20, hide
check "Rich-Text chat (emoticons + custom font support) *", 74, 124 171 330 20, hide
check "Allow people see me typing", 75, 124 192 330 20, hide
text "Icons:", 39, 124 220 200 16, hide
combo 40, 124 239 120 94, hide
text "* Requires restart", 33, 425 255 370 16, disable hide
check "Notice about hidden contacts (Recommended)", 44, 124 88 380 20, hide
text "Sometimes, you have allowed contacts in your list, but they aren't shown in original MSN Messenger, if you have this option on, it will let you show, delete and/or block those hidden contacts.", 45, 124 106 390 44, hide
radio "Sort contacts by groups", 46, 124 156 300 20, hide
radio "Sort contacts by offline/online", 47, 124 176 300 20, hide
check "Hide offline contacts", 48, 124 208 300 20, hide
text "Auto-reject these file types (separated by spaces):", 49, 124 88 380 16, hide
edit "", 50, 124 108 388 21, hide autohs
text "Download folder:", 51, 124 136 380 16, hide
edit "", 52, 124 152 172 21, hide read autohs
button "...", 53, 300 152 29 21, hide
icon 54, 124 88 32 32
text "MSN DX - an MSN Messenger (tm) for mIRC by FoLKeN^", 55, 164 88 310 16, hide
text "Version: 1.61 - Contact: folken@msndx.com.ar - © 2003-2005 FoLKeN^ - All rights reserved", 56, 164 102 310 22, hide
text "Thanks to:", 57, 124 128 66 16, hide
text "", 58, 124 144 378 86, hide
text "www.msndx.com.ar - www.mircscripts.org - www.scriptsdb.org", 63, 124 237 378 36, hide
box "Feedback", 64, 120 80 392 188, hide
text "E-mail:", 65, 132 100 50 16, hide right disable
edit "", 66, 184 97 272 21, hide autohs disable
text "Type:", 67, 132 122 50 16, hide right disable
combo 68, 185 120 128 100, hide drop disable
text "Message:", 69, 135 145 200 16, hide disable
edit "Feedback system was disabled", 70, 132 160 368 73, hide multi vsbar disable
button "Send", 71, 424 236 75 25, hide disable
text "Note: To type in a new line, press Ctrl + Enter", 72, 134 236 280 16, hide
}
on 1:dialog:msndx_setup:init:*: {
msn.mdx SetMircVersion $version
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname icon $scriptdirico\box.ico
msn.mdx SetControlMDX 1 treeview linesatroot showsel nohscroll > $msn.views
msn.mdx SetFont 1,4,5 + 13 0 tahoma
set %msn.setup.sel 2
did -i $dname 1 1 cb root
did -a $dname 1 $mstr(setup,1a)
did -a $dname 1 $mstr(setup,1b)
did -a $dname 1 $mstr(setup,1c)
did -a $dname 1 $mstr(setup,1d)
did -a $dname 1 $mstr(setup,1e)
did -a $dname 1 $mstr(setup,1f)
did -a $dname 1 $mstr(setup,1g)
did -c $dname 1 2
did -f $dname 4
did -g $dname 3 $msn.dir(logo.png)
;General tab
msn.mdx SetFont 7,9,10,11,15,16,17,24,25,26,27,28,76,77 + 13 0 tahoma
msn.mdx SetFont 8,12,13,14,29 + 11 0 tahoma
did -a $dname 13 @hotmail.com
did -a $dname 13 @msn.com
did -a $dname 13 @passport.com
if (%msn.auto.pass == on) {
did -c $dname 7
did -a $dname 12 $gettok(%msn.address,1,64)
if ($gettok(%msn.address,2,64) == hotmail.com) { did -c $dname 13 1 }
elseif ($gettok(%msn.address,2,64) == msn.com) { did -c $dname 13 2 }
elseif ($gettok(%msn.address,2,64) == passport.com) { did -c $dname 13 3 }
else { did -a $dname 13 @ $+ $gettok(%msn.address,2,64) | did -c $dname 13 4 }
did -a $dname 14 $decode(%msn.password)
}
else { did -b $dname 9,12,13,14 }
if (%msn.auto.signin == on) { did -c $dname 9 }
if (%msn.auto.email == on) { did -c $dname 15 }
if (%msn.auto.invisible == on) { did -c $dname 16 }
if (%msn.logging == on) { did -c $dname 17 }
if (%msn.sounds == on) { did -c $dname 76 }
if (%msn.timestamp == on) { did -c $dname 77 }
if (%msn.proxy) { did -a $dname 26 $gettok(%msn.proxy,1,32) | did -a $dname 28 $gettok(%msn.proxy,2,32) | did -c $dname 24 }
else { did -b $dname 25,26,27,28 }
;Away/Busy tab
msn.mdx SetFont 18,19,20,21,22,23 + 13 0 tahoma
if (%msn.away.msg == on) { did -c $dname 18 }
else { did -b $dname 19 }
did -a $dname 19 %msn.away.msg.msg
if (%msn.away.disable == on) { did -c $dname 21 }
;Display tab
msn.mdx SetFont 33,34,35,36,37,38,39,40,73,74,75 + 13 0 tahoma
msn.mdx SetControlMDX 40 comboboxex drop > $msn.views
if (%msn.display.desktop == on) { did -c $dname 73 }
if (%msn.display.status == on) { did -c $dname 34 }
if (%msn.display.nick == on) { did -c $dname 35 }
if (%msn.display.mts == on) { did -c $dname 36 }
if (%msn.display.tray == on) { did -c $dname 37 }
if (%msn.display.balloons == on) { did -c $dname 38 }
if (%msn.html.chat == on) { did -c $dname 74 }
if (%msn.display.typing == on) { did -c $dname 75 }
did -i $dname 40 1 iconsize small
var %o 0,%i 0,%f
while %o < $findfile($msn.dir(ico\),*.icl,0) {
inc %o
%f = $findfile($msn.dir(ico\),*.icl,%o)
inc %i
did -i $dname 40 1 seticon 0 16, $+ %f
did -a $dname 40 %i $nopath(%f)
if ($nopath(%f) == %msn.icons) { did -c $dname 40 $calc(%i +1) }
}
;Contact list tab
msn.mdx SetFont 44,45,46,47,48 + 13 0 tahoma
if (%msn.hiddencontacts == on) { did -c $dname 44 }
if (%msn.sortcontacts == groups) { did -c $dname 46 }
else { did -c $dname 47 }
if (%msn.show.offline != on) { did -c $dname 48 }
;File transfer tab
msn.mdx SetFont 49,50,51,52,53 + 13 0 tahoma
did -a $dname 50 %msn.auto.reject
did -a $dname 52 %msn.download
;About tab
msn.mdx SetFont 55,57,58,63 + 13 0 tahoma
msn.mdx SetFont 56 + 11 0 tahoma
did -h $dname 54
did -g $dname 54 $msn.dir(ico\msn.ico)
var %r = $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z)
did -ra $dname 58 %r
var %hwnd = $dll($htmldll,find,%r)
dll $htmldll attach %hwnd
dll $htmldll navigate $scriptdirthanks.htm
;Feedback tab
msn.mdx SetFont 64,65,66,67,68,69,70,71,72 + 13 0 tahoma
did -a $dname 68 Bug report
did -a $dname 68 Misspell
did -a $dname 68 Suggestion
did -a $dname 68 Other
did -c $dname 68 1
did -a $dname 66 %msn.address
msn.setup.load.strings
}
alias msn.setup.load.strings {
var %o = 0,%did
while %o < $ini($msn.dir(lang\english.lang),setup,0) {
inc %o
%did = $ini($msn.dir(lang\english.lang),setup,%o)
if ($did(msndx_setup,%did)) { did -ra msndx_setup %did $mstr(setup,%did) }
}
}
on 1:dialog:msndx_setup:sclick:1: {
if (%msn.setup.sel == 2) { did -h $dname 7,8,9,10,11,12,13,14,15,16,17,24,25,26,27,28,76,77 }
elseif (%msn.setup.sel == 3) { did -h $dname 18,19,20,21,22,23 }
elseif (%msn.setup.sel == 4) { did -h $dname 33,34,35,36,37,38,39,40,73,74,75 }
elseif (%msn.setup.sel == 5) { did -h $dname 44,45,46,47,48 }
elseif (%msn.setup.sel == 6) { did -h $dname 49,50,51,52,53 }
elseif (%msn.setup.sel == 7) { did -h $dname 54,55,56,57,58,63 }
elseif (%msn.setup.sel == 8) { did -h $dname 64,65,66,67,68,69,70,71,72 }
set %msn.setup.sel $gettok($did(1,1),4,32)
if (%msn.setup.sel == 2) { did -v $dname 7,8,9,10,11,12,13,14,15,16,17,24,25,26,27,28,76,77 }
elseif (%msn.setup.sel == 3) { did -v $dname 18,19,20,21,22,23 }
elseif (%msn.setup.sel == 4) { did -v $dname 33,34,35,36,37,38,39,40,73,74,75 }
elseif (%msn.setup.sel == 5) { did -v $dname 44,45,46,47,48 }
elseif (%msn.setup.sel == 6) { did -v $dname 49,50,51,52,53 }
elseif (%msn.setup.sel == 7) { did -v $dname 54,55,56,57,58,63 }
elseif (%msn.setup.sel == 8) { did -v $dname 64,65,66,67,68,69,70,71,72 }
}
;a short way to retrieve checkbox statuses
alias -l st { return $did($dname,$1).state }
alias -l isdid { if ($istok(%msn.setup.dids,$1,44) == $true) { return $true } }
on 1:dialog:msndx_setup:sclick:*: {
if ($istok(%msn.setup.dids,$did,44) != $true) { set %msn.setup.dids $addtok(%msn.setup.dids,$did,44) }
;Checkboxes
if ($did == 7) { if ($st(7) == 1) { set %msn.auto.pass on | did -e $dname 9,12,13,14 } | else { set %msn.auto.pass off | did -b $dname 9,12,13,14 } }
elseif ($did == 9) { if ($st(9) == 1) { set %msn.auto.signin on } | else { set %msn.auto.signin off } }
elseif ($did == 15) { if ($st(15) == 1) { set %msn.auto.email on } | else { set %msn.auto.email off } }
elseif ($did == 16) { if ($st(16) == 1) { set %msn.auto.invisible on } | else { set %msn.auto.invisible off } }
elseif ($did == 17) { if ($st(17) == 1) { set %msn.logging on } | else { set %msn.logging off } }
elseif ($did == 76) { if ($st(76) == 1) { set %msn.sounds on } | else { set %msn.sounds off } }
elseif ($did == 77) { if ($st(77) == 1) { set %msn.timestamp on } | else { set %msn.timestamp off } }
elseif ($did == 18) { if ($st(18) == 1) { set %msn.away.msg on | did -e $dname 19 } | else { set %msn.away.msg off | did -b $dname 19 } }
elseif ($did == 21) { if ($st(21) == 1) { set %msn.away.disable on } | else { set %msn.away.disable off } }
elseif ($did == 24) { if ($st(24) == 1) { set %msn.proxy $did(26) $did(28) | did -e $dname 25,26,27,28 } | else { unset %msn.proxy | did -b $dname 25,26,27,28 } }
elseif ($did == 73) { if ($st(73) == 1) { set %msn.display.desktop on } | else { set %msn.display.desktop off } }
elseif ($did == 74) { if ($st(74) == 1) { set %msn.html.chat on } | else { set %msn.html.chat off } }
elseif ($did == 75) { if ($st(75) == 1) { set %msn.display.typing on } | else { set %msn.display.typing off } }
elseif ($did == 34) { if ($st(34) == 1) { set %msn.display.status on } | else { set %msn.display.status off } }
elseif ($did == 35) { if ($st(35) == 1) { set %msn.display.nick on } | else { set %msn.display.nick off } }
elseif ($did == 36) { if ($st(36) == 1) { set %msn.display.mts on } | else { set %msn.display.mts off } }
elseif ($did == 37) { if ($st(37) == 1) { set %msn.display.tray on } | else { set %msn.display.tray off } }
elseif ($did == 38) { if ($st(38) == 1) { set %msn.display.balloons on } | else { set %msn.display.balloons off } }
elseif ($did == 44) { if ($st(44) == 1) { set %msn.hiddencontacts on } | else { set %msn.hiddencontacts off } }
elseif ($did == 46) { if ($st(46) == 1) { set %msn.sortcontacts groups } }
elseif ($did == 47) { if ($st(47) == 1) { set %msn.sortcontacts online/offline } }
elseif ($did == 48) { if ($st(48) == 1) { set %msn.show.offline off } | else { set %msn.show.offline on } }
;Comboboxes
if ($did == 13) { set %msn.address $did(12) $+ $did($did) }
elseif ($did == 40) {
set %msn.icons $gettok($did(40).seltext,5-,32)
}
;Buttons
if ($did == 42) {
var %f = $sfile($mircdir *.ico,Select an icon file,Select)
if (%f) {
if ($did(40).sel == 1) { set %msn.icons.main %f }
elseif ($did(40).sel == 2) { set %msn.icons.mainbox %f }
elseif ($did(40).sel == 3) { set %msn.icons.off %f }
elseif ($did(40).sel == 4) { set %msn.icons.offbl %f }
elseif ($did(40).sel == 5) { set %msn.icons.on %f }
elseif ($did(40).sel == 6) { set %msn.icons.onbl %f }
elseif ($did(40).sel == 7) { set %msn.icons.busy %f }
elseif ($did(40).sel == 8) { set %msn.icons.away %f }
elseif ($did(40).sel == 9) { set %msn.icons.group %f }
elseif ($did(40).sel == 10) { set %msn.icons.mail %f }
elseif ($did(40).sel == 11) { set %msn.icons.chat %f }
elseif ($did(40).sel == 12) { set %msn.icons.file %f }
elseif ($did(40).sel == 13) { set %msn.icons.window %f }
did -ra $dname 41 %f | did -u $dname 43
}
}
elseif ($did == 53) { var %f = $sdir($mircdir,Select a folder,Select) | if (%f) { set %msn.download %f | did -ra $dname 52 %f } }
elseif ($did == 71) { msn.feedback }
;Special
if ($did == 43) {
if ($st(43) == 0) { did -c $dname 43 }
if ($did(40).sel == 1) { set %msn.icons.main default }
elseif ($did(40).sel == 2) { set %msn.icons.mainbox default }
elseif ($did(40).sel == 3) { set %msn.icons.off default }
elseif ($did(40).sel == 4) { set %msn.icons.offbl default }
elseif ($did(40).sel == 5) { set %msn.icons.on default }
elseif ($did(40).sel == 6) { set %msn.icons.onbl default }
elseif ($did(40).sel == 7) { set %msn.icons.busy default }
elseif ($did(40).sel == 8) { set %msn.icons.away default }
elseif ($did(40).sel == 9) { set %msn.icons.group default }
elseif ($did(40).sel == 10) { set %msn.icons.mail default }
elseif ($did(40).sel == 11) { set %msn.icons.chat default }
elseif ($did(40).sel == 12) { set %msn.icons.file default }
elseif ($did(40).sel == 13) { set %msn.icons.window default }
did -ra $dname 41 default
}
;Close button
if ($did == 4) && ($dialog(msndx)) {
if ($isdid(46) || $isdid(47) || $isdid(48)) { msn.sort %msn.sortcontacts }
if ($isdid(34)) { if ($st(34) == 1) { msn.display -v status } | else { msn.display -h status } }
if ($isdid(35)) { if ($st(35) == 1) { msn.display -v nick } | else { msn.display -h nick } }
if ($isdid(36)) { msn.dlgmake }
unset %msn.setup.dids
}
}
on 1:dialog:msndx_setup:edit:*: {
if ($istok(%msn.setup.dids,$did,44) != $true) { set %msn.setup.dids $addtok(%msn.setup.dids,$did,44) }
if ($did == 12) { set %msn.address $did($did) $+ $did(13) }
elseif ($did == 13) { set %msn.address $did(12) $+ $did($did) }
elseif ($did == 14) { set %msn.password $encode($did($did)) }
elseif ($did == 19) { set %msn.away.msg.msg $did($did) }
elseif ($did == 26) { set %msn.proxy $did(26) $did(28) }
elseif ($did == 28) { set %msn.proxy $did(26) $did(28) }
elseif ($did == 50) { set %msn.auto.reject $did($did) }
}
on 1:dialog:msndx_setup:close: { unset %msn.setup.dids }
alias msn.fx {
if (!$dialog(msnfx. $+ $1)) { dialog -md msnfx. $+ $1 msnfx }
}
dialog msnfx {
title ""
size 0 0 540 78
option pixels
icon 1, 4 3 96 96
icon 2, 440 3 96 96
text "", 3, 106 41 329 18,right
text "", 4, 106 59 329 16,right
list 5, 106 80 325 32, size
box "", 6, 103 30 328 8
text "", 7, 106 1 329 18
text "", 8, 106 18 329 16
box "", 9, 103 70 328 8
}
on 1:dialog:msnfx.*:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style $iif($version == 6.03,windowedge,dlgframe)
msn.mdx SetFont 3,7 + 20 700 trebuchet ms
msn.mdx SetFont 4,5,8 + 13 0 tahoma
msn.mdx SetBorderStyle 5 windowedge
msn.mdx SetControlMDX 5 toolbar nodivider arrows flat list > $msn.bars
did -i $dname 5 1 bmpsize 16 16
did -i $dname 5 1 setimage icon large $msn.icon(file)
did -i $dname 5 1 setimage icon large $msn.icon(nln)
did -i $dname 5 1 setimage icon large $msn.icon(nlnbl)
did -i $dname 5 1 setimage icon large $msn.icon(mail)
did -i $dname 5 1 setimage icon large $msn.icon(dp)
did -i $dname 5 1 setimage icon large $scriptdirico/emoticon.ico
did -i $dname 5 1 setimage icon large $scriptdirico/font.ico
did -a $dname 5 +a 1 $mstr(msnfx,5a)
did -a $dname 5 +a $iif($msn.isblocked($mid($dname,7)),2 $mstr(msnfx,5b),3 $mstr(msnfx,5c))
did -a $dname 5 +a 4 $chr(9) $+ $mstr(msnfx,5d)
did -a $dname 5 + -
did -a $dname 5 +a 5 $chr(9) $+ $mstr(msnfx,5e)
did -a $dname 5 +a 6 $chr(9) $+ Insert emoticon
did -a $dname 5 +a 7 $chr(9) $+ Change font
did -a $dname 3 $msn.name($gettok($dname,2-,46))
did -a $dname 4 $gettok($dname,2-,46)
did -a $dname 7 %msn.me
did -a $dname 8 %msn.address
var %win = @ $+ $gettok($dname,2-,46)
fx SetPadding %win > 108
fx SetChild %win > $dname
did -g $dname 1 $iif($exists($msn.dir(temp\mydp.png)),$msn.dir(temp\mydp.png),$msn.dir(dp.png))
did -g $dname 2 $msn.dir(dp.png)
did -f $dname 2
if ($os == XP) || ($os == NET) { dll $msn.dir(dll\VStyle.dll) NoTheme $dialog($dname).hwnd }
msnfx.dlgmake null $dname $calc($window(@ $+ $mid($dname,7)).w -10) null
}
on 1:dialog:msnfx.*:sclick:0: { var %w = @ $+ $mid($dname,7) | .timermsn.activatewindow $+ %w -m 1 1 window -a %w }
on 1:dialog:msnfx.*:sclick:5: {
if ($did(5).sel == 2) { msn.transfer.send $mid($dname,7) }
elseif ($did(5).sel == 3) { $iif($msn.isblocked($mid($dname,7)),msn.unblock $mid($dname,7),msn.block $mid($dname,7)) }
elseif ($did(5).sel == 4) { msend URL 6 COMPOSE $mid($dname,7)) }
elseif ($did(5).sel == 6) { set %msn.msnfx $mid($dname,7) | msn.dp.popup }
elseif ($did(5).sel == 7) { msn.emoticons.panel.show $mouse.dx $mouse.dy }
elseif ($did(5).sel == 8) { msn.font.popup }
}
on 1:dialog:msnfx.*:sclick:1: {
var %w = $pic($msn.dir(temp\mydp.png)).width, %h = $pic($msn.dir(temp\mydp.png)).height
if (%w > 96) || (%h > 96) {
window -pdo +t @Preview -1 -1 $calc(%w +8) $calc(%h + 27)
drawpic @Preview 0 0 $msn.dir(temp\mydp.png)
}
}
on 1:dialog:msnfx.*:sclick:2: {
var %f = $hget(msn.dp,$mid($dname,7))
%f = $msn.dir(temp\ $+ %f)
if ($isfile(%f) == $true) {
var %w = $pic(%f).width, %h = $pic(%f).height
if (%w > 96) || (%h > 96) {
window -pdo +t @Preview -1 -1 $calc(%w +8) $calc(%h + 27)
drawpic @Preview 0 0 %f
}
}
}
on 1:dialog:msnfx.*:active:*: { .timermsn.activatewindow $+ $mid($dname,7) -m 1 1 window -a @ $+ $mid($dname,7) } }
on 1:SIGNAL:wfx_Size: {
if ($3 == 0) return
msnfx.dlgmake $1-
}
alias msnfx.dlgmake {
msn.seticon @ $+ $mid($2,7) $calc($gettok($msn.icon(nln),1,44) +1) $msn.icon
msn.settitle @ $+ $mid($2,7) $msn.name($mid($2,7)) $chr(40) $+ $mid($2,7) $+ $chr(41)
dialog -s $2 -2 -2 $3 106
dialog -s $2 -2 -2 $3 $calc(106 - $calc($dialog($2).ch - 106))
did -h $2 2,3,4,7,8
msn.mdx MoveControl $2 2 $calc($3 - 100) * * *
msn.mdx MoveControl $2 3 * * $calc($3 - 222) *
msn.mdx MoveControl $2 4 * * $calc($3 - 222) *
msn.mdx MoveControl $2 5 * * $calc($3 - 222) *
msn.mdx MoveControl $2 6 * * $calc($3 - 210) *
msn.mdx MoveControl $2 9 * * $calc($3 - 210) *
msn.mdx MoveControl $2 7 * * $calc($3 - 222) *
msn.mdx MoveControl $2 8 * * $calc($3 - 222) *
var %o $len(%msn.me)
var %n = %msn.me
while ($width(%n,trebuchet ms,15,B) > $calc($3 - 270)) && (%o > 0) {
dec %o
%n = $mid(%n,1,%o) $+ ...
}
did -ra $2 7 %n
var %o $len($msn.name($mid($2,7)))
var %n = $msn.name($mid($2,7))
while ($width(%n,trebuchet ms,15,B) > $calc($3 - 270)) && (%o > 0) {
dec %o
%n = $mid(%n,1,%o) $+ ...
}
did -ra $2 3 %n
did -v $2 2,3,4,7,8
msn.html.adjust $active
}
alias msnfx.refresh.names {
if (!$1) {
var %o 0
while %o < $window(@*@*.*,0) {
inc %o
var %usr = $mid($window(@*@*.*,%o),2)
did -ra msnfx. $+ %usr 3 $msn.name(%usr)
did -ra msnfx. $+ %usr 7 %msn.me
msnfx.dlgmake NOT_USED msnfx. $+ %usr $calc($dialog(msnfx. $+ %usr).w -6)
}
}
else {
var %usr = $1
if (!$dialog(msnfx. $+ %usr)) { return }
did -ra msnfx. $+ %usr 3 $msn.name(%usr)
did -ra msnfx. $+ %usr 7 %msn.me
msnfx.dlgmake NOT_USED msnfx. $+ %usr $calc($dialog(msnfx. $+ %usr).w -6)
}
}
alias msn.waitdlg { if ($dialog(msnwait)) { dialog -x msnwait } | else { dialog -mdo msnwait msnwait } }
dialog msnwait {
title "Please wait..."
size -1 -1 110 12
option pixels
text "Please wait...", 1, 0 9 110 16, center
}
on 1:dialog:msnwait:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style dlgframe tool
msn.mdx SetFont 1 + 13 1000 tahoma
did -ra $dname 1 $mstr(wait,1)
}
dialog msnpopup {
title ""
size -3200 -3200 186 -25
option pixels
text "" 1,-4 -3 200 110
button "" 999, 0 0 0 0, hide
}
on 1:dialog:msnpopup:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style windowedge tool
msn.mdx SetControlMDX 999 positioner noclose > $msn.dialogs
var %r = msn. $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(0,9) $+ $rand(0,9)
did -ra $dname 1 %r
set %msn.popup.hwnd $dll($htmldll,find,%r)
dll $htmldll attach %msn.popup.hwnd
dll $htmldll navigate $scriptdirpopup.htm
dll $htmldll handler msn.html.handler
var %s = $dll($wnd,getsize,$dll($wnd,getHWND,Shell_TrayWnd))
dialog -s msnpopup $calc($window(-1).w - 193) $calc($gettok(%s,2,32) -1) -1 -1
}
alias msn.popup.init {
if ($dialog(msnpopup)) {
.timermsn.exitmsnpop -m 1 1 dialog -x msnpopup
}
dialog -mdo msnpopup msnpopup
}
alias msn.popup.popup {
dll $htmldll select %msn.popup.hwnd
var %str = $replace($1-,$chr(39),',\,\\)
dll $htmldll execScript popuptext(' $+ %str $+ ')
if (%msn.popup.h <= -25) { msn.popup.show }
else { msn.popup.show.next }
.timermsn.popup.hide 1 5 msn.popup.hide
}
alias msn.popup.hide {
set %msn.popup.h $calc($dialog(msnpopup).h - 25)
set %msn.popup.y $dialog(msnpopup).y
msn.popup.hide.next
}
alias msn.popup.hide.next {
if (%msn.popup.h <= -25) { return }
dec %msn.popup.h 3
inc %msn.popup.y 3
dialog -s msnpopup -1 %msn.popup.y -1 %msn.popup.h
.timermsn.popup.slide -m 1 1 msn.popup.hide.next
}
alias msn.popup.show {
var %s = $dll($wnd,getsize,$dll($wnd,getHWND,Shell_TrayWnd))
dialog -s msnpopup $calc($window(-1).w - 193) $calc($gettok(%s,2,32) -1) -1 -1
set %msn.popup.h $calc($dialog(msnpopup).h - 25)
set %msn.popup.y $dialog(msnpopup).y
msn.popup.show.next
}
alias msn.popup.show.next {
if (%msn.popup.h >= 77) { return }
inc %msn.popup.h 3
dec %msn.popup.y 3
dialog -s msnpopup -1 %msn.popup.y -1 %msn.popup.h
.timermsn.popup.slide -m 1 1 msn.popup.show.next
}
alias msn.html.handler {
if ($2 == navigate_begin) {
if (mirc:* iswm $3-) {
$eval($msn.replace($mid($3-,6)),2)
return S_CANCEL
}
}
return S_OK
}
; MSN DX v1.61 - by FoLKeN^
; File Transfer File
alias msn.transfer.accept {
if ($dialog(msn.transfer)) {
msnmsg $cr $mstr(115)
return
}
if (%msn.transfer.method == p2p) {
var %t = $hget(msn.ft.p2pdata,data,&p2pmsg)
msn.p2p.ft.invite.accept $1
goto skip
}
sockwrite -tn $1 MSG 20 N $calc($len(%msn.transfer.cookie) +176)
sockwrite -tn $1 MIME-Version: 1.0
sockwrite -tn $1 Content-Type: text/x-msmsgsinvite; charset=UTF-8
sockwrite -tn $1
sockwrite -tn $1 Invitation-Command: ACCEPT
sockwrite -tn $1 Invitation-Cookie: %msn.transfer.cookie
sockwrite -tn $1 Launch-Application: FALSE
sockwrite -tn $1 Request-Data: IP-Address:
sockwrite -tn $1
set %msn.transfer.address $gettok($1,2-,46)
:skip
.remove $msn.dir(temp\ft.temp)
set %msn.transfer.transferred.last 0
set %msn.transfer.transferred 0
dialog -md msn.transfer msn.transfer
dialog -v msn.transfer
did -ra msn.transfer 3 $mstr(116) %msn.transfer.filename
did -ra msn.transfer 4 $mstr(117) $bytes(%msn.transfer.size).suf
msn.transfer.rate
}
alias msn.transfer.cancel {
if (%msn.transfer.method == p2p) {
var %t = $hget(msn.ft.p2pdata,data,&p2pmsg)
msn.p2p.ft.invite.decline $1
unset %msn.transfer.method
return
}
sockwrite -tn $1 MSG 20 N $calc($len(%msn.transfer.cookie) + $len($2) +137)
sockwrite -tn $1 MIME-Version: 1.0
sockwrite -tn $1 Content-Type: text/x-msmsgsinvite; charset=UTF-8
sockwrite -tn $1
sockwrite -tn $1 Invitation-Command: CANCEL
sockwrite -tn $1 Invitation-Cookie: %msn.transfer.cookie
sockwrite -tn $1 Cancel-Code: $2
sockwrite -tn $1
}
alias CF12 {
msn.transfer.cancel.send FTTIMEOUT
}
alias msn.transfer.cancel.send {
var %s = msn. $+ %msn.transfer.send.user
if ($sock(%s)) {
sockwrite -tn %s MSG 20 N $calc($len(%msn.transfer.gcookie) + $len($1) +137)
sockwrite -tn %s MIME-Version: 1.0
sockwrite -tn %s Content-Type: text/x-msmsgsinvite; charset=UTF-8
sockwrite -tn %s
sockwrite -tn %s Invitation-Command: CANCEL
sockwrite -tn %s Invitation-Cookie: %msn.transfer.gcookie
sockwrite -tn %s Cancel-Code: $1
sockwrite -tn %s
msn.echo @ $+ %msn.transfer.send.user $pre(4) You cancelled transfer of $nopath(%msn.transfer.filename)
}
unset %msn.transfer.*
if ($dialog(msn.transfer)) { dialog -x msn.transfer }
}
on 1:sockopen:msn.transfer*: {
if ($sockerr > 0) {
if ($sockname != msn.transfer2) { sockclose msn.transfer | sockopen msn.transfer2 %msn.transfer.ip2 %msn.transfer.port }
else { did -ra msn.transfer 1 $gettok($sock(msn.transfer).wsmsg,2-,32) }
return
}
unset %msn.transfer.read
sockwrite -tn $sockname VER MSNFTP
sockwrite -tn $sockname USR %msn.address %msn.transfer.authcookie
}
on 1:sockread:msn.transfer: {
if (%msn.transfer.mode == receive) {
if (%msn.transfer.read != binary) {
sockread %msn.t
if (FIL isin %msn.t) {
set %msn.transfer.filesize $gettok(%msn.t,2,32)
sockwrite -tn $sockname TFR
set %msn.transfer.read binary
}
}
else {
sockread &msn.t
bwrite $msn.dir(temp\ft.temp) -1 -1 &msn.t
var %p = $int($calc($lof($scriptdirtemp\ft.temp) * 100 / %msn.transfer.filesize))
inc %msn.transfer.transferred $bvar(&msn.t,0)
dialog -t msn.transfer $mstr(118) %p $chr(37)
did -ra msn.transfer 1 $mstr(118) %p $chr(37)
did -e msn.transfer 5
did -a msn.transfer 2 %p 0 100
if ($lof($scriptdirtemp\ft.temp) >= $calc(%msn.transfer.filesize + ((%msn.transfer.filesize / 2048) * 3))) {
msn.transfer.finish $sockname
return
}
}
}
elseif (%msn.transfer.mode == send) {
sockread %msn.t
if (%msn.t == VER MSNFTP) { sockwrite -tn $sockname VER MSNFTP }
elseif (USR *@* 2 iswm %msn.t) { sockwrite -tn $sockname FIL $lof(%msn.transfer.filename) | set %msn.transfer.address $gettok(%msn.t,2,32) }
elseif (%msn.t == TFR) { msn.transfer.send.start }
elseif (%msn.t == CCL) { msn.echo @ $+ %msn.transfer.address $pre User 4aborted transfer of $nopath(%msn.transfer.filename)| sockclose $sockname | unset %msn.transfer.* | dialog -x msn.transfer }
}
}
alias msn.transfer.finish {
var %o = 0
while %o < $lof($scriptdirtemp\ft.temp) {
bread $msn.dir(temp\ft.temp) %o 2048 &read
bcopy &write 1 &read 4 2045
bwrite " $+ %msn.download $+ %msn.transfer.filename $+ " -1 -1 &write
inc %o 2048
}
sockwrite -tn $1 BYE 16777989
dialog -t msn.transfer $mstr(119)
did -a msn.transfer 1 $mstr(119)
did -a msn.transfer 2 100 0 100
did -ra msn.transfer 5 $mstr(120)
msn.transfer.rate.stop
.remove $msn.dir(temp\ft.temp)
}
alias msn.transfer.send.start {
set %i 0
set %msn.transfer.send yes
bread " $+ %msn.transfer.filename $+ " %i 2045 &read
var %int = $int($calc($bvar(&read,0) / 256))
var %re = $calc($bvar(&read,0) - (%re * 256))
bset &header 1 0 %re %int
sockwrite $sockname &header
sockwrite $sockname &read
set %i $calc(%i + 2045)
msn.transfer.send.next
}
alias msn.transfer.send.next {
if (%msn.transfer.send == yes) {
if ($sock(msn.transfer).sq > 4096) { .timermsn.transferw8 1 2 msn.transfer.send.next | return }
else {
var %tot = $calc($lof(%msn.transfer.filename) + (($lof(%msn.transfer.filename) / 2048) * 3)))
var %p = $int($calc($sock(msn.transfer).sent * 100 / %tot))
if ($dialog(msn.transfer)) {
dialog -t msn.transfer $mstr(121) %p $chr(37)
did -ra msn.transfer 1 $mstr(121) %p $chr(37)
did -a msn.transfer 2 %p 0 100
did -e msn.transfer 5
}
bread " $+ %msn.transfer.filename $+ " %i 2045 &read
var %int = $int($calc($bvar(&read,0) / 256))
var %re = $calc($bvar(&read,0) - (%int * 256))
bset &header 1 0 %re %int
sockwrite msn.transfer &header
sockwrite msn.transfer &read
;echo -s 10 %i $lof(%msn.transfer.filename)
set %i $calc(%i + 2045)
if (%i >= $lof(%msn.transfer.filename)) {
;sockclose msn.transfer
dialog -t msn.transfer $mstr(122)
did -ra msn.transfer 1 $mstr(122)
did -ra msn.transfer 2 100 0 100
did -ra msn.transfer 5 $mstr(123)
msn.transfer.rate.stop
return
}
}
.timermsn.transfer.next -m 1 1 msn.transfer.send.next
}
}
on 1:sockclose:msn.transfer*: { unset %msn.transfer.send }
alias msn.accept.transfer {
msn.transfer.accept msn. $+ $mid($active,2)
var %t = $hget(msn.ft.p2pdata,invite,&p2pmsg)
hadd -mb msn.ft.p2pdata accepted_invite &p2pmsg
msn.echo $active $pre You 3accepted the file %msn.transfer.filename
set %msn.transfer.size %msn.transfer.filesize
}
alias msn.reject.transfer {
msn.transfer.cancel msn. $+ $mid($active,2) REJECT
msn.echo $active $pre You 4rejected the file %msn.transfer.filename
unset %msn.transfer.*
}
alias msn.transfer.send {
if (%msn.transfer.filename) {
var %p = $input(Another transfer is currently active. You cannot have more than one transfer at once,ois,$active,MSN File Transfer)
return
}
set %msn.transfer.filename $sfile($gettok($mircdir,1,47),$mstr(124),$mstr(125))
if ($exists(%msn.transfer.filename) != $true) { return }
set %msn.transfer.gcookie $rand(1,999)
var %msg.body = MIME-Version: 1.0 $&
$+ $crlf $+ Content-Type: text/x-msmsgsinvite; charset=UTF-8 $&
$+ $crlf $&
$+ $crlf $+ Application-Name: File Transfer $&
$+ $crlf $+ Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683} $&
$+ $crlf $+ Invitation-Command: INVITE $&
$+ $crlf $+ Invitation-Cookie: %msn.transfer.gcookie $&
$+ $crlf $+ Application-File: $nopath(%msn.transfer.filename) $&
$+ $crlf $+ Application-FileSize: $file(%msn.transfer.filename).size $&
$+ $crlf $+ $crlf
var %msg = MSG 10 N $len(%msg.body) $+ $crlf $+ %msg.body
if (($sock(msn. $+ $1).status == active) && ($left($2-,1) != $chr(47)) && ($sock(msn. $+ $1).rcvd > $calc(32 + $len($1) + $len($msn.name($1)) + $len(%msn.me) + $len(%msn.address)))) { sockwrite msn. $+ $1 %msg }
else { msn.chat $1 | hadd -m msn.msgqueue msnftp. $+ $1 %msg }
if (!$window(@ $+ $1)) { window $iif(%msn.display.desktop == on,-edk0n,-ek0n) @ $+ $1 -1 -1 560 345 "tahoma" 11 " $+ $msn.icon $+ " 29 | msn.fx $1 | .log $iif(%msn.logging == on,on,off) @ $+ $1 -f $1 $+ .log }
msn.echo @ $+ $1 $pre Waiting for user to accept the file $nopath(%msn.transfer.filename) $+ ... (Press Ctrl+F12 to cancel)
set %msn.transfer.send.user $1
}
on 1:socklisten:msn.transfer.listen: {
sockaccept msn.transfer
sockclose $sockname
}
alias msn.transfer.rate {
if ($!dialog(msn.transfer)) { return }
var %d = $calc(%msn.transfer.transferred - %msn.transfer.transferred.last)
set %msn.transfer.transferred.last %msn.transfer.transferred
did -ra msn.transfer 4 $gettok($did(msn.transfer,4),1,45) - Speed: $bytes(%d,k3) kB/s
.timermsn.transfer.rate 1 1 msn.transfer.rate
}
alias msn.transfer.rate.stop {
.timermsn.transfer.rate off
did -ra msn.transfer 4 $gettok($did(msn.transfer,4),1,45)
}
; MSN DX v1.0 - by FoLKeN^
; P2P things file
alias msn.dp.invite {
if (!$sock(msn. $+ $1)) { return }
.timermsn.dp.timeout $+ $1 1 30 msn.dp.timeout $1
set %msn.p2p.count 0
bset -t &p2pmsnobj 1 $hget(msn.obj,$1)
bset &p2pmsnobj $calc($bvar(&p2pmsnobj,0) +1) 0
var %r = $encode(&p2pmsnobj,mb)
sockmark msn. $+ $1 $rand(4,1980589)
set %bid $rand(4,1980589)
;Begin of p2p message body
var %p2pbody.second = $crlf $+ EUF-GUID: {A4268EEC-FEC5-49E5-95C3-F126696BDBF6} $+ $crlf
var %p2pbody.second = %p2pbody.second $+ SessionID: $sock(msn. $+ $1).mark $+ $crlf
var %p2pbody.second = %p2pbody.second $+ AppID: 1 $+ $crlf
var %p2pbody.second = %p2pbody.second $+ Context: $bvar(&p2pmsnobj,1- $+ $bvar(&p2pmsnobj,0)).text
var %p2pbody.first = INVITE MSNMSGR: $+ $1 MSNSLP/1.0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ To: <msnmsgr: $+ $1 $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ >
var %p2pbody.first = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch={3 $+ $base($rand(1,16),10,16) $+ 517CE4-0 $+ $base($rand(1,16),10,16) $+ FC-4428-B6F4-39927 $+ $base($rand(1,16),10,16) $+ 29B72 $+ $base($rand(1,16),10,16) $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ CSeq: 0 $crlf
var %p2pbody.first = %p2pbody.first $+ Call-ID: {9D7 $+ $base($rand(1,16),10,16) $+ AE57-1BD5-4 $+ $base($rand(1,16),10,16) $+ 4B-B14E-3FC9 $+ $base($rand(1,16),10,16) $+ B2B5D58} $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionreqbody $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Length: $len(%p2pbody.second) $+ $crlf
;Concatenate %p2pbody.first + %p2pbody.second and add the 0x0 char to the end
var %p2pbody = %p2pbody.first $+ %p2pbody.second
bset -t &p2pbody 1 %p2pbody
bset &p2pbody $calc($bvar(&p2pbody,0) +1) 13 10 0
;End of p2p message body making
;Begin of p2p binary header
bset &p2pheader 1 0 0 0 0
bset &p2pheader 5 $getasc(4,%bid)
bset &p2pheader 9 0 0 0 0 0 0 0 0
bset &p2pheader 17 $getasc(8,$bvar(&p2pbody,0))
bset &p2pheader 25 $getasc(4,$bvar(&p2pbody,0))
bset &p2pheader 29 0 0 0 0
bset &p2pheader 33 $getasc(4,$sock(msn. $+ $1).mark)
bset &p2pheader 37 0 0 0 0
bset &p2pheader 41 0 0 0 0 0 0 0 0
;End of p2p binary header
;Begin of p2p binary footer
bset &p2pfooter 1 0 0 0 0
;End of p2p binary footer
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: $1 $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pheader,0) + $bvar(&p2pbody,0) + $bvar(&p2pfooter,0)) $+ $crlf
sockwrite msn. $+ $1 %msgheader.first
sockwrite msn. $+ $1 %msgheader.second
sockwrite msn. $+ $1 &p2pheader
sockwrite msn. $+ $1 &p2pbody
sockwrite msn. $+ $1 &p2pfooter
set %p2pbody.len $getasc(8,$bvar(&p2pbody,0))
}
alias msn.p2p.finish {
;Data ACK
bset &p2pack 1 $bvar(&p2pheader,1-4)
bset &p2pack 5 $getasc(4,%bid)
bset &p2pack 9 0 0 0 0 0 0 0 0
bset &p2pack 17 $bvar(&p2pheader,17-24)
bset &p2pack 25 0 0 0 0
bset &p2pack 29 2 0 0 0
bset &p2pack 33 $bvar(&p2pheader,5-8)
bset &p2pack 37 $bvar(&p2pheader,33-36)
bset &p2pack 41 $bvar(&p2pheader,17-24)
bset &p2pack 49 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: $1 $+ $crlf $+ $crlf
var %msgheader.first = MSG 2 D $calc($len(%msgheader.second) + $bvar(&p2pack,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pack
;BYE
;Begin of p2p message body
var %p2pbody = BYE MSNMSGR: $+ $1 MSNSLP/1.0 $+ $crlf
var %p2pbody = %p2pbody.first $+ To: <msnmsgr: $+ $1 $+ > $+ $crlf
var %p2pbody = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ >
var %p2pbody = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch={A0D624A6-6C0C-4283-A9E0-BC97B4B46D32} $+ $crlf
var %p2pbody = %p2pbody.first $+ CSeq: 0 $crlf
var %p2pbody = %p2pbody.first $+ Call-ID: {9D79AE57-1BD5-444B-B14E-3FC9BB2B5D58} $+ $crlf
var %p2pbody = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionclosebody $+ $crlf
var %p2pbody = %p2pbody.first $+ Content-Length: 3 $+ $crlf
bset -t &p2pbody 1 %p2pbody
bset &p2pbody $calc($bvar(&p2pbody,0) +1) 13 10 0
;End of p2p message body making
;Begin of p2p binary header
bset &p2pbye 1 0 0 0 0
bset &p2pbye 5 $getasc(4,$sock(msn. $+ $1).mark)
bset &p2pbye 9 0 0 0 0 0 0 0 0
bset &p2pbye 17 $getasc(8,$bvar(&p2pbody,0))
bset &p2pbye 25 $getasc(4,$bvar(&p2pbody,0))
bset &p2pbye 29 0 0 0 0
bset &p2pbye 33 $bvar(&p2pheader,33-36)
bset &p2pbye 37 0 0 0 0
bset &p2pbye 41 0 0 0 0 0 0 0 0
;End of p2p binary header
;Begin of p2p binary footer
bset &p2pfooter 1 0 0 0 0
;End of p2p binary footer
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: $1 $+ $crlf $+ $crlf
var %msgheader.first = MSG 3 D $calc($len(%msgheader.second) + $bvar(&p2pbye,0) + $bvar(&p2pbody,0) + $bvar(&p2pfooter,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pbye
sockwrite $sockname &p2pbody
sockwrite $sockname &p2pfooter
}
alias msn.dp.timeout { if ($hget(msn.obj,$1) && !$hget(msn.dp,$1)) { msn.dp.invite $1 } }
alias msn.p2p.finish {
;Data ACK
bset &p2pack 1 $bvar(&p2pheader,1-4)
bset &p2pack 5 $getasc(4,%bid)
bset &p2pack 9 0 0 0 0 0 0 0 0
bset &p2pack 17 $bvar(&p2pheader,17-24)
bset &p2pack 25 0 0 0 0
bset &p2pack 29 2 0 0 0
bset &p2pack 33 $bvar(&p2pheader,5-8)
bset &p2pack 37 $bvar(&p2pheader,33-36)
bset &p2pack 41 $bvar(&p2pheader,17-24)
bset &p2pack 49 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: $1 $+ $crlf $+ $crlf
var %msgheader.first = MSG 2 D $calc($len(%msgheader.second) + $bvar(&p2pack,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pack
;BYE
;Begin of p2p message body
var %p2pbody = BYE MSNMSGR: $+ $1 MSNSLP/1.0 $+ $crlf
var %p2pbody = %p2pbody.first $+ To: <msnmsgr: $+ $1 $+ > $+ $crlf
var %p2pbody = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ >
var %p2pbody = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch={A0D624A6-6C0C-4283-A9E0-BC97B4B46D32} $+ $crlf
var %p2pbody = %p2pbody.first $+ CSeq: 0 $crlf
var %p2pbody = %p2pbody.first $+ Call-ID: {9D79AE57-1BD5-444B-B14E-3FC9BB2B5D58} $+ $crlf
var %p2pbody = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionclosebody $+ $crlf
var %p2pbody = %p2pbody.first $+ Content-Length: 3 $+ $crlf
bset -t &p2pbody 1 %p2pbody
bset &p2pbody $calc($bvar(&p2pbody,0) +1) 13 10 0
;End of p2p message body making
;Begin of p2p binary header
bset &p2pbye 1 0 0 0 0
bset &p2pbye 5 $getasc(4,$sock(msn. $+ $1).mark)
bset &p2pbye 9 0 0 0 0 0 0 0 0
bset &p2pbye 17 $getasc(8,$bvar(&p2pbody,0))
bset &p2pbye 25 $getasc(4,$bvar(&p2pbody,0))
bset &p2pbye 29 0 0 0 0
bset &p2pbye 33 $bvar(&p2pheader,33-36)
bset &p2pbye 37 0 0 0 0
bset &p2pbye 41 0 0 0 0 0 0 0 0
;End of p2p binary header
;Begin of p2p binary footer
bset &p2pfooter 1 0 0 0 0
;End of p2p binary footer
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: $1 $+ $crlf $+ $crlf
var %msgheader.first = MSG 3 D $calc($len(%msgheader.second) + $bvar(&p2pbye,0) + $bvar(&p2pbody,0) + $bvar(&p2pfooter,0)) $+ $crlf
sockwrite $sockname %msgheader.first
sockwrite $sockname %msgheader.second
sockwrite $sockname &p2pbye
sockwrite $sockname &p2pbody
sockwrite $sockname &p2pfooter
}
alias msn.p2p.ft.invite.accept {
var %msn.user = $mid($1,5)
var %p2pinvite $bvar(&p2pmsg,49,900).text
set %msn.ft.baseid $rand(4,1980589)
bset &p2pbaseid 1 0 0 0 0 $getasc(4,%msn.ft.baseid) 0 0 0 0 0 0 0 0 $bvar(&p2pmsg,17-24) 0 0 0 0 2 0 0 0 $bvar(&p2pmsg,5-8) $bvar(&p2pmsg,33-36) $bvar(&p2pmsg,17-24) 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pbaseid,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pbaseid
sockmark $1 $gettok($gettok(%p2pinvite,15,32),1,13)
var %p2pbody.second = $crlf $+ SessionID: $gettok($gettok(%p2pinvite,15,32),1,13)
var %branch = $gettok($gettok(%p2pinvite,2,123),1,125)
var %callid = $gettok($gettok(%p2pinvite,3,123),1,125)
set %msn.ft.callid %callid
set %msn.ft.sessid $gettok($gettok(%p2pinvite,15,32),1,13)
var %p2pbody.first = MSNSLP/1.0 200 OK $+ $crlf
var %p2pbody.first = %p2pbody.first $+ To: <msnmsgr: $+ %msn.user $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch= $+ $chr(123) $+ %branch $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ CSeq: 1 $crlf
var %p2pbody.first = %p2pbody.first $+ Call-ID: $chr(123) $+ %callid $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionreqbody $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Length: $calc($len(%p2pbody.second) + 3) $+ $crlf
;Concatenate %p2pbody.first + %p2pbody.second and add the 0x0 char to the end
var %p2pbody = %p2pbody.first $+ %p2pbody.second
bset -t &p2pbody200ok 1 %p2pbody
bset &p2pbody200ok $calc($bvar(&p2pbody200ok,0) +1) 13 10 0
;echo -s 12 %p2pbody
bset &p2pheader200ok 1 0 0 0 0 $getasc(4,%msn.ft.baseid) 0 0 0 0 0 0 0 0 $getasc(8,$bvar(&p2pbody200ok,0)) $getasc(4,$bvar(&p2pbody200ok,0)) 0 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pfooter200ok 1 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pheader200ok,0) + $bvar(&p2pbody200ok,0) + $bvar(&p2pfooter200ok,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pheader200ok
sockwrite $1 &p2pbody200ok
sockwrite $1 &p2pfooter200ok
}
alias msn.p2p.ft.invite.decline {
var %msn.user = $mid($1,5)
var %p2pinvite $bvar(&p2pmsg,49,900).text
set %msn.ft.baseid $rand(4,1980589)
bset &p2pbaseid 1 0 0 0 0 $getasc(4,%msn.ft.baseid) 0 0 0 0 0 0 0 0 $bvar(&p2pmsg,17-24) 0 0 0 0 2 0 0 0 $bvar(&p2pmsg,5-8) $bvar(&p2pmsg,33-36) $bvar(&p2pmsg,17-24) 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pbaseid,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pbaseid
sockmark $1 $gettok($gettok(%p2pinvite,15,32),1,13)
var %p2pbody.second = $crlf $+ SessionID: $gettok($gettok(%p2pinvite,15,32),1,13)
var %branch = $gettok($gettok(%p2pinvite,2,123),1,125)
var %callid = $gettok($gettok(%p2pinvite,3,123),1,125)
var %p2pbody.first = MSNSLP/1.0 603 Decline $+ $crlf
var %p2pbody.first = %p2pbody.first $+ To: <msnmsgr: $+ %msn.user $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch= $+ $chr(123) $+ %branch $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ CSeq: 1 $crlf
var %p2pbody.first = %p2pbody.first $+ Call-ID: $chr(123) $+ %callid $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Type: application/x-msnmsgr-sessionreqbody $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Length: $calc($len(%p2pbody.second) + 3) $+ $crlf
;Concatenate %p2pbody.first + %p2pbody.second and add the 0x0 char to the end
var %p2pbody = %p2pbody.first $+ %p2pbody.second
bset -t &p2pbody200ok 1 %p2pbody
bset &p2pbody200ok $calc($bvar(&p2pbody200ok,0) +1) 13 10 0
;echo -s 12 %p2pbody
bset &p2pheader200ok 1 0 0 0 0 $getasc(4,%msn.ft.baseid) 0 0 0 0 0 0 0 0 $getasc(8,$bvar(&p2pbody200ok,0)) $getasc(4,$bvar(&p2pbody200ok,0)) 0 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pfooter200ok 1 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $bvar(&p2pheader200ok,0) + $bvar(&p2pbody200ok,0) + $bvar(&p2pfooter200ok,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pheader200ok
sockwrite $1 &p2pbody200ok
sockwrite $1 &p2pfooter200ok
}
alias msn.p2p.ft.finish {
var %msn.user = $mid($1,5)
;Data ACK
bset &p2pack 1 $bvar(&p2pheader,1-4)
bset &p2pack 5 $getasc(4,$calc(%msn.ft.baseid + 1))
bset &p2pack 9 0 0 0 0 0 0 0 0
bset &p2pack 17 $bvar(&p2pheader,17-24)
bset &p2pack 25 0 0 0 0
bset &p2pack 29 2 0 0 0
bset &p2pack 33 $bvar(&p2pheader,5-8)
bset &p2pack 37 $bvar(&p2pheader,33-36)
bset &p2pack 41 $bvar(&p2pheader,17-24)
bset &p2pack 49 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 62 D $calc($len(%msgheader.second) + $bvar(&p2pack,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pack
;BYE
;Begin of p2p message body
var %p2pbody = BYE MSNMSGR: $+ %msn.user MSNSLP/1.0 $+ $crlf
var %p2pbody = %p2pbody $+ To: <msnmsgr: $+ %msn.user $+ > $+ $crlf
var %p2pbody = %p2pbody $+ From: <msnmsgr: $+ %msn.address $+ >
var %p2pbody = %p2pbody $+ Via: MSNSLP/1.0/TLP ;branch={3 $+ $base($rand(1,16),10,16) $+ 517CE4-0 $+ $base($rand(1,16),10,16) $+ FC-4428-B6F4-39927 $+ $base($rand(1,16),10,16) $+ 29B72 $+ $base($rand(1,16),10,16) $+ $chr(125) $+ $crlf
var %p2pbody = %p2pbody $+ CSeq: 0 $crlf
var %p2pbody = %p2pbody $+ Call-ID: %msn.ft.callid $+ $crlf
var %p2pbody = %p2pbody $+ Max-Forwards: 0 $+ $crlf
var %p2pbody = %p2pbody $+ Content-Type: application/x-msnmsgr-sessionclosebody $+ $crlf
var %p2pbody = %p2pbody $+ Content-Length: 3 $+ $crlf
bset -t &p2pbody 1 %p2pbody
bset &p2pbody $calc($bvar(&p2pbody,0) +1) 13 10 0
;End of p2p message body making
;Begin of p2p binary header
bset &p2pbye 1 0 0 0 0
bset &p2pbye 5 $getasc(4,$calc(%msn.ft.baseid + 2))
bset &p2pbye 9 0 0 0 0 0 0 0 0
bset &p2pbye 17 $getasc(8,$bvar(&p2pbody,0))
bset &p2pbye 25 $getasc(4,$bvar(&p2pbody,0))
bset &p2pbye 29 0 0 0 0
bset &p2pbye 33 $bvar(&p2pheader,5-8)
bset &p2pbye 37 0 0 0 0
bset &p2pbye 41 0 0 0 0 0 0 0 0
;End of p2p binary header
;Begin of p2p binary footer
bset &p2pfooter 1 0 0 0 0
;End of p2p binary footer
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 66 D $calc($len(%msgheader.second) + $bvar(&p2pbye,0) + $bvar(&p2pbody,0) + $bvar(&p2pfooter,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pbye
sockwrite $1 &p2pbody
sockwrite $1 &p2pfooter
.copy -o $msn.dir(temp\ft.temp) " $+ %msn.download $+ %msn.transfer.filename $+ "
dialog -t msn.transfer $mstr(119)
did -a msn.transfer 1 $mstr(119)
did -a msn.transfer 2 100 0 100
did -ra msn.transfer 5 $mstr(120)
.remove $msn.dir(temp\ft.temp)
msn.transfer.rate.stop
unset %msn.transfer.mode
unset %msn.ft*
}
alias msn.p2p.ft.abort {
var %t = $hget(msn.ft.p2pdata,accepted_invite,&p2pmsg)
hfree msn.ft.p2pdata
var %msn.user = $mid($1,5)
var %p2pinvite $bvar(&p2pmsg,49,900).text
var %branch = $gettok($gettok(%p2pinvite,2,123),1,125)
var %callid = $gettok($gettok(%p2pinvite,3,123),1,125)
var %p2pbody.first = MSNSLP/1.0 481 No Such Call $+ $crlf
var %p2pbody.first = %p2pbody.first $+ To: <msnmsgr: $+ %msn.user $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ From: <msnmsgr: $+ %msn.address $+ > $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Via: MSNSLP/1.0/TLP ;branch= $+ $chr(123) $+ %branch $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ CSeq: 1 $crlf
var %p2pbody.first = %p2pbody.first $+ Call-ID: $chr(123) $+ %callid $+ $chr(125) $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Max-Forwards: 0 $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Type: null $+ $crlf
var %p2pbody.first = %p2pbody.first $+ Content-Length: 0 $+ $crlf $+ $crlf
;Concatenate %p2pbody.first + %p2pbody.second and add the 0x0 char to the end
var %p2pbody = %p2pbody.first
bset &p2pheader200ok 1 0 0 0 0 $getasc(4,%msn.ft.baseid) 0 0 0 0 0 0 0 0 $getasc(8,$len(&p2pbody)) $getasc(4,$len(&p2pbody)) 0 0 0 0 $bvar(&p2pmsg,5-8) 0 0 0 0 0 0 0 0 0 0 0 0
bset &p2pfooter200ok 1 0 0 0 0
var %msgheader.second = MIME-Version: 1.0 $+ $crlf
var %msgheader.second = %msgheader.second $+ Content-Type: application/x-msnmsgrp2p $+ $crlf
var %msgheader.second = %msgheader.second $+ P2P-Dest: %msn.user $+ $crlf $+ $crlf
var %msgheader.first = MSG 1 D $calc($len(%msgheader.second) + $len(%p2pbody) + $bvar(&p2pbody200ok,0) + $bvar(&p2pfooter200ok,0)) $+ $crlf
sockwrite $1 %msgheader.first
sockwrite $1 %msgheader.second
sockwrite $1 &p2pheader200ok
sockwrite $1 %p2pbody
sockwrite $1 &p2pfooter200ok
}
alias hex2asc {
var %o = 0
while %o < $numtok($1-,32) {
inc %o
var %ret = %ret $base($gettok($1-,%o,32),16,10)
}
return %ret
}
alias getasc {
var %res
var %chars $1
var %int $2
while (%chars > 0) {
%res = %res $calc(%int % 256)
%int = $int($calc(%int / 256))
dec %chars
}
return %res
}
alias bigendian {
var %o 0 | while %o < $numtok($1,32) { inc %o | var %ret = $gettok($1,%o,32) %ret }
return %ret
}
alias getint {
var %nr 1 | var %res
while ($gettok($1,%nr,32) != $null) {
%res = $calc(%res + ($gettok($1,%nr,32) * (256 ^ (%nr - 1))))
inc %nr
}
return %res
}
alias html return $msn.dir(dll\nHTMLn_2.95.dll)
alias msn.html.attach {
if (%msn.html.chat != on) { return }
dll $html attach $window($1).hwnd
dll $html navigate $scriptdirchat.htm
dll $html handler msn.html.handler
msn.checkready $1 dll $html execScript document.body.bgColor=' $+ $rgb2hex($color($color(background))) $+ ';
.timerwait.msn.adjust $+ $1 -m 1 1 msn.html.adjust $1
}
alias msn.html.detach {
if (%msn.html.chat != on) { return }
dll $html detach $window($1).hwnd
}
alias msn.html.adjust {
dll $html select $window($1).hwnd
var %t = -1
; $dialog(msnfx. $+ $mid($1,2)).h
dll $html margins top: $+ %t bottom:0 left:-1 right:-2
dll $html execScript scroll(0,9999999)
}
alias msn.writeln {
var %str = $replace($2-,$chr(39),',\,\\,$crlf,<br> )
dll $html select $window($1).hwnd
dll $html execScript writeln(' $+ %str $+ <br>'); void(0)
}
alias msn.message.echo {
if (%msn.html.chat != on) {
echo $1 $+ $replace($mstr(108),#1,$iif($2 == %msn.address,%msn.me,$msn.name($2)))
echo $1 $str($chr(160),2) $gettok($3-,2-,62)
return
}
var %f = $gettok($3-,1,62)
var %color = $iif($chr(35) !isin $gettok(%f,2,59),$chr(35) $+ $gettok(%f,2,59),$gettok(%f,2,59))
%color = %color $+ $str(0,$calc(7 - ($len(%color))))
var %str = $replace($gettok($3-,2-,62),<,<,>,>,',')
var %str = $&
<span style="font-family: $gettok(%f,1,59) $+ ,Tahoma; font-size: $+ %msn.msg.size $+ px; color: %color $+ ;"> $+ $chr(32) $&
$iif(B isin $gettok(%f,3,59),<strong> $+ $chr(32)) $+ $&
$iif(I isin $gettok(%f,3,59),<em> $+ $chr(32)) $+ $&
%str $+ $&
$iif(B isin $gettok(%f,3,59),$chr(32) $+ </strong>) $+ $&
$iif(I isin $gettok(%f,3,59),$chr(32) $+ </em>) $+ $&
$chr(32) $+ </span>
msn.checkready $1 msn.writeln $1 <span style="font-family: Tahoma; font-size: 11px; color: $rgb2hex($color($color(normal))) $+ ;"> $+ $mirctohtml($iif(%msn.timestamp == on,$asctime((hh:nn:ss))) $+ $replace($mstr(108),#1,$iif($2 == %msn.address,%msn.me,$msn.name($2)))) $+ </span><br> $+ %str
}
alias msn.echo {
if (%msn.html.chat != on) {
echo $1-
return
}
msn.checkready $1 msn.writeln $1 <span style="font-family: Tahoma; font-size: 11px; color: $rgb2hex($color($color(normal))) $+ ;"> $+ $mirctohtml($iif(%msn.timestamp == on,$asctime((hh:nn:ss))) $2-) $+ </span>
}
alias msn.transfer.echo {
if ($dialog(msn.transfer)) {
msn.echo $1 $pre Another transfer is currently active. File %msn.transfer.filename was 4rejected
msn.transfer.cancel msn. $+ $mid($1,2) REJECT
}
else {
.timermsn.transfer.echo -m 1 1 msn.transfer.echo2 $1-
}
}
alias msn.transfer.echo2 {
var %p = $input($2-,yvsa,$1,MSN File Transfer)
if (%p == $yes) {
msn.accept.transfer
}
else {
msn.reject.transfer
}
}
alias msn.checkready {
if ($dll($html,ready,$window($1).hwnd) == S_FALSE) {
.timermsn.wait $+ $1 $+ $ticks -m 1 500 msn.checkready $1-
}
else {
$2-
}
}
alias msn.html.handler {
if ($2 == navigate_begin) {
if (mirc:* iswm $3-) {
$eval($msn.replace($mid($3-,6)),2)
return S_CANCEL
}
}
return S_OK
}
alias autourl {
var %ret = $1-
var %wt = $wildtok($1-,*http://*.*,0,32),%o 0
while %o < %wt {
inc %o
var %url = $wildtok($1-,*http://*.*,%o,32)
%ret = $replace(%ret,%url,<a href=" $+ %url $+ " target="_blank"> $+ %url $+ </a>)
}
return %ret
}
alias reverse {
var %t = $len($1-),%o 1,%ret
while %o < %t {
%ret = $mid($1-,%o,2) $+ %ret
inc %o 2
}
return %ret
}
alias rgb2hex {
if ($0 == 1) { tokenize 44 $rgb($1) }
return $chr(35) $+ $base($1,10,16,2) $+ $base($2,10,16,2) $+ $base($3,10,16,2)
}
alias hex2rgb {
return $rgb($base($mid($1,2,2),16,10),$base($mid($1,4,2),16,10),$base($mid($1,6,2),16,10))
}
alias msn.font.popup {
if (%msn.html.chat != on) {
var %p = $input(You must enable rich-text chat at options dialog in order to change font settings,ois,$active,Font settings)
return
}
var %u = msnfont
popNew %u 10 14
popAddItem %u end Change font... $cr msn.setfont
popAddItem %u end Change color... $cr msn.setcolor
popPopup %u $mouse.dx $mouse.dy
if ($gettok($result,1,32) == OK) && ($gettok($result,4-,32)) { $ifmatch }
}
alias msn.setfont {
tokenize 44 $dll($msn.dir(dll\ShowFont.dll),ShowFont, > %msn.msg.font > %msn.msg.size > AVSTDN $+ $lower(%msn.msg.style))
if ($1 != $false) {
set %msn.msg.font $1
set %msn.msg.size $2
set %msn.msg.style $upper($remove($3,r))
}
}
alias msn.setcolor {
set %msn.msg.color $rgb2hex($dll($msn.dir(dll\color.dll),Color,$hex2rgb(%msn.msg.color)))
}
dialog msnemoticons {
title ""
size -32000 -32000 121 43
option dbu
text "", 1, -1 -1 136 81
button "",999, 0 0 0 0, hide
}
alias msn.emoticons.panel.init {
if ($dialog(msnemoticons)) { dialog -x msnemoticons }
dialog -mdo msnemoticons msnemoticons
}
on 1:dialog:msnemoticons:init:*: {
msn.mdx MarkDialog $dname
msn.mdx SetDialog $dname style border tool
msn.mdx SetControlMDX 999 positioner noclose > $msn.dialogs
var %r = msn. $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(0,9) $+ $rand(0,9)
did -ra $dname 1 %r
set %msn.emoticons.panel.hwnd $dll($html,find,%r)
dll $html attach %msn.emoticons.panel.hwnd
dll $html navigate $scriptdiremoticons.htm
dll $html handler msn.html.handler
}
alias fixit {
dll $html select %msn.emoticons.panel.hwnd
dll $html navigate $scriptdiremoticons.htm
dll $html handler msn.html.handler
}
alias msn.emoticons.panel.show {
var %x $mouse.dx
var %y $calc($dialog(msnfx. $+ $mid($active,2)).y + $dialog(msnfx. $+ $mid($active,2)).h))
dialog -sv msnemoticons %x %y -1 -1
}
alias msn.emoticons.panel.hide {
dialog -s msnemoticons -32000 -32000 -1 -1
}
alias msn.emoticons.panel.write {
editbox -f %msn.active $editbox(%msn.active) $+ $1-
msn.emoticons.panel.hide
}
alias -l htmlhex { return $+($chr(35),$base($gettok($1,1,44),10,16,2),$base($gettok($1,2,44),10,16,2),$base($gettok($1,3,44),10,16,2)) }
alias mirctohtml {
var %t = $replace($1-,<,<,>,>),%li,%re,%x,%y = 0
if ( isin %t) {
%t = %t $+
%x = $pos(%t,,0)
while (%y < %x) {
inc %y
%li = $.colrep($.controlrep($gettok(%t,1,15)))
%re = $gettok(%t,2-,15)
%t = %li $+ </b></u></font> $+ %re
}
}
else { %t = $.colrep($.controlrep(%t)) }
return %t
}
alias -l .rgb {
if ($1 isnum 0-15) {
tokenize 44 $rgb($color($1)) $+ $iif($2 isnum 0-15,$chr(44) $+ $rgb($color($2)))
var %col = $+($chr(35),$base($1,10,16,2),$base($2,10,16,2),$base($3,10,16,2)),%bgcol = $+($chr(35),$base($4,10,16,2),$base($5,10,16,2),$base($6,10,16,2))
return $iif($prop == html,<font color= $+ %col $+ $iif($4 || $4 isnum 0,$chr(32) $+ bgcolor= $+ %bgcol) $+ >,%col $iif($4 || $4 isnum 0,%bgcol))
}
else { return }
}
alias -l .colrep {
var %t = $replace($1-,$chr(32),ÿ),%s = ,%p,%cp,%atos,%l,%left,%right,%color = $false,%x,%y,%z
%p = 0
%atos = $pos(%t,%s,0)
while (%p < %atos) {
inc %p
%komma = $false
%l = $len(%t)
%cp = $pos(%t,%s,%p)
%left = $left(%t,$calc(%cp -1))
%right = $right(%t,$calc(%l - %cp +1))
%a = ""
%b = ""
if ($mid(%right,2,1) isnum) {
%color = $true
%x = $mid(%right,1,6)
%y = 1
while (%y < 6) {
inc %y
%z = $mid(%x,%y,1)
if (%z isnum 0-9) {
if ((!%komma) && ($len(%a) < 2)) %a = %a $+ %z
elseif ((%komma) && ($len(%b) < 2)) %b = %b $+ %z
}
elseif (%z == $chr(44)) { %komma = $true }
}
}
else {
%color = $false
}
%t = %left $+ $iif(%color,$.rgb(%a,%b).html,</font>) $+ %right
}
%t = %t
return $strip($replace(%t,ÿ,$chr(32)),c)
}
alias -l .controlrep {
var %t = $replace($1-,$chr(32),ÿ),%tok = ¿<b>¿</b>¹¿<u>¿</u>¹¿ $+ $.rgb($color(background),$color(normal)).html $+ ¿</font>,%r = $numtok(%tok,185),%a,%b,%c,%s,%p,%cp,%atos,%l,%left,%right,%op
while (%r) {
%c = $gettok(%tok,%r,185)
%s = $gettok(%c,1,191)
%a = $gettok(%c,2,191)
%b = $gettok(%c,3,191)
%p = 0
%atos = $pos(%t,%s,0)
while (%p < %atos) {
inc %p
%l = $len(%t)
%cp = $pos(%t,%s,%p)
%left = $left(%t,$calc(%cp -1))
%right = $right(%t,$calc(%l - %cp +1))
%t = %left $+ $iif(2 // %p,%b,%a) $+ %right
}
%t = $remove(%t,%s)
dec %r
}
return $replace(%t,ÿ,$chr(32),,</b></u></font>)
}