1st necessity of SL

From Second Life Wiki
Revision as of 00:39, 17 October 2009 by Beer Dailey (talk | contribs) (Created page with '// Improve SecondLife's performance! // Start with your own(ned) modifyable scripts/objects. // // This will disable your rootprim's script(s) when no-one is around to use/admire...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

// Improve SecondLife's performance! // Start with your own(ned) modifyable scripts/objects. // // This will disable your rootprim's script(s) when no-one is around to use/admire it // thus stop wasting valuable sim-resources // // Measured script time is 0.002 ms on average. // // - don't use it for rental stuff or sorts, not everything is suitable - // // Free to use, please use it. Improvements are welcome. // // Beer Dailey

// modify below to suit your needs ////////////////////////////////// float distance = 20; // scan range integer delay = 2; // repeat scan every 2 seconds.

// no need to modify the code below /////////////////////////////////// integer g_active = TRUE; // if FALSE disable all other scripts list all_scripts; // list for all scriptnames

active_scripts( integer active ) {

   if(g_active == active) return;
   
   g_active = active; //flip TRUE/FALSE
   
   integer a;
   for ( a = 0; a < llGetListLength(all_scripts); a++)
   {
        llSetScriptState(llList2String(all_scripts, a),active); //(de)activate scripts 
   }    

}

default {

   state_entry()
   {
       string myname = llGetScriptName(); //don't add myself into the list
      
       all_scripts = [];  
       integer i;
       integer n = llGetInventoryNumber(INVENTORY_SCRIPT); //count scripts
       for(i = 0; i < n; ++i)
       {
           string name = llGetInventoryName(INVENTORY_SCRIPT, i); //get all scriptnames
           if(name != myname) all_scripts += [name];       //not my name? add it
       }
       //llSetTimerEvent(delay); 
       llSensorRepeat("", NULL_KEY, AGENT, distance, PI, delay);
   }
   
   on_rez(integer s) 
   { 
       llResetScript(); //first time use
   } 
   
   changed(integer change)
   {
       if (change == CHANGED_INVENTORY) llResetScript(); // catch new scripts
   }
   
   sensor(integer num_detected)
   {
      active_scripts(TRUE); //activate the scripts
   }
   
   no_sensor()  //no-one around? turn off all scripts except myself
   {
      active_scripts(FALSE); //deactivate the scripts
   }
   

}