User:Toady Nakamura/Scrubber Script

From Second Life Wiki
< User:Toady Nakamura
Revision as of 16:20, 20 April 2013 by Toady Nakamura (talk | contribs) (added script after testing it inworld)
Jump to navigation Jump to search

The Scrubber Originally by Jopsy Pendragon

  • Toadified May 1, 2011 --Toady Nakamura
  • Resets prim to default states and self-deletes.
  • Will not remove your original script.

<lsl> default {

   state_entry()
   {
       llSetSitText("");
       llSetTouchText("");
       llSetText("",<0,0,0>,1.0);
       llParticleSystem([]);
       llStopSound();
       llSetTextureAnim(FALSE,ALL_SIDES,1,1,0,0,0.0);
       llTargetOmega(ZERO_VECTOR,0,0);
       llSitTarget(ZERO_VECTOR,ZERO_ROTATION);

       llSetCameraAtOffset(ZERO_VECTOR);
       llSetCameraEyeOffset(ZERO_VECTOR);

       llSetPayPrice(PAY_DEFAULT,[PAY_DEFAULT,PAY_DEFAULT,PAY_DEFAULT,PAY_DEFAULT]);
       llStopMoveToTarget();
       llStopLookAt();
       llVolumeDetect(FALSE);
       llCollisionFilter("", NULL_KEY, TRUE);
       llForceMouselook(FALSE);
       llPassCollisions(TRUE);
       llPassTouches(TRUE);
       llRemoveVehicleFlags(-1);
       llSetVehicleType(VEHICLE_TYPE_NONE);
       llSetRemoteScriptAccessPin(0);
       llSetBuoyancy(0.0);
       llSetForceAndTorque(ZERO_VECTOR,ZERO_VECTOR,FALSE) ;

       llOwnerSay("Prim Scrubbed Clean... ");
       llRemoveInventory( llGetScriptName() );
       // vanish without a trace...
   }

} </lsl>

To scrub child prims too

This script also started with "The Scrubber" by Jopsy Pendragon, Feb 10 2006, Version 1

  • Update Tigger Genira 27 November 2009 for self distribution
  • Update WDC Voom 8 November 2010 for better child action.


Instructions: Put this script in the root prim of a build which is giving you grief.

  • It will distribute itself to all the prims in the link set and reset/unset most persistant prim settings that can only be set by scripts.
  • Once it has sent the script to the child prims you MUST take the whole object into inventory.
  • Re-rez the object
  • Edit it and 'set all scripts to running in selection'


<lsl>

string Me; integer Pin=3141;

default {

   state_entry()
   {
       Me = llGetScriptName();
       if(llGetLinkNumber() == 1)
       {
           //root prim
           llOwnerSay("Inserted in root, sending to child prims");
           integer i;
           for (i = 2; i <= llGetNumberOfPrims(); i++)
           {
                key prim_key = llGetLinkKey (i); 
                llRemoteLoadScriptPin (prim_key, Me, Pin, TRUE, 0); 
           }
           llOwnerSay("Done");             
       }
       
       llSetSitText( "" );
       llSetTouchText( "" );
       llParticleSystem( [ ] );
       llSetText( "", ZERO_VECTOR, 1.0 );
       llTargetOmega( ZERO_VECTOR, 0, 0 );
       llSetCameraAtOffset( ZERO_VECTOR );
       llSetCameraEyeOffset( ZERO_VECTOR );
       llSitTarget( ZERO_VECTOR, ZERO_ROTATION );
       llSetTextureAnim( FALSE , ALL_SIDES, 1, 1, 0, 0, 0.0 );
       
       integer iScriptCount = llGetInventoryNumber(INVENTORY_SCRIPT)-1;
       while(iScriptCount > -1)
       {
           if(llGetInventoryName(INVENTORY_SCRIPT,iScriptCount) != Me)
           {
               llRemoveInventory(llGetInventoryName(INVENTORY_SCRIPT,iScriptCount));
           }
           iScriptCount--;
       }
               
       llOwnerSay("This Prim is Clean... ");
       llRemoveInventory( Me );
       // vanish without a trace...
   }

} </lsl>