User Tools

Site Tools


building_guide

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
building_guide [2010/01/26 03:41] zobeidbuilding_guide [2010/01/26 04:17] (current) zobeid
Line 8: Line 8:
 A flag is a simple on-or-off switch applied to an object. The same flag can have different effects on different types of objects. For example, D stands for DARK when applied to rooms, things or actions. D stands for DEBUG when applied to a MUF program. You can get a full list of flags by typing: **''help flags''** A flag is a simple on-or-off switch applied to an object. The same flag can have different effects on different types of objects. For example, D stands for DARK when applied to rooms, things or actions. D stands for DEBUG when applied to a MUF program. You can get a full list of flags by typing: **''help flags''**
  
-Flags are set or cleared using the @set command:+Flags are set or cleared using the **''@set''** command:
  
   @set <object>=<flag>   @set <object>=<flag>
 +
 . . .and cleared by adding an exclamation point (!) which stands for "not". . . . . .and cleared by adding an exclamation point (!) which stands for "not". . .
 +
   @set <object>=!<flag>   @set <object>=!<flag>
 +
 An example may help. Let's imagine we have a mushroom that we want to make sticky, but not dark: An example may help. Let's imagine we have a mushroom that we want to make sticky, but not dark:
  
   @set mushroom=s   @set mushroom=s
   @set mushroom=!d   @set mushroom=!d
 +
 You can see the flags on an object (and a lot of other useful information) anytime by using **''examine''** on it. (You can also use **''ex''** for short -- remember that most commands can be shortened in this way!) The same command also is used for viewing properties. You can see the flags on an object (and a lot of other useful information) anytime by using **''examine''** on it. (You can also use **''ex''** for short -- remember that most commands can be shortened in this way!) The same command also is used for viewing properties.
  
-A property is a piece of information assigned a name and tacked onto an object. The types of information can be numbers, text strings, dbrefs, lock values. . . but most often they are strings. Property names work similar to the filesystem in a computer, so you can organize properties into directories. Properties are also set using the @set command. Here's an example:+A property is a piece of information assigned a name and tacked onto an object. The types of information can be numbers, text strings, dbrefs, lock values. . . but most often they are strings. Property names work similar to the filesystem in a computer, so you can organize properties into directories. Properties are also set using the **''@set''** command. Here's an example:
  
   @set car=appearance/paintcolor:red   @set car=appearance/paintcolor:red
