|I've put a lot of work into documenting and cross-referencing the various scripting functions. A good starting point is the main documentation page:|
That groups functions into the various sections (eg. relating to triggers, aliases, etc.)
Then there is an alphabetic function list:
These same pages are available inside the client using the Help menu as they are generated from the same database.
In particular, if you press Ctrl+Alt+Shift+L you see a dialog box that lets you filter down to particular function names (or wildcard, eg. "trigger").
For historical reasons, the functions basically fall into two categories:
- "World" functions, which are in the "world" table (note all lower-case). These are available to all supported scripting languages (eg. Lua, VBscript, Jscript, Python)
- Lua-only functions. In particular the "normal" Lua libraries like "string", "table", "math" are all there, and work the same as described in the Lua Reference Manual. They are also documented by me, eg. http://www.gammon.com.au/scripts/doc.php?general=lua_string
In addition to the standard Lua libraries, some extra functionality is provided by a few extra Lua libraries, such as the lpeg, bc, rex (PCRE regular expression), utils, luacom, and sqlite3 libraries.
Almost all of these are also documented in the built-in help (I can't find luacom in the help, but see http://www.gammon.com.au/forum/?id=6022 for more details about that).
I ... really need to find resources for if I'm going to set MUSHclient up the way I like it, is interacting with the GUI: making buttons (and tabs), windows ...
Initially the client only had limited support for buttons, etc. because it was a text client. A while back "miniwindows" were introduced which gave extra support for areas of the client window that could be used for status bars, inventory, mapper, etc.
For a lengthy tutorial and reference, see: http://www.gammon.com.au/mw
There are quite a few examples of miniwindows in use in the Miniwindows part of this forum.
Another part of the documentation worth exploring is the callbacks section, in particular plugin callbacks:
By supplying certain functions inside a plugin you can have the client "call back" to let you know something has happened, for example, you are about to send something to the server, you have just connected, the mouse has moved, etc.