Vincula Neo (v4.5) - eXonyte's MSN Chat connection script

Date: Monday, December 8, 2002

-----------------------------------------------------------------------

Requires mIRC 6.x, only tested in 6.03.
WILL NOT work in mIRC 5.91 or lower.

If you want to know things like the socket names, search in this file
for "msn scripters" (without the quotes) and it'll give you that info.

If you are using a script or addon that changes the way mIRC displays
any events, especially a theme system, then Vincula's decoder will
likely conflict with it.  MTS engine support may be added at a future
date to correct this, or the display events can be modified at will.

-----------------------------------------------------------------------

v4.5 - What's new:
- Made it switch between your installed MSN Chat OCX and a hacked one,
  so that it can connect again.
- Had to disable the "Join using MSN Chat" options, might be able to
  fix them later, we'll see.
- Fixed some other little bugs, don't remember what though.

v4.4 - What's new:
- Passport updater should be fixed now.  If the Windows XP Passport
  signin box appears, just click Cancel and you'll be fine.
- Fixed a bug when joining a room and you're banned.

v4.3.1 - What's new:
- Various test releases to fix the auto passport updater.

For old What's New lists, see the end of this file.

-----------------------------------------------------------------------

Setting up Vincula Neo:

If you downloaded the version of Vincula Neo that comes with mIRC, you
can skip this first part, it's all done automatically for you.

Make sure vincula.mrc and nHTMLn_2.92.dll are in the same folder, and
then load ONLY vincula.mrc into mIRC.  If you don't know how to load a
script, then in mIRC type:

//load -rs " $+ $sfile(*.mrc) $+ "

in any mIRC window and choose vincula.mrc from the list, from
whatever folder you had previously unzipped it to.

After the script is loaded, it will perform various one-time
initialization steps.  It will also tell you your current UserData1
key, and finish by opening the script options dialog, which can be
reopened any time by typing: /msn.setup

Once this dialog is opened, I recommend adding a passport to the stored
passports list on the Passport tab.  If you don't do that, then you
will only be able to join rooms as a Guest.

-----------------------------------------------------------------------

Adding Passports:

To add a passport to Vincula Neo, open the Setup dialog by typing:

/msn.setup

and go to the Passports tab.  On this tab, click the Add button on the
left.

A new dialog will open, which is where you enter the passport info.
The only information that you MUST have, is the Entry Name (the name
that Vincula uses to refer to the passport) and the e-mail address. You
can choose to enter any of the other options if you want.

If you leave the nickname blank, Vincula will default to using either
the nickname that is linked by the MSNREGCookie (explained more below),
or the nickname that is set in your mIRC.  If you put in a nickname,
then Vincula will always use that nickname when you're connecting with
that passport, unless you enter another one in the "Enter Name" prompt
when you connect (which can be turned off).

If you don't enter a password, then Vincula will ask you for a password
every time it updates that passport's information.  If you do enter the
password, then Vincula will never ask you for it.

The MSNREGCookie is a piece of your passport information that Vincula
can't automatically update, but it is also unneeded.  If you want
Vincula to automatically use your passport's nickname, then you will
either need to copy and paste the MSNREGCookie from the View Source of
an MSN Chat room, or you will have to do a manual update.  Once you
have set the MSNREGCookie in Vincula, it shouldn't expire like the rest
of your passport info, so you shouldn't have to change it very often,
if at all.  Vincula will work just fine even if you never give it an
MSNREGCookie though.  The only drawback is that it will not auto detect
the nickname that goes with this passport, you will have to put it in
on your own.

You do not need to bother with the PassportTicket and PassportProfile.
They are the other two pieces of the passport information.  They are
required for Vincula to be able to use the passport, but they will
automatically be retrieved when you refresh the passport so you don't
need to worry about typing them in on your own.

The Profile Type dropbox lets you choose which of the icons you want
MSN Chat users to see next to your name.  Vincula cannot autodetect
this, and it honestly doesn't care, so feel free to choose any profile
icon that you want.

-----------------------------------------------------------------------

Editing Passports:

You can edit a stored passport's information by going to the /msn.setup
dialog, going to the Passports tab, choosing a passport, and clicking
the Edit button.

You can also edit your current passport by typing:

/msn.editpp

or choosing "Edit Passport information" from the right-click menu in
the Status Window or from the Commands menu on the toolbar.  If you are
unning Vincula with another script loaded, the Commands menu may be
renamed, so check the menu in between the DCC and Window menus.

Any piece of the passport information can be edited except for the
Entry Name.  If you wish to rename a passport at this time, then you'll
have to delete it and re-add it with a different Entry Name, sorry!

-----------------------------------------------------------------------

Updating Passport info:

To update your current passport info, just type /msn.getpp in any
window, or choose "Update Passport information (auto)..." from a popup
menu.  You can also go to the Passports tab in /msn.setup, select a
passport, and hit Refresh.  If the Windows XP Passport signin dialog
opens, just click Cancel and Vincula should still be able to update.

If for some reason you need to update your passport info manually,
or if you want to autoupdate the CLSID, then do as follows:

Go to http://chat.msn.com and join any room (even one that doesn't
exist).

Once the page opens, right-click on the page and choose View Source.

Hopefully it opens the View Source in Notepad, and once it's open
just save it wherever you like.

Now, back in mIRC, type:

/msn.mgetpp

and choose the file you just saved.

It should scan through the file and say that it found the passport
info.

-----------------------------------------------------------------------

Joining a room:

You can usually use /msn.roomlist to join a room. That's likely the
simplest way to get into a room. If you already know the name of the
room you want to join though, you may want one of these commands.

Unless you've turned it off, after using any of the below room-join
commands, Vincula will ask you for a nickname.  This DOES allow you to
use almost any nickname you desire.  If you want to use a unicode name,
make sure you check the box that says "Name is in Unicode format."  If
you are using plain ASCII in the name (such as directly typing Alt+0169
to get ), then leave the box unchecked.  Also, if you leave the name
entry box blank, Vincula will use an appropriate default nickname.

All of the below commands support the -g and -c options, as well as 
combining the two as either -gc or -cg.
-g joins a room as a guest.
-c joins a groups room using your passport.
-cg or -gc joins a groups room as a guest (like the real thing).

/msn %#RoomName [key]
---------------------
Joins a room using the loaded passport info.  If you supply a key, it
will use this key when joining.

/msn -g %#RoomName [key]
------------------------
Joins a room using a Guest nickname (you will be asked for a name).
You use -g, -c, and -gc/-cg the same way as this, in all of these
commands. I only gave this as an example.

/joinurl http://chat.msn.com... [key]
------------------------------------------
Joins the room based on the address for the room.
It's not very practical to use this for a groups room, since it won't
understand a groups room's URL.

/joinhex 2523526F6F6D4E616D65 [key]
----------------------------------------
Joins a room via the hex name.  Use -g to join as a Guest.
If you use -c instead of -g, it will join a groups Room

/joins [-k key] Room Name
------------------------------------
Joins a room that has spaces in the name.
-k allows you to use a key, like this:
/joins -k somekey My Chat Room
That would join the room "My Chat Room" using the key "somekey".

-----------------------------------------------------------------------

Joining a room using the MSN Chat Control:

This is pretty straight-forward.  When you're in a room, just right-
click and choose the "Join the room using the MSN Chat Client" option.
It will open a dialog, and you should choose one of the "On MSN"
options.

The only problem here is that to use a passport with this, you must
have the MSNREGCookie for the passport.  Follow the manual passport
update instructions above, or edit a passport and put in the proper
MSNREGCookie for it.  Then you can just select a passport, and click
OK.

If you would prefer to join "On MSN as a Guest" then you
don't need to worry about a passport.  Just choose the option, click
OK, enter a nickname to use, and you're good to go.

-----------------------------------------------------------------------

Commands:

/msn.setup
----------
Lets you set the font that MSN users will see, along with a bunch of
other options for Vincula (including those below).

On the Passport tab:
    You use this tab to manage your passports. You can Add, Edit,
    Delete, or Update, any of your passports and you can set other
    connecting related options.
Don't ask for nickname when connecting using a passport
    Self explanatory, tells Vincula not to bug you about the nickname
    you want to use to connect, when you're using a Passport.
Don't ask for nickname when connecting as a guest
    Also self explanatory, tells Vincula not to ask for a nickname when
    you're connecting as a Guest.
Auto update info if older than X hours
    Just like it says, if you try to connect using a passport that was
    not refreshed in the past X hours (X being whatever you set), then
    Vincula will automatically update it before it tries to connect.

On the Options tab:
    Here you can set your font, as well as various Chatting options.
