User:ANSI Soderstrom/Event Scanner CHANGED

From Second Life Wiki
Jump to navigation Jump to search

Leave a comment

Eventscanner: changed()

Find out what is really changing... Attached or loose...

<lsl> // Simple Eventscanner for changed() // (C) 01/2011 ANSI Soderstrom

list CHANGE = [ 1, "CHANGED_INVENTORY",

               2,  "CHANGED_COLOR",
               3,  "CHANGED_SHAPE",
               4,  "CHANGED_SCALE",
               5,  "CHANGED_TEXTURE",
               6,  "CHANGED_LINK",
               7,  "CHANGED_ALLOWED_DROP",
               8,  "CHANGED_OWNER",
               9,  "CHANGED_REGION",
              10,  "CHANGED_TELEPORT",
              11,  "CHANGED_REGION_START",
              12,  "CHANGED_MEDIA"
              ];

integer shift(integer bit) {

   return 1 << bit;

}

search(integer number) {

   integer i;
   for(i=llGetListLength(CHANGE)/2-1;~i;--i) {
       if(number - shift(i) >= 0) {
           llOwnerSay("Change detected : " + llList2String(CHANGE,i*2+1));
           number = number - shift(i);
       }
   }    

}

default {

   state_entry() { 

       // your code here....            
       
   }
              
   changed(integer change) {
       
       search(change);
       
       if (change & (CHANGED_INVENTORY | CHANGED_OWNER)) {
           
           llResetScript();
          
       }
   }
       

}

</lsl>