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
Re: $mid with large text bug Khaled 15/04/24 07:22 AM
Thanks, it looks like $mid() had an internal maximum limit of 10000 vs the 10240 that $maxlenl returns. This issue has been fixed for the next version.
1 90 Read More
mIRC Help Jump to new posts
Re: Double-clicking link does not work Khaled 14/04/24 12:16 PM
You do not have to change any options for this to work. If it is not working, this means that either your Windows is not configured to use a default browser or you are using a script that blocks hotlinks.

An easy way to test this is to install a clean copy of mIRC, using the portable option in the installer, in a new, empty folder with no scripts or addons, and to test it there.

And you should, of course, make sure that you are using the latest version of mIRC.
1 132 Read More
Connection Issues Jump to new posts
Re: DCC Max Speed Khaled 13/04/24 12:31 PM
There is a limit, however it is not related to a specific transfer rate. This is due to mIRC being a single-threaded application, which means that if DCC Send was allowed to run at full-speed, it would block the user interface. There are several windows message-based features in mIRC that can do this, so mIRC uses various methods to minimize it. This has, of course, been discussed before :-) Looking through versions.txt, I'm amazed to see that DCC Send/Get was added in 1995, when modem speeds were around 28.8kbps, and went through various implementation changes after that. The first discussion of the internal limit probably came up around the time that someone managed to get a super-fast internet connection many years later. The topic then comes up again periodically when someone tries to transfer a large file. Is it important? I have no idea. My network speed, on a very good day, is around 5MB/s. Should I redesign the entire DCC Send/Get implementation to use threads? Maybe. I usually add features or make changes if I think it will be a fun/interesting challenge. At some point, it may pique my interest :-)
1 257 Read More
Developers Jump to new posts
Re: Spotify now-playing for mIRC turbosmurfen 12/04/24 08:17 PM
Originally Posted by Epic
You can find it at the following links:

Thanks for the help, I saw this now.
28 15,992 Read More
Scripts & Popups Jump to new posts
Re: Scripting to use Undenet X commands Simo 12/04/24 07:24 PM
At this point its not clear to me what exactly you sre looking for because these lines you mention could mean anything also i tested myself on undernet and undernet supports 6 mode settings in 1 line like +bbbbbb wich is what i utilized now the code could be modified but only if elaborate to detail exactly what it is you want script to do.
5 561 Read More
mIRC Help Jump to new posts
Re: Mirc deletes next character when typing Wims 08/04/24 07:42 PM
It's called insert (or overtype) mode - you very likely pressed the insert (INS) key on your keyboard to enable it - you need to press it again to change it back to normal mode.
1 145 Read More
Bug Reports Jump to new posts
Re: Showing the wrong time Khaled 07/04/24 07:38 AM
I have tested this in Windows 10 and have not been able to reproduce any issues with the time/timezone mIRC is displaying.

However, in order to track down issues like this, I would really need the information I asked for in my previous post.
3 660 Read More
Bug Reports Jump to new posts
Re: DCC Progress Bar color? Khaled 07/04/24 07:29 AM
Thanks for spotting this. The treebar was incorrectly using the same colors as the switchbar. The switchbar itself was using colors that were added before a number of other changes. I have changed both to use the text color for the bars so as to correctly stand out against the background.
1 142 Read More
Scripts & Popups Jump to new posts
Re: please help how to write script lonthong 06/04/24 09:14 AM
Dear Epic,

thank you for your reply ,
i already see all link you give to me

script not working
/timer 0 900 msg #" your channel " "your messages"
/timer 1 10 msg #" your channel " "your messages"

and changes to

