50 lines
2.2 KiB
Plaintext
50 lines
2.2 KiB
Plaintext
add_action - bind a command verb to a local function
|
|
|
|
void add_action( string | function fun, string | string array cmd );
|
|
|
|
void add_action( string | function fun, string | string array cmd, int flag );
|
|
|
|
This efun is only available if NO_ADD_ACTION isn't defined.
|
|
|
|
Set up a function 'fun' to be called the a user types the command 'cmd'.
|
|
(What is the command is determined by the first 'word' which consists
|
|
of all the characters before the first space, with the exception of
|
|
verbs that don't need a space; see below).
|
|
|
|
If 'cmd' is an array, then that function will be called for any of the
|
|
commands in the array. 'fun' can either be a string which is the name
|
|
of a function in the object adding the command, or a function pointer.
|
|
|
|
Functions called by a user command will get the rest of the command line
|
|
as a string. It must then return 0 if it was the wrong command, otherwise 1.
|
|
If 1 is returned, no further parsing is done; if 0 is returned, other
|
|
commands will be checked (possibly the same command added by a different
|
|
object). If no command is found, the default error message will be sent
|
|
to the player (traditionally, 'What?' but see also notify_fail())
|
|
|
|
For functions which can be called by more than one command, check query_verb()
|
|
to see which command was used.
|
|
|
|
Note: add_action() does not add commands globally; it only adds commands to
|
|
this_user(), and the object must be 'close' to the user it is adding commands
|
|
to.
|
|
|
|
Usually add_action() is called only from an init() routine. The object that
|
|
defines commands must be 'close' to the user, either being the user,
|
|
being carried by the user, being the room around the user, or being an
|
|
object in the same room as the user.
|
|
|
|
Since init() is called when a user moves 'close' to an object, it is a
|
|
convenient time to add such commands. The commands are removed when the
|
|
user moves out of range (or the object does).
|
|
|
|
If argument 'flag' is 1, then only the leading characters of the command has
|
|
to match the verb 'cmd' and the entire verb is returned by query_verb(). If
|
|
argument 'flag' is 2, then again, only the leading characters must match,
|
|
but query_verb() will only return the characters following 'cmd'.
|
|
|
|
See also:
|
|
query_verb,
|
|
remove_action,
|
|
init
|