prev | toc | next
 

2.7 User-Created Command Reference

[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

This section provides a quick reference for user-created commands supplied in the standard start-up database (std-db.db). On many MUCKS, several or many of these programs will have been modified or replaced with versions that are either more recent or more specifically attuned to the needs of the MUCK. So syntax may very slightly, but you can reasonably expect to find a command that offers similar functionality. An established MUCK will have many other user-created commands besides these.

Most user-created commands follow the convention of a #help argument: typing the command name followed by #help will display a help screen.   [top]


3WHO
3who

Displays the names, online times, and idle times of all players online, formatted to three columns. A less spammy alternative to WHO.   [top]


@ARCHIVE  |  @ARC
@archive <object>

The archive command essentially `decompiles' an object, outputting all commands and settings that would be necessary to recreate the object. The output is simply printed to your screen: it is not saved in some archive on the MUCK. In order to use an @archive dump, you will need to capture the output, by cutting and pasting, logging with a client, or some other means, and save it to a file on your own computer.

The archived object can then be recreated by quoting or pasting the file into a MUCK window. The most common uses of archive dumps are porting objects between MUCKs or keeping a back-up copy offline to safeguard against loss or corruption of the MUCK's dbase.

The @archive command is recursive: <object> and anything contained by <object> will be archived. Thus, for example, an entire area can be dumped to an archive file by archiving the parent room: all rooms, exits, things, and programs in the area that are owned by the archiving player will become part of the dump.

For non-wizzes, @ wiz props will not be part of the dump. Restricted props (props that begin with a ~ tilde) will be included in the dump, but will not be recreated when the archive is quoted, unless the player is a wizard at that time. Also, exits leading to and from archived rooms or areas cannot be linked when the archive is quoted (though exits within an archived area can). It is normal to see various `Huh?' and `Permission denied' messages when recreating an object from an archive dump.

MPI and MUF that contains hard-coded dbrefs create another portability concern. A dbref, naturally, refers to a specific object on a specific MUCK. The corresponding object on a different MUCK will have a different dbref. To some extent, this problem can be reduced by using pointers and registered names when building, describing, coding, etc. For example, if you (player #123) used a personal version of {look-notify} ...

    {null:{tell:[ {name,me} looked at you. ],#123}}

... the code would result in a `Permission denied' error if you recreated yourself on another MUCK via an archive dump. This could be avoided with either of the following versions:

    {null:{tell:[ {name,me} looked at you. ],this}}
    {null:{tell:[ {name,me} looked at you. ],*Jessy}}

Recreating objects from archive dumps usually sets temporary registered name values on your character, in propdir _reg/tmp. It is not necessary to do anything with this directory, but to conserve dbase space, you might want to remove it after doing a large dump: @set me = _reg/tmp:   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

@BANSITE
@bansite sitename (Prevents logins from the given site)
@bansite !sitename (Re-allows logins from the given site)
@bansite #list (Lists all the sites that are banned)

This command prevents anyone from logging onto the MUCK from a banned site. Along with @toad, it is used to prevent problematic players from connecting to the MUCK. For example, a player might be toaded for violations of the MUCK's acceptable use policy, but continue to log on via guest and alternate characters. @Bansite prevents this by locking out connections from a given site regardless of the character.

Sites may be specified by host name or numeric address. Wildcards may be used in the site name and address. Wildcards are frequently necessary, since many ISP's use dynamic host names for customer's connected via SLIP or PPP connections. For example, an examination of a problematic player's @/ directory might show that the last host used was:

    user12.vnn.luser.com

Doing @bansite user12.vnn.luser.com would be ineffective: in all likelihood, the first one or two sections of the hostname would different the next time the player logged on. In lieu of...

    @bansite user12.vnn.luser.com

... one should do:

    @bansite *vnn.luser.com       - or -
    @bansite *luser.com

@Bansite has two disadvantages: it locks out other players who connect from the same site, and it offers no protection against players who you want to ban but can log on from alternate sites. (Wizard only)   [top]


BOOTALL
bootall

Boots all but your lowest numbered connection. This program does not work well. Cmd-@bootme, which is widely available, is a better choice.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

CHANGE
change <object>=<propname>:/<old>/<new>     - or -
change <object>=<mesgtype>;/<old>/<new>

Edits a property or message, replacing string <old> with string <new>. The syntax varies slightly — that is, it uses either a : colon or ; semi-colon delimiter — for messages and properties. `Messages' are `name', `desc', `succ', `osucc', `fail', `ofail', `drop', and `odrop'. Examples:

    change here=_arrive/check:/444/445
    change me=desc;/top hat/beret
  [
top]


@CHECK
@check

Checks all objects in your location for completeness, with the definition of `complete' being adjusted as appropriate for the object type. For example, exits are checked for links, descs, succs, osuccs, and odrops. Locked exits are checked for fails and ofails. The command prints a list of objects that need further work.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

@DOING
@doing <msg>

Sets your `sticky do' string... that is, the message shown with your name and times with commands WHO and whodo. The original purpose of doing strings was to provide a way for people to let others know what they are doing at the moment. Rather than frequently updating their doing string, most players set it to some (presumably) witty or interesting `bumpersticker' type remark, and leave it.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

EDIT
edit <object> = <prop>     or,
edit <object> = @<mesgtype>

This unusual and useful command is works only with the TinyFugue UNIX client. Entering the command and parameters pulls the value of <prop> or <mesgtype> into your client window, with the cursor positioned for editing. You can then use arrow keys, backspace, etc., to edit the property value. Pressing `enter' stores the new property value. <Mesgtype> can be `name', `desc', `succ', `osucc', `fail', `ofail', `drop', or `odrop'.

Before using edit, you must define the following TinyFugue macro:

    /def -fg -p100 -t"##edit> *" = /grab %-1

Like most TinyFugue settings, this setting is `volatile'... It is not retained between TinyFugue sessions. To avoid having to redefine it each time, put the definition line in TinyFugue's resource file, .tfrc, so that it will be defined each time you start the client.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

FETCH  |  RETRIEVE  |  GRAB
fetch <object 1> from <object 2>

Removes <object 1> from <object 2>. You must be carrying <object 2> and it must not be locked or container_locked against you. The object names do not have to be typed completely: partial strings sufficient to distinguish the object from others you are carrying will work. See also put, below.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

LOOKAT
lookat <player's> <object>

Does a `possessive look', showing you the description of an object being carried by another player. Example: lookat tarka's linux club pin.   [top]


LSEDIT  |  LSE
lsedit <object> = <list name>

Puts you in an interactive list editor. See Sections 2.1 and 4.1 for more information.   [top]


LSPROP  |  LSP
lsprop <object> [= <path>]

Lists all properties on object and their values. If a path is specified, it will list only properties on that path. Examples:

    lsp me ........... Lists all properties on your character
    lsp me = _descs .. Lists all properties in your _descs/ directory

[top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

PROPCP  |  CP
cp <object 1>=<prop 1>,<object 2>=<prop 2>

Copies <prop 1> and its value from <object 1> to <prop 2> on <object 2>. This example copies the @succ of exit `out' to another exit:

    cp out=_/sc,#1344=_/sc

Propcp handles partial input well. If <object 1> is omitted, it assumes <prop 1> is on the user. If <object 2> is omitted, it assumes the destination object is the same as <object 1>... i.e., that you are copying from one prop to another on the same object. If <prop 2> is omitted, is assumes that it is the same as <prop 1>... i.e., that you are copying a property on one object to the same property on a different object. If more information is omitted, the program will ask for it. Rather than providing all — or even any — of the information on the command line, one can simply type cp, and respond to prompts. You must control both objects. See also propmv, below.   [top]


PROPMV  |  MV
mv <object 1>=<prop 1>,<object 2>=<prop 2>

Moves <prop 1> and its value from <object 1> to <prop 2> on <object 2>, erasing <prop 1>. This example moves the fail message on `out' to the ofail:

    mv out=_/fl,out=_/ofl

Propmv handles partial input well. If <object 1> is omitted, it assumes <prop 1> is on the user. If <object 2> is omitted, it assumes the destination object is the same as <object 1>... i.e., that you are moving a value from one prop to another on the same object. If <prop 2> is omitted, is assumes that it is the same as <prop 1>... i.e., that you are moving a property on one object to the same property on a different object. If more information is omitted, the program will ask for it. Rather than providing all — or even any — of the information on the command line, one can simply to mv, and respond to prompts. You must control both objects. See also propcp, above.   [top]


@PURGE
@purge <player> = yes

Recycles all of <player's> belongings. Most often, this will be used before @toad. It is a good idea to do @owned <player> first, and make suitable arrangements. Exits leading to rooms owned by the player will become unlinked, and should either be relinked or recycled. Public building — or rooms that are jointly used by the player and others — should be chowned to someone else. Mortals my purge only themselves; wizards may purge any player.   [top]


PUT  |  REPLACE  |  STUFF
put <object 1> in <object 2>

Moves <object 1> from your inventory into the contents of <object 2>. You must be holding both objects, and <object 2> must not be locked or container_locked against you. Partial names for both objects will work. See also fetch, above.   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

READ  |  WRITE  |  EDIT  |  ERASE  |  PROTECT

These commands operate bulletin boards that run from the standard bulletin board program, gen-mesgboard. Read is also an in-server alias for look. So, in a room that contains a bulletin board, read is a bulletin board command; elsewhere, it does a look.

  readShow the headers of all posted messages.
  read newShow headers of all messages less than 2 days old.
  read recentShow headers of all messages after last read messages.
  read <keyword>Show headers of all messages with matching <keyword>.
  read -<days>Show headers of all messages fewer than <days> old.
  read <mesgnum>Read the message referred to by the given message number.
  read - Read the next message, after the last one you read.
  read -recentRead all messages after last read message, in one continuous stream.
  writePost a message. Prompts for subject and keywords.
  write <subject>Post a message with given <subject>. Prompts for keywords.
  write <subject>=<keywords> Post a message with given <subject> and <keywords>.
  erase <message num> Lets message owner erase a previously written message.
  editmesg <message num> Lets message owner edit a previously written message.
  protect <message num> Lets a wizard protect a message from auto-expiration.
[
top]


@REGISTER  |  @REG
@reg <object> = <registered name>
@reg #me <object> = <registered name>
@reg #prop <target object>:<propdir> <object> = <registered name>

Sets a registered name for <object>. (See Section 2.1.5 for more information on registered names).

The default format, @reg <object> = <registered name>, creates a global registered name by setting property _reg/<reg name> on room #0 with the value of <object's> dbref. Because a property is being set on room #0, this will result in a `Permission denied' error for a mortal player (unless she happens to own room #0). The following example, which would be typed by a wizard, gives the gen-nothing program the registered name of nothing; players would then be able to link actions to it by typing @link <action> = $nothing

    @reg gen-nothing = nothing

Registered names can be set on your character rather than on room #0, in which case they will be be meaningful only for you, by using the #me argument. The following example, which could be typed by a mortal, or by a wizard who wants to create a personal registered name, gives a puppet object the registered name `pup'. It could then be specified by $pup, rather than its dbref, as in @tel $pup = me.

    @reg #me squiggy = pup

You can over-ride the target propdir, from _reg/ to anything else, by using the #prop argument. If the target propdir does not begin with _reg/ , the setting will not be usable as a registered name; this would simply be a way to set a property with data type dbref rather than string (which could also be accomplished with @propset). The following example sets property _disconnect/cleanup in the current room with the dbref of program gen-sweeproom.

    @register #prop here:_disconnect gen-sweeproom=cleanup

The same thing could be accomplished by typing:

    @propset here=dbref:_disconnect/cleanup:<#dbref of gen-sweeproom>

This example makes a setting in sub-propdir _reg/lib, giving the lib-strings library program the registered name $lib/strings.

    @register #prop #0:_reg/lib lib-strings = strings

The same thing could be accomplished by typing:

    @register lib-strings = lib/strings     - or -
    @propset #0 = dbref:_reg/lib/strings:<#dbref of lib-strings>

[top]


@RESTART
@restart

This command kills all active programs and restarts any set Autostart. It works by forcing the user to do @kill all, which means that God may not use it if the muck is running with the compile-time option god_priv. (Wizard only)   [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

@SIZE
@size <object>

Calculates the memory used by <object>. Note that if cmd-@sizer is not set Wizard, the memory used by Wizard props will not be included in the total.[
top]


SWEEP
sweep (sweeps all sleepers in the room)
sweep <player> (sweeps <player>)

Sends home all players in a room who are sleeping, and who are not owners of the room. It also sends their contents that they do not own home when it homes them. If you control the room, you may also sweep online players who do not control the room.

The following prop settings, on either yourself or a room, as appropriate, are used to configure the command:

    _sweep/sweep message shown when you sweep the room.
    _sweep/swept message shown if you are swept.
    _sweep/fmt/ propdir where sweep-player formats are stored.
    _sweep/fmt/std message shown if you sweep an individual player.
    _sweep/to where players swept in this room go to. ie: room #1234
    _sweep/authorized  players authorized to sweep this room. Format: #12 #432 #190
    _sweep/immune players immune to general sweeps in this room.
    _sweep/public? if `yes' means this room in sweepable by anyone.
    _sweep/immune? If `yes', means this THING doesn't home from inventory when the player is swept.
[
top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

UPTIME
uptime

Displays the time since the server was last restarted. [top]


[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

@VIEW
@view <program>

Displays documentation for <program>, if the program is appropriately configured.

To configure a program for use with @view, set it Link_OK and set the program's _docs property with a string that emulates a command that would show the documents. The most common way to do this is to set the _docs property to a command that @lists the header comment of the program. For example, if the first 54 lines of program claimhome.muf(#47) are a comment with documentation, one would configure the program for use with @view by typing:

    @set #47 = L
    @set #47 = _docs:@list #47 = 1 - 54

Other command formats are possible. Another example:

    @set #47 = _docs:info claimhome

[top]



[A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ]

@WHEN
@when <object>

Displays timestamp information for <object>: time created, time last modified, time last used, and usecount. <object> defaults to `here'. You must control <object>

prev | toc | top | next