Difference between revisions of "User:ANSI Soderstrom/Event Scanner CHANGED"

From Second Life Wiki
Jump to navigation Jump to search
Line 36: Line 36:
         }
         }
     }     
     }     
}
 
ResetMe() {
    ClearPrimMemory();       
    llResetScript();
}
   
ClearPrimMemory() {
    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);
    llStopSound(); 
    llResetTime(); 
}
}


Line 64: Line 45:
          
          
     }
     }
       
             
    on_rez(integer i) {
       
        ResetMe();
       
    }
   
    attach(key id) {
           
        ResetMe();
               
    }
       
     changed(integer change) {
     changed(integer change) {
          
          
Line 83: Line 52:
         if (change & (CHANGED_INVENTORY | CHANGED_OWNER)) {
         if (change & (CHANGED_INVENTORY | CHANGED_OWNER)) {
              
              
             ResetMe();
             llResetScript();
            
            
         }
         }

Revision as of 14:24, 26 January 2011

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>