on *:connect:{
if ($network == "your server") {
/timer 0 900 msg #" your channel " "your messages"
/timer 1 10 msg #" your channel " "your messages"

my script is working well now

thank you
2 301 Read More
Feature Suggestions Jump to new posts
Re: Mark As Read TECO 03/04/24 05:18 PM
Hi Khaled,

I would like to ask you if it is possible to add an identifier, for example $markasread, that allows you to return $true or $false when the windows are all read or not?

[Linked Image from i.ibb.co]
3 818 Read More
Bug Reports Jump to new posts
Re: Continue/While/Bracket bugs Wims 03/04/24 03:58 PM
Talking about the fixed code:

ON *:TEXT:whatever:#channel: {
  IF (1 == 1) { Command1 | Command2 }        ; | TestCommand3 }
You cannot comment code reliably with the ';' if it's not starting the line. You can check this thread for more informations about how ; can in fact be used to comment only a single statement out of multiple statement separated by a |, but is has a quirk and you cannot comment out the last statement if it ends with a } or the } is parsed incorrectly, but if no } are involved on the line, you can comment a single statement, even the last :
alias test {
echo -ag ok | echo -ag ok1 | ;echo -ag ok2

Will only display ok and ok1, it's also worth noting that the else statement does not have this problem and you can always comment out the last statement of a single line else statement with multiple statements in it as is the case in the above link.

You also still have one extra } in this code, making 'alwayscommand' outside on the on text event because spaced out } cannot be commented out if ; isn't starting the line.

Focusing only on the line "IF (1 == 1) { Command1 | Command2 } ; | TestCommand3", what's happening there is that } in itself acts as a statement separator:
//if (1 == 1) { echo -ag ok | echo -ag ok1 } echo -ag ok2
is equivalent to
//if (1 == 1) { echo -ag ok | echo -ag ok1 | echo -ag ok2 }
If you change the condition to 1 == 2 for example, 'ok2' is not echoed
It's known that } act as a statement separator, same as |, and you don't need prior { } involvement to see this:

//echo -ag ok } echo -ag ok1
is equivalent to
//echo -ag ok | echo -ag ok1

So then ';' is seen as starting a statement but you see, the quirk with ; and commenting out single statement is that it correctly works stopping at a | but not a }, so this is the same as
IF (1 == 1) { Command1 | Command2 | ; | TestCommand3 }
Where you just have an empty commented out statement, and /testcommand3 is executed 'normally'

Although the problem is as simple as "; starting a statement which is not starting a line but is the last statement in a line doesn't stop at } correctly", given Khaled's answer it's likely that fixing it would require more work than just adding that logic once somewhere. But of course I would like to be able to comment out single statement like that so I wouldn't mind a fix.

I wouldn't recommend anyone trying to comment out single statement out of multiple statements separated by | on a single line or trying to commentate anything with ; if it's not starting the line anyway because of all of these, but if you're aware of them, you can actually workaround them. For example you can solve the issue reported in the mentioned url by adding a fake last empty statement, just by adding a spaced out pipe character, which works for your case as well, coming from this code:
ON *:TEXT:whatever:#channel: {
  IF (1 == 1) { Command1 | Command2 | TestCommand3 }
and trying to get testcommand3 not to be executed without changing much in the code, your best bet is

ON *:TEXT:whatever:#channel: {
  IF (1 == 1) { Command1 | Command2 | ;TestCommand3 | }
But trying to use ; when it's not starting a line and when it's not starting a statement properly either (properly aka after the } in your original example isn't proper) is just not possible.
17 3,634 Read More
Scripts & Popups Jump to new posts
Re: Simple multizone timezone clock Maiko 03/04/24 04:26 AM
Thank you for replying .

What am I doing wrong in the $calc ? Too many spaces ? Not enough ?
2 342 Read More
Feature Suggestions Jump to new posts
closing help file from script -- /winhelp Wims 01/04/24 09:57 PM
For a better handling and managing of a custom help file, such as updating it from the web, I would like to be able to close an help file from a script via /winhelp.

/winhelp -n <name> <file> [keyword]
/winhelp -c <name>
0 89 Read More
Bug Reports Jump to new posts
Re: Bug detected with DCX.dll TECO 01/04/24 05:55 PM
Originally Posted by Khaled
This is likely the same issue as with your other post. Please see the next beta.
Now the reported problems are working perfectly wink

