mIRC Home    About    Download    Register    News    Help

Active Threads | Unanswered Past 24 hours | Past 48 hours | Past Week | Past Month | Past Year
Bug Reports Jump to new posts
mIRC beta Khaled Yesterday at 11:06 AM
The latest beta is v7.64.5513. It can be downloaded here and includes the following changes:

Beta v7.64.5513 changes:
1.Item 9, fixed/optimized a number of issues.
2.Item 10, https://forums.mirc.com/ubbthreads.php/topics/268466
3.Item 11, https://forums.mirc.com/ubbthreads.php/topics/268487
4.Item 12, https://forums.mirc.com/ubbthreads.php/topics/268483
I've had to write my own tiling code as WM_MDITILE will not fit
windows to the edge of the MDI area. My code tries to mimick
WM_MDITILE as closely as possible.
5.Item 13, changed.
6.Item 14, added. This tries to parse and sort items in a way
that groups similar items together.
7.Item 15, added. Using an undocumented method for scrolling in
menus. It works all the way back to Windows XP, so seems

Beta v7.64.4889 changes:
1.Item 1, added.
2.Item 2, reverted.
3.Item 3, updated. Also removed error codes from the messages in
resources as we already know them. I would have preferred to use
FormatMessage() as it returns error messages in the system
language but its messages are long and descriptive as opposed
to mIRC's short, compact messages.
4.Item 4, https://forums.mirc.com/ubbthreads.php/topics/232845
5.Item 5, https://forums.mirc.com/ubbthreads.php/topics/268311
6.Item 6, https://forums.mirc.com/ubbthreads.php/topics/268415
7.Item 7, udpated.
8.Item 8, updated.
9.Item 9, needs testing.

MDI windows in Windows 10 currently use the Windows 7 theme, due
to Microsoft deprecating support of MDI windows. This beta adds
Windows 10 Aero theme support to MDI windows. This is enabled
only for MDI windows and only when the Windows 10 Aero theme is
in use.

I have had to make a number of design decisions regarding colors,
borders, button sizes, and so on, to approximate the look and
feel of the Aero theme. I am fairly happy with the result. It is
not an exact match to Aero but close enough, with the aim being
to make MDI windows look reasonably up-to-date.

