Difference between revisions of "User:ANSI Soderstrom"

From Second Life Wiki
Jump to navigation Jump to search
Line 260: Line 260:
         PUT(API,["I_HAVE_THE_SETTINGS"],[-34234242]);
         PUT(API,["I_HAVE_THE_SETTINGS"],[-34234242]);


         llMessageLinked(LINK_SET,(integer)GET(API,["MSG_FOR_XYZ"]),llList2CSV(SETTINGS),llGetOwner());
         llMessageLinked(LINK_SET,(integer)GET(API,["I_HAVE_THE_SETTINGS"]),llList2CSV(SETTINGS),llGetOwner());


         // --------------------------------------------------------------------------------  
         // --------------------------------------------------------------------------------  

Revision as of 16:55, 24 February 2010

i am alive ! ...and have for you :

A #Simple Copy Protection for your Scripts.

A #Simple LSL Array for your Scripts.
























Simple LSL Copy Protection for your Scripts (best give away as no mod) :

<lsl> // Simple Copy Protection for your Items // (C) 10/2009 ANSI Soderstrom

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() {
       // your Code
   }   
   
   on_rez(integer i) {
       llResetScript();
   }    

} </lsl>



Simple LSL Array for your Scripts :

<lsl> // Simple LSL Array for your Scripts (useful but slow) // (C) 02/2010 ANSI Soderstrom

list SOMELIST;

string GET(list ARRAY,list KEY) {

   if(!llGetListLength(KEY)>1) {
      // dont allow lists in lists
      return "-1";
   }
   integer position;
   do {
       position = llListFindList(ARRAY, KEY);
       if(position%2 && ~position && position) {
           ARRAY = llDeleteSubList(ARRAY,0,position);
       } 
   } while (~position  && position%2);
   if(~position) {
       return llList2String(ARRAY,position+1);
   } else {
       return "0";
   } 

}

list PUT(list ARRAY,list KEY, list VALUE) {

   if(llGetListLength(KEY)>1 || llGetListLength(VALUE)>1) {
       // dont allow lists in lists
       return [-1];
   }  
   integer position = llListFindList(ARRAY, KEY);
   list helparray = [];
   do {
       if(!~position) { 
           ARRAY += KEY;
           ARRAY += VALUE;
           return helparray + ARRAY;
       }        
       if(position%2 && ~position && position) {
           helparray += llList2List(ARRAY,0,position);
           ARRAY = llDeleteSubList(ARRAY,0,position);
       } 
       position = llListFindList(ARRAY, KEY);        
   } while (position%2);
   ARRAY = llListReplaceList(ARRAY, VALUE, position + 1, position + 1);
   return helparray + ARRAY;   

}

