Jump to content
  • 0

Save Furniture Arrangements?


Lunar56
 Share

You are about to reply to a thread that has been inactive for 3889 days.

Please take a moment to consider if this thread is worth bumping.

Question

Is there a way to save furniture arrangesments the same way you are able to waredrobe outfits? Also, is there a way that I can pull up a list of all items used when furnishing? I would like to rearrange my furniture, but would like to keep the current layout just in case I change my mind.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Hi Lunar,

The fastest way to document the placement of things is as Val described. The most accurate way is to manually copy down the X/Y/Z coordinate locations and rotations from the Edit window for each furniture piece. It's tedious and a bit risky if you have a typo when restoring old coordinates. That can send your sofa flying off across the sim, or out into space.

Not that I've ever done that. Nope, I've never done that.

;-)

  • Like 1
Link to comment
Share on other sites

  • 0

Well, I wouldn't normally do this in Answers but I figured that you ought to have some quick way of doing what Maddy suggested.  So long as your pieces of furniture do not have other scripts in the root prim, install this script into each one. 

When you click on that piece of furniture and HOLD the left mouse button down for at least 1.5 seconds, you'll get a simple menu with two choices:  "Record" or "Clear".  If you chose "Record", the script will record that furniture's current position.  If you choose "Clear", it will forget any position that it may have stored.  If you have recorded that furniture's position, then you can take it to your inventory any time you like.  When you rez it again, it will move to the recorded position and be oriented correctly.  If you haven't recorded any position, it will stay wherever you rezzed it.

 

string gDesc;integer gLsn;default{	on_rez(integer startup)	{		gDesc = llGetObjectDesc();		integer idx = llSubStringIndex(gDesc,"><");		if (idx)		{			vector Pos = (vector)llGetSubString(gDesc,0,idx);			rotation Rot = (rotation) llGetSubString(gDesc,idx,-1);			llSetRegionPos(Pos);			llSetRot(Rot);		}	}	touch_start(integer num)	{		llResetTime();	}		touch_end(integer num)	{		if (llGetTime() > 1.5)		{			llListenRemove(gLsn);			llSetTimerEvent(10.0);			integer Chan = -1 *(integer)llFrand(10000000) - 200;			gLsn = llListen(Chan,"",llGetOwner(),"");			llDialog(llGetOwner()," \n", ["Record","Clear"],Chan);		}	}	timer ()	{		llSetTimerEvent(0.0);		llListenRemove(gLsn);	}	listen(integer channel, string name, key id, string msg)	{		llSetTimerEvent(0.0);		llListenRemove(gLsn);		if (msg == "Record")		{			llSetObjectDesc((string)llGetPos() + (string)llGetRot());		}		else if (msg == "Clear")		{			llSetObjectDesc("");		}	}}

 I suggest practicing with a few throw-away prims before trying it on the real thing, so that you are sure that you know what you are doing.  Also (standard warning) keep a copy of anything that you want to experiment with, so that you always have a backup in case things screw up.

 

  • Like 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3889 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...