This will list all of the MSN chatrooms in a dialog, with the user's specified sections (eg: general computing). It wont work as is because it was designed for my original connection (which was rubbish, speedy and undisconnectablebyflooding
). A few simple tweaks here n there and it should be fine.
The addon was made by Vawluum and modified/dialog'ed by me ![]()
dialog rv {
title "Room viewer"
size -1 -1 202 112
option dbu
tab "Configure", 1, 1 1 199 107
text "Room category", 3, 6 17 37 8, tab 1
list 4, 5 26 192 50, tab 1 sort size extsel vsbar
check "View non-msn rooms only", 5, 5 78 73 10, tab 1
check "US rooms only", 6, 80 78 45 10, tab 1
check "Worldwide rooms", 7, 127 78 57 10, tab 1
tab "View rooms", 2
list 8, 3 15 195 71, tab 2 sort size extsel hsbar vsbar
button "Passport join", 9, 9 89 37 12, tab 2 ok
button "Select passport", 10, 54 89 45 12, tab 2
button "Guest join", 11, 106 89 37 12, tab 2 ok
button "webchat join", 12, 151 89 37 12, tab 2 ok
}
on *:dialog:rv:sclick:5:{
if (%rvt.uro == 1) { unset %rvt.uro }
else { set %rvt.uro 1 }
}
on *:dialog:rv:sclick:6:{
if (%rvt.us == 1) { unset %rvt.uro }
else { set %rvt.us 1 }
}
on *:dialog:rv:sclick:7:{
if (%rvt.ww == 1) { unset %rvt.ww }
else { set %rvt.ww 1 }
}
on *:dialog:rv:sclick:2:{
if (!$did($dname,4).seltext) { did -ra $dname 8 No category selected }
else { msnrlist $did($dname,4).seltext }
}
alias crk.list {
msnrlist $did(rv,4).seltext
did -r rv 8
var %rlist = 1
while ($lines(roomlist.txt) >= %rlist) {
did -a rv 8 $read(roomlist.txt,%rlist)
inc %rlist 1
}
}
on *:dialog:rv:sclick:8:{ set %jr $did(rv,8).seltext }
on *:dialog:rv:sclick:9:{ update | timerjoinr 1 10 join %jr | unset %jr }
on *:dialog:rv:sclick:10:{ dialog -m crakshark crakshark }
on *:dialog:rv:sclick:11:{ unset %ticket | unset %profile | join $did(rv,1).seltext }
on *:dialog:rv:sclick:12:{ run http://www.chat.msn.com/chatroom.msnw?rm1=$webc($gettok($did($dname,1).seltext,1,32)) }
alias webc {
%w = $1-
%w = $remove(%w,$chr(35))
%w = $remove(%w,$chr(37))
%w = $replace(%w,\b,$chr(35) $+ 20)
return %w
}
alias rv {
dialog -m rv rv
did -a rv 4 GN General
did -a rv 4 GE City Chats
did -a rv 4 CP Computing
did -a rv 4 EA Entertainment
did -a rv 4 EV Events
did -a rv 4 HE Health
did -a rv 4 II Interests
did -a rv 4 LF Lifestyles
did -a rv 4 MU Music
did -a rv 4 NW News
did -a rv 4 PR Peers
did -a rv 4 RL Religion
did -a rv 4 RM Romance
did -a rv 4 SP Sports n Recreation
did -a rv 4 TN Teens
}
alias msnrlist {
unset %rv.*
set %rvt.rooms $1 | set %rvt.cat $2-
sockopen rvooms1 chat.msn.com 80
did -r rv 8
}
on *:sockopen:rvooms*: {
if ($sockname == rvooms1) { sockwrite -n rvooms1 GET /find.msnw?cat= $+ %rvt.rooms HTTP/1.1 }
else {
set %rv.vrt2 1
sockwrite -n $sockname GET /find.msnw?cat= $+ %rvt.rooms $+ &page= $+ $gettok(%rv.spages,1,32) HTTP/1.1
%rv.spages = $deltok(%rv.spages,1,32)
}
sockwrite -n $sockname Accept: */* $+ $crlf $+ Accept-Language: en-us
sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
sockwrite -n $sockname Host: chat.msn.com $+ $crlf $+ Connection: close $+ $crlf $+ $crlf
}
on *:sockread:rvooms*: {
if ($sockerr) { echo -s Error in opening $sockname | halt }
:sockread
sockread -n &rv
if ($sockbr == 0) { return }
if (!%rv.vrt2) {
if ($bfind(&rv,1,List chat rooms created on: the) != 0) {
var %rv.uw = $bfind(&rv,1,List chat rooms created on: the)
var %rv.uwl = $bvar(&rv,%rv.uw,$bvar(&rv,0)).text
set %rv.wwl $mid(%rv.uwl,$calc($pos(%rv.uwl,=,6) + 1),$calc($calc($pos(%rv.uwl,>,3) - 1) - $calc($pos(%rv.uwl,=,6) + 1)))
} }
if (($bfind(&rv,1,$+($chr(9),<,/,TD,>)) != 0) && (%rv.channext == 1)) {
set %rv.chatl $bfind(&rv,1,$+($chr(9),<,/,TD,>))
set %rv.nextpage 1
goto mochans
}
if ($bfind(&rv,1,<a href="/chatroom.msnw?) == 0) {
if ($bvar(&rv,0) > 850) { goto sockread }
set %rv.r $mid($bvar(&rv,1,$bvar(&rv,0)).text,1,160)
}
if (!%rv.vrt2) {
if ((*href*find $+ $chr(46) $+ msnw $+ $chr(63) $+ cat*page* iswm %rv.r) && (Next !isin %rv.r)) {
set %rv.pagenext 1
goto sockread
}
if ((%rv.pagenext == 1) && ($gettok(%rv.r,1,32) isnum)) {
set %rv.pagenext 0
set %rv.spages %rv.spages $gettok(%rv.r,1,32)
goto sockread
}
}
if ((%rv.wwl) && (%rv.spages)) {
if (%rvt.us) {
if ($mid($sockname,7,2) >= %rv.wwl) {
sockclose $sockname
unset %rv.spages
mnextpage
return
} }
if (%rvt.ww) {
if ($mid($sockname,7,2) < %rv.wwl) {
sockclose $sockname
mnextpage
return
} }
}
if ($bfind(&rv,1,<a href="/chatroom.msnw?) != 0) {
set %rv.chatl $bfind(&rv,1,<a href="/chatroom.msnw?)
}
if (*img src*users.gif*Room*Topic*Language* iswm $bvar(&rv,1,%rv.chatl).text) {
var %vru, %vur = $regsub($bvar(&rv,1,%rv.chatl).text,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%vru), %vru = $remove(%vru, )
set %rv.susers1 $gettok(%vru,2,32)
set %rv.channext 1
goto sockread
}
:mochans
if (!%rv.channext) { goto sockread }
if (%rvt.uro) {
if ($bfind(&rv,1,chat room created by MSN) != 0) { goto sockread }
}
set %rv.schan $mid($bvar(&rv,1,%rv.chatl).text,6,$calc($pos($bvar(&rv,1,%rv.chatl).text,<,1) - 10))
set %rv.susers %rv.susers1
set %rv.susers1 $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,12) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,13) - $pos($bvar(&rv,1,%rv.chatl).text,>,12) - 1)),</td)
set %rv.stopic $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,6) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,7) - $pos($bvar(&rv,1,%rv.chatl).text,>,6) - 1)),</td)
set %rv.slang $mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,8) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,<,9) - $pos($bvar(&rv,1,%rv.chatl).text,>,8) - 1))
if (%rv.slang != English) {
if (%rv.nextpage == 1) { goto hmm }
goto sockread
}
did -a rv 8 $chr(37) $+ $chr(35) $+ $replace(%rv.schan,$chr(32),\b,$chr(44),\c)
:hmm
if (%rv.nextpage == 1) {
sockclose $sockname
mnextpage
return
}
goto sockread
}
on *:sockclose:rvooms*: { echo -s $sockname closed | sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 }
alias mnextpage {
if (%rv.spages) {
unset %rv.r
set %rv.nextpage 0
set %rv.channext 0
sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80
}
else {
unset %rv.*
halt
} }
menu * {
-
View msnchat roomlist:/rv
-
}
The original coding is below, which displays all of the chatrooms in a specified category into a window. This doesn't have the join option.
[script]
n0=alias msnrlist {
n1= unset %rv.*
n2= set %rvt.rooms $1 | set %rvt.cat $2-
n3= window -lkw @Msn_
n4= titlebar @Msn_ - Loading the $iif(%rvt.us,United States) $iif(%rvt.ww,Worldwide) %rvt.cat Room List...
n5= sockopen rvooms1 chat.msn.com 80
n6=}
n7=on *:sockopen:rvooms*: {
n8= if ($sockname == rvooms1) { sockwrite -n rvooms1 GET /find.msnw?cat= $+ %rvt.rooms HTTP/1.1 }
n9= else {
n10= set %rv.vrt2 1
n11= sockwrite -n $sockname GET /find.msnw?cat= $+ %rvt.rooms $+ &page= $+ $gettok(%rv.spages,1,32) HTTP/1.1
n12= %rv.spages = $deltok(%rv.spages,1,32)
n13= }
n14= sockwrite -n $sockname Accept: */* $+ $crlf $+ Accept-Language: en-us
n15= sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
n16= sockwrite -n $sockname Host: chat.msn.com $+ $crlf $+ Connection: close $+ $crlf $+ $crlf
n17=}
n18=on *:sockread:rvooms*: {
n19= if ($sockerr) { echos Error in opening $sockname | halt }
n20= :sockread
n21= sockread -n &rv
n22= if ($sockbr == 0) { return }
n23= if (!%rv.vrt2) {
n24= if ($bfind(&rv,1,List chat rooms created on: the) != 0) {
n25= var %rv.uw = $bfind(&rv,1,List chat rooms created on: the)
n26= var %rv.uwl = $bvar(&rv,%rv.uw,$bvar(&rv,0)).text
n27= set %rv.wwl $mid(%rv.uwl,$calc($pos(%rv.uwl,=,6) + 1),$calc($calc($pos(%rv.uwl,>,3) - 1) - $calc($pos(%rv.uwl,=,6) + 1)))
n28= } }
n29= if (($bfind(&rv,1,$+($chr(9),<,/,TD,>)) != 0) && (%rv.channext == 1)) {
n30= set %rv.chatl $bfind(&rv,1,$+($chr(9),<,/,TD,>))
n31= set %rv.nextpage 1
n32= goto mochans
n33= }
n34= if ($bfind(&rv,1,<a href="/chatroom.msnw?) == 0) {
n35= if ($bvar(&rv,0) > 850) { goto sockread }
n36= set %rv.r $mid($bvar(&rv,1,$bvar(&rv,0)).text,1,160)
n37= }
n38= if (!%rv.vrt2) {
n39= if ((*href*find $+ $chr(46) $+ msnw $+ $chr(63) $+ cat*page* iswm %rv.r) && (Next !isin %rv.r)) {
n40= set %rv.pagenext 1
n41= goto sockread
n42= }
n43= if ((%rv.pagenext == 1) && ($gettok(%rv.r,1,32) isnum)) {
n44= set %rv.pagenext 0
n45= set %rv.spages %rv.spages $gettok(%rv.r,1,32)
n46= goto sockread
n47= }
n48= ;if (%rv.wwl) { set %rv.spages $gettok(%rv.spages,1- $+ $calc($findtok(%rv.spages,%rv.wwl,1,32) - 1),32) }
n49= }
n50= if ((%rv.wwl) && (%rv.spages)) {
n51= if (%rvt.us) {
n52= if ($mid($sockname,7,2) >= %rv.wwl) {
n53= sockclose $sockname
n54= unset %rv.spages
n55= mnextpage
n56= return
n57= } }
n58= if (%rvt.ww) {
n59= if ($mid($sockname,7,2) < %rv.wwl) {
n60= sockclose $sockname
n61= mnextpage
n62= return
n63= } }
n64= }
n65= if ($bfind(&rv,1,<a href="/chatroom.msnw?) != 0) {
n66= set %rv.chatl $bfind(&rv,1,<a href="/chatroom.msnw?)
n67= }
n68= if (*img src*users.gif*Room*Topic*Language* iswm $bvar(&rv,1,%rv.chatl).text) {
n69= var %vru, %vur = $regsub($bvar(&rv,1,%rv.chatl).text,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%vru), %vru = $remove(%vru, )
n70= set %rv.susers1 $gettok(%vru,2,32)
n71= set %rv.channext 1
n72= goto sockread
n73= }
n74= :mochans
n75= if (!%rv.channext) { goto sockread }
n76= if (%rvt.uro) {
n77= if ($bfind(&rv,1,chat room created by MSN) != 0) { goto sockread }
n78= }
n79= set %rv.schan $mid($bvar(&rv,1,%rv.chatl).text,6,$calc($pos($bvar(&rv,1,%rv.chatl).text,<,1) - 10))
n80= set %rv.susers %rv.susers1
n81= set %rv.susers1 $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,12) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,13) - $pos($bvar(&rv,1,%rv.chatl).text,>,12) - 1)),</td)
n82= set %rv.stopic $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,6) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,7) - $pos($bvar(&rv,1,%rv.chatl).text,>,6) - 1)),</td)
n83= set %rv.slang $mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,8) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,<,9) - $pos($bvar(&rv,1,%rv.chatl).text,>,8) - 1))
n84= if (%rv.slang != English) {
n85= if (%rv.nextpage == 1) { goto hmm }
n86= goto sockread
n87= }
n88= aline @Msn_ $chr(37) $+ $chr(35) $+ $replace(%rv.schan,$chr(32),\b,$chr(44),\c) $str($chr(160),7) ( $+ %rv.susers $+ )- $+ $chr(91) $iif(%rv.stopic,%rv.stopic,$chr(45)) $chr(93)
n89= :hmm
n90= if (%rv.nextpage == 1) {
n91= sockclose $sockname
n92= mnextpage
n93= return
n94= }
n95= goto sockread
n96=}
n97=on *:sockclose:rvooms*: { echos $sockname closed | sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 }
n98=alias mnextpage {
n99= if (%rv.spages) {
n100= unset %rv.r
n101= set %rv.nextpage 0
n102= set %rv.channext 0
n103= titlebar @Msn_ - Loading the $iif(%rvt.us,United States) $iif(%rvt.ww,Worldwide) %rvt.cat Room List Page $gettok(%rv.spages,1,32) of $gettok(%rv.spages,$numtok(%rv.spages,32),32) $+ ...
n104= .timer 1 1 sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80
n105= }
n106= else {
n107= unset %rv.*
n108= titlebar @Msn_ - %rvt.cat Room List Loaded $iif(%rvt.us,- (United States)) $iif(%rvt.ww,- (Worldwide))
n109= window -b @Msn_
n110= halt
n111=} }
n112=menu @Msn_ {
n113= Copy roomname: clipboard $gettok($sline(@Msn_,1),1,32) | echos Copied $gettok($sline(@Msn_,1),1,32) to clipboard
n114= Reload: dline @Msn_ 1- $+ $line(@Msn_,0,0) | msnrlist %rvt.rooms %rvt.cat
n115= Stop Loading: {
n116= sockclose rvooms*
n117= titlebar @Msn_ - %rvt.cat Channel List Loaded
n118= window -b @Msn_
n119= }
n120= -
n121= Close: window -c @Msn_
n122=}
n123=on 1:close:@Msn_: { sockclose rvooms* | unset %rv.* %rvt.rooms %rvt.cat }
n124=menu status {
n125= View Msn Chan List
n126= .Options
n127= ..Show
n128= ...$iif(%rvt.us,-) US only: set %rvt.us 1 | unset %rvt.ww | echos Room List will only show US chatrooms
n129= ...$iif(%rvt.ww,-) WorldWide only: set %rvt.ww 1 | unset %rvt.us | echos Room list will only show WorldWide chatrooms
n130= ...$iif(!%rvt.us && !%rvt.ww,-) Both: unset %rvt.us %rvt.ww | echos Room list will show US and WorldWide chatrooms
n131= ..Rooms
n132= ...$iif(%rvt.uro,-) User rooms only: set %rvt.uro 1 | echos Room list will only show User created chatrooms
n133= ...$iif(!%rvt.uro,-) User and Msn rooms: unset %rvt.uro | echos Room list will show MSN and User created chatrooms
n134= .General: msnrlist GN General
n135= .City Chats: msnrlist GE City Chats
n136= .Computing: msnrlist CP Computing
n137= .Entertainment: msnrlist EA Entertainment
n138= .Events: msnrlist EV Events
n139= .Health: msnrlist HE Health
n140= .Interests: msnrlist II Interests
n141= .Lifestyles: msnrlist LF Lifestyles
n142= .Music: msnrlist MU Music
n143= .News: msnrlist NW News
n144= .Peers: msnrlist PR Peers
n145= .Religion: msnrlist RL Religion
n146= .Romance: msnrlist RM Romance
n147= .Sports n Recreation: msnrlist SP Sports n Recreation
n148= .Teens: msnrlist TN Teens
n149=}