Line 26: Line 30:
  
 You can view properties using **''examine''**. It requires a wildcard to tell the MUCK which properties on the object you want to see. To see all the properties on the object youwould enter **''%%ex car=/**%%''**. To see only the contents of "appearance" you would enter **''%%ex car=appearance/**%%''**. The more you learn about the use of Unix-style wildcards, the more flexibly you can use this command. You can view properties using **''examine''**. It requires a wildcard to tell the MUCK which properties on the object you want to see. To see all the properties on the object youwould enter **''%%ex car=/**%%''**. To see only the contents of "appearance" you would enter **''%%ex car=appearance/**%%''**. The more you learn about the use of Unix-style wildcards, the more flexibly you can use this command.
 +
 ====== Basic Room Creation ====== ====== Basic Room Creation ======
  
Line 79: Line 84:
  
 Redesc is the name of your proplist. It could be named anything, but the Morph program uses "redesc", and it has become a convention to use as the name for any description proplist. The part that reads **''{list:redesc}''** is a little bit of MPI code. It's using MPI's **''{list:}''** function to read redesc from your room and show it to the player. Redesc is the name of your proplist. It could be named anything, but the Morph program uses "redesc", and it has become a convention to use as the name for any description proplist. The part that reads **''{list:redesc}''** is a little bit of MPI code. It's using MPI's **''{list:}''** function to read redesc from your room and show it to the player.
- 
 ====== ANSI Color and Neon Color Codes ====== ====== ANSI Color and Neon Color Codes ======
  
Line 86: Line 90:
   @desc my shoe=You see a ^red^bright ruby red^normal^ slipper.   @desc my shoe=You see a ^red^bright ruby red^normal^ slipper.
  
-When using color in action messages (@succ, @fail, etc.) you must use the MPI functions ''{ansi:}'' or ''{color:}'' to make them appear. For example:+When using color in action messages (**''@succ''****''@fail''**, etc.) you must use the MPI functions **''{ansi:}''** or **''{color:}''** to make them appear. For example:
  
   @succ aft={color:You move aft through the ^green^green^normal^ corridor.}   @succ aft={color:You move aft through the ^green^green^normal^ corridor.}
Line 97: Line 101:
  
 Still, most of the common text colors and background colors will work in some way. Still, most of the common text colors and background colors will work in some way.
- 
 ====== Linking Rooms With Exits ====== ====== Linking Rooms With Exits ======
  
Line 104: Line 107:
   @action <name>=<source>[,<destination>][=<regname>]   @action <name>=<source>[,<destination>][=<regname>]
  
-The destination is optional, if you don't supply one the exit will be unlinked -- it has no destination, but you can add one later using @link. The regname is also optional and most often used by MUF programs. So, for example. . . Let us say you want to create an exit from where you are, going north to a room with the dbref number of #2345. Your command might look like:+The destination is optional, if you don't supply one the exit will be unlinked -- it has no destination, but you can add one later using **''@link''**. The regname is also optional and most often used by MUF programs. So, for example. . . Let us say you want to create an exit from where you are, going north to a room with the dbref number of #2345. Your command might look like:
  
   @action North;n=here,#2345   @action North;n=here,#2345
  
-When naming exits, you should understand the conventions used by the MUCK. The name of an exit can be divided up using semicolons (;). Each part of the name then can be recognized by the MUCK to trigger the action. Let's say, for example, that you create an exit going into a building and name it: North;n;enter;in. A player will be able to use it by entering north or n or enter or in. However, if you have made exits visible in your room, only the name up to the first semicolon will be shown.+When naming exits, you should understand the conventions used by the MUCK. The name of an exit can be divided up using semicolons (;). Each part of the name then can be recognized by the MUCK to trigger the action. Let's say, for example, that you create an exit going into a building and name it: **''North;n;enter;in''**. A player will be able to use it by entering **north** or **n** or **enter** or **in**. However, if you have made exits visible in your room, only the name up to the first semicolon will be shown.
  
 We also have an often-used convention of putting abbreviations in parenthesis. A very typical kind of exit would be: We also have an often-used convention of putting abbreviations in parenthesis. A very typical kind of exit would be:
Line 114: Line 117:
   Northwest (NW);northwest;nw   Northwest (NW);northwest;nw
  
-In this case the player sees Northwest (NW) in the room description, and the exit is triggered by typing northwest or nw. It would also be triggered if the user entered "northwest (nw)", but nobody is ever likely to do that.+In this case the player sees **Northwest (NW)** in the room description, and the exit is triggered by typing **''northwest''** or **''nw''**. It would also be triggered if the user entered "**''northwest (nw)''**", but nobody is ever likely to do that.
  
 Sometimes an abbreviation is based on two or three words, and this can cause confusion. For example, let's say we have an exit leading into a "Turbo Lift" and we want ot trigger it with TL. We might be tempted to name our exit this way: Sometimes an abbreviation is based on two or three words, and this can cause confusion. For example, let's say we have an exit leading into a "Turbo Lift" and we want ot trigger it with TL. We might be tempted to name our exit this way:
Line 120: Line 123:
   @action (T)urbo (L)ift;tl;lift=here   @action (T)urbo (L)ift;tl;lift=here
  
-**This is wrong!** It looks messy and can be confusing. The player may think: "Am I supposed to type T or L here?" The preferred way to name it would be like this:+//**This is wrong!**// It looks messy and can be confusing. The player may think: "Am I supposed to type T or L here?" The preferred way to name it would be like this:
  
   @action Turbo Lift (TL);tl;lift=here   @action Turbo Lift (TL);tl;lift=here
