Difference between revisions of "User:Fred Gandt/Scripts/Functions"
Fred Gandt (talk | contribs) |
Fred Gandt (talk | contribs) m |
||
Line 65: | Line 65: | ||
}</lsl> | }</lsl> | ||
=== MultiStringReplace ( | === MultiListReplace ( V1 ) === | ||
'''Replace entries in a list with other entries.''' | |||
<lsl>// V1 // | |||
list MultiListReplace(list src, list thisnthats) | |||
{ | |||
integer index = 0; | |||
integer lc = 0; | |||
integer ll = llGetListLength(thisnthats); | |||
do | |||
{ | |||
list this = llList2List(thisnthats, lc, lc); | |||
++lc; | |||
while((index = llListFindList(src, this)) != -1) | |||
src = llListReplaceList(src, llList2List(thisnthats, lc, lc), index, index); | |||
} | |||
while((++lc) < ll); | |||
return src; | |||
} | |||
// Usage Example // | |||
list source = ["How", "much", "wood", "would", "a", "woodchuck", "chuck", "if", "a", "woodchuck", "could", "chuck", "wood", "?"]; | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
llOwnerSay(llDumpList2String(MultiListReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "chuck", "rez"]), " ")); | |||
// Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims ?" | |||
} | |||
}</lsl> | |||
=== MultiStringReplace ( V3 ) === | |||
'''Replace parts of a string with other strings.''' | '''Replace parts of a string with other strings.''' | ||
<lsl>// | <lsl>// V3 // | ||
string MultiStringReplace(string src, list thisnthats) | string MultiStringReplace(string src, list thisnthats) | ||
Line 79: | Line 114: | ||
{ | { | ||
string this = llList2String(thisnthats, lc); | string this = llList2String(thisnthats, lc); | ||
++lc; | |||
while((index = llSubStringIndex(src, this)) != -1) | while((index = llSubStringIndex(src, this)) != -1) | ||
src = llInsertString(llDeleteSubString(src, index, (index + (llStringLength(this) - 1))), | src = llInsertString(llDeleteSubString(src, index, (index + (llStringLength(this) - 1))), | ||
index, llList2String(thisnthats, | index, llList2String(thisnthats, lc)); | ||
} | } | ||
while((lc | while((++lc) < ll); | ||
return src; | return src; | ||
} | } | ||
// Usage Examples // | |||
string source = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"; | string source = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"; | ||
Line 105: | Line 143: | ||
// Return == "Object: How many prims would a primsrez rez if a primsrez could rez prims?" | // Return == "Object: How many prims would a primsrez rez if a primsrez could rez prims?" | ||
llOwnerSay(MultiStringReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "farmers", " | llOwnerSay(MultiStringReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "farmers", "piggies", "chuck", "rez"])); | ||
// Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims?" | // Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims?" | ||
} | } | ||
}</lsl> | }</lsl> |
Revision as of 21:01, 2 May 2010
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
My Contributions
I have implemented a V# system to make it more obvious if a function is updated. The V# forms part of the title of each function.
If you have any comments about the content of this page please post them HERE
All my scripting is written for compilation as MONO
More Pages
Free Scripts (content constantly updating)
More Free Scripts (content constantly updating)
Even More Free Scripts (content constantly updating)
Even More More Free Scripts (content constantly updating)
Even More More More Free Scripts (content constantly updating)
Functions for specific tasks (this page)
Legal Stuff
The legal stuff about contributing to this wiki (worth reading).
PJIRA Issue Tracker
The issues I have filed on the PJIRA
Tuition
Tuition scripts, notes, videos and screenshots etc. (hardly any content yet)
Functions
Here is some stuffs wot does fings
GetUniqueListEntries ( V1 )
Feed a list in and get out a list which contains no duplicate entries. Nice and fast.
<lsl>// V1 //
list GetUniqueListEntries(list src) {
integer index = 0; list output = []; list entry = []; do { output += (entry = llList2List(src, 0, 0)); src = llDeleteSubList(src, 0, 0); while((index = llListFindList(src, entry)) != -1) src = llDeleteSubList(src, index, index); } while(llGetListLength(src)); return output;
}</lsl>
MultiListReplace ( V1 )
Replace entries in a list with other entries.
<lsl>// V1 //
list MultiListReplace(list src, list thisnthats) {
integer index = 0; integer lc = 0; integer ll = llGetListLength(thisnthats); do { list this = llList2List(thisnthats, lc, lc); ++lc; while((index = llListFindList(src, this)) != -1) src = llListReplaceList(src, llList2List(thisnthats, lc, lc), index, index); } while((++lc) < ll); return src;
}
// Usage Example //
list source = ["How", "much", "wood", "would", "a", "woodchuck", "chuck", "if", "a", "woodchuck", "could", "chuck", "wood", "?"];
default {
state_entry() { llOwnerSay(llDumpList2String(MultiListReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "chuck", "rez"]), " ")); // Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims ?" }
}</lsl>
MultiStringReplace ( V3 )
Replace parts of a string with other strings.
<lsl>// V3 //
string MultiStringReplace(string src, list thisnthats) {
integer index = 0; integer lc = 0; integer ll = llGetListLength(thisnthats); do { string this = llList2String(thisnthats, lc); ++lc; while((index = llSubStringIndex(src, this)) != -1) src = llInsertString(llDeleteSubString(src, index, (index + (llStringLength(this) - 1))), index, llList2String(thisnthats, lc)); } while((++lc) < ll); return src;
}
// Usage Examples //
string source = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?";
default {
state_entry() { llOwnerSay(MultiStringReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "chuck", "rez"])); // Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims?" llOwnerSay(MultiStringReplace(source, ["much", "many", "wood", "prims", "woodchuck", "primrezzer", "chuck", "rez"])); // Return == "Object: How many prims would a primsrez rez if a primsrez could rez prims?" llOwnerSay(MultiStringReplace(source, ["farmers", "primrezzer", "much", "many", "wood", "prims", "chuck", "rez"])); // Return == "Object: How many prims would a primsrez rez if a primsrez could rez prims?" llOwnerSay(MultiStringReplace(source, ["much", "many", "wood", "prims", "farmers", "primrezzer", "chuck", "rez"])); // Return == "Object: How many prims would a primsrez rez if a primsrez could rez prims?" llOwnerSay(MultiStringReplace(source, ["woodchuck", "primrezzer", "much", "many", "wood", "prims", "farmers", "piggies", "chuck", "rez"])); // Return == "Object: How many prims would a primrezzer rez if a primrezzer could rez prims?" }
}</lsl>