Thank you
2 218 Read More
Bug Reports Jump to new posts
Re: Problems in mIRC windows TECO 01/04/24 05:54 PM
Now the reported problems are working perfectly wink

Thank you
2 203 Read More
Bug Reports Jump to new posts
mIRC beta Khaled 01/04/24 05:46 PM
The latest beta can be downloaded here and includes the following changes:

Beta v7.76.2695 changes:
1.Item 30, fixed not being set correctly in release beta.

Beta v7.76.2691 changes:
1.Item 27, several changes.

Options dialog will now detect if the currently selected language
DLL timestamp has changed and will prompt for a restart.

Moved several keyboard shortcuts, that were hard-coded, to the
accelerator table, so that they are now translatable: Alt Q and
Control T, D, L, N, W, Q, F, A.

mIRC still requires a restart if a language DLL is changed. However,
technically, it is now able to switch to a new DLL on-the-fly, and
will update menus, accelerators, strings, and dialogs, including
titlebars of open status/channel/etc. windows, the text in
DCC send/get windows, the scripts editor, and so on. However, it
cannot update open dialogs, as these can change their text in
some contexts. So, for now, it will still require a restart.

Beta v7.76.2477 changes:
1.Item 28, fixed.
2.Item 29, added.
3.Item 30, fixed. Due to Visual Studio 2017 change.
4.Item 31, changed.
5.Item 32, updated.
6.Item 27, updated, see for details. Changes to all of the resource
parsing code. As this is a first release of a new feature, with a lot
of new code relating to translatable resources, it needs testing.

Beta v7.76.1610 changes:
1.Item 4, https://forums.mirc.com/ubbthreads.php/topics/272418
2.Item 25, added.
3.Item 26, added.
4.Item 27, changed.

Reviewed 10000+ strings embedded in the source code, filtered down
by heuristics. Most translatable strings were already in resources
but some needed to be moved.

This also allowed me to review which literal strings needed
to remain in the code as non-translatable, depending on context,
eg. "Status Window" needs to remain non-translatable when used
internally in scripts and ini file item names, otherwise these
would break every time a different language was used, but needs
to be translatable for the GUI. This applies to window names,
script-related names, ini item names, and a variety of other

Some dialogs needed extra code to convert to/from the translatable
GUI resource string, visible in the dialog, and its non-translatable
version that is used internally.

A lot of legacy code depends on strings being formatted in a specific
way, eg. spaces/order of words in strings such as "Status Window". So
translating mIRC will not be as simple as just translating the text
in resources. A translator will need to be aware of a string's context,
format, and word order and the need to keep it as close as possible
to the original. Changing the code to get around these limitations
will take much more work.

Overall, this beta includes several hundred changes to source code
files and resources.

Beta v7.76.1151 changes:
1.Item 18, fixed focus being set on editbox after the find/replace
buttons are pressed.
2.Item 23, fixed.
3.Added back smiley face to right-click on About button at
different icon sizes.
4.Item 24, https://forums.mirc.com/ubbthreads.php/topics/272403

Beta v7.76.1060 changes:
1.Item 15, fixed.
2.Item 5, fixed a Find/Replace bug where the first attempt
for a Replace All was not working.
3.Item 18, changed.
4.Item 16, changed, eg. when switching between mdi/desktop
5.Item 17, fixed.
6.Item 19, fixed.
7.Item 20, fixed.
8.Item 21, updated.
9.Item 22, updated.
10.Updated help file.

Beta v7.76.856 changes:
1.Item 9, https://forums.mirc.com/ubbthreads.php/topics/272379
2.Item 10, added.
3.Item 11, added. To apply to all server connections, you would
need to use /scon -a.
4.Item 12, added.
5.Item 13, added.
6.Item 14, fixed.

Beta v7.76.668 changes:
1.Item 6, udpated. The update.html file now contains a file
signature used by mIRC to verify that the installer is
authentic and unmodified.
2.Item 8, extended.

