[Home] [Downloads] [Search] [Help/forum]

Release notes for MUSHclient version 3.48

Version 3.48

Released on 26 Apr 2004

1. Fixed bug where if you had MUSHclient maximized, then minimized it (eg. Minimize All) and then clicked on the MUSHclient icon on the Windows Tray, MUSHclient would be restored to its non-maximized state.

2. Added new script function ActivateClient. This activates MUSHclient (that is, brings the MUSHclient to the front, restoring it if minimized) and gives it the focus.

The intention here is for use in a trigger, where you want MUSHclient to immediately become the frontmost window if the trigger fires (eg. if someone chats with you).

3. Added help entries for the two new global configuration tabs (tray and global plugins).

4. When doing a ReverseSpeedwalk (either using an alias dialog or with a script) it now recognises the four directions (ne) (nw) (se) (sw) and correctly generates the reverse direction. Previously that would only work if you had them entered as (ne/sw) (se/nw) etc.

5. When expanding a speedwalk, the directions "n", "s", "e" etc. are now expanded to "north" "south" "east" etc. Thus if you do a speedwalk "3e" MUSHclient will now send:


instead of:


6. Added script routine RemoveBacktracks. This takes a speedwalk as an argument and removes any backtracks from it.

For example: "4n 2s" would be converted to "2n".

A side-effect of this routine is that comments will be removed from speedwalks, and "reverse direction hints" will also be removed. eg. "(open door/close door) {comment}" would be converted to "(open door)".

It will also join directions where possible, eg. "n n n" would become "3n".

