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

Register forum user name Search FAQ

Release notes for MUSHclient version 3.23

Version 3.23

Released on 13 Jun 2002

1. Added support for XML <include> directive (this is not XML as such, but a tag you can put in your XML world files).

You must have the <include> directive at the root level (same level as <triggers> etc.). Here is an example:

<include name="c:\mushclient\my_triggers.xml" />
<include name="c:\mushclient\my_aliases.xml" />
name="Dawn of Time"

A couple of points ...

* Because the <include> tag is empty it is terminated by /> rather than just >.
* You can have multiple include tags.
* Included files can themselves have <include> tags - that is, they can nest.
* MUSHclient will remember which include tags you have used and write them out at the start of the world file (after the <muclient> tag) regardless of where you might put them if you manually edit the file.
* At this stage we haven't quite worked out the full collision-handling mechanism. For now, if the same thing is specified twice, it will be treated as if it occurred multiple times in the main world file.
* Triggers, aliases and timers that are included cannot be edited or deleted in the GUI interface. To edit them you would need to edit the included file.

Note: Collision handling ...

* If an option is set in an include file (eg. enable_aliases="y") and is either not set in the main file, or is the same value, then when the world is written the value is not written to the main world file. That way you can have options set in include files (note colour for instance) and not have it overwritten by the default world file value.

2. Fixed a bug in triggers where a variable in the trigger match text was not expanded correctly.

3. Fixed bug where, if you were logging in HTML, and wanted the world name written to the log file, the world name was not converted to HTML (which would not matter unless you had a "<" in it.

4. Fixed bug where, if you were logging in HTML, and wanted the world name written to the log file, the underlines under the world name did not appear on a new line (in other words, a <br> was not writtten).

5. When opening a log file, the order in which things are written has been changed, because testing revealed that if you had:

a) Write world name to log file; and
b) Log in HTML

You would have a problem. Say you have an HTML preamble in the log file preamble (eg. <html> <head> <title> blah </title> </head> <body> ) then the world name, and the line of hyphens, was written *before* the HTML preamble. Thus, the order has changed from:

1. World name
2. Your log file preamble


1. Your log file preamble
2. World name

6. Added extra options to the formatting strings for log file preamble, postamble, line preamble etc. These are:

%N - name of current world
%P - player name
%F - default world directory
%L - default log file directory

These *are* case-sensitive.

7. Changed the way MUSHclient edits script files using an external editor, so that programs that expect multiple arguments will work, as it now quotes the file name.

8. Changed installer to not overwrite user spell check dictionaries.

9. Added script function "GetLoadedValue". This gets the value of a MUSHclient <world> option, as at the moment after the world was loaded from disk.


world.note world.GetLoadedValue ("port") ' 4000

10. Added script function "GetDefaultValue". This gets the default value of a MUSHclient <world> option.


world.note world.GetDefaultValue ("input_font_name") ' Fixedsys

11. Added script function "GetCurrentValue". This gets the current default value of a MUSHclient <world> option.


world.note world.GetCurrentValue ("auto_say_string") ' tell Gandalf

The 3 functions GetLoadedValue, GetDefaultValue and GetCurrentValue all work with both alpha, numeric and boolean options. They return a "variant" which is the value of the option, or the NULL variant if the supplied name is not a valid option name. The option names are the same as used in the XML world file, and as returned by the functions GetOptionList and GetAlphaOptionList.

12. Added script function "ColourNote". This lets you do a "note" in a specified colour. The note colour is saved and restored, so that the world note colour is unchanged after using this function (however the new colour is used for the note itself).


world.ColourNote "red", "blue", "Hello there"

The colour is specified by colour name - you can use the MUSHclient colour picker to see all possible colour names, or type: world.debug "colours". You can also specify colours in HTML format, like this:

world.ColourNote "#FAEBD7", "#FFB6C1", "Hi there"

If you leave a colour name blank, it is unchanged. Thus you could do this to get red text on the existing background:

world.ColourNote "red", "", "Hello there"

13. Added script function "ColourTell". This lets you do a "tell" in a specified colour. The note colour is saved and restored, so that the world note colour is unchanged after using this function (however the new colour is used for the tell itself). The difference between "tell" and "note" is that tell does not start a new line. Thus you can build up a line in different colours by using consective "tell"s.


world.ColourTell "red", "blue", "Hello "
world.ColourTell "white", "green", "there"

14. Added script function "CreateGUID". This generates a unique GUID (Global Unique Identifier). This is guaranteed to be unique throughout the world, and at any time (ie. completely unique) provided you have a network card in your PC, as part of the GUID is the MAC address of the network card, which are manufactured to be unique world-wide. If you do not have a network card, there is a small possibility that GUIDs generated by two PCs (both without network cards) might be the same.

The GUID will look like this: 6B29FC40-CA47-1067-B31D-00DD010662DA

The purpose of this is to give you a way of having a unique identifier (eg. for a variable). If you were to use it for that purpose you would have to add a letter to the front, as variables must start with a letter, not a number, and change hyphens to underscores. eg.

