| 19 | | If there are any errors in the help text, please notify a wizard in the |
|---|
| 20 | | game, or send mail to pennmush-bugs@pennmush.org, which is the address |
|---|
| 21 | | of the team who develop PennMUSH (and its distributed help files) but |
|---|
| 22 | | probably have no relation to this MUSH in particular. |
|---|
| | 19 | If there are any errors in the help text, please notify a wizard in |
|---|
| | 20 | the game, or send mail to pennmush-bugs@pennmush.org, which is the |
|---|
| | 21 | address of the team who develop PennMUSH (and its distributed help |
|---|
| | 22 | files) but probably have no relation to this MUSH in particular. |
|---|
| 26 | | If you are new to MUSHing, the help files may seem confusing. Most of |
|---|
| 27 | | them are written in a specific style, however, and once you understand |
|---|
| 28 | | it the files are extremely helpful. |
|---|
| 29 | | |
|---|
| 30 | | The first line of a help file on a command or function will normally be |
|---|
| 31 | | the syntax of the command. "Syntax" means the way the command needs to |
|---|
| 32 | | be typed in. In the help files, when the syntax of a command is described, |
|---|
| 33 | | square brackets [] mean that that part of the command is optional and |
|---|
| 34 | | doesn't have to be typed in. Also, pointy brackets <> mean that that part |
|---|
| 35 | | of the command needs to be replaced with a specific piece of information. |
|---|
| | 26 | If you are new to MUSHing, the help files may seem confusing. Most |
|---|
| | 27 | of them are written in a specific style, however, and once you |
|---|
| | 28 | understand it the files are extremely helpful. |
|---|
| | 29 | |
|---|
| | 30 | The first line of a help file on a command or function will normally |
|---|
| | 31 | be the syntax of the command. "Syntax" means the way the command |
|---|
| | 32 | needs to be typed in. In the help files, when the syntax of a |
|---|
| | 33 | command is described, square brackets [] mean that that part of the |
|---|
| | 34 | command is optional and doesn't have to be typed in. Also, pointy |
|---|
| | 35 | brackets <> mean that that part of the command needs to be replaced |
|---|
| | 36 | with a specific piece of information. |
|---|
| 61 | | There is help available on every standard MUSH command. If you see a command |
|---|
| 62 | | or someone mentions one to you that you want to know more about, try just |
|---|
| 63 | | typing: help <command name> -- that will most likely bring up the help |
|---|
| 64 | | file on it. |
|---|
| 65 | | |
|---|
| 66 | | Please note that just because there is help available on a command does |
|---|
| 67 | | not necessarily mean that the command can be used on this MUSH. The |
|---|
| 68 | | siteadmin of the MUSH can choose to turn off some commands. If there's |
|---|
| 69 | | something that you would like available, and it isn't, please ask a wizard |
|---|
| 70 | | why not. |
|---|
| | 63 | There is help available on every standard MUSH command. If you see a |
|---|
| | 64 | command or someone mentions one to you that you want to know more |
|---|
| | 65 | about, try just typing: help <command name> -- that will most likely |
|---|
| | 66 | bring up the help file on it. |
|---|
| | 67 | |
|---|
| | 68 | Please note that just because there is help available on a command |
|---|
| | 69 | does not necessarily mean that the command can be used on this |
|---|
| | 70 | MUSH. The siteadmin of the MUSH can choose to turn off some |
|---|
| | 71 | commands. If there's something that you would like available, and it |
|---|
| | 72 | isn't, please ask a wizard why not. |
|---|
| 107 | | Action lists are simply lists of actions that are all executed at once. |
|---|
| 108 | | You can have an action list in a user-defined command, in one of the |
|---|
| 109 | | a-attributes, or in many other commands. Action lists may not be |
|---|
| 110 | | executed directly from a client, except in the case of a command |
|---|
| | 109 | Action lists are simply lists of actions that are all executed at |
|---|
| | 110 | once. You can have an action list in a user-defined command, in one |
|---|
| | 111 | of the a-attributes, or in many other commands. Action lists may not |
|---|
| | 112 | be executed directly from a client, except in the case of a command |
|---|
| 114 | | Actions in an action list are separated by semicolons. Each action is |
|---|
| 115 | | simply a separate MUSH command. If part of the action (such as the text |
|---|
| 116 | | in an @emit, for example) contains a semi-colon or comma, you may need |
|---|
| 117 | | to enclose that part in curly braces {}. You can also nest action lists |
|---|
| 118 | | inside each other by enclosing each action list in braces {}. |
|---|
| | 116 | Actions in an action list are separated by semicolons. Each action |
|---|
| | 117 | is simply a separate MUSH command. If part of the action (such as |
|---|
| | 118 | the text in an @emit, for example) contains a semi-colon or comma, |
|---|
| | 119 | you may need to enclose that part in curly braces {}. You can also |
|---|
| | 120 | nest action lists inside each other by enclosing each action list in |
|---|
| | 121 | braces {}. |
|---|
| 147 | | Objects can inherit attributes from other objects through the |
|---|
| 148 | | use of parents. An object's parent, its parent's parent, its |
|---|
| 149 | | parent's parent's parent, etc. constitute the object's "parent chain" |
|---|
| 150 | | and lookups work the way up the chain until an inheritance occurs. |
|---|
| | 150 | Objects can inherit attributes from other objects through the use of |
|---|
| | 151 | parents. An object's parent, its parent's parent, its parent's |
|---|
| | 152 | parent's parent, etc. constitute the object's "parent chain" and |
|---|
| | 153 | lookups work the way up the chain until an inheritance occurs. |
|---|
| 153 | | parent chain. There is one ancestor for each object type (room, exit, |
|---|
| 154 | | thing, player), and @config lists the dbref of each ancestor object |
|---|
| 155 | | (@config ancestor_room, etc.) Under normal circumstances, if an attribute |
|---|
| 156 | | can't be retrieved from an object or any of its explicit parents, |
|---|
| 157 | | the attribute will be looked for on the appropriate ancestor. |
|---|
| 158 | | The ORPHAN flag may be set on an object to cause lookups on that |
|---|
| 159 | | object to ignore ancestors (like the pre-ancestor behavior). |
|---|
| 160 | | |
|---|
| 161 | | Ancestors may themselves have parent chains, but these are (obviously) |
|---|
| 162 | | not virtually terminated by ancestors. |
|---|
| 163 | | |
|---|
| 164 | | Note that the choice of which ancestor to look up is based on the |
|---|
| | 156 | parent chain. There is one ancestor for each object type (room, |
|---|
| | 157 | exit, thing, player), and @config lists the dbref of each ancestor |
|---|
| | 158 | object (@config ancestor_room, etc.) Under normal circumstances, if |
|---|
| | 159 | an attribute can't be retrieved from an object or any of its |
|---|
| | 160 | explicit parents, the attribute will be looked for on the |
|---|
| | 161 | appropriate ancestor. The ORPHAN flag may be set on an object to |
|---|
| | 162 | cause lookups on that object to ignore ancestors (like the |
|---|
| | 163 | pre-ancestor behavior). |
|---|
| | 164 | |
|---|
| | 165 | Ancestors may themselves have parent chains, but these are |
|---|
| | 166 | (obviously) not virtually terminated by ancestors. |
|---|
| | 167 | |
|---|
| | 168 | Note that the choice of which ancestor to look up is based on the |
|---|
| 205 | | '#lambda/hasattrval(#1234, %0)', thus avoiding the need for a setq() or |
|---|
| 206 | | the like to store the top-level %0 for use in a real attribute called by |
|---|
| 207 | | filter(). However, this can lead to problems with evaluating un-trusted |
|---|
| 208 | | code. Use secure() or escape() where neccessary. |
|---|
| | 209 | '#lambda/hasattrval(#1234, %0)', thus avoiding the need for a setq() |
|---|
| | 210 | or the like to store the top-level %0 for use in a real attribute |
|---|
| | 211 | called by filter(). However, this can lead to problems with |
|---|
| | 212 | evaluating un-trusted code. Use secure() or escape() where |
|---|
| | 213 | neccessary. |
|---|
| 219 | | This approach is useful both for security in making it harder to evaluate |
|---|
| 220 | | a string that shouldn't be, and for making the code look nicer by not |
|---|
| 221 | | having to escape percent signs, brackets, and other special |
|---|
| 222 | | characters. However, it also makes it harder to build the code string on |
|---|
| 223 | | the fly. Use what's most appropriate. |
|---|
| | 224 | This approach is useful both for security in making it harder to |
|---|
| | 225 | evaluate a string that shouldn't be, and for making the code look |
|---|
| | 226 | nicer by not having to escape percent signs, brackets, and other |
|---|
| | 227 | special characters. However, it also makes it harder to build the |
|---|
| | 228 | code string on the fly. Use what's most appropriate. |
|---|
| 235 | | The latest person to set an attribute on an object is the owner |
|---|
| 236 | | of that attribute. If you lock an attribute, using the @atrlock command, |
|---|
| 237 | | only the person who owns the attribute will be able to alter the |
|---|
| 238 | | attribute. This allows you to create standard commands on objects and |
|---|
| 239 | | then @chown them to others without letting them alter them. |
|---|
| 240 | | |
|---|
| 241 | | Attribute ownership is NOT changed when the object itself is @chown'ed. |
|---|
| 242 | | To change attribute ownership, you must use the @atrchown command. |
|---|
| | 240 | The latest person to set an attribute on an object is the owner of |
|---|
| | 241 | that attribute. If you lock an attribute, using the @atrlock |
|---|
| | 242 | command, only the person who owns the attribute will be able to |
|---|
| | 243 | alter the attribute. This allows you to create standard commands on |
|---|
| | 244 | objects and then @chown them to others without letting them alter |
|---|
| | 245 | them. |
|---|
| | 246 | |
|---|
| | 247 | Attribute ownership is NOT changed when the object itself is |
|---|
| | 248 | @chown'ed. To change attribute ownership, you must use the |
|---|
| | 249 | @atrchown command. |
|---|
| 250 | | Attributes with (*) after them are special, cannot be set by players, |
|---|
| 251 | | and may only be visible to wizards or admin. For those attributes, there |
|---|
| 252 | | is no @-command, so you can just type 'help <attribute name>' for help. |
|---|
| 253 | | For all other attributes, type 'help @<attribute name>' for help. |
|---|
| | 257 | Attributes with (*) after them are special, cannot be set by |
|---|
| | 258 | players, and may only be visible to wizards or admin. For those |
|---|
| | 259 | attributes, there is no @-command, so you can just type 'help |
|---|
| | 260 | <attribute name>' for help. For all other attributes, type 'help |
|---|
| | 261 | @<attribute name>' for help. |
|---|
| 272 | | An attribute is part of the code on an object that makes it unique. An |
|---|
| 273 | | attribute can contain any sort of text -- from a single word, to a long |
|---|
| 274 | | paragraph, to a piece of MUSHcode. Some attributes are standard in |
|---|
| 275 | | PennMUSH. That means that their effects are pre-set. |
|---|
| | 280 | An attribute is part of the code on an object that makes it |
|---|
| | 281 | unique. An attribute can contain any sort of text -- from a single |
|---|
| | 282 | word, to a long paragraph, to a piece of MUSHcode. Some attributes |
|---|
| | 283 | are standard in PennMUSH. That means that their effects are pre-set. |
|---|
| 303 | | Attributes can be owned by someone other than the object they are set on. |
|---|
| 304 | | This allows the person to change the content of just that attribute while |
|---|
| 305 | | not the rest of the object. Attributes can also be locked, which prevents |
|---|
| 306 | | them from being changed by anyone. |
|---|
| 307 | | |
|---|
| 308 | | In addition to the standard attributes with pre-set effects, there are |
|---|
| 309 | | some special attributes that date from the days before you could set |
|---|
| 310 | | non-standard attributes with any name you wanted. These are the |
|---|
| 311 | | attributes VA-VZ, WA-WZ, XA-XZ. These attributes have no pre-set effects, |
|---|
| 312 | | and were just to allow players to store any text or MUSHcode that they |
|---|
| 313 | | wished in those attributes. Now that non-standard attributes are available, |
|---|
| 314 | | it is highly recommended that you instead use them, since you can use |
|---|
| 315 | | longer and descriptive names for attributes, which makes it much easier |
|---|
| 316 | | to examine and work on objects. |
|---|
| 317 | | |
|---|
| 318 | | See also: ATTRIB-OWNERSHIP, @set, examine, @atrchown, @atrlock, hasattr(), |
|---|
| 319 | | get(), v(), NON-STANDARD ATTRIBUTES, SETTING-ATTRIBUTES, ATTRIBUTE TREES |
|---|
| | 311 | Attributes can be owned by someone other than the object they are |
|---|
| | 312 | set on. This allows the person to change the content of just that |
|---|
| | 313 | attribute while not the rest of the object. Attributes can also be |
|---|
| | 314 | locked, which prevents them from being changed by anyone. |
|---|
| | 315 | |
|---|
| | 316 | In addition to the standard attributes with pre-set effects, there |
|---|
| | 317 | are some special attributes that date from the days before you could |
|---|
| | 318 | set non-standard attributes with any name you wanted. These are the |
|---|
| | 319 | attributes VA-VZ, WA-WZ, XA-XZ. These attributes have no pre-set |
|---|
| | 320 | effects, and were just to allow players to store any text or |
|---|
| | 321 | MUSHcode that they wished in those attributes. Now that non-standard |
|---|
| | 322 | attributes are available, it is highly recommended that you instead |
|---|
| | 323 | use them, since you can use longer and descriptive names for |
|---|
| | 324 | attributes, which makes it much easier to examine and work on |
|---|
| | 325 | objects. |
|---|
| | 326 | |
|---|
| | 327 | See also: ATTRIB-OWNERSHIP, @set, examine, @atrchown, @atrlock, |
|---|
| | 328 | hasattr(), get(), v(), NON-STANDARD ATTRIBUTES, SETTING-ATTRIBUTES, |
|---|
| | 329 | ATTRIBUTE TREES |
|---|
| 323 | | Getting killed is no big deal. If you are killed, you return to |
|---|
| 324 | | your home, and all things you carry return to their homes. You |
|---|
| 325 | | also collect 50 pennies in insurance money (unless you have >= 10000 |
|---|
| 326 | | pennies or you were killed via the Wizard slay command). See 'MONEY'. |
|---|
| 327 | | Generally, killing is not encouraged unless absolutely necessary. |
|---|
| 328 | | It can be extremely rude and annoying. |
|---|
| | 333 | Getting killed is no big deal. If you are killed, you return to your |
|---|
| | 334 | home, and all things you carry return to their homes. You also |
|---|
| | 335 | collect 50 pennies in insurance money (unless you have >= 10000 |
|---|
| | 336 | pennies or you were killed via the Wizard slay command). See |
|---|
| | 337 | 'MONEY'. Generally, killing is not encouraged unless absolutely |
|---|
| | 338 | necessary. It can be extremely rude and annoying. |
|---|
| 335 | | A boolean variable, for those of you not familiar with programming, |
|---|
| 336 | | is a variable that is either true or false. Normally, a value of |
|---|
| 337 | | 1 is considered "true" and a value of 0 is considered "false". Many |
|---|
| 338 | | MUSH functions return either 1 if they are true or 0 if false. |
|---|
| 339 | | For example, the hasflag() function tests to see if an object has |
|---|
| 340 | | a certain flag set on it. If |
|---|
| 341 | | hasflag(<object>,<flag name>) |
|---|
| 342 | | is true (the object has the flag), it will return 1. If it is false, |
|---|
| 343 | | it will return 0. |
|---|
| | 345 | A boolean variable, for those of you not familiar with programming, |
|---|
| | 346 | is a variable that is either true or false. Normally, a value of 1 |
|---|
| | 347 | is considered "true" and a value of 0 is considered "false". Many |
|---|
| | 348 | MUSH functions return either 1 if they are true or 0 if false. For |
|---|
| | 349 | example, the hasflag() function tests to see if an object has a |
|---|
| | 350 | certain flag set on it. If hasflag(<object>,<flag name>) is true |
|---|
| | 351 | (the object has the flag), it will return 1. If it is false, it will |
|---|
| | 352 | return 0. |
|---|
| 385 | | Clients are special software programs that you can use to connect to |
|---|
| 386 | | MUSHes. They are usually much nicer to use than raw telnet and give you |
|---|
| 387 | | many additional features, such as larger text buffers (so you can type |
|---|
| 388 | | more), backscroll, history of previous commands, macros, and so on. |
|---|
| | 394 | Clients are special software programs that you can use to connect to |
|---|
| | 395 | MUSHes. They are usually much nicer to use than raw telnet and give |
|---|
| | 396 | you many additional features, such as larger text buffers (so you |
|---|
| | 397 | can type more), backscroll, history of previous commands, macros, |
|---|
| | 398 | and so on. |
|---|
| 473 | | You will find the term "dbref" or "dbref number" used frequently in these |
|---|
| 474 | | help files and in MUSHcode. It is an abbreviation of "database reference |
|---|
| 475 | | number". |
|---|
| 476 | | |
|---|
| 477 | | The database is the part of MUSH that stores all the information about |
|---|
| 478 | | this particular MUSH. Players, things, rooms, and exits are all objects |
|---|
| 479 | | in the database. Each object in the database has a unique dbref number |
|---|
| 480 | | that is set when the object is created. You can use the dbref number to |
|---|
| 481 | | refer to an object that is not in your current location, and it is |
|---|
| 482 | | especially important for global code. |
|---|
| | 483 | You will find the term "dbref" or "dbref number" used frequently in |
|---|
| | 484 | these help files and in MUSHcode. It is an abbreviation of "database |
|---|
| | 485 | reference number". |
|---|
| | 486 | |
|---|
| | 487 | The database is the part of MUSH that stores all the information |
|---|
| | 488 | about this particular MUSH. Players, things, rooms, and exits are |
|---|
| | 489 | all objects in the database. Each object in the database has a |
|---|
| | 490 | unique dbref number that is set when the object is created. You can |
|---|
| | 491 | use the dbref number to refer to an object that is not in your |
|---|
| | 492 | current location, and it is especially important for global code. |
|---|
| 485 | | in your location. This is because whenever you try to do something with |
|---|
| 486 | | an object (such as look at it, take it, etc.), the MUSH first has to |
|---|
| 487 | | locate the object. Since the dbref is unique, it can immediately find |
|---|
| 488 | | the object rather than checking through all the contents of your area |
|---|
| 489 | | to see if one matches the name. |
|---|
| | 495 | in your location. This is because whenever you try to do something |
|---|
| | 496 | with an object (such as look at it, take it, etc.), the MUSH first |
|---|
| | 497 | has to locate the object. Since the dbref is unique, it can |
|---|
| | 498 | immediately find the object rather than checking through all the |
|---|
| | 499 | contents of your area to see if one matches the name. |
|---|
| 502 | | The dbref number is indicated by the number/pound sign (#). Cyclonus's |
|---|
| 503 | | dbref is #3. The letters following the dbref are the abbreviations of |
|---|
| 504 | | the flags set on the object. NOTE: the abbreviation of the OPAQUE |
|---|
| 505 | | flag is 'O' (o), which looks like '0' (zero) on some clients. Make sure |
|---|
| 506 | | you have the right number before using it in your code! |
|---|
| | 513 | The dbref number is indicated by the number/pound sign |
|---|
| | 514 | (#). Cyclonus's dbref is #3. The letters following the dbref are the |
|---|
| | 515 | abbreviations of the flags set on the object. NOTE: the abbreviation |
|---|
| | 516 | of the OPAQUE flag is 'O' (o), which looks like '0' (zero) on some |
|---|
| | 517 | clients. Make sure you have the right number before using it in your |
|---|
| | 518 | code! |
|---|
| 512 | | object as the DROP-TO location. By default, any non-STICKY object that |
|---|
| 513 | | someone drops in the room will automatically be transported to the |
|---|
| 514 | | drop-to location, rather than staying in the room. Any STICKY object |
|---|
| 515 | | droped in the room will go to its home. |
|---|
| 516 | | |
|---|
| 517 | | If the room is set STICKY, objects dropped in the room will stay there |
|---|
| 518 | | until the last player leaves/disconnects, at which point they will be |
|---|
| 519 | | transported as described above. |
|---|
| | 524 | object as the DROP-TO location. By default, any non-STICKY object |
|---|
| | 525 | that someone drops in the room will automatically be transported to |
|---|
| | 526 | the drop-to location, rather than staying in the room. Any STICKY |
|---|
| | 527 | object droped in the room will go to its home. |
|---|
| | 528 | |
|---|
| | 529 | If the room is set STICKY, objects dropped in the room will stay |
|---|
| | 530 | there until the last player leaves/disconnects, at which point they |
|---|
| | 531 | will be transported as described above. |
|---|
| 583 | | Because local commands overrule global commands, you can easily prevent |
|---|
| 584 | | a global command from working in a specific room by setting a copy of |
|---|
| 585 | | the global command in that room. Alternatively, if a global command is |
|---|
| 586 | | oddly not working in a room, you should check for copies of the command |
|---|
| 587 | | word in the room (using @scan). |
|---|
| | 595 | Because local commands overrule global commands, you can easily |
|---|
| | 596 | prevent a global command from working in a specific room by setting |
|---|
| | 597 | a copy of the global command in that room. Alternatively, if a |
|---|
| | 598 | global command is oddly not working in a room, you should check for |
|---|
| | 599 | copies of the command word in the room (using @scan). |
|---|
| 590 | | The executor of a command is the object actually carrying out the command. |
|---|
| 591 | | This differs from the enactor, because the enactor is the object that sets |
|---|
| 592 | | off the command. In some cases, the enactor and the executor will be the |
|---|
| 593 | | same. There is a %-substitution, %!, that is replaced by the dbref # of |
|---|
| 594 | | the executor of the command. |
|---|
| | 602 | The executor of a command is the object actually carrying out the |
|---|
| | 603 | command. This differs from the enactor, because the enactor is the |
|---|
| | 604 | object that sets off the command. In some cases, the enactor and the |
|---|
| | 605 | executor will be the same. There is a %-substitution, %!, that is |
|---|
| | 606 | replaced by the dbref # of the executor of the command. |
|---|
| 605 | | In the first case, Cyclonus directly entered the command and was therefore |
|---|
| 606 | | both the enactor and the executor. In the second, Cyclonus set off the |
|---|
| 607 | | command on the box, so Cyclonus was still the enactor, but the box was |
|---|
| 608 | | the object that was actually doing the @emit, and was thus the executor. |
|---|
| | 617 | In the first case, Cyclonus directly entered the command and was |
|---|
| | 618 | therefore both the enactor and the executor. In the second, Cyclonus |
|---|
| | 619 | set off the command on the box, so Cyclonus was still the enactor, |
|---|
| | 620 | but the box was the object that was actually doing the @emit, and |
|---|
| | 621 | was thus the executor. |
|---|
| 612 | | An exit is a one-way link that takes you from its source room to its |
|---|
| 613 | | destination room. To open an exit from a room, you must control that room. |
|---|
| 614 | | To open an exit to a room, you must either control the room or it must be |
|---|
| 615 | | set LINK_OK. If an exit is set DARK is will not show up in the list of |
|---|
| 616 | | obvious exits in a room. |
|---|
| 617 | | |
|---|
| 618 | | If an exit is set TRANSPARENT, someone who looks at the exit will also |
|---|
| 619 | | see the description and contents of the destination room. If an exit is |
|---|
| 620 | | set CLOUDY, someone who looks at the exit will also see the contents of |
|---|
| 621 | | the room beyond, but not its description. If an exits is set -both- |
|---|
| 622 | | CLOUDY and TRANSPARENT, the description but not the contents will be seen. |
|---|
| | 625 | An exit is a one-way link that takes you from its source room to its |
|---|
| | 626 | destination room. To open an exit from a room, you must control that |
|---|
| | 627 | room. To open an exit to a room, you must either control the room |
|---|
| | 628 | or it must be set LINK_OK. If an exit is set DARK is will not show |
|---|
| | 629 | up in the list of obvious exits in a room. |
|---|
| | 630 | |
|---|
| | 631 | If an exit is set TRANSPARENT, someone who looks at the exit will |
|---|
| | 632 | also see the description and contents of the destination room. If an |
|---|
| | 633 | exit is set CLOUDY, someone who looks at the exit will also see the |
|---|
| | 634 | contents of the room beyond, but not its description. If an exits is |
|---|
| | 635 | set -both- CLOUDY and TRANSPARENT, the description but not the |
|---|
| | 636 | contents will be seen. |
|---|
| 631 | | You can create an exit that sends those who go through it to their homes |
|---|
| 632 | | by typing '@link <EXIT>=home'. |
|---|
| 633 | | |
|---|
| 634 | | Starting with PennMUSH version 1.50p10, exits can have more than one |
|---|
| 635 | | destination. To make an exit with a variable destination, open the exit |
|---|
| 636 | | (using @open), then type '@link <EXIT>=variable'. Finally, add an |
|---|
| 637 | | attribute named 'DESTINATION' to the exit (&destination <EXIT>), which |
|---|
| 638 | | will be evaluated for the dbref # of the destination room when the exit |
|---|
| 639 | | is used. |
|---|
| | 645 | You can create an exit that sends those who go through it to their |
|---|
| | 646 | homes by typing '@link <EXIT>=home'. |
|---|
| | 647 | |
|---|
| | 648 | Starting with PennMUSH version 1.50p10, exits can have more than one |
|---|
| | 649 | destination. To make an exit with a variable destination, open the |
|---|
| | 650 | exit (using @open), then type '@link <EXIT>=variable'. Finally, add |
|---|
| | 651 | an attribute named 'DESTINATION' to the exit (&destination <EXIT>), |
|---|
| | 652 | which will be evaluated for the dbref # of the destination room when |
|---|
| | 653 | the exit is used. |
|---|
| 646 | | This exit would take you to either room #100, #101, or #102 depending on |
|---|
| 647 | | the random number. |
|---|
| 648 | | |
|---|
| 649 | | Anyone can create variable exits, but the destinations must be to places |
|---|
| 650 | | that the exit can normally @link to. |
|---|
| | 660 | This exit would take you to either room #100, #101, or #102 |
|---|
| | 661 | depending on the random number. |
|---|
| | 662 | |
|---|
| | 663 | Anyone can create variable exits, but the destinations must be to |
|---|
| | 664 | places that the exit can normally @link to. |
|---|
| 656 | | A "failure" usually occurs when you try to do something that is |
|---|
| 657 | | governed by an @lock and you don't pass the lock. If you try to |
|---|
| 658 | | take a player or thing, and you don't pass their @lock, you will |
|---|
| 659 | | set off their @fail/@ofail/@afail attributes. If you try to go |
|---|
| 660 | | through an exit, and you don't pass its @lock, you will similarly |
|---|
| 661 | | set off its @fail/@ofail/@afail. Other failure sets include: |
|---|
| | 670 | A "failure" usually occurs when you try to do something that is |
|---|
| | 671 | governed by an @lock and you don't pass the lock. If you try to take |
|---|
| | 672 | a player or thing, and you don't pass their @lock, you will set off |
|---|
| | 673 | their @fail/@ofail/@afail attributes. If you try to go through an |
|---|
| | 674 | exit, and you don't pass its @lock, you will similarly set off its |
|---|
| | 675 | @fail/@ofail/@afail. Other failure sets include: |
|---|
| 700 | | Every thing or player has a home, which is usually the room where |
|---|
| 701 | | it was created. You can reset your home or the home of any object |
|---|
| 702 | | you own with the @link command: @link <me|object>=<location>. You |
|---|
| 703 | | must also control <location>, unless that location (room or thing) |
|---|
| 704 | | is set ABODE or LINK_OK. |
|---|
| 705 | | |
|---|
| 706 | | When a player types 'home', s/he is sent back to the home room. When |
|---|
| 707 | | a thing with the STICKY flag set on it is dropped, it also goes to |
|---|
| 708 | | its home location. Note that if the FIXED flag is set on a player, |
|---|
| | 714 | Every thing or player has a home, which is usually the room where it |
|---|
| | 715 | was created. You can reset your home or the home of any object you |
|---|
| | 716 | own with the @link command: @link <me|object>=<location>. You must |
|---|
| | 717 | also control <location>, unless that location (room or thing) is set |
|---|
| | 718 | ABODE or LINK_OK. |
|---|
| | 719 | |
|---|
| | 720 | When a player types 'home', s/he is sent back to the home room. When |
|---|
| | 721 | a thing with the STICKY flag set on it is dropped, it also goes to |
|---|
| | 722 | its home location. Note that if the FIXED flag is set on a player, |
|---|
| 764 | | You can link to a room if you control it, or if it is set |
|---|
| 765 | | LINK_OK or ABODE. Being able to link means you can set the homes of |
|---|
| 766 | | objects or yourself to that room if it is set ABODE, and can set |
|---|
| 767 | | the destination of exits to that room if it is LINK_OK. |
|---|
| | 779 | You can link to a room if you control it, or if it is set LINK_OK or |
|---|
| | 780 | ABODE. Being able to link means you can set the homes of objects or |
|---|
| | 781 | yourself to that room if it is set ABODE, and can set the |
|---|
| | 782 | destination of exits to that room if it is LINK_OK. |
|---|
| 772 | | There are two basic ways to trigger action on the MUSH. The basic way |
|---|
| 773 | | is to type in commands such as 'look' or '@emit'. These commands are not |
|---|
| 774 | | seen or heard by other players, although the results of the commands may |
|---|
| 775 | | be. |
|---|
| 776 | | |
|---|
| 777 | | The other way is to "listen" for something said/emitted in your hearing. |
|---|
| 778 | | There are two ways to listen for something in a room. The easiest way |
|---|
| 779 | | is to use a combination of @listen and @ahear/@aahear/@amhear. |
|---|
| | 787 | There are two basic ways to trigger action on the MUSH. The basic |
|---|
| | 788 | way is to type in commands such as 'look' or '@emit'. These commands |
|---|
| | 789 | are not seen or heard by other players, although the results of the |
|---|
| | 790 | commands may be. |
|---|
| | 791 | |
|---|
| | 792 | The other way is to "listen" for something said/emitted in your |
|---|
| | 793 | hearing. There are two ways to listen for something in a room. The |
|---|
| | 794 | easiest way is to use a combination of @listen and |
|---|
| | 795 | @ahear/@aahear/@amhear. |
|---|
| 813 | | them work like @aahear, set the AAHEAR attribute flag on the attribute |
|---|
| 814 | | (Note that the triggering object is whatever happens to be %#, so, for |
|---|
| 815 | | example, when you @set an object MONITOR, you are %# with regard to the |
|---|
| 816 | | "Object is now listening" message, and this message can be picked up |
|---|
| 817 | | with an ^pattern.) |
|---|
| | 829 | them work like @aahear, set the AAHEAR attribute flag on the |
|---|
| | 830 | attribute (Note that the triggering object is whatever happens to be |
|---|
| | 831 | %#, so, for example, when you @set an object MONITOR, you are %# |
|---|
| | 832 | with regard to the "Object is now listening" message, and this |
|---|
| | 833 | message can be picked up with an ^pattern.) |
|---|
| 861 | | The Master Room enables global commands and exits. Exits in the Master |
|---|
| 862 | | Room may be used from any location on the MUSH. All objects left in the |
|---|
| 863 | | Master Room are checked for user-defined $commands. Those $commands are |
|---|
| 864 | | considered global, meaning that they can be used anywhere on the MUSH. |
|---|
| 865 | | Normally, only wizards will have access to the Master Room; if you have |
|---|
| 866 | | a global command that you would like to see enabled for the MUSH, speak |
|---|
| 867 | | to a wizard. |
|---|
| | 878 | The Master Room enables global commands and exits. Exits in the |
|---|
| | 879 | Master Room may be used from any location on the MUSH. All objects |
|---|
| | 880 | left in the Master Room are checked for user-defined |
|---|
| | 881 | $commands. Those $commands are considered global, meaning that they |
|---|
| | 882 | can be used anywhere on the MUSH. Normally, only wizards will have |
|---|
| | 883 | access to the Master Room; if you have a global command that you |
|---|
| | 884 | would like to see enabled for the MUSH, speak to a wizard. |
|---|
| 886 | | amount of money -- this prevents looping from getting out of control, |
|---|
| 887 | | since when all your money is spent, you can't queue any more commands. |
|---|
| 888 | | |
|---|
| 889 | | The money system can also be used on player-created objects by giving |
|---|
| 890 | | them @cost/@payment/@opayment/@apayment attributes. When someone then |
|---|
| 891 | | pays the object by giving it the right number of pennies, the attributes |
|---|
| 892 | | are triggered. |
|---|
| | 903 | amount of money -- this prevents looping from getting out of |
|---|
| | 904 | control, since when all your money is spent, you can't queue any |
|---|
| | 905 | more commands. |
|---|
| | 906 | |
|---|
| | 907 | The money system can also be used on player-created objects by |
|---|
| | 908 | giving them @cost/@payment/@opayment/@apayment attributes. When |
|---|
| | 909 | someone then pays the object by giving it the right number of |
|---|
| | 910 | pennies, the attributes are triggered. |
|---|
| 898 | | MUSHcode is the programming language available within the MUSH itself |
|---|
| 899 | | with which you can create user-defined commands and macros. It is |
|---|
| 900 | | sometimes called "softcode" to distinguish it from "hardcode", which is |
|---|
| 901 | | the language that the source code for the MUSH server is written |
|---|
| 902 | | in. (Incidentally, hardcode is written in the C programming language.) |
|---|
| 903 | | |
|---|
| 904 | | At its most basic, writing MUSHcode is just stringing together a series |
|---|
| 905 | | of commands that you would otherwise just type in one at a time. You |
|---|
| 906 | | can store MUSHcode in attributes on any type of object you own or control |
|---|
| 907 | | (including yourself!). The series of commands can be triggered by using |
|---|
| 908 | | a user-defined command or by using @trigger. |
|---|
| | 916 | MUSHcode is the programming language available within the MUSH |
|---|
| | 917 | itself with which you can create user-defined commands and macros. |
|---|
| | 918 | It is sometimes called "softcode" to distinguish it from "hardcode", |
|---|
| | 919 | which is the language that the source code for the MUSH server is |
|---|
| | 920 | written in. (Incidentally, hardcode is written in the C programming |
|---|
| | 921 | language.) |
|---|
| | 922 | |
|---|
| | 923 | At its most basic, writing MUSHcode is just stringing together a |
|---|
| | 924 | series of commands that you would otherwise just type in one at a |
|---|
| | 925 | time. You can store MUSHcode in attributes on any type of object |
|---|
| | 926 | you own or control (including yourself!). The series of commands |
|---|
| | 927 | can be triggered by using a user-defined command or by using |
|---|
| | 928 | @trigger. |
|---|
| 913 | | If you would like to learn more about mushcoding and how to create macros |
|---|
| 914 | | for yourself, the following help files may be useful. However, the best |
|---|
| 915 | | way to learn is by obtaining a copy of Amberyl's MUSH manual and following |
|---|
| 916 | | the examples described there. The manual is available by anonymous FTP |
|---|
| 917 | | from: ftp.pennmush.org in the directory /pub/PennMUSH/Manuals |
|---|
| | 933 | If you would like to learn more about mushcoding and how to create |
|---|
| | 934 | macros for yourself, the following help files may be useful. |
|---|
| | 935 | However, the best way to learn is by obtaining a copy of Amberyl's |
|---|
| | 936 | MUSH manual and following the examples described there. The manual |
|---|
| | 937 | is available by anonymous FTP from: ftp.pennmush.org in the |
|---|
| | 938 | directory /pub/PennMUSH/Manuals |
|---|
| 928 | | While there are many standard attributes in MUSH, objects can also have |
|---|
| 929 | | an unlimited number of attributes, with any name you wish to use. In the |
|---|
| 930 | | past, you were limited to attributes named VA-VZ, WA-WZ, XA-XZ; these |
|---|
| 931 | | are still available as standard attributes. However, it is strongly |
|---|
| 932 | | recommended that you use non-standard attributes and meaningful names |
|---|
| 933 | | in order to make maintaining your MUSHCode easier. |
|---|
| | 949 | While there are many standard attributes in MUSH, objects can also |
|---|
| | 950 | have an unlimited number of attributes, with any name you wish to |
|---|
| | 951 | use. In the past, you were limited to attributes named VA-VZ, WA-WZ, |
|---|
| | 952 | XA-XZ; these are still available as standard attributes. However, it |
|---|
| | 953 | is strongly recommended that you use non-standard attributes and |
|---|
| | 954 | meaningful names in order to make maintaining your MUSHCode easier. |
|---|