05/09/2000 - mIRC v5.8

Fixes/Additions:
1.Fixed agent bug, was speaking channel actions even if only private
  actions were enabled.
2.Fixed bug in /filter, /loadbuf for handling custom dialog controls.
3.Fixed $nick().colour not working if a nickname is specified instead
  of the Nth item.
4.mIRC now uses it's own internal beep.wav sound for event beeps, added
  as option to general dialog.
5.Fixed bug in dual monitor display support.
6.Fixed /did bug when changing text in the Tabs of a tabs dialog.
7.Can now use negative numbers in $mid, eg.$mid(text,-N,-N).
8.Fixed /firewall -mN bug.
9.Fixed /font not working with dcc chat =nicknames.
10.Fixed bug in $bytes().
11.Fixed /play -b switch only sending at 1000ms.
12.Can now use a part message with the /hop command.
13.Can now preview wav/mid files in file dialogs by holding the ALT
   key and double-clicking a filename.
14.Fixed bug in the 8.3 format of log filenames.
15.Fixed bug with $disk() and ntfs drives.
16.Changed "!nick sound" feature to ignore any text specified after
   the sound filename.
17.The local port used by the server connection is now limited to
   the range specified in the DCC Options dialog.
18.Custom dialogs now display any size .ico files properly.
19.Fixed $did().state and .enabled not working with menu items.
20.Added /dcc send -c switch, closes send window on completion.
21.Fixed DCC Options Max Gets bug in DCC Server.
22.Added "show on desktop" item to Editor "options" menu.
23.The old default /hop alias is now ignored.
24.The channel nick list now retains nick colours across /names
   listings.
25.Only ban types 3 4 8 and 9 now have the encrypted = part of an
   address replaced with a wildcard.
26.Can now use /cline -r to reset nickname in channel listbox to
   default colour.
27.Fixed Control+F not scrolling to correct line in a window in
   some cases where lines are wrapped.
28.$binvar(&var,0) now returns 0 if &var doesn't exist.
29.Notify list now shows users address.
30.Added /btrunc <filename> <bytes> command, truncates/extends a
   file to specified length.
31.Changing the contents of a link item in a custom dialog now
   works if the link isn't currently displayed.
32.$banlist().by now returns the full address of the person setting
   the ban.
33.Fixed bug with icons in custom dialogs, they were clickable even
   if they were not visible.
34.Fixed ESCape key not working with "hide when minimized" option.
35.$pic() now also supports JPG and PNG.
36.Extended /colour <name> <index>, can now also use /colour <index>
   <rgb> to change the rgb value of a colour.
37.Can now specify "noborder" in an "icon" definition in custom
   dialogs to prevent a border from being drawn around a picture.
38.BURK codes are now stripped out of logfile names.
39.Fixed bug in highlight feature, was matching against nicknames
   incorrectly in some cases.
40.Fixed bug in /filter -n switch.
41.Can now use /font -d switch to set font as default for window.
42.The flash message in the highlight feature can now contain
   %vars and $ids which will be evaluated.
43.Fixed highlight bug in "link" custom dialog control.
44.Colours in the channel nicklist are now reset to default if
   you rejoin the channel after a kick/disconnect.