Beta v7.76.237 changes:
1.Item 1, https://forums.mirc.com/ubbthreads.php/topics/272326
Note that this UTF-8 decodes characters as well.
2.Item 2, https://forums.mirc.com/ubbthreads.php/topics/272329
Tested with different combinations of font/font size/button
size. Needs further testing.
3.Item 3, https://forums.mirc.com/ubbthreads.php/topics/272331
4.Item 4, added. This also UTF-8 encodes/decodes characters.
5.Item 5, fixed.
6.Item 6, added.
This will download and execute the exe specified in update.html
on the mIRC website. The exe is saved to the "updates" folder.
Currently, the exe is the standard install file, set to update
files in silent mode. By default, it will backup existing files,
update mirc.exe, mirc.chm, ircintro.chm, readme.txt, versions.txt,
and cacert.pem, and will perform required updates to other files
where necessary. After the update is complete, mIRC is restarted
and the About dialog is displayed.
7.Item 7, https://forums.mirc.com/ubbthreads.php/topics/272346

1.Fixed $urlget() support for percent-encoded username:password
2.Fixed treebar spacing when switching back and forth between
different icon sizes.
3.Fixed $base() floating point conversion bug.
4.Added $encode()/$decode() 'x' switch that percent-encodes/decodes
all characters except "unreserved" as defined in RFC3986.
5.Fixed Scripts Editor find/replace bug where first found item
was not being replaced.
6.Added Check for Updates support for downloading/installing an
update directly.
7.Fixed auto-op/voice/protect being incorrectly triggered when
you don't have ops.
8.Extended $samepath() to handle more contexts, such as subst
drives and network prefixes.
9.Changed Scripts Editor find/replace dialog behaviour to wrap both
forward and backward when a search ends.
10.Added Scripts Editor find/replace dialog "Count" option to
display number of found/replaced matches.
11.Added /markasread [name] that marks the specified window name as
read. If no name is specified, all windows on a server connection
are marked as read.
12.Added Scripts Editor find/replace dialog support for escape key
to stop a long search.
13.Added Scripts Editor find/replace dialog support for remembering
dialog position after restarting mIRC.
14.Fixed $input() dialog not accepting escape key to close dialog
if only ok button is displayed.
15.Fixed editbox eye icon focus bug when switching to another control.
16.Changed Find dialog in status/channel/query windows so that it will
re-open in the active window if Control+F is pressed while open in
another window.
17.Fixed MDI window titlebar colors not being set correctly when
desktop/mdi windows are active/inactive.
18.Changed Scripts Editor Find/Replace dialog to modeless, allowing you
to scroll/edit in the editbox while the dialog is open.
19.Fixed Shift+Tab to show nick list keyboard shortcut not working in
windows without editboxes.
20.Fixed List Channels dialog not enabling/disabling List button when
the active server connects/disconnects.
21.Updated OpenSSL library to v3.0.13.
22.Updated zlib library to v1.3.1.
23.Fixed $input() icon/text positioning on different DPI displays.
24.Added email/userid support for IRCX mask \ character.
25.Added MDI window/menubar icon sizes for different DPI displays.
26.Added alternative method for opening help files that gets around
the Windows CHM locked files issue.
27.Added support for loading translated resources from external
language DLLs found in the "languages" folder. Language DLLs must
use the format mirc-en-US.dll, where the language code is at the
end of the filename.

A language selection option has been added to the Options/Display
dialog. This displays the language name, code, and DLL name. The
internal default is English (en-US). The selected language DLL is
saved to mirc.ini in the [language] section.

For translators, the translatable resource sections are: RT_MENU,
"/langdll -m" can be used to create a default language DLL that
contains the translatable resources in mirc.exe. This can then be
edited with a resource editor. The command "/langdll -d oldmirc.exe
newmirc.exe" can be used to compare the translatable resources of
two exes/dlls to show which sections have changed/need to be udpated
after new versions are released. The currently loaded language dll
is returned by $langdll.

