There is a very good section in the Programmer's Manual on this, but I'll try to explain it in my own words here.
The MOO server can handle three basic types of command:
eg 'smile', 'look', 'frown'
eg 'get book', 'drop suitcase', 'poke Mort'
command [direct-object] preposition indirect-object
eg 'get brush from box', 'look at Mort' (this has no direct object), 'unlock door with key'
Once the MOO has sorted out which of these categories the command falls into, it tries to find the direct and indirect objects in the game. For example the book, the suitcase, me, the brush and the box, etc. Once it has done this, it looks on several objects for a verb that matches the syntax.
In order it looks on:
What if the command you want to write doesn't look like any of the three templates?
The easiest way to get something to run without having an explicit direct or indirect object, or preposition, is to put the verb on the room or player, and give it the arguments 'any' 'any' 'any'. Then it can have any direct object, any prepostion (or none), and any indirect object (or none). After that you'll need to write code to interpret the command yourself as part of the verb.
If the verb is not a command, but is called by other verbs as a 'function', then the arguments should be 'this' 'none' 'this'. This will mean that it can never be used as a command - it's impossible to have an indirect object without a preposition!
So, the valid specifiers are:
|Direct Object||Prepostion||Indirect Object|
|this||(a particular preposition)||this|
There's more to it than just that - but that's for experienced hackers - we'll go into it later on.