7. Changed MUSH commented-softcode output routine to no longer remove trailing spaces. This behaviour appeared to incorrectly format code with a trailing space (it joined words together when it shouldn't have).

8. Changed plugin-writing wizard to have an option whether or not the triggers/aliases/timers/variables in the existing world file are deleted.

9. Changed the XML loading routine to allow for files created in Unicode (with the indicator bytes FF FE in the first 2 bytes of the file). If found, the loading routine converts the file to UTF-8 and then continues processing it as normal. This allows you to use Notepad (the Windows notepad) to create a Unicode file (eg. a plugin) and "save as Unicode".

10. Also allowed for the UTF-8 indicator bytes EF BB BF at the start of XML files.

11. Added configuration option "carriage-return clears line" to the output window configuration. This is not a new option, but it was previously only available by doing a world.SetOption.

12. When matching a trigger which contains a variable name, you can now prevent the variable's contents from being "escaped", in case you deliberately want to put a regular expression in it. eg.

variable target = "alice|bob"

trigger match = You see (@!target) here

The "!" after the "@" tells MUSHclient to use the variable literally and not try to put backslashes in front of any meta-characters in the regular expression.

13. Provision for multi-line triggers. You can now optionally set triggers to match multiple lines of output from the MUD. The way this works is that MUSHclient remembers the last 100 lines received, and you can then tell the trigger to match up to 100 previous lines.

For example:

Match: You are carrying:\n(([ ]{5}.*\n)*)(?![ ]{5})\z

The \n symbols represent line breaks, so this might match:

You are carrying:
a magic mushroom
a torch
a dragonskin
a bag
recall scroll

Each line of inventory is preceded by 5 spaces, hence the [ ]{5} in the regular expression. The inventory is terminated by a line which does *not* commence with 5 spaces.

Another example:

Match: ^\-*\[ IMMORTALS \]\-*$(?s)(.*)$(.*) players?\.\z

This might match:

-----------------------------------[ IMMORTALS ]------------------------------

Supreme Entity Nick the Recruit.
Supreme Entity Shadowfyr the Supreme Entity.
2 players.

You can also match simple multi line strings like this:

You smile and congratulate (.*), conferring upon (.*) the right to wear the\nred belt\.\z

In order for MUSHclient to know how many previous lines to consider matching you need to specify the number (eg. 2 for the above example). For variable lists (eg. inventories) you would specify the maximum number you expect.

The higher the number the slower the trigger matching will run, as it has to assemble, and then test, a larger string.

Multiple line triggers must be regular expressions, as the syntax for matching line breaks does not exist for normal triggers. Also because of the way they work some trigger processing is not available to multi-line triggers (eg. colouring lines, omit from output, omit from log).

14. Added support for named wildcards in triggers or aliases. Inside regular expressions you can specify a named wildcard, like this:

Match: (?P<who>.*) tells you '(?P<what>.*)'

In this case we have 2 wildcards, named "who" and "what".

Then in the "send" box you can access named wildcards like this:

Send: %<who> just told you %<what>

15. Added support for up to 1000 wildcards in triggers and aliases (rather than 10). To access the additional ones you can use named wildcards as described above, the new script routines GetTriggerWildcard and GetAliasWildcard described below, or use this syntax in the "send" box:

Send: %<11> just told you %<12>

This example would return wildcards 11 and 12.

16. Added new script routines GetTriggerWildcard and GetAliasWildcard - these let you get a named or numbered wildcard from a trigger or alias.


x = GetTriggerWildcard ("mytrigger", "target") ' get named wildcard
x = GetTriggerWildcard ("mytrigger", "22") ' get wildcard 22

17. Added new script routine GetRecentLines. This lets you access up to 100 previously received lines from the MUD. This is the same data that gets used for multiple-line triggers. The lines are concatenated together into one big string with newlines (\n) between each line. You specify the number of lines you want (1 would be the last line, 2 would be the last 2 lines and so on).


x = GetRecentLines (10) ' get 10 most recent lines

Note that there is a difference between this and the script routine GetLineInfo. GetLineInfo returns visible lines in the output buffer, where one big line from the MUD may have wrapped into 5 lines on the screen. However GetRecentLines returns actual lines as received (which may be more than the screen width in length). Also GetRecentLines only returns output from the MUD, any note lines or command lines are not included.

18. Speeded up regular expression matching by using the "study" feature of the PCRE code. This effectively optimises a compiled regular expression to make it execute more quickly.

19. Changed regular expression code so that if the regular expression generates an error it is disabled rather than being re-executed (possibly very frequently) and generating an error every time.

20. Updated the regular expression documentation to reflect the new features in PCRE (Perl-Compatible Regular Expressions).

21. Added new items to GetAliasInfo:

selector 24 - return count of wildcards (when last matched)
selector 25 - return full text of string passed to regular expression matcher (ie. matching line)

22. Added new items to GetTriggerInfo:

selector 31 - return count of wildcards (when last matched)
selector 32 - return full text of string passed to regular expression matcher (ie. matching line)

23. The menu item View -> Reset Toolbar Locations has been altered to fix the "big grey box" problem which can occur when you move the Info Bar (which expanded to completely hide the output and command windows). Now if this happens select View -> Reset Toolbar Locations to fix it up.

24. Added button on output window configuration "adjust size to width". What this does is resize the world window so that the number of columns you have specified (eg. 80) exactly fits into the output window (assuming normal text, not bold, nor italic). Adjacent to that is the previous button now called "adjust width to size" which does the corollary, namely calculate the number of columns based on the current window size.

25. Improved documentation about triggers, aliases and timers to describe the way to call the associated script routines.

26. Put check into trigger edit dialog, so that if you tried to make a trigger like this:

*** You are stunned ***

You will get a warning. The asterisks are wildcards and won't work as expected. A text window appears explaining this at some length, and you are required to fix it.

27. In both the alias and trigger dialogs (and other relevant places), when entering a regular expression, if it generates an error (eg. "*" on its own would) then a dialog box appears with the regular expression in it, the error message, the column number, and a carat pointing to the exact point in error. This is designed to help debug regular expression problems.

View all MUSHclient release notes

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at FutureQuest]