tkMOO-light .. Plugins

Programmable Plugins - more detail


This plugin rewrites normal MOO speech forms and helps to make output a little less predictable. The rewriting rules are activated at random, so the output is rarely predictable. I think it makes chat more fun to read, more like dialog from a book. For example:
Peter says, "Hello, anyone home?"
Jane says, "Yes, I'm here."
Bob says, "Me too!"
is redisplayed like this:
`Hello, anyone home?', asks Peter
`Yes,' says Jane. `I'm here'
`Me too!', exclaims Bob

This plugin's behaviour is controlled by the 'Speak weirdly' checkbox in the Special Forces section of the Preferences Editor.


As you type into the client's input window, unrecognised words appear in red. If you think they're ok, then right-click on them to add them to your personal dictionary. Otherwise you can just ignore them, or correct those words yourself.

If you're using Windows or Macintosh then download the as well and unzip it somewhere. The plugin's controls are in the Preferences Editor, under the Special Forces category. Use the [browse] button to make 'Main dictionary' point to the newly unzipped dictionary file. You can also select a file to contain your 'Personal dictionary' (I use a file name like 'personal.txt').

If you're using UNIX then the plugin will try to use either 'ispell' or 'look'. You won't need use the dictionary but you should still select a 'Personal dictionary' file name.


The plugin allows the client to interract with servers which understand the dns-com-awns-rehash MCP/2.1 package. If you're on a MOO then you'll also need to use a special Feature Object.

If dns-com-awns-rehash is available then the client will be able to tell which commands are available to be typed. If you're standing in a room containing a $note object then the client will know that the 'read' command is available. If the first word you type into the client's input window is 'read' then it'll be underlined, to show you that the client knows that this is a command.

This is only an indication that the first word on the command line matches a visible command, it's up to you, or a macro to decide if the line should then be sent in the form of a raw command or a spoken phrase.

Some helpful macros are provided by the client by default. If you really mean to 'say' a word then put a double-quote character (") in front of it. Otherwise just hit return and the client will send the command. Why bother? Well you don't need to type (") before each spoken line this way, just type stuff and hit [return].

You can turn the client's smart behaviour off by unchecking the 'Use Rehash Macros' checkbox, under the Special Forces category.

You'll need a special Feature Object
If you're on a MOO then you'll also need to use a special Feature Object. The Rehash Feature Object helps keeps track of the changes to available commands as you move from room-to-room.

The Feature Object implements 3 commands of its own:

Send any details about new commands or commands which are no longer visible. This is useful if you move an object into your inventory without it passing through your player's location. Such movement doesn't cause an 'enter' event and so won't be processed by :rehash(). For example, create a new object and add a verb:
@create $thing named wibble
@verb wibble:wobble
Now the client now knows about the new 'wobble' command.

Send details about all commands which are currently visible to the player.

@which <command>
Detail the object which supplies the given command name.


Type '?' followed by a search term then hit [return]. Instead of sending the text to the server, the client will open a webbrowser onto a search engine. By default the Google engine is chosen. For example, you should get a list of stuff about cars by typing:
? honda automobiles
The plugin's controls are under the Special Forces category of the Preferences Editor. Uncheck the 'Use Search Engines' checkbox to stop the '?' from causing searches. Or pick aonther search engine from the 'Preferred search-engine' list.


When the client sees a URL in the text sent to you from the server then it turns it into a clickable link. Click on the link to open a webbrowser.

The plugin's controls are under the Special Forces category of the Preferences Editor. You can turn links off by unchecking 'Hyperlink URLs'. Choose a link colour from 'Link colour'. Choose an underline style for the links from the list in 'Underline hyperlinks'.


This plugin adds a procedure 'subwindow.display $framename $message' to your Triggers environment. You can write triggers to pick up pages etc and redirect them to a subwindow. A macro will look at what you type in the subwindow and send it to the MOO, perhaps converting it to a page etc.

You can add triggers using the local editor, available from Tools->'Edit Triggers'.

Here's a simple example of a trigger and macro that recognises MOO 'page' messages and copies them into a subwindow:


This plugin creates a page of HTML from the text you select on the client window. You can use it to produce quick, web-ready logs of conversations, for your own records or to share online. To use the plugin, just select several lines of text and then select the Tools->Scoop... menu-option. The selected text is converted to HTML and displayed via a webbrowser (this plugin requires the webbrowser.tcl plugin to be present).

To help make permanent record-keeping easy, each time you 'scoop' the HTML page is given a different name, constructed from the current date. So it'll be easy to find pages you scooped from yesterday or from last week.


This plugin supports the MCP/2.1 package dns-com-awns-serverinfo. When the client connects, and shortly after MCP message negotiation, it'll send a message requesting some information. The server can then reply immediately, or perhaps any number of times in the future with a set of URLs pointing to the server's home-page and help-page.

The client's Help menu contains a couple of new entries 'Server Home Page' and 'Server Help Page' which are normally grayed-out. If a URL is provided then these entries become active and invoking them will cause a webbrowser to open pointing to the relevant URL.