IPTSCRAE SCRIPTING LESSON FIVE
The Secret Lives of Props
A major form of entertainment in the palace system is the manipulation of props. They are used to give yourself a "personality" in the form of your Avatar, and they are used in scripts to create a variety of effects.
Every prop that is made has two characteristics used by Iptscrae: a prop name, and a prop ID number. The prop name is specified in the prop edit window, and the prop ID number is assigned automatically. That number is the last second the prop was edited- although no actual changes may have been made, all that is required is to open up the edit window and hit 'ok' to leave it.
The time in PC's is the number of seconds since January 1st, 1970. Right now, (August, 1997) that stands at around 871 million. Macs figure time differently- they are negative numbers, with either -13 or -14 being the beginning two numbers. I don't know how they arrive at their figures, if anyone does, let me know! (Note: this difference is the basis of a test for finding out if you have a PC or a Mac!)
There are two commands that will get a prop's ID number:
This function returns the propID of the last prop the user put on. If the user is "naked" it returns 0 (zero). To see what the number of a specified prop is, put it on, then say:
This function returns the propID of one of the props currently worn by the user. number is a number from 0 to 8 indicating which prop you want to identify (note that this refers to the order they were donned in, not necessarily the order they appear in). 0 is the first prop you put on, and 8 is the last. (Of course, in taking props on and off, this changes just as the roomUser number changes- with the props 'forming a line'.)
In addition to finding out the propID numbers, you can also find out how many props a given user has on at any particular time. The function for this is:
This function returns the number of props currently worn by the user. This one comes in handy when you're using USERPROP- it is the number of props you have on, with 0 being naked and 9 being full. (You could also use it to see when you're naked.)
Or, you can check to see if the user has a specific prop:
This function pushes a 1 onto the stack if the user possesses the specified prop; otherwise it returns a 0. It might come in handy for scripts that would give you an error message and tell you that you don't have a prop that they need. Or, you might use it to see if you have a prop for a needed script. However, keep in mind the way the Palace system searches for props, and be aware that the results may be ambiguous. It is safer to use propID numbers and commands that use these numbers, rather than names.
There are several commands for putting props on, either singly or as a group. They are:
This command (in either of its forms) adds a prop to the user's costume. The prop can be specified by propName or by ID#. The id number is almost always preferred- the main exception being that, as humans, we find it easier to remember "water pistol" than "871354296". Using a name, however, exposes you to another problem: every prop you see goes into your prop file, although it is in your satchel only if you pick it up and put it on, or put it in there. However, when you specify a named prop, it hunts in the "seen props" before it gets to your satchel. Thus, if you say "heart" DONPROP, there really isn't much telling what you'll get. Anyone who has used the botbot Blondie script knows all about this effect. Using a number is much more specific. With 86,400 seconds in a day, the odds of having two props with the same number are remote- how remote, I'll let you figure out.
[ propArray ] SETPROPS
This command acts like a macro, causing the user to immediately don all props listed in [propArray]. This changes your whole av. Although we haven't covered arrays yet, just remember that it is, basically, a list of data. In this case, it is either prop id numbers or names. Here again, we have a difference between id numbers and names. If it does not find a named prop in your satchel, nothing happens. But if it does not find a prop id, it will then go to the palace server you're on and ask for that prop id. If the server has it, you'll get it. An actual line of this might look like this:
This is the command that is used in "av spots", as we call them at Ace's, or "prop dispensers", as you may have seen them referred to elsewhere.
The commands for taking props off are:
This command removes the last prop the user put on. Short, simple, and to the point. Do it often enough, and you'll be naked. :)
This command removes a prop from the user's costume. The prop can be specified by propName or by propID. This lets you take off that prop no matter if it was the last one you put on or not.
<userID> CLEARPROPS NAKED
These commands remove all the props the user is wearing. Forget fiddling around with taking off one prop at a time, either of these does the whole shebang at one time.
<x> <y> DROPPROP
This command takes the last prop user put on and drops it on the floor (making it a loose prop). x and y specify where it will be dropped. This not only removes the prop, it is a bit more merciful- instead of consigning it to cyber-oblivion, it lets it live on as a loose prop in the room. Where it goes to is determined by the x and y that you specify before you say the command. This command is used in bedrooms on the palace to strew your "clothes" on the floor.
That last command brings us to the other type of prop- the one you don't have on or safely tucked away in your satchel, but the one that is lying around loose for anyone (including you!) to grab. To be honest, Iptscrae does not let you do as much with loose props as I'd like for it to. I've dreamed up a few handy loose prop commands that I'd like sometime, but in the meantime, we have to make do with these:
<propID > <x> <y> ADDLOOSEPROP
"<propName>" <x> <y> ADDLOOSEPROP
This command adds a loose prop to the Viewing Area. The prop can be specified by propID or by the propName. In the first case, you must either know the propID already or use a command to retrieve it. In the second case, remember to place the name of the prop in quotes. Note that the prop specified must exist in either the client's propfile or the server's propfile; otherwise the command will have no effect. This is one of the most often used commands that you'll ever come across. Every time a loose prop is put on the screen, this is what is used. Note that the column and row you specify correspond to the prop's upper left corner. Positions for given people (WHOTARGET, WHOCHAT, etc.) are given for the middle of their avatar. That difference may need to be accounted for in some routines.
This command clears all loose props from the room. It is an all-or- nothing proposition. I was just learning Iptscrae at the very beginning when I decided I wanted a command to remove just a certain prop off the screen. Unfortunately, no command exists for that- that anyone has ever said. This was my first hint that things needed expanding here.
This command creates a list in the Log Window, providing the name and location of all loose props in the room, (which have names). This is useful, for example, if you want to write a script which automatically places chess pieces on a chess board: In authoring mode, determining the exact X and Y positions to place all these props by hand would be a tedious task. Instead of doing this the hard way, you can simply place the (named) props in the desired positions on the screen, type /SHOWLOOSEPROPS into the input Box, and copy the listing from the Log Window. However, it can only give you the name of the props, not their id number. And, if they don't have a name- which they won't, if you used the paste multiple props option and never bothered editing afterwards (quite common)- they won't even show up in the listing.
Assignment Operators are those operators that perform a function and assign its value. They can be considered "shortcuts" for commonly used mathematical routines.
<value> <symbol> =
Although this one doesn't perform any mathematical manipulation beforehand, this is Iptscrae's standard assignment operator. It assigns <value> to <symbol>. It means: Let equal, or set equal to.
Adds 1 to the value of <symbol>.
Subtracts 1 from the value of <symbol>.
<value> <symbol> +=
Adds <value> to <symbol> and assigns the total to symbol.
<value> <symbol> -=
Subtracts <value> from <symbol> and assigns the total to <symbol>.
<value> <symbol> *=
Multiplies <value> by <symbol> and assigns the total to <symbol>.
<value> <symbol> /=
Divides <symbol> by <value> and assigns the total (integer) to <symbol>.
<value> <symbol> %=
Divides <symbol> by <value> and assigns the integer remainder (modulo) to <symbol>.
Here is a list of prop names and ID numbers that you will need for your homework. You can get them from your instructor, or, if you feel confident enough about your abilities, use what you've learned here to get them at the palace you're studying these lessons at without their presence:
1. Make a routine that removes a prop from your av whenever someone says the word "striptease".
2. When someone says "The Three Stooges", make a routine that will put on an av of Moe, Larry, and Curly.
3. If someone says "come out shooting!", have a routine that puts on a gun prop.
4. If someone says "drop that gun!", a routine will make you take the gun off if you have it on.
5. If someone asks "Where's my birthday present?", have a routine that puts a present prop beside them.
6. If someone asks "How many pieces are in that av?", respond with the correct number.
Write a routine that takes whatever you are wearing and places it on the screen in the proper order and location, creating a "picture" of your AV.
Props and how they work
This page has a VERY good explanation of how props work and where they are stored. I HIGHLY recommend you go there and read it. The next time you lose all your props...you'll be glad you did!
BACKUP your prop data on a regular basis. It's the best insurance you can have.
<Previous> <Iptscrae> <Next>