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

Release notes for MUSHclient version 3.18

Version 3.18

Released on 04 May 2002

Where a number appears in brackets like this "[#412]" it refers to the bug/suggestion number in the database that has been implemented/corrected.

1. Added a "raw log" capability. What this does is (if activated) replace the normal logging of lines of text after they have been received and processed, with a direct log of the data coming from the MUD, complete with MXP codes, telnet sequences, the lot.

This was really added to help debug the client, and do benchmarks, as it could be used to write out a log file with MXP tags (or ANSI colours) in it, that could be later used to benchmark the client with a stopwatch.

However, you may find it handy if you want to log a session with colour codes, etc.

Because the logging is of raw incoming data, any triggers that "omit from log" will not have any effect, as the data is already logged. Also, file preambles and postambles, and line preambles and postambles will not be written.

The logging occurs after MCCP decompression (if used) so that it will still be useful on a MUD that uses MCCP.

2. Added a message to the world (output) window if you are running MUSHclient unregistered, which appears when you first open a world. This is to jog the memory of unregistered users that they haven't registered yet. It also gives a couple of helpful URLs so they can find more information about MUSHclient.

3. Added the following colours to the colour names recognised by MXP:

aliceblue #f0f8ff
olive #808000
slategray #708090


4. When the world is closed, ANSI colours are reset to the defaults. [#458].

5. Added new debug option "variables". This will list all variables in the current world. eg. type

/world.debug "variables"

6. A problem with rendering the MXP entity î has been corrected. Previously it was not recognised. [#457]

7. A problem was reported with this code not rendering correctly:

/ world.NoteColourRGB &h008000, &h00

This turns out to be a VBscript bug, not a MUSHclient bug. The recommended work-around is to use this syntax instead:

/ world.NoteColourName "#008000", "#0"


See http://www.gammon.com.au/forum/?bbsubject_id=1034 for more details.

8. A bug has been fixed where a style change (eg. to bold) at the very end of a line was being discarded (as the line wrapped). Previously a style affecting zero characters was being discarded, however that had the effect that the style was not remembered for the start of the next line. [#418].

9. A problem has been fixed where it was possible to set the "echo input" flag to something other than true or false, in a script. [#429].

10. An alias that is not a regular expression now sets wildcard 10 to the entire matching line, to be consistent with documented behaviour, and to how it works with regular expressions. [#455].

11. Fixed a bug where MUSHclient would crash if you did an AddTimer nominating a script that had an incorrect number of arguments (ie. not one). [#430].

12. Fixed problem where this did not work as documented:

world.save ""

Now it will save the world under the current disk file name. {#459].

13. Fixed a problem where an alias that called a script, but otherwise sent no text to the MUD, was sending a blank line. This caused a problem for AFK scripts. [#428].

14. Attempted to fix bug where, under Windows 2000, the MUSHclient icon on the taskbar would flash incorrectly. [#456, #349, #421].

15. Fixed problem where, under Windows 95/98, "append to notepad" would not append, but put text where the cursor was. [#422].

16. Added menu options for:

a) Connect to all open worlds; and
b) Connect to all worlds in startup list

These are designed to reconnect you on a link failure, so all open worlds can be connected with one menu item. [#433].

17. Added new selectors to world.GetTimerInfo:

11 - return date/time timer last fired (or was reset)
12 - return date/time timer will fire next
13 - return number of seconds until timer will fire next or zero if it is due to fire immediately (this might happen if the timer is due to fire but is disabled).
14 - 'temporary' flag
15 - 'speed walk' flag
16 - 'note' flag

eg. world.Note world.GetTimerInfo:("mytimer", 11)
Response: 28/04/02 11:41:22

18. Added new selectors to world.GetTriggerInfo:

22 - return date/time trigger last matched
23 - 'temporary' flag

19. Added new selectors to world.GetAliasInfo:

13 - return date/time alias last matched
14 - 'temporary' flag

20. Added new script routine: World.GetCommandList

This returns a variant array of the nominated number of most recent commands (in the command history window). You can get all available commands by requesting a count of zero. (You can get the most recently saved command by requesting a count of 1). You can get the current command (not yet in the command history list) by using World.GetCommand.


dim commandList
dim iCount

commandList = World.GetCommandList (10)

If Not IsEmpty (commandList) Then
for iCount = lbound (commandList) to ubound (commandList)
world.note commandList (iCount)
End If

The example code above would display the 10 most recently-entered commands, starting at the most recent.

Here is a simpler example that would retrieve the most recently-entered command:

/world.note world.getcommandlist (1) (0)

21. Added script routine: PushCommand. This pushes the current command in the command window to the command history stack (using the same rules as for normal commands, namely that duplicate commands, or empty commands, will not be pushed). It returns the current command in the command window, whether or not it was successfully pushed. [#427]

22. Added script routine: SelectCommand. This will select (highlight) the command in the command window. [#427]

23. Added script routine: GetCommand. This gets the current command in the command window. [#427]

24. Fixed a problem where, if using "Use custom colour 16 as default", and you received bold text, the text would not be rendered using the bold palette.

25. Added new action to Notepad - Quote Forum Codes. This is for when you are posting code to the forum, and the code has square brackets or backslashes in it. It puts a backslash in front of those characters. eg.

a [b] = "\t"; --> becomes a \[b\] = "\\t";

26. Added an "edit" button to the trigger, alias and timer "send" boxes. In case you want to send a lot of stuff, click that and an editing dialog box will open.

27. Added support for temporary triggers, aliases and timers. The purpose of these is for timers etc. that are only needed during this execution of MUSHclient. Any trigger, alias or timer marked "temporary" are not saved to the world file. This is to stop, for example, a timer that was set up in one session to unexpectedly fire in a later session.

28. Scripts can now add unlabelled triggers, aliases and timers. Previously it was enforced that you give them a label, so that a subsequent script call could refer to them, however for the occasion where you don't particularly want to do that, you can now add them unlabelled. This saves generating some random name and hoping it hasn't already been used.

Of course, once you add one with no label, you cannot then refer to it in a subsequent script.

29. You can now add multiple triggers that match on the same text. In earlier versions there didn't seem much point, however now that triggers can send to world, send to log file, send to variable etc., it seems helpful to allow you to add more than one trigger that matches on the same thing.

30. Added new script routine "DoAfter". This is intended to simplify doing things after a delay, in a script. It takes two arguments, how long to wait in seconds, and what to send afterwards. eg.

world.DoAfter 10, "eat food"
world.DoAfter 20, "get bottle bag"
world.DoAfter 21, "drink water"

This routine adds an unlabelled, temporary, one-shot timer, set to go off after the designated number of seconds. The first argument (seconds) must evaluate to a time between 1 second, and 23 hours 59 minutes 59 seconds (that is, 1 to 86,399).

You can also use DoAfterSpeedWalk - this is the same as DoAfter, except the command is interpreted as a speedwalk sequence.

31. Added new script routine "AddTriggerEx". (Add Trigger Extended). This is the same as AddTrigger with two extra arguments at the end ...

SendTo - where to send the trigger text to

0 - Send To World
1 - Send To Command
2 - Send To Output
3 - Send To Status Line
4 - Send To Notepad (New)
5 - Send To Notepad (Append)
6 - Send To Log File
7 - Send To Notepad (Replace)
8 - Send To World (Speedwalk delay)
9 - Send To Variable (Label is name)

Sequence - trigger sequence (0 to 10000)

This is for scripters that want to use those extra two features when adding triggers. [#461].

32. Added keystrokes for going to the start and end of the command window:

Alt+Home - start of command window
Alt+End - end of command window

33. Added new script routine: GetInfo. This lets you get information about the current world (configuration data, whether it is connected, when it connected, number of bytes received, and so on).

34. Added keystroke for "Go to URL" - Ctrl+Alt+J. [#425].

35. Added keystroke for "Stop Sound Playing" - Ctrl+Alt+B. [#380].

36. Added new script routine GetQueue. This returns the current speedwalk queue. You might get that and save it, discard it, and re-instate it. The queue is returned as an array. You might use this to access it ...

dim speedwalkQueue
dim iCount

speedwalkQueue = World.GetQueue

If Not IsEmpty (speedwalkQueue) Then
for iCount = lbound (speedwalkQueue) to ubound (speedwalkQueue)
world.note speedwalkQueue (iCount)
End If


37. Timers can now be speedwalks. Thus you can queue up a timer which fires off a speedwalk sequence.

38. Added the following script routines:

GetLinesInBufferCount - gets the number of lines in the output window
GetLineInfo - gets information about any line in the output window
GetStyleInfo - gets information about any style on any line
GetSelectionStartLine - gets the first line number of the selection
GetSelectionEndLine - gets the last line number of the selection
GetSelectionStartColumn - gets the first column number of the selection
GetSelectionEndColumn - gets the last column number of the selection

For more details see the MUSHclient functions list, using the appropriate URL:


39. Added a larger icon (48 X 48) for use with Windows XP - thanks to Neva for submitting it.

40. Timers can now do a "note" rather than sending to the world. For instance, you might make a tick timer, that tells you that the tick has elapsed by sending a message to the output window, rather than the MUD.

41. Added script routine: DoAfterNote. This lets you add a "note" timer, like this:

world.DoAfterNote 30, "Spell has worn out!"

This will send a note to the output window after 30 seconds.

42. Added script routines:


These will delete temporary triggers, aliases and timers. The intention here is to let you "clean up" the world, after adding temporary timers etc., for example with DoAfter.

43. Triggers will now expand variables in the trigger match text. For this to happen you must check "Expand Variables". Then you can match on something like this:

@target leaves @direction

In this example, if the variable "target" contained "frodo" and the variable "direction" contained "east" then the trigger would match:

frodo leaves east

If you want to match on the "@" character (and you have "expand variables" checked) then put "@@" in the match text. Triggers from world files from previous versions will be automatically converted to do this.

If the variable contents contain special characters, and the trigger is a regular expression, they will be automatically "escaped". For example, if "target" was "[frodo]" in the above example, then the trigger would actually match on:

\[frodo\] leaves east

If the variable contents contain asterisks, and the trigger is not a regular expression, the asterisk will be discarded. If this is likely to happen to you, we suggest using regular expressions where this will not be a problem.

If the variable contents contain non-printable characters in the range hex 00 to 1F (0 to 31 in decimal) they will be discarded.

If you need to "run together" variables names with other words, we suggest using brackets to achieve this. For instance, if you needed to match on:


The above wouldn't work because it would look for a variable named "targetleaves". However this would work:


This example assumes you are using regular expressions.

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]