Line 127: Line 130:
  
 Incidentally, exits can be linked to objects other than rooms. An exit linked to a MUF program is usually referred to as an "action", although the MUCK doesn't really treat them any differently. Instead of moving the player, trigging an action causes the MUF program to run. Incidentally, exits can be linked to objects other than rooms. An exit linked to a MUF program is usually referred to as an "action", although the MUCK doesn't really treat them any differently. Instead of moving the player, trigging an action causes the MUF program to run.
- 
 ====== Exit Messages ====== ====== Exit Messages ======
  
Line 147: Line 149:
   @odrop lr=wanders in from the kitchen.   @odrop lr=wanders in from the kitchen.
  
-Since the doorway is not locked, the @fail and @ofail messages are not needed here. @drop likewise is not often used. Note that exits can have an @desc, and players can look at them. Now, when I use this exit, I will first see:+Since the doorway is not locked, the **''@fail''** and **''@ofail''** messages are not needed here. **''@drop''** likewise is not often used. Note that exits can have an **''@desc''**, and players can look at them. Now, when I use this exit, I will first see:
  
   You wander into the living room.   You wander into the living room.
Line 159: Line 161:
   Zobeid wanders in from the kitchen.   Zobeid wanders in from the kitchen.
  
-These messages make it easier for everyone to understand what is happening around them. When building your area, you should use the @check command to see which exits are missing imporant message. Simply type @check and you will get a list of all objects in the room (including the room itself, but not including players) which are missing some of their messages, and which messages they don't have.+These messages make it easier for everyone to understand what is happening around them. When building your area, you should use the @check command to see which exits are missing imporant message. Simply type **''@check''** and you will get a list of all objects in the room (including the room itself, but not including players) which are missing some of their messages, and which messages they don't have.
  
 You should also be aware that these messages can include MPI code which will execute. Therefore, you can create an action linked to $nothing, but with MPI code in the @succ message. This is a commonly used way of creating MPI-based commands. You should also be aware that these messages can include MPI code which will execute. Therefore, you can create an action linked to $nothing, but with MPI code in the @succ message. This is a commonly used way of creating MPI-based commands.
  
-All messages are set as properties on the object, and in fact you can also set them using the generic @set command. For example, the following commands are equivalent:+All messages are set as properties on the object, and in fact you can also set them using the generic **''@set''** command. For example, the following commands are equivalent:
  
   @succ d=You go down the stairs.   @succ d=You go down the stairs.
   @set d=_/sc:You go down the stairs.   @set d=_/sc:You go down the stairs.
- 
 ====== Making Exits Visible or Hidden ====== ====== Making Exits Visible or Hidden ======
  