1.Added flash option to ignore dialog options.
2.Reverted change to nick idle time so that it is updated per second
once again.
3.Updated some of the winsock error messages in resources to use more
up-to-date descriptions.
4.Fixed regex global matching bug with UTF-8 characters.
5.The styles dialog has been removed. The channel nicklist sizing
bar now uses a standard width. The editbox and nicklist borders now
use standard Windows colors. Windows no longer use an internal frame.
6.Fixed tray tips Control+O display bug.
7.Updated OpenSSL library to v1.1.1j.
8.Updated TagLib library to v1.12.
9.Added Windows 10 Aero theme support to MDI windows.
10.Changed the aliases list menu to use shorter, combined a-z menus,
with separators, and any left over items in a ? submenu.
11.Fixed URLs List SendTo menu item being disabled.
12.Fixed MDI tile feature not fitting the right/bottom-most windows
to the edge of the MDI area.
13.Changed scripts editor alias and popup menubars to use an "Index"
menu name to list aliases/popups.
14.Added scripts editor "Index" menu to remote menu bar that lists all
of the items defined in a script. It also includes partial lines
for some items to give context.
15.Added home/end/page up/down key support to popup menus to allow
for faster scrolling in long menus. These keys normally do nothing
in menus, however they will now scroll multiple lines per key press
and will stop once they reach the top/bottom of the menu.
1 200,421 Read More
Bug Reports Jump to new posts
Re: Aero theme MDI issue TECO 26/02/21 11:04 PM
Thank you
5 208 Read More
Connection Issues Jump to new posts
Re: Unable to connect to server (SSL wrong version num Khaled 26/02/21 09:49 AM
If only I could see some sort of debug messaging to understand why this is sometimes and not all the time.

Very likely because you are using the round-robin server address. This means that you are cycling through different servers on the EFnet network, some of which are using out-of-date ciphers and protocols.

Why doesn't mIRC at least tell me the SSL cipher the server is demanding I use, or is capable of using, or that I attempted to use but failed.

The server chooses from the cipher list that the client presents. If the server can't find anything it likes, it returns an error. The only way to know what the server supports is for the client to build a list of ciphers it supports internally and to connect to the server using each one individually to see which are accepted or rejected.

mIRC's set of allowable ciphers and protocols is set at such a low level, to allow connections to old IRC servers that have not been updated in years, that if the server you are trying to connect to is not accepting them, you may as well not be using SSL.

That is the reason why mIRC's server list does not include SSL servers for EFNet.

mIRC should really be using a stricter default cipher list. As I mentioned here, the cipher list was last updated in 2014.

It is on my to-do list to review the default cipher list, as well as the servers list, to determine which networks are acceptable for use with SSL.
4 117 Read More
Feature Suggestions Jump to new posts
tab complete maroon 25/02/21 07:32 AM

instead of requiring @ (or other items in $prefix) to be followed by another character, have @<tab><tab> be sufficient to cycle through all the @Ops. Ditto for +<tab> etc.


Though tab-complete looks at $prefix to see which strings can be auto-completed to include the channel name, it currently doesn't include the % for halfops when that's in $prefix, such as at Rizon. Use case:

/notice @#<tab_complete> message
/notice %#<tab_complete> message

A work-around is to set this next global variable then after %# you can press <tab> twice:

/set %# $active

If backwards compatibility needs to support auto-complete for a global variable, then have the $prefix setting be a fall-back before do-nothing.
0 46 Read More
Feature Suggestions Jump to new posts
Re: some things quartz 23/02/21 04:38 PM
ah right the trick is, sometimes I want the result to be

firstbit something.ext

sometimes I want the result to be


so the identifier that returns "next", I want to hunker up to "firstbit" (using the $+)

but if it's "something", does not have to hunker up

in fact I could probably do it by setting the something var to "$chr(32) something"
6 172 Read More
Feature Suggestions Jump to new posts
Re: $exists with wildcards quartz 22/02/21 08:30 PM
ah cool. yeah I was putting too many $exists in

(btw) ......"filename info.txt" doesn't work for $findfile, you don't need the " " for a file (even) with a space in it
5 101 Read More
Feature Suggestions Jump to new posts
rfc1459 casemapping support maroon 22/02/21 03:54 AM
operator: iscm, and case-mapping switch for $ial and possibly $ialchan and others

Just as $sorttok offers a 'c' sort method which acts differently based on the value of the $prefix identifier, it can be difficult to accurately match $banmask or identify which nicks in the IAL match a specific mask, without functions which recognize case-insensitivity the same way the server does.

Apparently the creators of rfc1459 decided that it was useful to have a weird definition of what "case-insensitive" means. For most servers, the 005 numeric contains CASEMAPPING=rfc1459 which, in addition to treating the A-Z and a-z ranges as upper/lower case equivalent nicks, thinks there are now extra case-insensitive upper/lower pairs:

123 { 91 [
124 | 92 \
125 } 93 ]
126 ~ 94 ^

There apparently is also a "strict-rfc1459" which recognizes all the pairs except for the 126/94 match.

For scripts trying to see which nicks match a new $banmask being added or deleted, the script can return the wrong results if the $banmask contains contains any of these 8 (or 6) characters and there are nicks which are using the opposite character of that pair.

For example, a script like this should remove a new banmask if it matches yourself:

on @*:BAN:#channelname:{
  if ($banmask iswm $address($me,5)) { mode $chan -b $banmask }

For the most part it would work, however, if I change my nick and someone sets a banmask:

/nick maroon{
/mode #channelname +b maroon[!*@*

... the script doesn't think that $banmask matches $address($me,5), because it doesn't match me in the real world.

//echo -a $ial(maroon[!*@*,0)

Likewise, if the script were to loop through the IAL checking to see how many nicks match this $banmask, the answer would be zero because $ial is using the real-world definition of case-insensitive instead of looking at CASEMAPPING= and acting accordingly. It would be zero because using the { prevents anyone else from using the maroon[ nick.

/kick #channelname maroon[

This kick, using a fake case-insensitive match, matches against maroon{ and it kicks maroon{ from channel. And because the { and [ are also matched by the channel in evaluating the +b modes, it blocks the maroon{ nick from re-entering too.

This has the potential to affect people using "normal" nicks, because - unless it's a bug that is going to be fixed - freenode makes the abnormal case-insensitive matches in the userid too. The +b banmask matches the ~ in nick!~userid@host, where the ~ is assigned to nicks which didn't answer the identd check at port 59.

/mode #channelname +b *!^*@*

This means that the above mask bans everyone who did not answer the identd handshake, and it would be easy for scripts to not notice that this ban was affecting a lot of people. I wasn't able to find any @vhosts containing any of these 8 characters, so I don't know whether the definition extends to the entire address, or whether this was supposed to be applying only to the $nick.


I'm assuming that there's only 3 possible strings for CASEMAPPING=, and there shouldn't be a need for $ial() and $ialchan() to *not* behaves according to the CASEMAPPING= setting. If there's no such keyword found, or it's some unknown new string, I'm thinking it should retain the current =ascii behavior.

It's possible this may also need to affect $level /auser /ruser etc, except those have the potential to affect nicks at all networks regardless where the mask was created.

some kind of iswmCM or isCM identifier would avoid corrupting the current "iswm" identifier which should not see this weird definition of case-insensitive, but that's the only place I can think of which normally does NOT need to see the altered settings, unless there are scripts needing to check "if (maroon} == maroon])".

Most networks I checked use the CASEMAPPING=rfc1459 setting, with the exception being SwiftIRC which has CASEMAPPING=ascii

section 4.1
0 39 Read More
Bug Reports Jump to new posts
Re: alt+U "send to" disabled Khaled 21/02/21 11:16 PM
Thanks this issue has been fixed for the next version.
1 60 Read More
Scripts & Popups Jump to new posts
Re: bot ban New_One 21/02/21 06:02 PM
here is a simple script , put the name of the bot you want on BOT1 and the bot2 will alway put the ban wich is removed from bot1

on *:UNBAN:#:{
if ($nick == Bot1) {
.echo $chan unBAN by: $nick > $bnick $banmask
.ban $chan $banmask
1 86 Read More
Scripts & Popups Jump to new posts
Re: [7.64] UTF related issue maroon 21/02/21 05:57 PM
This looks like it does what you want, and is probably faster to use regsubex than go through a scripted loop. I assume the definition of alnum you're needing is the case-insensitive base36 alphabet. This replicates your "good" example, but I'm not sure either case handles a codepoint in the range 256-4095 which is a 3-digit hex number, or non-alnum in the 33-126 range? Instead of this simplistic substitution pattern, it may need to call a $myalias($asc(\t)) to handle different styles in different ranges. If it needs to be encoding each UTF8 character separately, remove the /u flag.

//tokenize 32 にほんご | var %i 1  | echo -a $regsubex(foo,$1-,/([^0-9A-Za-z])/gu,$chr(37) $+ $base($asc(\t),10,16,2))

1 38 Read More
Bug Reports Jump to new posts
Re: Alt+D alias list jump glitch Khaled 21/02/21 02:27 PM
Thanks for your bug report. This issue has been fixed for the next version. I have also changed it so that instead of combining submenus, it lists all a-z submenus separately and adds a "?" submenu for non-a-to-z aliases.
1 67 Read More
Connection Issues Jump to new posts
Re: SSL certificate chain error for irc.hackint.org pzYsTorM 20/02/21 06:09 PM
Oh, great, thanks thanks thanks a lot! smile
That was the problem.

I have cleared the private key and the chain file ( i dont know why something was in there at all...) and in the trusted CA field I have selected the cacert.pem from mIRC install:
[Linked Image from abload.de]
5 85 Read More
Bug Reports Jump to new posts
Re: /ban -k vs channel mode +D Khaled 16/02/21 09:55 PM
Thanks for your bug report. The /ban command used to /kick without checking if a nick was on channel. The check was added later due to users reporting that it was incorrectly issuing a /kick even if a user was not on channel. So, as much as I would like to cater for +D in this case, I would just be reverting changes that were previously requested. As you say, the only practical solution in this case is to issue a separate /kick since +D is essentially causing the channel to behave in a non-standard way.
1 129 Read More
Scripts & Popups Jump to new posts
Re: i need a little script maroon 16/02/21 01:02 AM
This can be done with timers, but you must be careful if your 'payload' includes identifiers or variable names which need to be evaluated at the time of execution instead of the time of the launch. If you've accurately described your request as wishing to send the literal string !command as a channel message, then it's fine to put the !command string into the timer. But if the string is something that originates from something created by someone else, you must take care to avoid it triggering a timer exploit.


If your timer command includes things that need to be evaluated in the future, it's probably easiest to create a custom alias where the evaluation takes place inside it, then have the timer call the alias.

It's been a while since I've tested the timer command to make sure that this will keep executing every day at midnight, or whether the 24*60*60 seconds can have an interval of more more than 24.0000 hours.

/timer 00:00 0 86400 echo -a hello this is midnight

You can't have the command assume that the time-of-day will happen in the future, because if your command is:

/timer 12:34 1 0 name_of_alias

You can't have the alias contain the command to execute the timer at 12:34 because if that time is the now-time, it executes immediately instead of 24 hours from now. What you can do is have a midnight timer execute at 23:59 each day with a 60 seconds delay, where the alias contains a command to execute the timer again in 23.99 hours. Because I'm being paranoid, and there's been rare cases in the past where a timer set to execute later at 16:00 would rarely execute at 15:59:59, I'll have this alias wait 61 seconds instead of 60.

With this alias you can do like:

/dailytimers init 00:00 /msg #channelname it's midnight! $!asctime

and this will execute that timer on a daily interval. Note how the $! is need to make it show the time when the timer executes not when it was created.

It works by calculating what's 1 minute earlier, then setting the timer to trigger 1 minute early, at which time it waits 61 seconds before sending the command to execute. After executing the message, it again sets itself to be launching the timer for the next day at 1-minute-early. You can either launch each init individually like the above, or you can do /dailytimers launchall and it launches all the timers that are hard-coded there. The timer needs the -o switch because, without it, the timer gets killed if you happen to get disconnected.

If you need it to not execute on certain days, the timer would need to include some logic to decide whether to execute the "$3-" line, like:

if ($asctime($ctime,ddd) isin Mon Tue Wed Thu Fri) $3-

You can kill all timers with
/timerdailytimers* off

or kill just 1 of them like
/timerdailytimer12:30 off

Note that when I'm setting the timer, it's including the seconds. mIRC always ignores the seconds and always behaves as if 12:34 or 12:34:any_seconds should be 12:34:00. It was just easier to avoid removing the extra :00 from the $duration output each time.

If you put this in your alt+D aliases file instead, be sure to remove the 'alias ' prefix on the 1st line.

alias dailytimers {
  if ($1 == init) {
    var %a $gettok($2,1-2,$asc(:))
    var %one_min_early $duration($calc( ($duration(%a $+ :00 ) - 60+86400) % 86400 ),3)
    .timerdailytimers $+ $2 -o %one_min_early 1 61 dailytimers delay_until $2-
    echo -s this will wait until %one_min_early then wait 61 more seconds until %a when it executes as a command: $3-
    echo -s it then repeats the cycle
    echo -s note that any % or $ appearing in the command string will be evaluated at that time
    echo -s to stop this 1 timer, type: /timerdailytimers $+ $2 OFF or to stop all timers: /timerdailytimers* off
  elseif ($1 == delay_until) {
    var %one_min_early $duration($calc( ($duration($2 $+ :00) - 60+86400) % 86400 ),3)
    .timerdailytimers $+ $2 -o 1 61 dailytimers exec $2-
  elseif ($1 == exec) {
    var %one_min_early $duration($calc( ($duration($2 $+ :00) - 60+86400) % 86400 ),3)
    .timerdailytimers $+ $2 -o %one_min_early 1 61 dailytimers delay_until $2-
  elseif ($1 == launchall) {
    dailytimers init 12:00 /msg #grp01 !command
    dailytimers init 12:30 /msg #grp02 !command
    dailytimers init 13:00 /msg #grp03 !command
    dailytimers init 13:30 /msg #grp04 !command
    dailytimers init 14:00 /msg #grp05 !command
    dailytimers init 14:30 /msg #grp06 !command
    dailytimers init 15:00 /msg #grp07 !command
    dailytimers init 15:30 /msg #grp08 !command
    dailytimers init 16:00 /msg #grp09 !command
    dailytimers init 16:30 /msg #grp10 !command
    dailytimers init 17:00 /msg #grp11 !command
    dailytimers init 17:30 /msg #grp12 !command
    dailytimers init 18:00 /msg #grp13 !command
    dailytimers init 18:30 /msg #grp14 !command
    dailytimers init 19:00 /msg #grp15 !command
    dailytimers init 19:30 /msg #grp16 !command
    dailytimers init 20:00 /msg #grp17 !command
    dailytimers init 20:30 /msg #grp18 !command
    dailytimers init 21:00 /msg #grp19 !command
    dailytimers init 21:30 /msg #grp20 !command
    dailytimers init 22:00 /msg #grp21 !command
    dailytimers init 22:30 /msg #grp22 !command
    dailytimers init 23:00 /msg #grp23 !command
  else { echo -a syntax: /dailytimers init HH:nn command goes here
    or: /dailytimers launchall
1 113 Read More
mIRC Help Jump to new posts
Re: /join unknown command maroon 15/02/21 04:14 AM
You didn't say which server you're experiencing this issue. The only reason I can think you'd be seeing this error message would be if you have a script which is sending the /join string as if it's a server command, when actually the / prefix is a way of invoking an mirc alias in the editbox. JOIN is a valid server command, but it doesn't know what /join means. However using the / prefix executes an mirc command named /join which sends the necessary command to the server which tells it to join you to a channel.

It's possible you erroneously have a script or a join-on-connect command that contains something like:
raw /join #channelname
instead of
/join #channelname

1 83 Read More
Feature Suggestions Jump to new posts
Installer warn collision w/ new identifier/command maroon 14/02/21 01:24 AM

These threads related to the issue of collision between existing alias names and new identifiers. A possible solution would be if the installer's process would include an $isalias check to match against any new identifier added in that specific version, and possibly including a check against those added in versions released a short time earlier. It would simply be an FYI alert so people could either take steps to rename their existing alias or ask questions to the person who wrote that script, in case the alias is needed by other scripts.

Possibly also include alerts for collision with new /commands created too, but definitely not including a cross-check for all built-in commands because there are many users of 'theme' scripts which have aliases to handle things like /msg /me /notice etc and they would be confused by the new alerts if they don't understand what the theme script is doing under the hood.

Probably shouldn't need to be checking against new identifiers in versions released more than 1 year prior to that version, so currently that would be...

v7.64 $ticksqpc
v7.62 $min $max /donotdisturb
0 87 Read More
Feature Suggestions Jump to new posts
/topic -r #channel maroon 14/02/21 01:22 AM
-r or -c switch to remove/clear the current topic. Once a topic has been created, there's not an obvious way for a script to remove it, though it's possible to do it manually from the channel-central dialog. In order to allow a script to clear the topic, I had to create a /debug window to see what happened from using channel central, finding out it was doing the same as:

/!raw TOPIC #channelname :
0 31 Read More
Scripts & Popups Jump to new posts
Re: [Twitch] Rainbow nickname xDeXx 10/02/21 07:49 AM
There's literally [Twitch] in the title grin
I changed the script a little bit and it works just as I needed, but without your help I wouldn't be able to do that at all, so thank you very much!
4 193 Read More
Feature Suggestions Jump to new posts
Re: $movetok() + $movetokcs() maroon 09/02/21 08:40 PM
Fleshing this out a little more, I'm assuming that if the '2' exceeded the number of tokens in TEXT that it should move to be the final token.
And using -1 would move it to be the final position, -2 moves to be the next-to-last token, etc.
If STRING is not within TEXT, then it returns the unaltered string.
3 89 Read More
Feature Suggestions Jump to new posts
A way to write/edit multi-line editbox Raccoon 09/02/21 05:16 PM
Dear Khaled,

I really need to find a solution that allows me to edit the multi-line contents of a multi-line editbox. This is currently unsupported by the /editbox command as it will not handle $cr or $lf characters.

0 21 Read More
Feature Suggestions Jump to new posts
Re: Missing Documentation DooMaster 08/02/21 01:59 PM
/loadbuf -g

-g = ?? (it's undocumented)
27 33,702 Read More
Scripts & Popups Jump to new posts
Re: Custom-Window centered to mIRC-Window daniel61 07/02/21 11:54 AM

yes, thats it! thanks a lot!
3 115 Read More
Developers Jump to new posts
Spotify now-playing for mIRC turbosmurfen 05/02/21 03:35 PM
I have been looking around for a project like this so many times. And the most projects is outdated.
So now I have been learning c++ just for this.

My project is named Spoton and can be found as open source on Github
I have also made the DLL-File Downloadable on Github if people don't know how to compile the c++ project.

How to use the DLL-File in mIRC
A script is also made for mIRC, a simple alias to write out the song. I didn't want to make something big, just basic.

An example how it looks like when just echo out the song in active window:
[Linked Image from raw.githubusercontent.com]
0 101 Read More
Scripts & Popups Jump to new posts
Re: Need help to make a user cooldown for my script miiza 05/02/21 12:08 AM
I used the code for the per-user cooldown. It worked like a charm, I really appreciate the time you took to help me.

Thank you very much.
3 123 Read More
Scripts & Popups Jump to new posts
Re: text buffer size in dialog maroon 04/02/21 02:08 AM
correct, v7.62 bumped up the $maxlenl to 10kb
5 100 Read More
Page 1 of 15 1 2 3 14 15