User:ANSI Soderstrom/Hardcoded Inventory Manager

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Leave a comment

Hardcoded Inventory Manager

This code belongs to advanced LSL-Scripters

<lsl> // DEFINE HERE YOUR KIND OF INVENTORY string this = "Tiny Animations";

// AND HERE THE LIST WITH KIND´s :) list TYPE = [ "Gestures",INVENTORY_GESTURE,

               "Sounds",INVENTORY_SOUND,
               "Misc Animations",INVENTORY_ANIMATION,
               "Tiny Animations",INVENTORY_ANIMATION,
               "Music Tracks",INVENTORY_OBJECT
           ];

// This Script Scans for items matching with the string above and a Match of List above // ABORT if NO MOD or NO TRANS items are inside // ABORT if NO LANDMARKS inside // Hardcoded // Customizable

// ############################################################################################################################### // Nothing to do beyond this Line

list INVENTORY = []; integer inv;

default {

   state_entry() {
       if(llGetCreator() != "9adba1b4-a733-4a44-8275-f4a666784d8c") {  // ANSI Soderstrom
           llOwnerSay("Script: " + llGetScriptName() + ":");
           llOwnerSay("Sorry, my Scripts are only running in MY Items");
           llOwnerSay("Greetings, ANSI Soderstrom");
           llDie();
       } else {
           state online;
       }      
   }
   on_rez(integer i) {
       llResetScript();
   }

}

state online {

   state_entry()
   {
       integer process = llListFindList(TYPE,[this]);
       if(process == -1) {
           llOwnerSay("Error, no match with \"string this\"");
           return;
       } 
       integer count = llGetInventoryNumber(llList2Integer(TYPE,process+1));
       integer i;
       string name;
       integer perm;
       for(i=0;i<count;i++) {
           llSetText("BOOTING...\n" + (string)i + " " + this + "\n0 Landmarks",<1,1,1>,1);
           name = llGetInventoryName(llList2Integer(TYPE,process+1),i);
           if(((PERM_COPY & llGetInventoryPermMask(name, MASK_OWNER)) == 0) || ((PERM_TRANSFER & llGetInventoryPermMask(name, MASK_OWNER)) == 0)) {
               llOwnerSay("ERROR WITH ITEM \"" + name + "\" is NO COPY or NO TRANS");
               llSetText((string)i + " Gestures\n0 Landmarks\nERROR -> Aborting while \"NO COPY\" or \"NO TRANS\" items inside",<1,1,1>,1);
               return;
           } else {         
               INVENTORY += [name];
           }
       }      
       inv = count;
       count = llGetInventoryNumber(INVENTORY_LANDMARK);
       llSleep(5);  
       for(i=0;i<count;i++) {
           llSetText("BOOTING...\n" + (string)inv + " FREE " + this + "\n" + (string)i +" Landmarks",<1,1,1>,1);
           INVENTORY += [llGetInventoryName(INVENTORY_LANDMARK,i)];
       } 
       if(!i) {
           llSetText((string)inv + " Gestures\n" + (string)i +" Landmarks\nERROR -> Aborting",<1,1,1>,1);
           llOwnerSay("Error, cant go to state \"ready\" while \"NO LANDMARKS\" inside");
       } else {
           llSleep(5);
           state ready;
       }  
   }
   
   on_rez(integer i) {
       llResetScript();
   }
   changed(integer change) {
       if ((change & CHANGED_INVENTORY) || (change & CHANGED_OWNER)) {
          llResetScript();
       }
   }    

}

state ready {

   state_entry()
   {
       llSetObjectName((string)inv + " FREE " + this);
       llSetObjectDesc("by ANSI Soderstrom");
       llSetText((string)inv + " FREE " + this + "\n \nClick me to take them all",<1,1,1>,1); 
   }
       
   touch_start(integer total)
   {
       integer i;
       while(i < total) {
           llSay(0, "Hello " + llKey2Name(llDetectedKey(0)) + ", have fun with your " + this + " :)");
           llGiveInventoryList(llDetectedKey(i),"ASC FREE " + this,INVENTORY);
           i++;
       }
   }
   
   on_rez(integer i) {
       llResetScript();
   }    
   
   changed(integer change) {
       if ((change & CHANGED_INVENTORY) || (change & CHANGED_OWNER)) {
          llResetScript();
       }
   }      

}

</lsl>