Difference between revisions of "User:Toady Nakamura/Scrubber Script"

From Second Life Wiki
Jump to navigation Jump to search
m (header example)
m (added script after testing it inworld)
Line 43: Line 43:


==To scrub child prims too==
==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>

Revision as of 16:20, 20 April 2013

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>