//After yesterdays "ultra lag" attack, We need to fill up our parcels so that they can't rez too many items and crash the sim. //The concept is simple, replicate until fail and then delete x copys. //I'll leave a full permission copy at yadni's junkyard. //Note: The prim names must be exact. //1. Go to a far away area or up high so that this does not cause lag. //2. Create a blank, white, "Full bright" prim and name it "Land_Fill" //3. Place the "Land_Fill_Die" script into the prim. //4. Take it. //5. Create a blank, white, "Full bright" prim and name it "Land_Filler" //6. Place the "Rez_Array" script into the prim named "Land_Filler" //7. Place "Land_Fill" into "Land_Filler" //8. Enter 20 into the description field of "Land_Filler" to leave space for 20 prims. //9. Touch it twice. The first touch clears out any leftovers. //------------------------ // Rez to fill property - (description count) // Released into the public domain by Grumble Loudon and LaserFur Leonov //Rez and then touch to either rez or kill //Note, The land max is not updated imedietly, so there will be a little // time while no objects can be rezed. integer m_RezLimit = 16384; //limit the number of prims created, just in case. // you could also set this if you are on rented land and don't want to go over your limit. integer m_channel = 25626; list m_OwnerNames = []; //Add other owner names here for groups. //************************************************** ************************************ integer m_RezNotKill = TRUE; integer m_RezCount = 0; vector m_RezPos; integer m_RezTimeout =0; default { state_entry() { m_OwnerNames += llKey2Name(llGetOwner()); // assumes owner is online when he rezes it llSetStatus(STATUS_BLOCK_GRAB, TRUE); //needed if we add a touch start } //************************************************** *********************************** on_rez(integer StartPram) { llResetScript(); }//on rez //************************************************** ************************************ touch_start(integer total_number) { key DetKey = llDetectedKey(0); string DetName = llKey2Name(DetKey); //owner info list FindName; FindName += DetName; //name of avitar if (llListFindList( m_OwnerNames, FindName) == -1) //not an owner { m_RezNotKill = !m_RezNotKill; //toggle if (m_RezNotKill) { //Rez llOwnerSay("Starting"); m_RezCount = 1; m_RezPos = llGetPos(); m_RezPos.z += 0.5; llRezObject("Land_Fill",m_RezPos,<0,0,0>,<0,0,0,1>,m_RezCount); //start process m_RezTimeout = 0; llSetTimerEvent(1); }else{ llOwnerSay("Killing all"); llSay(m_channel,"2147483647"); //kill all };//if m_RezNotKill };// if owner }// touch_start //************************************************** ************************************ object_rez(key id)// it worked. So there may be more prim space left { m_RezTimeout = 0; //reset timeout if (m_RezNotKill) //check just in case a touch canceled the rez { ++m_RezCount; //next number if (m_RezCount < m_RezLimit) { llRezObject("Land_Fill",m_RezPos,<0,0,0>,<0,0,0,1>,m_RezCount); //do it again }; llSetTimerEvent(1); //just in case a lag caused a timeout and a then a Rez }; } //object_rez //************************************************** ************************************ timer() { ++m_RezTimeout; if (m_RezTimeout > 5) //rez failed so parcel is full { llSay(m_channel,llGetObjectDesc()); //kill x number llSetTimerEvent(0); //kill timer llOwnerSay("Done"); }; }//timer }//