mIRC performs several checks when loading resources from a language
DLL, including checking for matching sprintf() specifiers, id
numbers, number of controls, and so on. If an external resource
does not match the internal resource, the internal resource is used

28.Fixed $window().title not returning correct title text for DCC
Send/Get windows.
29.Added $window().fulltitle that returns the full titlebar text.
30.Fixed manifest file being included twice in resources.
31.Changed Treebar DCC Send/Get to show progress bar below text, like
the switchbar.
32.Updated CA root certificates cacert.pem file.
1 395,737 Read More
Bug Reports Jump to new posts
Re: Command silencing propagation inconsistency Wims 29/03/24 01:15 PM
Nice try :-) That is part of the variable definition and can appear anywhere in a command. It has nothing to do with command prefixes.
I meant to show the built-in 'echo' command is called instead of the custom echo alias just created:
//alias echo !echo -ag custom echo called | var %exec !echo -ag ok | [ %exec ] | alias echo
The [ ] are required from the editbox to force a commnand starting with a variable (or $ident), I got rid of the ! inside the variable name, hopefully this is clearer.
That being said, I understand this is unrelated to the issue.

Both items were hopefully fixed
My bad then, I hadn't tried it.

What you are requesting is for the evaluation parser to make assumptions about the start of the line during the process of evaluation, before the line has been fully constructed, and to apply these to all subsequent identifers/variables/etc. - not once the entire command line has been constructed and is ready to be executed, as has always been the case.
In the case of the original post, the variable is not a command yet. It is sent to the variable parser to be evaluated in order to form the final command, which can then be executed, and only then are the prefixes parsed and applied.
This is how I view it as well, however I did not realize it means this report is invalid because indeed $testqpfx() is evaluated before knowing the command has the . prefix.

I realize now as well that $show is a global value, not a local identifier, which is why it changes per routine whenever you have silenced command, with mIRC reverting back the value to the original value:

alias temp echo -ag $1
alias myalias echo -ag $show | .noop $temp($show) | echo -ag $show

/myalias will echo $true, $false, and $true again

I suppose that's just the way it works then, and there's no issue so to speak, after all.
4 411 Read More
mIRC Help Jump to new posts
Re: Repeating timers Wims 26/03/24 12:53 PM
All the behaviors you describe are correct I believe.
A timer is always associated with a status window, connected or not, -o only means that the timer won't stop if you were connected when starting it, when disconnecting from that associated status window.
If you don't use -i, the timer is associated with the current status window but the timer will stop if you close that status window, even if you used -o.
If you used -i, the timer is associated with the current status window AND the timer is reassociated to the new current status window when you close the status window associated to it, aka the timer is never stopped because you closed a status window. The help file is not very clear about this, but people want to generally use -io with their timer, the -i is often overlooked.

Once the timer trigger for the first timer at 00:01, it's as though you were using /timer -o 0 86400 echo -s .. at 00:01 manually, just an infinite timer triggering every 86400 seconds.
It won't reuse the 00:01 hours:minute parameter you specified the first time, because think about /timer -o 00:01 10 10 echo -s .., it wouldn't make sense to use a repetition and second parameter with a time parameter then.
Actually I'm not sure what you're confused with here as you can determine the next trigger time easily, it's just 24h from when it triggers which is always at 00:01.
If you wanted to echo midnight at midnight you would use 00:00, why using 00:01?

What do you mean as it's not triggering when it should?
1 231 Read More
Bug Reports Jump to new posts
Re: Check for Updates KindOne 25/03/24 07:05 PM
I had not thought about the filename in shortcuts, scripts, etc.. No idea how I managed to forget about that.
13 1,517 Read More
Scripts & Popups Jump to new posts
Re: Timer Fernet 25/03/24 01:47 PM
Originally Posted by Epic
If you want the script to send messages not through the service bot, but directly through the mIRC bot, then change 2 lines in the code with the commands "bs say" to "msg".

