On Tue, 30 Dec 1997, Doppleganger Software wrote:
->Speaking of which, how hard would it be to make it so that
->spec_procs can trap non-command-list commands?
I, being the lazy fool that I am, would find the line
if (*cmd_info[cmd].command == '\n')
in the command interpreter and right before the send_to_char() line
put:
if (no_specials || !special(ch, cmd, line))
So, the final code would read:
if (*cmd_info[cmd].command == '\n')
if (no_specials || !special(ch, -1, argument))
send_to_char("Huh?!?\r\n", ch);
Then just have your specials make sure that if the second parameter
(which is an integer that refers to the position of a command in the
command table) is -1, that it gets the first word (using
any_one_arg(), not one_argument()) of the passed string. Then, of
course, have the command return FALSE if it isn't the word it was
looking for. Something like,
SPECIAL(spec_example)
{
char word[MAX_INPUT_LENGTH];
if (cmd != -1) // we only want non-command entry word checking
return FALSE;
argument = any_one_arg(argument, word);
if (!str_cmp(word, "example"))
return FALSE; // send Huh?!?
// otherwise, we have the word 'example' followed by one or more
// arguments. This makes it possible/feasible for us to write
// commands that not only exist in just one room, but perform
// differently for different rooms, too; which is a rather strange
// idea.
// For instance, the word 'stir' can be detected by an big black
// kettle. While in Froboz's Workshop, the command 'stir' can
// have you go about stirring and mixing potions, with a chance
// that it will blow-up in your face.
// While this is, somewhat, possible using conventional means,
// I don't like the idea of having an ACMD() function check to see
// if there's object #xxx (a black kettle) to see if it should
// perform, and then check if we are in Froboz's workshop. It
// seems greatly more intuitive to attach the commands to it's
// parent object (sorry for the OO terminology).
return TRUE;
}
Anyway, that's my worthy conribution for December (seems like I'm
having less and less to say; which isn't necessarily a bad thing, as
I'm more than happy to see that a few people on the list have become
more productive [not to say that is a result of my increasing
infrequency or that any manner of intelligent showings by once-newbies
has anything to do with me, because I doubt it does]).
I hate Christmas...
-dak
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST