It's Not a Mess, It's My Art, Man

Cleaning Up Your Room

Now with BotBot Support!
(see the "Proptrix Group")

More News! The "hang" script described here is now a built-in part of prop repository rooms at's Main Palace ("Mansion")

One well-known problem when sharing avatar images is that when you wear props, they have a pixel offset each prop is offset to the side or up and down so that together the props tile-out a large picture. But when you drop them, the offset vanishes. They all pile one upon the next.
Can we write a script to solve this problem? Duh-uh.

Original 3x3 Prop.
What we want.
All Tiles Dropped on One Spot.
Not what we want.
Tiles Loosely-Placed by Hand
Not what we want.

The Bad News: There's no single solution. The Good News: there are a few good solutions that will catch 90% of the cases.
Here's an OUTCHAT command that's well-tuned for laying-out arrays of props, called "hang." It can be used in both cyborgs and prop-room scripts.

	"$1" GREPSUB ATOI nx =
	"$2" GREPSUB ATOI ny =
		NBRUSERPROPS nx ny * - ITOA " props left" & LOCALMSG
	    } nx ny * NBRUSERPROPS == NOT IF
	    MOUSEPOS 22 + 3 ny - 22 * - y = 22 + 3 nx - 22 * - x =
	    0 j = {
		0 i = {
		    x i 44 * - y j 44 * - DROPPROP i ++
		} { i nx < } WHILE
		j ++
	    } { j ny < } WHILE
	} {
	    "You only have " NBRUSERPROPS ITOA & " props, not " &
	    nx ny * ITOA & LOCALMSG
    } CHATSTR "^hang ([1-9]) ([1-9])" GREPSTR IF

You use "hang" by giving it a width and a height a basic large 3x3 picture would be dropped by pointing the mouse at the center of the "drop zone" (just as if you were going to move there by clicking) and typing:
    hang 3 3
I.e., "hang these props up, 3 across and 3 high."
Or you could lay it out in a horizontal or vertical strip, depending on your fancy:
    hang 9 1

Horizontal Strip, hang 9 1


    hang 1 9
Or even in clumps with multiple "hang" commands:
    hang 5 1
    hang 2 2
The last method is also be appropriate for large props with animated components hang the animated props in a strip, then hang the rest as a large image.

Nine-Frame Animation Laid Out as a Strip

hang 1 9

Of course, we have made an important simplifying assumption here that the props have been put on in the order that we would normally read them left to right, top to bottom. This is the normal order that they appear in the prop picker window, and the order than the client's own bulk-pasting normally uses, so it hardly seems like a great leap. The figure on the right illustrates what "hang" will do with props loaded in some different order.

Normal Ordering Scattered Ordering

Can "Hang" Be Improved?

Yes, and the latest revisions are now in the BotBot.