Home
About
Policies
FAQ
Forums
Registration
Password Recovery

Exit

From Tapestries MUCK

Revision as of 00:39, 10 February 2009 by Spicycat (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

exits are objects that are attached to rooms, players, or things. They cause a command by their name to become available that either executes code, or moves a player to another room, or some combination of both.

action is a term commonly used to refer to an exit that does not take a player somewhere, but instead is used to perform some other action. Normally this is done with MPI or a MUF program.

exits can be invoked by players as a command by typing the name of that action.

Exit Names

exit are unusual in that they have more than one name. This is to allow you to offer alternative names for a command with out having to have an object for each name. The names are specified any time you create or name an exit, and use semi-colons (;) to separate them. A common example is to have a short name for a direction. Creating an exit that goes north to another room is commonly done as:

@open north;n=#dbref

Then a user could type either north or n to go to that room.

When trying to edit an exit, you can not refer to it by it's full multiple name, such as "north;n", you instead have to refer to one of them, such as "north". Sometimes this can be a problem if you have multiple exits with the same name in an area, and you need to refer to them by dbref.

Creating an Exit

exits are created with the following commands:

  • @open - To create an exit in the current room, typically to another one.
  • @action - To create an exit on an object other than the current room, typically yourself or on a thing.

Moving an Exit

exits are moved with the @attach command.

Links

exits are linked to a destination. This can either be a room, an thing, or a program.

  • In the case of a room, the player using the exit will be put in that room.
  • In the case of a program, the program will be executed.
  • In the case of an object, the object will be brought to the exit.

An exit's links are managed with:

  • @link - Set the link of an exit.
  • @unlink - Remove the link of an exit.
  • @relink - Attempt to @unlink and then @link in one command.

Locks

exits can be locked with the @lock command. Players attempting to use an exit and failing the lock will trigger the fail and ofail.

Messages

exits make use of the success, osuccess, odrop, fail, and ofail messages.

  • If using an exit succeeds, it triggers the success message to the player that executed it, the osuccess to the room the player started in, and the odrop message in the room that the player ended up in.
    Additionally the message player has left and player has arrived will be printed unless the exit is set dark, or the player does not actually change rooms.
  • If the player is denied accesss, the fail message will be reported to the player executing it, and the ofail will be reported to the room.

Visibility

To set a room so that its exits are visible, the command is:

@succ exit=@9

To hide an exit from the list of visible exits, the command is:

@set exit=_visible?:no

The dark flag (@set exit=d) is used to suppress the "X has arrived" "X has departed" messages. It does not affect the visibility of an exit.

Examples

Creating an Action

You can create an action using the @action command. Now lets say you have a room with a dbref of #1234 that you want to be able to easily change the wall color in. Although you can do much much more with actions than this, everyone needs to start with something simple and understandable. A simple action that does lets you do that is created below.

@action wallcolor=#1234=wallcolor  «- Here we create the action and attach it to the room
@link wallcolor=$nothing  «- You need to do this for it to work
@succ wallcolor={Exec!:_cmds/{&cmd}}  «- Here we tell the action to execute this command for success
@osucc wallcolor={Exec!:_cmds/o{&cmd}}  «- This tells the action to print something to everyone else
@set wallcolor=_cmds/wallcolor:You change the wall color to {store:{&arg},_wallcolor,#1234}
@set wallcolor=_cmds/owallcolor:changes the wall color to {&arg}

Now you just include something like "The walls are {prop:_wallcolor}" and it would show whatever was last set when someone typed wallcolor somecolor.

Multiple Commands on one Action

While changing the wall color is just grand, you might want to change the floor color as well. Since you have big plans, you don't want to use up too much of your quota doing this. You can take the action just made and add to it like this:

@name wallcolor=wallcolor;floorcolor  «- Changes wallcolor to answer to wallcolor and floorcolor
@set wallcolor=_cmds/floorcolor:You change the floor color to {store:{&arg},_floorcolor,#1234}
@set wallcolor=_cmds/ofloorcolor:changes the floor color to {&arg}

Now you just include something like "The floors are {prop:_floorcolor}" and it would show whatever was last set. The wallcolor somecolor command would still exist for changing the wall colors, but now you also have a floorcolor somecolor for changing the floors.

Personal tools
Namespaces
Variants
Actions
navagation
information
wiki
Toolbox