-If you are new to building, one of the first things you should do in your room is make exits visible. The easiest way is using option 2 in Editroom. It can also be set using a property: @succ here=@$obvexitsThis is not required, but it makes building easier when you can see what you are doing. If you want to make the exits invisible later (so that other players don't know what they are), you can toggle them off again using Editroom, or by clearing the property (@succ here=). Leaving the exits visible is usually a good idea, unless you have some reason in mind why other players shouldn't see them (like in a maze, maybe). For building in public areas, visible exits are practically a requirement.+If you are new to building, one of the first things you should do in your room is make exits visible. The easiest way is using option 2 in Editroom. It can also be set using a property: 
 + 
 +  @succ here=@$obvexits 
 + 
 +This is not required, but it makes building easier when you can see what you are doing. If you want to make the exits invisible later (so that other players don't know what they are), you can toggle them off again using Editroom, or by clearing the property (**''@succ here=''**). Leaving the exits visible is usually a good idea, unless you have some reason in mind why other players shouldn't see them (like in a maze, maybe). For building in public areas, visible exits are practically a requirement.
  
 Also note... If you want most exits in a room to be visible, but want to hide a particular one, you can set a DARK (D) flag on it: Also note... If you want most exits in a room to be visible, but want to hide a particular one, you can set a DARK (D) flag on it:
Line 178: Line 183:
 This can also be done using Editroom: select X to edit exits, then select the number of the exit you want to edit, then D to toggle the DARK flag or or off. This can also be done using Editroom: select X to edit exits, then select the number of the exit you want to edit, then D to toggle the DARK flag or or off.
  
-If you are a creating a role-playing or puzzle area with hidden exits, you should make them reasonably findable. A good rule of thumb is that the exit name should at least be a word appearing somewhere in the room desc, unless you have prepared some other clue for the players. If you have an exit that is really private and others are not intended to use, it is a very good idea to @lock it. The management cannot guarantee players won't be able to detect your exit by some means, so putting @lock on your private exits or paths is just common sense. +If you are a creating a role-playing or puzzle area with hidden exits, you should make them reasonably findable. A good rule of thumb is that the exit name should at least be a word appearing somewhere in the room desc, unless you have prepared some other clue for the players. If you have an exit that is really private and others are not intended to use, it is a very good idea to **''@lock''** it. The management cannot guarantee players won't be able to detect your exit by some means, so putting **''@lock''** on your private exits or paths is just good sense.
 ====== Using @Excavate ====== ====== Using @Excavate ======
  
Line 190: Line 194:
   @excavate Inside the Hut=Enter Hut;enter;hut=Outside;out;o   @excavate Inside the Hut=Enter Hut;enter;hut=Outside;out;o
  
-It creates a room named "Inside the Hut", creates an exit named "Enter Hut;enter;hut" leading into the room, and creates another exit named "Outside;out;o" leading back out of it. You should note that many flags and settings are copied from the room you are in and applied to the new room. You can edit a room, get the settings you like, and then use @excavate repeatedly to create a whole area with the same settings+It creates a room named "Inside the Hut", creates an exit named "Enter Hut;enter;hut" leading into the room, and creates another exit named "Outside;out;o" leading back out of it. You should note that many flags and settings are copied from the room you are in and applied to the new room. You can edit a room, configure it with the settings you like, and then use **''@excavate''** repeatedly to create a whole area with the same settings.
- +
-When you are creating new rooms using the R command in Editroom, it will prompt you for the same information: first the name of the new room, then the name of an exit leading into the room, and then the name of an exit leading back out. So, you can do exactly the same kind of building as you would with @excavate.+
  
 +When you are creating new rooms using the R command in Editroom, it will prompt you for the same information: first the name of the new room, then the name of an exit leading into the room, and then the name of an exit leading back out. So, you can do exactly the same kind of building as you would with **''@excavate''**.
 ====== Basic Things ====== ====== Basic Things ======
  
-Most players soon discover that they can @create things. Your basic object of type "thing" can be carried around by players in their inventory, or dropped in a room. You can use @desc to add a description and look at it just as you would look at a player. This is fine for simple props, but you can also do more sophisticated things with things.+Most players soon discover that they can **''@create''** things. Your basic object of type "thing" can be carried around by players in their inventory, or dropped in a room. You can use @desc to add a description and look at it just as you would look at a player. This is fine for simple props, but you can also do more sophisticated things with things.
  
 A thing can contain other things, and it also can have exits or actions attached to it. That means you could carry around a portable "doorway" leading to another room, or you could carry a thing with a MUF action attached. The action is usuable when you are carrying the thing or when the thing is in the same room with you. A thing can contain other things, and it also can have exits or actions attached to it. That means you could carry around a portable "doorway" leading to another room, or you could carry a thing with a MUF action attached. The action is usuable when you are carrying the thing or when the thing is in the same room with you.
  
-If you set the STICKY (or S) flag on a thing, it will return to its home location when it is dropped. The home is set using the @link command. This is useful when creating objects that other players may use temporarily. For example, in your spaceship you could have space suits set STICKY and @linked to the airlock. Other players could take and wear them, but as soon as they drop the suit it would come back to your ship.+If you set the **STICKY** (or S) flag on a thing, it will return to its home location when it is dropped. The home is set using the **''@link''** command. This is useful when creating objects that other players may use temporarily. For example, in your spaceship you could have space suits set STICKY and **''@link''**ed to the airlock. Other players could take and wear them, but as soon as they drop the suit it would come back to your ship.
  
-You can also use @lock to control who is able to pick up your thing. To make an object immobile, you could use these commands:+You can also use **''@lock''** to control who is able to pick up your thing. To make an object immobile, you could use these commands:
  
   @link mything=here   @link mything=here
   @lock mything=me   @lock mything=me
  
-Now nobody but you can pick it up. (You could also lock it to "me&!me" -- me and not me -- a conditon that can never be met, which would even prevent you from accidentally picking it up.) However, you or a wizard could still move it using @teleport. Linking your thing to the room means if it ever does somehow get moved, it ought to eventually be swept back home where it belongs.+Now nobody but you can pick it up. (You could also lock it to "me&!me" -- me and not me -- a conditon that can never be met, which would even prevent you from accidentally picking it up.) However, you or a wizard could still move it using **''@teleport''**. Linking your thing to the room means if it ever does somehow get moved, it ought to eventually be swept back home where it belongs.
  
 ====== Containers ====== ====== Containers ======
Line 220: Line 223:
  
 Please see the section on locks if you aren't sure how they work. Please see the section on locks if you aren't sure how they work.
- 
 ====== DARK Flag and Fake Contents ====== ====== DARK Flag and Fake Contents ======
  
-When the DARK (D) flag is set on a room, the description of the room is still shown, but the contents of the room are not visible. When the DARK flag is set on a thing, the thing won't be seen in the content listing of the room, container or player where it's located. When DARK is set on an exit, it will not appear in the obvious exits listing of the room (as shown by $ObvExits).+When the **DARK** (D) flag is set on a room, the description of the room is still shown, but the contents of the room are not visible. When the **DARK** flag is set on a thing, the thing won't be seen in the content listing of the room, container or player where it's located. When **DARK** is set on an exit, it will not appear in the obvious exits listing of the room (as shown by **$ObvExits**).
  
 You can set a property on your container: You can set a property on your container:
Line 271: Line 273:
  
 It is also possible to create special locks using MUF programs. However, that is an advanced technique. In such cases you should refer to the MUF's instructions to see how it must be set up. It is also possible to create special locks using MUF programs. However, that is an advanced technique. In such cases you should refer to the MUF's instructions to see how it must be set up.
- 
 ====== Environment Rooms ====== ====== Environment Rooms ======
  
Line 280: Line 281:
 You only have to set this once in the parent room, you don't have to set it on each sub-room. BANISH is another program that recognizes parent rooms. So, you can banish someone from the parent, and they are automatically kept out of the sub-rooms too. You only have to set this once in the parent room, you don't have to set it on each sub-room. BANISH is another program that recognizes parent rooms. So, you can banish someone from the parent, and they are automatically kept out of the sub-rooms too.
  
-Another neat trick is your ability to enter and exit rooms. If you are in a sub-room, you can "exitinto the parent. There you can see your sub-rooms listed and easily "enterone of them. This is very handy when building large areas and working on many rooms.+Another neat trick is your ability to enter and exit rooms. If you are in a sub-room, you can **''exit''** into the parent. There you can see your sub-rooms listed and easily **''enter''** one of them. This is very handy when building large areas and working on many rooms.
  
-You can use Editroom to change the parent of a room you have built. When making a new room, the default parent is the same parent of the room you were already in. This means once you've created a parent room and your first sub-room, you can build with Editroom or @excavate and all the new rooms will go under the same parent.+You can use Editroom to change the parent of a room you have built. When making a new room, the default parent is the same parent of the room you were already in. This means once you've created a parent room and your first sub-room, you can build with Editroom or **''@excavate''** and all the new rooms will go under the same parent.
  
-Finally you can use @tel to change the parent of a room. For example, let's say you have created a parent room for your apartment. You already have made a kitchen and you want to set the parent for it:+Finally you can use '**'@tel''** to change the parent of a room. For example, let's say you have created a parent room for your apartment. You already have made a kitchen and you want to set the parent for it:
  
   @tel (dbref of kitchen)=(dbref of parent)   @tel (dbref of kitchen)=(dbref of parent)
building_guide.1264477270.txt.gz · Last modified: 2010/01/26 03:41 by zobeid