After the change, the code script will look like this:
on *:TEXT:*:#channel:{
  if ($nick == ServiceBot) { return }
  if ($nick isop $chan && $1 === !ON) { bot_stop | bot_start $chan }
  elseif ($nick isop $chan && $1 === !OFF) { bot_stop }
  else { bot_stop | .timerBOTSTART 1 1800 bot_start $unsafe($chan) }
alias -l bot_start {
  msg $1 Va beh...nessuno parla allora parlo io...
  rand_msg $1 | .timerRANDMSG 0 60 rand_msg $unsafe($1)
alias -l bot_stop { .timerBOTSTART off | .timerRANDMSG off }
alias -l rand_msg {
  var %colors 2,3,4,5,6,7,8,9,10,11,12,13
  var %rc $gettok(%colors,$rand(1,$numtok(%colors,44)),44)
  msg $1 $+(,%rc,$read(addons\miefrasibot\frasibot.txt,nt),)

I have a .txt file with some messages (those are simply curiosity from the world), and set 1800 as timer (30 minutes). In spite I have more than 1000 "curiosity" , I noticed there're ripetitions, the same messages may come out 4 times ! And of course there're not repeat messages in .txt file.
How to avoid it?
23 2,078 Read More
Scripts & Popups Jump to new posts
Re: how to check each nick in $1- is in channel Wims 23/03/24 09:07 PM
The code you have does that already though.
6 727 Read More
Feature Suggestions Jump to new posts
Re: Editable Language Files for mIRC Khaled 22/03/24 07:07 PM
I have released a new beta that adds support for language DLLs. See beta.txt Item 27 for details.

I had to make a fair number of tricky implementation decisions in this beta; how to parse resources at a low-level, how the languages are presented to the user in the Display/Options dialog listbox, how the language DLL is created and initialized, filename format/language code parsing, resource DLL validity pre-checking, version info resource re-writing, and so on. I experimented with several different approaches - there is a lot going on under the hood.

To make life a little easier for translators, I added support for /langdll -m and /langdll -d. The /langdll -d resource compare method actually takes account of minor changes that Resource Hacker/Risoh Editor make to an updated DLL.

One change I am looking at for the next beta is allowing mIRC to change language DLLs without needing to restart. After looking through the code, I think this might actually be possible.

Outstanding issues: the dialogs will need resizing/controls repositioned/sized to accommodate longer strings. At this point, I am not sure what the best approach to this would be - leave it to individual translators - or perform a full revamp of all dialogs in such a way that the longest possible strings are accommodated.

One other thing to note: I plan on not changing any of the id values for resources from this point onwards. In the past, this was something I did for various reasons. From now on, all resource ids should remain fixed. The most that can happen is that a resource will be updated, added, or removed. v7.76 will be the resource baseline from this point onwards.

As this is the first beta with language DLL support, it will likely have bugs. If you have any questions, or come across an issue, please let me know.
4 874 Read More
mIRC Help Jump to new posts
Seperator Line Editbox d0ORk 20/03/24 06:46 AM
Hi there, how can I change the color of this seperation line?
Thanks in advance.
0 119 Read More
Scripts & Popups Jump to new posts
Re: Is there a weather script? mro_000 19/03/24 12:26 AM
no, in today's age google isnt really your friend for finding a working weather script.

i use https://github.com/acvxqs/PnPAddons422

there's a weather module. need to register with openweathermap.org
2 613 Read More
Feature Suggestions Jump to new posts
Re: Missing docs Wims 15/03/24 10:57 PM
You can use if ($nick($chan,nick,!)) { and if ($nick($chan,nick,~)) { to test if a nick has such prefix mode.

mIRC has support for (at least) owner mode from unrealircd (+q mode), if that's your case (but you could try otherwise) you can use the isowner operator.
However there's no support for 'admin' (+a mode), so you would have to use $nick() there.
1 247 Read More
Page 1 of 10 1 2 3 9 10