User:ANSI Soderstrom: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 92: | Line 92: | ||
<lsl> | <lsl> | ||
list SOMELIST; | |||
string GET(list ARRAY,list KEY) { | |||
if(!llGetListLength(KEY)>1) { | |||
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) { | |||
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 | |||
*/ | |||
} | |||
} | |||
</lsl> | </lsl> | ||
Revision as of 15:31, 24 February 2010
i am alive ! ...and have for you :
A #Simple Copy Protection for your Scripts.
A #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>
LSL Array for your Scripts :
<lsl> list SOMELIST;
string GET(list ARRAY,list KEY) {
if(!llGetListLength(KEY)>1) {
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) {
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
*/
}
}
</lsl>