Decode incoming text:
    Passes most incoming messages through the script's Unicode decoder
    so that names and text which use special characters can be read.
Encode outgoing text:
    This option will encode any outgoing text, so that MSN Chat users
    will actually be able to see any special characters you type, such
    as  or .
Show users' colors:
    Allows you to see what colors people are speaking in, and also if
    they are using Bold and/or Underlined text.  Because of an mIRC
    limitation, you cannot see Italics, nor specific fonts.
Hide Joins/Parts/Kicks:
    Tells Vincula not to show any Joins, Parts, or Kicks, in the room.
Automatically use keys:
    Vincula automatically stores any Ownerkey that it sees, whether it
    is from you creating a room, or it was someone else setting it in
    a room you were an owner in.  This option tells Vincula to use the
    key that it has stored whenever you join a room.
Rejoin room when kicked:
    This will make Vincula try to re-join a room when you get kicked
    out of it.  If you're banned, you probably won't be able to get
    back in.
Show profile types on join:
    When someone enters the room, Vincula will check what type of
    profile they have and tell you right below the Join message.
Disable new whispers:
    Just like in MSN Chat, this option turns off new incoming whispers.
Don't /who when you join rooms:
    Normally Vincula will do a hidden /who when you join a room. This
    is done so that mIRC's $address and $ial and other identifiers that
    use the Internal Address List will work properly.  The only
    drawback is that it may slow down Vincula's join time when you join
    a large room.  You can turn it by checking this box.
Time Reply:
    Lets you change the time reply that people get when they check your
    local time.  You can use $identifiers and %variables if you like.
    The default button restores the time reply to match MSN Chat's.
MSN Chat CLSID:
    When MSN updates the MSN Chat control, the identifier for it that's
    called the Class ID or CLSID, changes.  In order for Vincula to
    work right, it needs to know the current CLSID.  It will
    automatically update the CLSID if you do a manual passport update,
    or you can change it by editing it right here.  You can always find
    the current CLSID at: http://exonyte.dyndns.org/msn.php
    The default button sets the CLSID to MSN Chat Control 4.2's CLSID.

On the Sounds tab:
    Here you can set sounds for various chat room events. Click the ...
    button to select a sound, or type in the filename yourself. Click
    the name of the sound event to preview your selected sound.
    If you want to use the same sounds that MSN Chat uses, just click
    the button labeled "Use default MSN Chat sounds".

On the Keys / Other tab:
    This tab includes a few other options that wouldn't fit anywhere
    else, so I put them here.
Add a key to Vincula's key list:
    You can use this part of the dialog to add host and owner keys to
    Vincula's internal list.  Put in the full room name (%#room) and
    the key (leave the key box blank if you want to delete the key),
    and then click either the "Add as Owner key" or the "Add as Host
    key" button.
Clear stored Owner keys and Clear stored Host keys:
    These buttons will clear Vincula's Owner and Host key lists.  It
    is probably a good idea to do this every so often, just be aware
    that for Vincula to remember the keys for a room, you should re-
    prop them after clearing.
Rebuild Font Cache:
    If you've installed any new fonts, or if you deleted any old fonts,
    click this button to make Vincula update its font list.
    
/msn.roomlist
-------------
Allows you to view the MSN Chat Room list for any of the categories.
When you click a link to a room, Vincula will ask you how to join the
room. You can choose to join through Vincula, either using your
passport or as a guest, or you can join using the MSN Chat Control,
either as a guest or using the passport info that is stored in Vincula.
If a room link is too long then you can't click it to join it. This is
due to an apparent nHTMLn or mIRC limitation and there's nothing I can
do about it. I suggest you right click and choose Copy Shortcut, and
then use /joinurl to join the room through Vincula.

/msn.getpp
----------
Use this to update your currently selected passport info.

/msn.mgetpp
/msnchat.update
---------------
Use this to update your passport info the manual way, according to the
instructions listed above.

/msn.editpp
-----------
Opens a dialog so that you can edit your current passport information.

/msn.pticket [-t] ticket
/msn.pprofile [-t] profile
/msn.pcookie [-t] cookie
--------------------------
You can use these commands to change the three pieces of your Passport
info without using the updater or the edit passport dialog. If you use
the -t option, it will temporarily change it (if you switch passports
it will go back to normal). If you don't use -t, then it will change it
until next time you update that passport.

/msn.update [-p] [passport] [password]
--------------------------------------
If used with no options, /msn.update will do the same as /msn.getpp and
update your passport info.  If you specify a passport to update, then
it will update that passport.  You can also tell Vincula the password
to use if you use the -p option, otherwise Vincula will ask you for the
password if it needs it.

/msn.create [-c] <room creation commands>
-----------------------------------------
This is recommended only for popups, scripts, or other things.  It will
send a room creation command directly to MSN. If you use the -c option,
then it will create it as a groups room instead of a normal room.
The format of the room creation command is:

[Category] [%#Room] [Topic] [Modes] [Locale] [Language] [Password]

[Category] is the two-letter category code for where you want the room
to be. All groups rooms should be UL (Unlisted). For a list of the
available categories, look at the /msn.makeroom dialog.
[%#Room] of course is the room name.
[Topic] is a specially formatted room topic. I recommend you just use -
and set the topic once you're in the room.
[Modes] is either +f for the profanity filter to be on, +l X (where X is
the number of users you want to allow into the room), or just -. If you
like, you can use both f and l like this: +fl 100
[Locale] is a language/country code. EN-US is a standard United States
code. Look at the /msn.makeroom dialog to see the full list.
[Language] is the appropriate language number for the room. You can see
a list of the languages at http://exonyte.dyndns.org/msn.php#prop
[Password] will be the Owner key for the room. When you join the room
after it is created, you will need to enter this key with the /pass
command so that you can be the room owner, and finish setting it up.

/msn.getpass %#room
-------------------
Displays the last stored owner and host keys in %#room. If you don't
specify %#room then it gives you the active room's keys.

/msn.geturl / /msn.geturl h
---------------------------
Displays the URL for the active room and also copies it to the
clipboard. If you just use "/msn.geturl" it gives you the plain rm URL,
and if you use "/msn.geturl h" it gives you the rhx URL.

/msn.loadpp Passport Name
-------------------------
This command lets you switch passports without having to open the
/msn.setup dialog.  Just type /msn.loadpp and the name of any passport
you have stored in Vincula, and it will switch to it.

/msn.makeroom / /msn.makeroom %#room
------------------------------------
Opens the Room Creation dialog so that you can create a new room.  If
you include %#room then it will automatically fill the room name box,
and if it finds a matching ownerkey, it will fill the Password box too.

/msn.upchk
----------
Checks for a new version of Vincula, as well as a few other updates.

/access
-------
In addition to setting access levels and such, you can type this
command alone to open the Access List dialog for whatever room you type
it in.  All of the options in this dialog are pretty much self
explanatory, so I won't go much in to detail, except that the Export
and Import buttons let you save and load Access lists, which is great
if you need to move a room, or recreate it, and don't want to lose
the bans and such.

/clone nickname
---------------
Will disconnect from the server, and reconnect to the same room, using
whatever nickname you specify.

/find [nickname]
----------------
Will give you a list of the rooms that [nickname] is in, and allows you
to easily join one.  This is almost like the Find a Friend on the MSN
Chat website, except that you must give the exact nickname.  If you
don't specify a friend, it will open the Find a Friend dialog, and you
can search from there.

/hop
----
Will leave and rejoin the current room without reconnecting, and will
do so very fast.  Also, if you leave a room but stay connected, then
you can type /hop in the server window and it will rejoin the room you
were originally in.

/msncolor <on|off>
/msncolour <on|off>
-------------------
Makes the script show you what colors the people are using to speak,
also shows bold and underlined text. Does not show Italic, or the
actual font. It's off by default, just because it bugs me.
This option can also be changed from /msn.setup on a per-room basis.  I
also added /msncolour for any users who prefer to spell it "colour" so
that they have an easier time of it.

/msndebug <on|off>
------------------
This is more of a developer command for me, it's really not of much use
to anyone else.  It opens a window and shows you all of the data that
passes through the script.

/msndecode <on|off>
-------------------
Turns on or off the incoming text decoder. It's on by default.
To turn it off:
/msndecode off
This option can also be changed from /msn.setup on a per-room basis.

/msnencode <on|off>
-------------------
Turns on or off the outgoing text encoder. It's off by default.
To turn it on:
/msnencode on
This option can also be changed from /msn.setup on a per-room basis.

/pass [password]
----------------
Works just like the /pass in MSN Chat.  Allows you to use a room's host
or owner keys to make yourself a host (+o) or owner (+q). If the
password is not supplied, it will open a small dialog to ask for it.

/msn.updatefonts
----------------
Not recommended to use often, but this will allow you to update the
font name cache, which is useful if you have added or deleted any fonts
since you loaded this script.

-----------------------------------------------------------------------

Identifiers:

$msn.decode(text) / $msn.ifdecode(text)
---------------------------------------
Returns text, as passed through the script's Unicode decoder. Most
useful for Unicode nicknames. If you use $msn.ifdecode(text), then it
will only decode it if the decoder is turned on.

$msn.encode(text) / $msn.ifencode(text)
---------------------------------------
Returns text, as passed through the script's Unicode encoder. Most
useful for using extended ascii characters (Alt codes) in speaking and
in nicknames. If you use $msn.ifencode(text), then it will only encode
if the encoder is turned on.

$msn.hostkey / $msn.hostkey(%#room)
-----------------------------------
Returns the stored room host key for the active channel (if used in
the editbox without %#room), or the host key for for %#room.

$msn.geturl / $msn.geturl(h)
----------------------------
Returns the URL for the room in either rm (plain $msn.geturl) or rhx
($msn.geturl(h)) format.

$msn.ownerkey / $msn.ownerkey(%#room)
-------------------------------------
Returns the stored room owner key for the active channel (if used in
the editbox without %#room), or the owner key for for %#room.

$msn.pass / $msn.pass(N)
------------------------
Makes a randomly generated password N characters long. If N is not
supplied, it will create an eight character password.

$msn.ppdata(name,item)
----------------------
Gives you information for any passport you have stored in Vincula Neo.
"name" is the name of any stored passport.
"item" is one of the following items:

email    - E-mail address
passwd   - Password (if given)
cookie   - MSNREGCookie (if given)
ticket   - PassportTicket
profile  - PassportProfile
showprof - Profile type number
updated  - The $ctime when the passport was last updated.
           Use $asctime($msn.ppdata(name,updated)) for a readable date.
nick     - The Nickname entered for this passport (if any)
lvnick   - Tells Vincula whether to $msn.encode on Nickname, or just
           use it as-is.

$msn.roompass / $msn.roompass(%#room)
-------------------------------------
Returns the stored room owner key for the active channel (if used in
the editbox without %#room), or the owner key for for %#room.  If it
doesn't know the owner key, it will return the host key instead. If it
doesn't know the host key, it will return nothing.

$msn.tohex(text)
----------------
Returns text in hexadecimal format.

$msn.ud1
--------
Returns the current MSN Chat UserData1 entry from the registry. The MSN
Chat Control uses this entry to set a room key when you create a new
room through the MSN Chat website.

$msn.unhex(hex)
---------------
Returns a hexadecimal number in ASCII format.

$joinurl(url)
-------------
Extracts the room hex from a URL, even if the URL does not have the hex
for the room in it.

-----------------------------------------------------------------------

A few comments for MSN scripters:

The socket names are:

for the MSN Server:
msn.server. $+ $cid
or
msn.server.*

for mIRC:
msn.mirc. $+ $cid
or
msn.mirc.*

To get the mIRC room name for a specific socket, use:
$msn.get($sockname,room)

To get the MSN room name for a specific socket, use:
$msn.get($sockname,fullroom)

You can also use $msn.get($cid,room) or $msn.get($cid,fullroom)

If you want to sockwrite a command straight to MSN, make sure you use
the $msn.get($cid,fullroom) otherwise if you're in a long room (more
than 60 characters), it won't work.

Unlike most scripts, this script converts WHISPER commands into
standard IRC PRIVMSG commands, and vice-versa. It also converts NOTICE
into PRIVMSG and back.  Basically, what this means for you is that you
can use a simple "on *:TEXT:*:?:" to trigger a whisper event, instead
of having to use "raw whisper:*:".  Just a little trick to make your
life easier.

For those who would be interested in changing how Vincula will display
all the events (such as messages, kicks, topic changes, etc.), you may
edit that part of the script as long as you don't mess anything up in
the process.  I won't be able to help you if you screwed up something,
so you'd just have to reinstall the original version of the script and
start over.

You can now change the PassportTicket, PassportProfile, and the
MSNREGCookie through commands.  Look in the commands list above for
more info on /msn.pticket, /msn.pprofile, and /msn.pcookie.

-----------------------------------------------------------------------

Extra information:

Real Name: Brandon A.
Nickname: eXonyte
E-mail: exonyte1@exonyte.dyndns.org

Official Website: http://exonyte.dyndns.org

I'd like to thank my original testers: Trad, Moto, Atti, and Neo. To
anyone else that I sent a copy of this thing to early on and forgot
about: Sorry! Let me know and I'll put your name in here too!

Why Vincula?
Vincula is a plural form of Vinculum, which means "A bond or tie."
Since the nature of this script is multiple "ties" to MSN Chat, I think
the name fits it well.  Vincula also means something like "it ties" in
Spanish.

If you would like to include this MSN connection addon with your own
script:
1) Make sure you mention that it was written by eXonyte.
   If you modified it in any way, please say so.
2) Give my website address:  http://exonyte.dyndns.org

If you do these two things, then you don't even have to ask my
permission to include it.  If your modifications fixed any bugs, please
let me know so that I can add the fixes to the next version.

This addon contains a few things that I did not write:

URL Decoder by Techster
Available at: http://www.mircscripts.org/comments.php?id=1225

Truetype Font Attribute reader by Kamek
Available at: http://www.mircscripts.org/comments.php?id=1341

Registry DLL for mIRC v1.05 is  1999 DragonZap
Available at: http://www.dim-bulb.net/~dragonzap/dlls/

The nHTMLn DLL is  2001 Necroman
Available at: http://www.wot.net/~necroman/nn2.htm
Unofficially Updated to version 2.92 by Dan
Available at: http://www.mircscripts.org/comments.php?id=1439

-----------------------------------------------------------------------

Old What's New lists:

v4.3 - What's new:
- Completely redesigned /msn.setup dialog
  - Added a font preview to the Fonts tab
  - Added "Add key" editbox+buttons to /msn.setup (Thanks OZZY_10)
  - Added "Script" box to font selection
  - Added hide joins/parts/kicks options
  - Added "Use default MSN Chat sounds" button to the sounds tab
  - Added "Rebuild fonts cache" button
- Made new commands for editing your passport info:
    /msn.pticket [-t] ticket
    /msn.pprofile [-t] profile
    /msn.pcookie [-t] cookie
  See them below in the Commands List.
- Made Vincula just slightly faster at connecting, because it doesn't
  write .html files to connect anymore. It just sends what it needs
  directly to nHTMLn now.
- Removed the msn.writehtml command because it doesn't need to write
  a .html file anymore.
- Vincula now shows any /access changes that you do in the room they
  are changed in.  (An option to turn this feature on or off is coming
  in v4.4.)
- When trying to join a room using MSN Chat with a stored passport,
  Vincula will now tell you why there are no passports listed.
- Finally Vincula will save the "Random Color" option correctly! I'm
  sorry for this bug lingering for so long, but it's squashed now.
- Added a popup and a command to reset the lookup server connections.
  Sometimes you'll need to do this if it starts giving you strange
  errors:  /msn.relookcon
- Made the script use dynamic names for the nHTMLn and registry dlls.
  This doesn't mean all that much to you, but it will be useful later.
- Fixed some bugs with the room making dialog, especially the one when
  you would make a long room and it wouldn't store the password
  properly.
- Vincula will no longer let you try to join a room when the name is
  over 200 characters long (MSN's limit on room name length).
- Vincula now reopens @debug window on startup when /msndebug is
  turned on.
- When refreshing your passport, Vincula will now ask for the "password
  for passport" instead of asking for the "passport for passport."
- When joining room that doesn't exist, and making it through the Room
  Creation dialog, Vincula will now only ask you for your name once.
- Added a new Passport Update command:
    /msn.update [-p] [passport] [password]
  The old command /msn.getpp will still work.
- Added what I was told was MSNKit's passport update command:
    /msnchat.update
  Which will do the same thing as /msn.getpp
- When you type a room name in the Room Creation dialog, and then click
  the "Use Hex" box, it will automatically convert it to a hex room
  name and back.
- When a whisper opens and you have the decoder turned on, it will now
  say "Encoded nickname" instead of "Decoded nickname".
- When you type /find by itself it will now open the Find a Friend
  dialog, so that you can search for someone.
- Added a popup for Find a Friend.
- Fixed whispers so that it shouldn't keep whisper scripts (like
  whisper kicks) from working.

v4.2 - What's new:
- Changed alot of the variables to use a vincula.ini file instead.
- Fixed the "Error 708: Input Flooding" bug.
- Added the /find command, which allows you to use Find a Friend.  The
  only problem is that you must use the friend's whole nickname, and it
  doesn't support wildcards (like * and ?).
- Changed the popups so that you'll always see Vincula's main menu, in
  addition to the window specific menu (Nickname list, Room, etc.).
- Changed the way Vincula was making the Recent Rooms and the Select
  Passport popups so that it's alot faster.
- Fixed a problem with the Edit Passport Info dialog where it wouldn't
  always edit the info properly. I think this only affected Vincula
  after I changed it to use a .ini file.
- Added a "Possible Match" box to the /access dialog. It shows the
  first person in the room that matches the selected Access Mask. (Only
  if it actually finds a match.)
- Vincula will now automatically check for a new version and a new
  MSN Chat CLSID every time you open it.  It can't autoupdate itself
  yet, but it will give you a direct download URL for the new version.
  It will ask you before it applies any new CLSIDs.
- /joins will now encode room names if it thinks it needs to, so you
  can do:
  /joins MyRoom
  and it will join it properly. It's not perfect though, so it might
  give a wrong room name now and then.
- Changed the "Nickname is in Unicode format" checkbox in the Enter
  Name dialog to "Leave Nick as-is". The nickname's format is now
  autodetected unless the box is checked.
- Added the same "Leave Nick as-is" checkbox to the Add and Edit
  Passport Info dialogs.
- Added an option in /msn.setup (on the Extra tab) to disable the
  hidden /who that Vincula does when it joins a room.
- When you join from /msn.roomlist or from the Join using MSN Client
  popup, there is a new option in the dialog that lets you join the
  room on the real MSN Chat website, in Internet Explorer.
- Fixed a bug that was making Vincula not show when people were Away
  when you joined a room.
- Fixed a bug when you had "Show users' colors" turned on, and the
  first thing someone said was a number.
- Made the Passport updater log out so that you don't get an error next
  time you try to update the passport.
- Added a item to the "Room URL" popup menu that lets you join the room
  through the real MSN website in Internet Explorer.
- Fixed a bug where the first time you would load Vincula and it reads
  the font to use from the registry, it wouldn't replace " " with "\b".
- Fixed a bug that would sometimes make it look like the wrong person
  is speaking when you have the decoder turned on.
  Related bug: If someone's nickname is a number (such as the nickname
  3), it will show the mode prefix (the ., @, or +) for that numbered
  nickname on the list. I couldn't figure out a way to fix it because
  it's an mIRC related thing.

v4.1 - What's new:
- I accidentally left out a * which ended up breaking the "Edit" button
  on the Passports tab in /msn.setup, it's fixed now.
- Now the Auto Passport updater (/msn.getpp and the Refresh button in
  /msn.setup) will tell you if it failed and why, instead of just
  sitting there leaving you wondering.
- Expanded the /access dialog so that I could fit the "Clear Denies"
  button that I forgot to put in last version.
- Cosmetic change in the on OPEN that handles incoming whispers.  Now
  it will indent what the person said like it should.
- The Passport updaters won't try to update now when you don't have a
  passport loaded. Hi Rift! :P
- Instead of not using $msn.roompass anymore I just changed the way it
  works. Now it will give you either the ownerkey or the hostkey,
  depending on if it knows one or the other.  You can still use
  $msn.ownerkey or $msn.hostkey to get a specific key if you need them.
- I forgot to mention it in 4.0, but there's a new popup item in rooms
  that lets you use the MSN Chat control to join the room.  Make sure
  you read the section below about it.

v4.0 - What's new:
- Rewrite the entire connection process, depending on your connection
  and the speed of your computer, it may be over twice as fast at
  joining rooms!  It should also be alot more reliable in connecting,
  so those of you that were having problems before should try it out
  and let me know.
- You can now join community rooms using your Passport.
- The Room Creation dialog now allows making rooms in other countries
- The Room Creation dialog also can now be opened anytime using the new
  /msn.makeroom command.
- In the Room Creation dialog, you can use a hex room name to make the
  room. No, this does not let you magically put the room at the top of
  the room list!
- When you join a room with a long name (over 90 characters), Vincula
  will now strip the room name down to the right side instead of the
  left side.  Now telling which !!!!!!! rooms you're in will be easier
  to do, hehe.
- When someone with a too-long name enters the room, Vincula will
  refresh the nickname list so that you can actually kick them and such
  from the right-click popup menus.
- Vincula now can now store multiple Passports, and easily switch
  between them.
- Rewrote the Passport Autoupdater again.  Now it will only update the
  PassportTicket and PassportProfile, but it doesn't matter because
  Vincula Neo doesn't need the MSNREGCookie to connect anymore.  It is
  also very fast, on my DSL I update in less than 1 second sometimes!
- Fixed Erroneous Nickname Disconnect bug.
- Vincula now stores both owner and host keys for rooms, see the new
  $msn.ownerkey and $msn.hostkey identifiers below.
- Added buttons to /msn.setup to clear the stored owner/host key lists.
- Added sound support. Now you can make Vincula sound like MSN Chat.
- Added a room hop: /hop
- Added clone hop: /clone nickname
- Added /msn.create command for quick/scripted room creation.
- Added Recent rooms list (stores the last 10 rooms and the way you
  joined them, such as Normal, Guest, etc.)
- Added Auto-rejoin when kicked option.
- Added Disable Whispers option (just like MSN's).
- Got rid of the old COM Registry reading code and now uses a registry
  reading DLL instead which is slightly faster and more compatible. If
  Vincula gave you COM errors before, it shouldn't anymore.
- Bunches of other little tweaks, tiddles, and tamperings that I've
  forgotten about because I was too lazy to take notes.

v3.6 - What's new:
- nHTMLn had an unofficial update at http://www.mircscripts.org that
  fixes it for mIRC 6.x.
- Changed "View Profile" so that it displays it in mIRC directly
  instead of opening an Internet Explorer window.
- Made the /msn.getpp auto passport grabber even more automatic. All
  you need to do now is use the command, sign in to your passport, and
  Vincula handles the rest.
- Added /msn.roomlist command and "View MSN Room List" popup. Opens an
  nHTMLn window in mIRC to one of the categories on MSN, and when you
  click a link on the page Vincula will join the room automatically.
  See the section below for /msn.roomlist for a description of
  everything this command allows.
- Fixed an exploit that could result in your being "moofed" from MSN.
- Added an "Extra Options" tab to the /msn.setup dialog that includes a
  few extra options (more to come in the future):
  - Time Reply changing (you can use %vars and $identifiers in it)
  - Show user's profile type when they join a room
- Fixed a bug where the Random Font Color option wasn't being set right

v3.5 - What's new:
- The filename will from now on just be "vincula.mrc" so that you can
  just close mIRC, replace the file, and reopen mIRC, to upgrade.
- Added more characters to the text decoder.
- Fixed a bug in the MSN Color support that was causing dark gray and
  blue to display wrongly.
- Added a Passport Info editor, in case you prefer to manually extract
  your passport info, or you want to edit it for some reason. To open
  the dialog use /msn.editpp or choose "Passport Info Editor" from a
  popup menu.
- Changed the "Force View Profile" menu popup to "View Profile Type"
  and changed the way that the "View Profile" popup works in order to
  support the new Male/Female/Picture profile icons in MSN Chat 4.2.
- Improved the passport grabber, it's now practically automatic.
  The old method is still available as:  /msn.mgetpp
- Changed the way the encoder works.  Now will only encode what you
  actually say so that it doesn't interfere with scripts that use the
  $nick identifier, and it won't interfere with any other /commands.
- Added a dialog that can be used for handling the /access list. To
  open the dialog, open it from the Vincula menu, or type:  /access
  This will NOT interfere with using the /access command in any way.
- Changed the Join URL dialogs (the ones accessible by menus), so that
  they properly say "URL" instead of "Hex."
- Made the font scanner attempt to autodetect the font folder, so that
  there's less chance for the user to pick the wrong folder.
- Added a timer for room joining, so that you can see how long it takes
  to get into a room.
- The Vincula menu in channels and on the nickname list will now only
  show up in MSN connection windows. If you are connected to a normal
  IRC room, the Vincula menu will be hidden.
- Fixed the /unload command if you tried to load it in a version older
  than 6.0, it was missing a -rs
- Probably a couple of other small things that I just forgot to write
  down in here.
- Fixed any other bugs I came across, either by info from others or by
  my own experimenting and testing.

v3.4 - Initial release

-----------------------------------------------------------------------
Copyright  2002 eXonyte                       Last Updated: 12/08/2002