09/11/2000 - mIRC v5.81 Fixes/Additions: 1.Fixed $did().seltext not working in some cases. 2.Can now enter control chars in channel central topic editbox. 3./splay will now accept LFNs even if they're not enclosed in quotes, error messages are now also wrapped. 4.Moved "internal sound" to sounds dialog, the internal sound is now only played for event beeps. mIRC uses the default windows sound for errors etc. 5.Fixed custom dialog icons not being displayed inside box controls. 6.Fixed bug in highlight feature when using identifiers as highlight items. 7.$inmp3.fname now returns case of original filename. 8.Fixed $send()/get() .cps if transfer took < 1 second. 9.Fixed Alt+S not working in DCC Send dialog. 10.Added /play -fN switch, plays file from line N onwards. 11./run will now keep the quotes in any parameters that you specify. 12.Added $sdir(dir,title) and $sfile(dir,title,oktext), title and oktext are optional. The $sdir, $file, $hfile, and $dir identifiers are still supported but are no longer documented in the help file. 13.If you select a topic from the topic history in channel central, it will now be set as the new topic when you press OK. 14.Fixed url double-click bug under WinME (?) 15.Fixed hour-glass bug in Editor dialog when using Ctrl+S. 16.When using a popup menu in a channel, the $1- identifier will now always be set to the selected nicks in the nicklist. 17.Fixed "!nick sound" sound request not working for mp3s. 18.Fixed agent bug, wasn't allowing you to turn agent on/off on a per channel/query window basis. 19.Fixed custom dialog tab control display bug. 20.Fixed bug in on WAVEEND/MIDIEND/MP3END if /splay was used within the event to restart playing. 21./splay can now handle longer filenames. 22.Fixed /splay seek not triggering on MP3END. 23./did -eb now works on icons in custom dialogs. 24.$window().state now returns "hidden" if a window is minimized and its icon is not visible. 25.$mp3().length now works with VBR mp3s, $mp3().variable and $mp3().crc also fixed. 27.Channel central no longer stores duplicate topics. 28.Fixed ctrl+copy not working in @windows. 29.Fixed internal ban list not seeing bans set by servers. 30.Fixed $ibl().by for undernet which doesn't provide an address for the user setting the ban. 31.Added built-in uninstaller to 32bit mIRC under 95/98/etc., adds item to Add/Remove in control panel, uninstalls the last mIRC that was run, will tell you which mIRC is being removed. Also removes all registry changes. 32.Fixed bugs in multimonitor support. 33.You can press the ! button in the sounds dialog a second time to stop a sound playing. 34.Added "pc speaker" option to sounds dialog. 35.Editbox in channel/query windows no longer limits the amount of text you can paste into it. It will still beep if you enter lines longer than 450 characters though. 36.Fixed bug in /colour not updating background picture colours. 37.Fixed $mid() bug when handling a negative index. 38./colour -r now resets colour box N to default rgb value, and $colour(N) now returns rgb value for the Nth box. 39.Fixed flood protection feature in options/irc dialog. 40./splay seek no longer resumes an mp3 if it has been paused. 41.Added $hget().data property, works same as .item. 42.Added $hfind(name/N, text, N), searches table for the Nth item which matches text. Returns item name. $hmatch(name/N, wildtext, N) allows you to match wildcard text, also works if the item or data itself is wildcard text. Specify .data property if you want to match on the data of an item. Also returns item name. 43.Editor dialog now displays size of text in k's instead of bytes. 44./play now buffers a text file before playing it. /play messages are now also subject to flood protection (if enabled in options dialog). 45.Changed $round() rounding method. 46.Added /dcc ignore on/off command. 47.The . command prefix now overrides -s for hash commands. 48.Improved tab key nick completion method. Also can now complete nicks beginning with a prefix, eg. +nick 49./queryrn now allows _ in the new nickname. 50.Fixed $file() bug. 51.Fixed nicklist being double-spaced when you changing the line- spacing for a channel. 52./echo -d now opens the message window if it's not already open. 53./background now works even if window isn't currently open, also allows you to set defaults. 54.Fixed Control+F find bug. 55.Fixed /vol command not working in 16bit. 56.Added "All" menu items to Position menu item in system menu. 57.Fixed Control+Shift+Insert not working when pasting /commands as plain text into a single-line editbox. 58.Fixed channels list window popup menu gpf bug. 59./ignore /auto /protect now display info in active window. 60.Can now call file dialog identifiers from a custom dialog event. 61./titlebar no longer changes case of @window name. 62.Editor dialog now indents lines following a $&. 63.Fixed /renwin allowing @window names > 90 characters. 64.Fixed auto-tile/cascade not working when selecting a window from the window menu. 65.Added /drawrot -hnbfc @ [colour] [x y w h], rotates area of bitmap by specified angle. -b indicates you've specified a background colour value. -f fits the newly rotated bitmap into the original width/height. -c centers the rotated image if -f isn't specified. 66.Removed support for "Start in" folder in shortcut icons, was causing too many problems. 67./firewall -c now clears userid/password. 68.Top level submenus in popup menus are now merged if they have the same name. 69.You no longer need to use [ ] inside $iif() to evaluate items. $iif() now only evaluates the 2nd and 3rd parameters after the if comparison itself has been evaluated. 70.mIRC now recognizes "IRCX" token in numeric 005 for ircds that support IRCX extensions. 71.Fixed $hotline not returning proper results with indented lines. 72.Improved log view dialog. 73.Fixed editor dialog tabs display bug when on desktop. 74.Added /play and /playctrl dialogs to control the /play queue. 75./window can now resize a minimized @window. 76.Changes to /hop, now clears the topic before a rejoin, also no longer parts a channel if you /hop to it while it's already open. Added /hop -c #channel switch, cycles any open channel, you can use -n to minimize the channel. 77.Fixed $readn bug. 78.$ini() no longer halts a script with an error if the ini file doesn't exist. 79./sockwrite and /sockudp no longer halt a script if they fail, they now set $sock().wserr to the error value, and also trigger the on sockwrite event with an error. 80.Fixed $sock().wsmg bug. 81.Fixed custom dialog "icon" property not accepting quoted LFNs. 82.The /draw -p and -r switches will now work together properly. 83.$readn is now set to zero if a $read -w search fails. 84./anick no longer changes your nick, unless altnick is the active nick. /nick will try to prevent nick and altnick from becoming identical nicks. 85.Integrated .chat file support into the exe. 86.The script parser no longer replaces ]] with ] if ]] has other text appended to it, eg. ]]sometext 87.Added SJIS/JIS option to IRC/Messages dialog for 32bit mIRC. When this option is turned on, the display and mark/copy of multi-byte characters should also work better. 88.Changed cps calculation method for dcc sends/gets. 89.Added /dcc get to redirect an incoming dcc send to dir (must be subdir of the main mIRC dir), and /dcc reject to reject the dcc send. These must be called from within the CTCP dcc send event or the on DCCSERVER send event. $filename returns name of file. 90.Added on EXIT event, ie. on 1:EXIT:/echo exiting mIRC 91.Extended ignore method in dcc options/folders dialog. 92.A notice will now add a user to your IAL if the user is on the same channel as you. 93.Fixed $nick().colour, was returning incorrect values. 94./hadd now allows you to add items without a data value. 95.Fixed on dialog event being triggered incorrectly for some controls when dialog is first created. 96.Fixed /unset bug when first character of variable is a wildcard, eg. /unset %* 97.Fixed while loop bug. 98.Added "match on" option to Highlight section edit dialog. 99.Added support for URL links in web pages, using the format for example, #mIRC Note: currently this format only seems to work with IE. 100.Can now set localinfo manually with /localinfo . 101.Fixed $portfree() bug. 102.Improved channels folder dialog. Can now specify password, network and auto-join for each channel. If you try to join a channel, either via the toolbar channels folder popup menu, or in the channels folder, and you're not connected, mIRC will auto-connect to the server. You can now enter more than one channel per entry, where the first word is the group title, in the form: grouptitle #chan1 #chan2 etc. 103.Added "show topic" item to popup menu when right-clicking on a #channel name. 104.Added support for http proxy connections in firewall dialog. 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 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 , can now also use /colour 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 $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 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 - create a new hash table size N /hfree - destroy an existing hash table /hadd - add an item /hdel - 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 - load table from a file /hsave - 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 - 28/02/95 - mIRC v2.1a First public release.