default {

   state_entry() {        

       // --------------------------------------------------------------------------------
        
       SOMELIST = PUT(SOMELIST,["KEY"],["VALUE"]);
       SOMELIST = PUT(SOMELIST,[AGENT],[<1,1,1>]);
       SOMELIST = PUT(SOMELIST,["TEST"],["VALUE"]);
       SOMELIST = PUT(SOMELIST,["VALUE"],["TEST"]);

       llSay(0,GET(SOMELIST,["KEY"]));     // Output : VALUE
       llSay(0,GET(SOMELIST,[AGENT]));     // Output : <1.000000, 1.000000, 1.000000>
       llSay(0,GET(SOMELIST,["TEST"]));    // Output : VALUE
       llSay(0,GET(SOMELIST,["VALUE"]));   // Output : TEST
       
       // --------------------------------------------------------------------------------
       
       SOMELIST = PUT(SOMELIST,["KEY"],["9adba1b4-a733-4a44-8275-f4a666784d8c"]);
       SOMELIST = PUT(SOMELIST,[AGENT],["unknown"]);
       SOMELIST = PUT(SOMELIST,["TEST"],["TEST"]);
       SOMELIST = PUT(SOMELIST,["VALUE"],["VALUE"]);

       llSay(0,GET(SOMELIST,["KEY"]));     // Output : 9adba1b4-a733-4a44-8275-f4a666784d8c
       llSay(0,GET(SOMELIST,[AGENT]));     // Output : unknown
       llSay(0,GET(SOMELIST,["TEST"]));    // Output : TEST
       llSay(0,GET(SOMELIST,["VALUE"]));   // Output : VALUE      

       // --------------------------------------------------------------------------------
        
       // AGENT is a static integer with the value 1
       SOMELIST = PUT(SOMELIST,[1],["AGENT"]); 
       
       llSay(0,GET(SOMELIST,[AGENT]));     // Output : AGENT
               
       // --------------------------------------------------------------------------------        
         
       // "AGENT" and AGENT are different
       if(!(integer)GET(SOMELIST,["AGENT"])) {
           llSay(0,"Not in List");
       } else {
           llSay(0,"Found");
       }
       // Output : Not in List
       
       // --------------------------------------------------------------------------------
               
       // case sensitive KEY´s
       SOMELIST = PUT(SOMELIST,["AGENT"],[NULL_KEY]);
       SOMELIST = PUT(SOMELIST,[AGENT],[ZERO_ROTATION]);
        
       llSay(0,GET(SOMELIST,["agent"]));   // Output : 0
       llSay(0,GET(SOMELIST,["AGENT"]));   // Output : 00000000-0000-0000-0000-000000000000
       llSay(0,GET(SOMELIST,[AGENT]));     // Output : <0.000000, 0.000000, 0.000000, 1.000000>
       
       // --------------------------------------------------------------------------------        
       
       // Let us play...
       SOMELIST = PUT(SOMELIST,[AGENT],[llKey2Name(GET(SOMELIST,["KEY"]))]);   

       llSay(0,GET(SOMELIST,["KEY"])); // Output : 9adba1b4-a733-4a44-8275-f4a666784d8c
       llSay(0,GET(SOMELIST,[AGENT])); // Output : ANSI Soderstrom  

       // --------------------------------------------------------------------------------   
        
       llSay(0,GET(SOMELIST,["NotInList"])); 
       // Output : 0
       
       // --------------------------------------------------------------------------------           

       // Not in List is not in list
       if(!(integer)GET(SOMELIST,["Not In List"])) {
           llSay(0,"Not in List");
       } else {
           llSay(0,"Found");
       }
       // Output : Not in List
       
       // --------------------------------------------------------------------------------           

       // ANSI Soderstrom is not a KEY, only a VALUE
       if(!(integer)GET(SOMELIST,["ANSI Soderstrom"])) {
           llSay(0,"Not in List");
       } else {
           llSay(0,"Found");
       } 
       // Output : Not in List  
       
       // --------------------------------------------------------------------------------           
       
       // KEY is a KEY and have a VALUE
       if(!(integer)GET(SOMELIST,["KEY"])) {
           llSay(0,"Not in List");
       } else {
           llSay(0,"Found");
       } 
       // Output : Found        
       
       // -------------------------------------------------------------------------------- 
       
       llSay(0,llList2CSV(SOMELIST));
       /*
           Output :    KEY,    9adba1b4-a733-4a44-8275-f4a666784d8c, 
                       1,      ANSI Soderstrom, 
                       TEST,   TEST, 
                       VALUE,  VALUE, 
                       AGENT,  00000000-0000-0000-0000-000000000000  
       */    
       // -------------------------------------------------------------------------------- 
       Or manage your Settings...
       list SETTINGS;
       PUT(SETTINGS,["owner"],[llGetOwner()]);
       PUT(SETTINGS,["POS"],[llGetPos()]);
       
       list API;
       PUT(API,["I_HAVE_THE_SETTINGS"],[-34234242]);
       llMessageLinked(LINK_SET,(integer)GET(API,["I_HAVE_THE_SETTINGS"]),llList2CSV(SETTINGS),llGetOwner());
       // -------------------------------------------------------------------------------- 
       link_message(integer sender_num, integer num, string str, key id) {
           // receive a valid message for this state
           if(id==llGetOwner() && GET(API,["I_HAVE_THE_SETTINGS"]) {
               SETTINGS = llCSV2List(str);
           } // if     
       } // link_message  
   } 

}

</lsl>