User:Fred Gandt/Scripts/Continued 5
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
My Contributions
If unsure about how to use these scripts
I have implemented a V# system to make it more obvious if a script is updated. The V# forms part of the title of each script.
If you have any comments about the content of this page please post them HERE
All my scripts are 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)
Even More More More More Free Scripts (this page)
Functions for specific tasks (hardly any content yet)
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)
Free Scripts
Prim Property Scrubber ( V2 )
Just drop it onto/into the prim you want to clean of a property and choose from the menu which properties to remove either 1 at a time or all at once.
<lsl>// V2 //
key owner;
integer passes = 0;
integer channel;
list properties = ["All",
"Text", "Particles", "TextureAnim", "Sit Target", "Mouselook", "Sit Text", "Touch Text", "Status's", "Sound", "Light"];
RP(integer i) {
++passes; if(i == 1) llSetText("", <0.0,0.0,0.0>, 0.0); else if(i == 2) llParticleSystem([]); else if(i == 3) llSetTextureAnim(0, -1, 0, 0, 0.0, 0.0, 1.0); else if(i == 4) llSitTarget(<0.0,0.0,0.0>, <0.0,0.0,0.0,1.0>); else if(i == 5) llForceMouselook(0); else if(i == 6) llSetSitText(""); else if(i == 7) llSetTouchText(""); else if(i == 8) { llSetStatus(14, 1); llSetStatus(251, 0); } else if(i == 9) llStopSound(); else if(i == 10) llSetPrimitiveParams([23, 0, <0.0,0.0,0.0>, 0.0, 0.0, 0.0]);
}
RemoveProperty(integer i) {
if(!i) { while(i < 10) RP(++i); RemoveScript(); } else RP(i); if(passes < 10) llDialog(owner, "\nRemove Properties", ["Finished"] + (properties = llListReplaceList(properties, ["-"], i, i)), channel); else RemoveScript();
}
RemoveScript() {
llRemoveInventory(llGetScriptName());
}
default {
state_entry() { owner = llGetOwner(); llListen((channel = (llRound(llFrand(-10000000)) - 100000)), llKey2Name(owner), owner, ""); llDialog(owner, "\nRemove Properties", ["Finished"] + properties, channel); llSetTimerEvent(60.0); } listen(integer chan, string name, key id, string msg) { llSetTimerEvent(60.0); integer index = 0; if((index = llListFindList(properties, [msg])) != -1) { if(msg != "-") RemoveProperty(index); else llDialog(owner, "\nRemove Properties", ["Finished"] + properties, channel); } else if(msg == "Finished") RemoveScript(); } timer() { llOwnerSay("Removing script since you're not using it."); RemoveScript(); }
}</lsl>
Basic Notecard Readers
Two simple methods of reading from a notecard in the prim contents with one of these scripts.
Cyclically Sequential Lines ( V1 )
<lsl>// V1 //
key iq;
integer line;
GetLine(integer i) {
iq = llGetNotecardLine(llGetInventoryName(INVENTORY_NOTECARD, 0), i);
}
default {
dataserver(key q, string data) { if(q == iq) { ++line; if(data != EOF) { if(data != "") llSay(0, data); else GetLine(line); } else GetLine((line = 0)); } } touch_start(integer nd) { if(llGetInventoryNumber(INVENTORY_NOTECARD)) GetLine(line); }
}</lsl>
Random Lines ( V1 )
<lsl>// V1 //
key iq;
key qi;
integer line;
integer lines;
GetLine(integer i) {
iq = llGetNotecardLine(llGetInventoryName(INVENTORY_NOTECARD, 0), i);
}
default {
changed(integer change) { if(change & CHANGED_INVENTORY) llResetScript(); } state_entry() { if(llGetInventoryNumber(INVENTORY_NOTECARD)) qi = llGetNumberOfNotecardLines(llGetInventoryName(INVENTORY_NOTECARD, 0)); } dataserver(key q, string data) { if(q == qi) lines = (((integer)data) - 1); else if(q == iq) { if(data != "") llSay(0, data); else GetLine((++line)); } } touch_start(integer nd) { if(llGetInventoryNumber(INVENTORY_NOTECARD)) GetLine((line = llRound(llFrand(((float)lines))))); }
}</lsl>
More Scripts...
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)
Even More More More More Free Scripts (this page)
If you have any comments about the content of this page please post them HERE