dim uniqueid
uniqueid = "X" & world.replace (world.createguid, "-", "_", true)

These numbers may seem cumbersome, but at least if you use them you are guaranteed of a unique identifier. The last 12 characters are the hardware MAC address of your network card (in the example above, "00DD010662DA"), so if you wanted an identifier that was unique for your PC, but not necessarily around the world, you could trim off the last 13 characters (eg. "6B29FC40-CA47-1067-B31D" would be unique on this PC). eg.

dim uniqueid
uniqueid = "X" & left (world.replace (world.createguid, "-", "_", true), 23)

(eg. X989B3DD0_7125_11D6_BBB7)

To save a bit more space you could even get rid of the hyphens altogether. eg.

dim uniqueid
uniqueid = "X" & left (world.replace (world.createguid, "-", "", true), 20)

(eg. X989B3DCD712511D6BBB7)

In this case the identifier is only 21 characters (including the "X") and will be unique on this PC.

Contrast this to "GetUniqueNumber" which only returns a unique number for this session of MUSHclient. Thus, the numbers (from "GetUniqueNumber") will not be unique over multiple sessions.

See also the new script function world.GetUniqueID (below).

Also, using random number generation for unique identifiers has a chance of returning the same number, depending on a) the seed given to the generator; and b) the way the generator must eventually recyle and regenerate the same sequence.

15. Fixed a bug where when using the Colour Picker dialog box, the names of the colours in the list might be drawn with black text on a black background the first time the picker was used.

16. Added the option to Global Preferences to specify the colour wanted for the Notepad windows. Previously they defaulted to the colour of the command window of the current world. You can specify a text colour, and a background colour. If these two colours are not the same, they will override the colour of the command window, next time you open a notepad window.

17. Added script function "Hash". This produces a 160-bit hash of the supplied text, returned as a 40-character hex string (40 X 4 bits = 160 bits). eg.

world.note world.hash ("This Mud is running on the Dawn Codebase")


You might use this to store a hash of a long string (eg. a script file) to see if it has changed rather than storing the text itself.

18. Removed the requirement that triggers, aliases and timers that call a script must have a label (ie. this is now consistent with the fact that you can add them from a script without a label).

19. Fixed bug in triggers configuration page where the "move up" and "move down" buttons were enabled, even if no trigger was selected. Now exactly one trigger must be selected.

20. You can now select multiple triggers/aliases/timers in the appropriate configuration pages, and copy or delete them.

21. Added script function "GetUniqueID". This uses CreateGUID to get a unique number, and then hashes it, retaining 24 characters (96 bits) of the hash. This generates a nice, unique identifier, like this: "0a96ce42d8e0ede554d3b9ab".

The advantage of using this over CreateGUID is that by hashing the number your network card MAC address is concealed. Conceivably some users might not want their MAC address to be revealed. The number generated here will be used by plugins to uniquely identify themselves.

You could also use it for variable, trigger, timer, alias names, when generated by a script, to ensure uniqueness over multiple sessions. You could also use it as a handy "password generator", as the number sequences are hardly going to be predicable.

22. Fixed bug where world position on the screen was not remembered when loading from XML.

23. Fixed bug in the Timers configuration screen where the radio boxes "at" and "every" could both be set.

24. Fixed bug where if an XML error window appeared when loading a world file, the command area font would not be set correctly.

25. You can now enter script commands even if not connected. That is, if you are not connected to the MUD server you can do things like this:

/world.note "hi there"

26. Maximum world size that can be opened (using XML) has been increased from 100 Kb to 1000 Kb.

27. Added support for plugins which are independent files containing:

* triggers
* aliases
* timers
* variables
* scripts

These can be shared between MUSHclient worlds. They each operate in their own "space", thus there will not be clashes between identically named things (eg. variables) in different plugins.

Also, each plugin can have a different script language (vbscript, perlscript, jscript).

There are example plugins in the plugins directory with this version. Edit one with a text editor to see how they work.

There is a dialog box for viewing/adding/deleting plugins from a particular MUSHclient session.

Plugins can save their "state" (variables) so that each one can remember what it was doing from one execution to the next.

28. Added script functions:

CallPlugin - allows one plugin to call a routine inside another
EnablePlugin - enable/disable a plugin
GetPluginAliasInfo - get info about an alias in another plugin
GetPluginAliasList - get list of aliases in another plugin
GetPluginID - get the unique ID of this plugin
GetPluginInfo - gets info about this plugin
GetPluginList - gets a list of installed plugins
GetPluginName - gets the name of this plugin
GetPluginTimerInfo - gets info about a timer in another plugin
GetPluginTimerList - gets list of timers in another plugin
GetPluginTriggerInfo - gets info about a trigger in another plugin
GetPluginTriggerList - gets list of triggers in another plugin
GetPluginVariable - gets the value of a variable in another plugin
GetPluginVariableList - gets list of variables in another plugin
IsPluginInstalled - detect if a particular plugin is installed or not
LoadPlugin - load a plugin from disk
PluginSupports - see if a plugin supports a particular routine
SaveState - causes the current plugin to save its state

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 HostDash]