mirror of
https://github.com/smaugmuds/SmaugFUSS
synced 2026-08-12 12:23:07 -04:00
137 lines
4 KiB
Text
137 lines
4 KiB
Text
SMAUG release 1.4
|
|
December 15, 1996
|
|
|
|
Thoric thoric@realms.game.org
|
|
|
|
|
|
=== Commands
|
|
|
|
All commands are loaded from the file 'commands.dat' in the system directory,
|
|
and put into a hash table of linked lists of type 'struct cmd_type' defined
|
|
in 'mud.h'.
|
|
|
|
The fields of cmd_table are:
|
|
|
|
CMDTYPE * next;
|
|
|
|
A pointer to the next command in this hash bucket.
|
|
|
|
char * name;
|
|
|
|
The name of the command. Command lookup is by partial matching on the
|
|
name; the first match (which also meets level restrictions) is used.
|
|
|
|
DO_FUN * do_fun;
|
|
|
|
The function for this command. A 'do_fun' takes two arguments: the
|
|
character who is issuing the command and the rest of the argument
|
|
string after the command name.
|
|
|
|
sh_int position;
|
|
|
|
The minimum position for using this command.
|
|
|
|
sh_int level;
|
|
|
|
The minimum level for using this command. This is usually used for
|
|
restricting certain commands to immortals.
|
|
|
|
sh_int log;
|
|
|
|
The type of logging to perform. LOG_NORMAL commands are logged just
|
|
when the player is logged. LOG_ALWAYS commands are always logged.
|
|
LOG_NEVER commands are never logged, even if the player is logged.
|
|
|
|
|
|
|
|
=== How to Add a Command
|
|
|
|
(1) Add a line for the command in 'skill_name' in tables.c
|
|
Make sure the command starts with "do_" to keep it easy for other
|
|
coders to find.
|
|
Example line: if ( skill == do_mycmd ) return "do_mycmd";
|
|
|
|
(2) Add a line for the command in 'skill_function' in tables.c
|
|
Make sure to put this in the proper location in the switch statement.
|
|
Example line: if ( !str_cmp( name, "do_mycmd" )) return do_mycmd;
|
|
|
|
(3) Add a 'DECLARE_DO_FUN' line for the command function to 'mud.h'.
|
|
|
|
(4) Write the function and put it into an appropriate '*.c' file.
|
|
|
|
(5) Either use 'cedit <name> create' to create the command online, or
|
|
edit the 'commands.dat' file offline to put the command in the
|
|
appropriate location. You can use 'cedit <name> raise' and
|
|
'cedit <name> lower' to adjust a command's position in the hash table.
|
|
|
|
(6) Write a help section for the function. See 'help.are' for the format of
|
|
help entries. We suggest you start your own file of customized help rather
|
|
than adding into 'help.are'. This will make it easier for you to upgrade
|
|
to future releases of SMAUG (which will have upgraded 'help.are' files).
|
|
SMAUG supports as many help files as you want.
|
|
|
|
That's ALL there is to it!
|
|
|
|
|
|
|
|
=== Social Commands
|
|
|
|
Social commands add to the atmosphere of the game. The social commands are
|
|
contained in 'socials.dat' in the system directory.
|
|
The socials are loaded into a hash table of linked lists which are insert
|
|
sorted when added.
|
|
|
|
The fields of this table are:
|
|
|
|
SOCIALTYPE * next;
|
|
|
|
Pointer to the next social in this hash bucket.
|
|
|
|
char * name;
|
|
|
|
The name of the social command.
|
|
|
|
char * char_no_arg;
|
|
|
|
The message sent to the character when no argument is given.
|
|
|
|
char * others_no_arg;
|
|
|
|
The message sent to others when no argument is given.
|
|
|
|
char * char_found;
|
|
|
|
The message sent to the character when a victim is found.
|
|
|
|
char * others_found;
|
|
|
|
The message sent to others when a victim is found.
|
|
|
|
char * vict_found;
|
|
|
|
The message sent to the victim when a victim is found.
|
|
|
|
char * char_auto;
|
|
|
|
The message sent to the character when the victim IS the character.
|
|
|
|
char * others_auto;
|
|
|
|
The message sent to others when the victim IS the character.
|
|
|
|
All of these messages are 'act' messages and may use any '$' sequences (the
|
|
'act' function is documented in 'act.txt'). If the command is not found in the
|
|
regular command table, the function 'check_social' looks in 'social_index' for
|
|
a match. This is the last stop before rejecting the command.
|
|
|
|
Socials without arguments, such as 'hop', may have NULL for the strings sent
|
|
when arguments are present.
|
|
|
|
|
|
|
|
=== How to Add a Social Command
|
|
|
|
(1) Use the 'sedit' command to add a social online (see 'help sedit')
|
|
or edit 'socials.dat' offline if you wish.
|
|
|
|
That's ALL there is to it.
|