Scripting lets you extend the behaviour of MUSHclient to do almost anything you want.
You can script in one of (currently) eight script languages: VBscript, JScript, PerlScript, Tcl, Python, Lua, TCL and PHPscript. If you use plugins you can also have multiple script languages per session (a different one per plugin).
We recommend using Lua as the preferred scripting language nowadays. Lua ships with MUSHclient, so scripts written in Lua will be more easily exchanged with other MUSHclient users. Also Lua can be used if running under Wine on Linux PCs. The Lua script DLL is shipped with MUSHclient. With the exception of Lua, VBscript and JScript, you will need to download and install the other script engines before using scripts written in those languages.
How do scripts get called?
MUSHclient will call a function (or subroutine) in your script at various places you can specify. For instance, each trigger, timer or alias can call a script. Information about the trigger, alias and timer (such as its name, and the matching line) is passed to the script routine so it can react appropriately.
For example, you might make a trigger script that kept count of the number of times you levelled when playing a MUD.
You can also specify that scripts get called when other events happen, like "world open", "world connect", "new chat user" and so on.
How do scripts communicate with MUSHclient?
Scripts use the COM (Component Object Model) technology to send requests to MUSHclient or ask for information (except for Lua, see below). For example, you can use "Note" to tell MUSHclient to put a note in the output window, or "GetInfo" to find out information about the current world (like when it was connected).
Scripts use the "world" COM object to do this - this is available in all script languages. For example:
world.Note "Hello, there"
Lua scripting does not use COM, and can thus be used in situations (like running under Wine on Linux) where COM is not working reliably.
Lua scripts are called directly from MUSHclient, generally with the same arguments as the COM scripts. There are some minor exceptions, these are noted under the relevant entries for each script function.
Where do scripts go?
You have a number of options for placing script routines -
1. In a script file which is used by the world (these can be shared between worlds).
2. Each plugin you install can have scripts in it.
3. Triggers, aliases and timers can call a script functions directly from inside them, without needing a separate script file. This is called "send to script".
There is extensive documentation about the script functions, including a list of all of them, at the web page:
Commencing with version 3.52, the Lua language is supported. You can read more about Lua at:
Unlike the other languages, support for Lua is "hard-coded" into MUSHclient, it does not use the COM (Component Object Model) interface. This allows Lua to be supported in a consistent way, even on platforms that do not support other languages (eg. Linux).
Forum posting about scripting
There is a lengthy post on the MUSHclient forum about using scripting, see this:
Lua base functions
Lua bc (big number) functions
Lua bit manipulation functions
Lua coroutine functions
Lua debug functions
Lua io functions
Lua LPEG library
Lua math functions
Lua os functions
Lua package functions
Lua PCRE regular expression functions
Lua script extensions
Lua SQLite (database) interface
Lua string functions
Lua table functions
Scripting callbacks - MXP
Scripting callbacks - plugins
Scripting data types
Scripting functions list
Scripting return codes
Scripting functions list
(ConfigureScripting) Sets scripting options
(EditScriptFile) Edits the current script file
(Immediate) Allows testing of scripts
(ReloadScriptFile) Forces script source file to be reprocessed
(SendToScript) Sends the selection to the script engine of the related world
Global preferences - Lua
Missing script procedure names
MXP script routines
(Help topic: general=scripting)