45.Added $banlist().ctime, returns $ctime time format for ban date.
46.Added isban comparison, uses $banlist() to check if an address
   is banned, eg. if (*!*@*.net isban #channel) ...
47./window -h can now hide non-custom windows again.
48.Fixed while loops bug, weren't working properly in custom menus.
49.Added $scriptline, returns current script line number.
50.Fixed bug with Order dialog in Editor when ordering scripts.
51.Improved support for DLLs via /dll and $dll().

   You can now keep a DLL loaded by including a LoadDll() routine
   in your DLL, which mIRC calls the first time you load the DLL:

     void __declspec(dllexport) __stdcall (*LoadDll)(LOADINFO*);

     typedef struct {
       DWORD  mVersion;
       HWND   mHwnd;
       BOOL   mKeep;
     } LOADINFO;

     mVersion contains the mIRC version number in the low and high
     words.

     mHwnd contains the window handle to the main mIRC window.

     mKeep is set to TRUE by default, indicating that mIRC will keep
     the DLL loaded after the call. You can set mKeep to FALSE to
     make mIRC unload the DLL after the call (which is how previous
     mIRCs worked).

   You can unload a loaded DLL by using:

     /dll -u <filename>

     $dll(N/filename) returns the list of loaded DLLs.

   You can also define an UnloadDll() routine in your DLL which
   mIRC will call when unloading the DLL to allow it to clean up.

   mIRC will automatically unload a DLL if it is not used for ten
   minutes, or when mIRC exits, UnloadDll() will also be called
   in these situations:

     int __declspec(dllexport) __stdcall (*UnloadDll)(int mTimeout);

     The mTimeout value can be:

     0   UnloadDll() is being called due to a DLL being unloaded
         when mIRC exits, or unloaded with /dll -u.

     1   UnloadDll() is being called due to a DLL not being used for
         ten minutes. The UnloadDll() routine can return 0 to keep
         the DLL loaded, or 1 to allow it to be unloaded.

52.mIRC will now properly parse server messages that aren't prefixed
   with a server address, and will use the server address prefix in
   numeric 001 for such non-prefixed messages.
53.Fixed bug in flood protection feature.
54.Nick changes now update nick in query window titlebars.
55.Added $server().pass property for server password.
56.Added /echo -n switch, prevents /echo from hiliting switchbar
   icon.
57.Fixed handling of throttle error message on undernet servers.
58.Added Advanced dialog to connect/options dialog, allows turning
   on/off of random local ports, and specifying bind address.
59.Find dialog now allows you to search for BURK codes.
60.On keydown/keyup now capture all key events in custom windows.
61.Cancel away on keypress option now works for /me messages.
62.Fixed bug in $did().seltext, it now also returns $crlf between
   each line.
63.Added /filter -b key, strips BURK codes when matching text.
64.Added $onpoly(n1,n2,x,y,x,y,...), checks if two polygons are
   overlapped, returns $true/$false. n1 is the number of points for
   the first polygon, n2 is for the second polygon.
65.Added $bvar(&var,N).word,nword,long,nlong, returns values in host
   and network byte order.
66.Fixed bug in $isalias() not recognizing local -l aliases when
   called from the local script.
67./splay now supports .mp3 files, also added on MP3END event,
   $inmp3, and $mp3dir (folder can be specified in Sound requests
   dialog).

   Added $mp3(filename) identifier, with properties: album, title,
   artist, year, comment, genre, track, length, version, bitrate,
   variable, sample, mode, copyright, private, crc.

   The /splay command has also been extended to:

   /splay -wmpq [filename | stop | pause | resume | seek | skip] [pos]

   Where w = wave, m = midi, p = mp3, and q = queue for playing.

   If you specify [pos] value when playing an mp3, mIRC will play
   from that position, eg. /splay ipanema.mp3 1000

   You can seek to a position in an mp3 while it's being played with
   eg. /splay seek 1000

   You can skip the currently playing sound with /splay [-wmp] skip

   Extended $inwave, $inmidi, and $inmp3, with properties .fname,
   .pos, .length, eg. $inmp3.pos

   You can use the /vol -wmpvuN [volume] command to set the volume on
   your system for waves, midis, mp3s (same as waves), or -v which
   sets the master volume, range 0 to 65000. The -uN switch sets the
   mute, where N = 1 is on, N = 2 is off.

   You can use $vol(wave|midi|mp3|master) to get the current volume,
   and $vol().mute returns the mute setting.

68.Changed behaviour of on HOTLINK event, /halt in one script will
   no longer affect the event in a following script.
69.$os should now recognize ME.
70.Added test button to agent lexicon dialog.
71.Can now use N = 0 in $did(name,id,N) to access the edit control
   in a combobox, and N = 0 in /did to modify it.
72.Fixed /did -g not handling quote-enclosed filenames.
73.Fixed /play -b requiring delay value, now uses default if none
   specified.
74.The B and C parameters in $width(text,font,size,B,C) are now
   optional.
75.Added $wrap(text, font, size, width, [word,] N), returns Nth line
   wrapped to width. If optional word parameter is 1, text is wrapped
   at whole words (default).
76.Improved handling of \\network paths. mIRC can now also be run
   from a network path and will correctly use that path as root for
   ini files, folders, etc.
77.Channel central now enables Op settings for IRCops.
78.Identifiers called in popup menu titles can now use $1- to refer
   to the selected listbox item.
79.Added /play -n switch, sends a notice instead of a message.
80.Fixed /close bug, wasn't closing multiple sends/etc. properly.
81.Added /drawpic -l switch, tiles picture in specified area.
82.Added $keychar to on keyup/keydown events, returns the actual
   character being pressed as opposed to the key code.
83.Editor now defaults to last used folder when displaying the load
   file dialog.
84.The D parameter in $round(N,D) is now optional.
85.Added identifiers to encode/decode %vars or &binvars:

     $encode(%var | &binvar, mubt, N)
     $decode(%var | &binvar, mubt, N)

   The last two parameters are optional.

   The second parameter consists of switches, where m = mime,
   u = uucode (default), b = &binvar, and t = text (default).

   The final encoded line is made up of 60-character chunks.
   You can specify N if you want mIRC to return the Nth chunk.
   N = 0 returns the total number of chunks in the line.

   If encoding/decoding a &binvar, the identifiers return the
   actual number of characters written to the &binvar.

   Encoding uses 33% more storage space.

86./query now displays address in titlebar if user is in IAL. The
   Message window now also displays the address in the titlebar for
   the last received message.
87.Selecting a server in the connect dialog now makes it the default
   server even if you press the OK button in another section of the
   options dialog.
88.Fixed $mouse.x/y/dx/dy returning invalid values in some cases.
89.Can now close Editor dialog while script initialization warning
   dialog is displayed.
90.The $banlist() identifier has been changed to $ibl(). Also the
   $chan().banlist property is now $chan().ibl. The old formats are
   still supported.

   The IBL (internal banlist) is now updated every time it sees a
   ban. You can fill it completely with /mode #channel +b.

91.mIRC no longer sends a default quit message if you haven't
   specified one.
92./dcc send and /fserve now handle LFNs better.
93.Added /queryrn <nick> <newnick> changes nick of an open query.
94.Added /var -s switch to show local variable being set.
95.Added /anick command, allows you to change your alternate nick,
   even while connected. Also added $mnick and $anick, return your
   main and alternate nicknames.
96.Added right-click popup menu for url hotlinks.
97.Added $window().hwnd and $dialog().hwnd property.
98.Added $window().icon, returns "on" or "off" depending on whether
   a window icon is visible. Note that $window().state no longer
   replies with "hidden".
99.Custom windows can now be logged, "logging" item in system menu.
100.$ulist(*,N) now returns all matches in user list including just
    nickname entries.
101.$fline() now allows you to search for BURK codes.
102.Fixed resizing channel nicklist bug when channel is placed on
    the desktop.
103.Added "include network" switch in logging dialog, includes name
    of network in log filename.
104.The popup menu in the Channels List window now allows you to
    join channels/etc. while retrieving the channels list.
105./log now allows you to log a file to any directory.
106.Fixed auto-tile causing a maximized window to de-maximize when
    resizing the main mIRC window. Auto-tile should also work better
    now when a minimized window is restored.
107.Fixed lexicon not being applied to all agent messages.
108."No such nick/channel" message is now shown in query windows.
109.Background pictures in custom dialogs now behave better when
    mixed with other controls.
110.Fixed bug with $ctrlenter when text was pasted into editbox,
    also added $inpaste.
111.Fixed infinite while loop bug.
112.Fixed click events on icons in custom dialog events, is now
    more precise.
113.Development notes: mIRC 32bit in future may not work under win32s
    win3.1. This will allow me to support new technologies in the
    32bit. mIRC 16bit may continue to be developed, with bugfixes,
    where possible.
114.Fixed $findfile() bug, if full path wasn't being specified may
    not have worked.
115.Added /set -n switch, treats following values as plain text
    instead of a calculation.
116.Added $nick().pnick property, returns .@%+nick format.
117.Added $remote, returns ctcp/event/raw on/off status or'd together,
    ie. 1 | 2 | 4, eg. if ($remote & 1) ctcp is on.
118.Fixed resource leak in DCC Send/Get windows display.
119.New channel central dialog, made display of banlist info  clearer,
    and now shows related auto-unban info. Also added Edit button,
    allows editing of an address.
120.Added /timer -h switch, creates a multimedia timer. Only works in
    32bit mIRC. Also added $timer().mmt property.

    Since multimedia timers are a scarce resource, and cpu intensive,
    mIRC allocates one multimedia timer and uses it for all of your
    -h timers. In order to keep cpu usage down to a minimum, the
    delay of this timer is dynamically changed as /timers are created
    or destroyed so as to use the lowest common denominator delay.

    The moment you don't have any -h timers running, mIRC frees the
    multimedia timer. If mIRC is unable to allocate a multimedia
    timer, it uses the normal /timer -m millisecond timer.

121.Made changes to mouse leave event, should work better when used
    for drag events.
122.Channel nicklist and IAL routines now use hashtable lookups to
    speed processing.
123.mIRC now displays the "files changed" dialog if you try to exit
    mIRC while the editor dialog is open.
124.Fixed /window command not handling floating point values for
    x y w h paramters.
125.mIRC can now be run as a service under 95/98 by specifying
    -service on the shortcut command line.
126.Custom window menu/mouse events now process the script which
    created the /window before looking through other scripts.
127.Fixed bug in $dbuw and $dbuh not returning the correct values.
128.Added hash table support for scripting. A hash table can be
    created/destroyed/modified using:

      /hmake <name> <N>           -  create a new hash table size N
      /hfree <name>               -  destroy an existing hash table

      /hadd <name> <item> <data>  -  add an item
      /hdel <name> <item>         -  delete an item

    You can use -s with all commands to show output, and -w with
    /hfree and /hdel to make them treat the name or item as a wildcard
    to free all matching items.

    A hash table can store an unlimited number of items regardless
    of the N size you choose, however the bigger N is the faster it
    will work, depending on the number of items stored.

      /hload <name> <filename>    -  load table from a file
      /hsave <name> <filename>    -  save table to a file

    By default, these load/save plain text to a text file, with item
    and data on separate lines ($cr and $lf characters are stripped
    from text before saving). You can use -b to load/save binary files.
    You can also use -n to make them load/saves files as data only,
    with no items.

    /hsave also supports -o to overwite an existing file, and -a to
    append to an existing file.

    To reference the contents of a hash table, you can use:    

      $hget(name/N)        -  returns name of a hash table if it exists,
                              or returns the name of the Nth hash table.
                             .size property returns the size of table

      $hget(name/N,item)   -  returns the data associated with an item

    You can also reference the table as an index from 0 to N using
    $hget(name/N,N).item which returns the Nth item name in the table.
    If N is zero, returns the total number of items in the table. This
    method is provided as a convenience, it is not an efficient way to
    use the hash table.

    Note: the hash table is case-insensitive.

129.Changed $ial(mask,N) to make N optional (defaults to 1), and mask
    can now be just a nickname.
130.Can now use $did().seltext on a listbox/combobox to return the text
    of the first selected item.
131.Fixed $isdir() bug.
132.Added "Save and Log As" item to system menu, allows saving buffer
    and starting a log in one selection.
133.Fixed hotlink bug on ircx servers with .nick owner prefix.
134.mIRC no longer splits logs at midnight for chats, it only does this
    for channel logs now.
135.All matching mouse events in custom window menus are triggered now,
    previously mIRC was only triggering the first matching event and
    ignoring all remaining scripts.
136.Fixed dcc chat bug, initiating a dcc chat from behind a firewall
    wasn't working properly.
137.Fixed notify list focus bug.
138.mIRC now uses the "start in" folder in a shortcut icon as the
    root folder. Can override with -r command line switch.
139.Added $notify().addr property, works on watch-enabled ircds.
140.Fixed dcc send/get/chat time-out gpf bug.

-

The full versions.txt has become too large to include in the
distribution, so only the version information for the current
version is being included from now on. You can however still
download the full versions.txt file from the mIRC website at
http://www.mirc.co.uk/versions.txt

-

28/02/95 - mIRC v2.1a

First public release.

