Well...it does everything that I want..EXCEPT the temp rez bit....(which I don't have to tell you is completely frustrating)
Boxing scripts are free..and so are temp rezzers. I actually use a freebie boxing script when I sell my structures......but I need the buildings to rez as temporary for my vending system.
Right now I am more or less setting the build to temporary manually ..picking it up as a module using the box "store as 1" option and having my customers press "rez" over and over on the vender interface if they want to look at the building for more then a minute.
So..is there a good script out there that anyone can recommend that will
1. Act as a boxing script by saving the rotations of all the objects.
but then
2. Rez those objects over and over in a "temp" capacity as soon as the box itself is rezzed by my vender.
?
Thanks in advance.
edit: Here's an example of the boxing script I'm currently using.
-------------------------------------------------------------------------------------
integer listenchannel = 31;
integer talkchannel = -23987;
vector lastpos;
rotation lastrot;
integer timeout = 1800;//say pos|rot every this many seconds even if we haven't moved, as a keepalive
integer counter;
integer RandInt(integer lower, integer higher)
{
integer range = higher - lower;
integer result = llFloor(llFrand(range + 1)) + lower;
return result;
}
default
{
state_entry()
{
llListen(listenchannel, "", llGetOwner(), ""
;}
on_rez(integer param)
{
//if there are objects in me, tell owner how to unpack
//if there are no objects in me, tell owner how to pack
if (llGetInventoryNumber(INVENTORY_OBJECT) > 0)
{
llOwnerSay("It looks like I'm packed and ready to rez. Say /" + (string)listenchannel + "help to see my instructions."
;}
else
{
llOwnerSay("I can help you pack up and rez big multi-object builds. Say /" + (string)listenchannel + "help to see my instructions."
;}
llResetScript();
}
listen(integer channel, string name, key id, string message)
{
if (message == "record"

{
llRegionSay(talkchannel, "record|" + (string)llGetPos() + "|" + (string)llGetRot());
}
else if (message == "set"

{
llRegionSay(talkchannel, "set|" + (string)llGetPos() + "|" + (string)llGetRot());
}
else if (message == "rez"

{
talkchannel = RandInt(-2000000, -1000);
integer n;
for (n = 0; n < llGetInventoryNumber(INVENTORY_OBJECT); n++)
{
llRezObject(llGetInventoryName(INVENTORY_OBJECT, n), llGetPos() + <0,0,1>, ZERO_VECTOR, llGetRot(), talkchannel);
}
llSleep(1.0);
llRegionSay(talkchannel, "set|" + (string)llGetPos() + "|" + (string)llGetRot());
lastpos = llGetPos();
lastrot = llGetRot();
llSetTimerEvent(1.0);
}
else if (message == "help"

{
llGiveInventory(id, llGetInventoryName(INVENTORY_NOTECARD, 0));
}
else
{
llRegionSay(talkchannel, message);
}
}
timer()
{
if (llGetPos() == lastpos && llGetRot() == lastrot)
{
//position hasn't changed, just increment the timer and fo keepalive if necessary
counter++;
if (counter >= timeout)
{
llRegionSay(talkchannel, "set|" + (string)llGetPos() + "|" + (string)llGetRot()); counter = 0;
}
}
else
{
llRegionSay(talkchannel, "set|" + (string)llGetPos() + "|" + (string)llGetRot());
lastpos = llGetPos();
lastrot = llGetRot();
}
}
}
--------------------------------------------------------------------------------------------
It currently requires you to type /31rez to rez an object...is there anyway to set it up to temp rez the object every minute or so...and to do so ONREZ?
