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 version number system to make it more obvious if a script is updated. The V# is a comment at the top 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 Scripts
- Direct Links To All Individual Scripts
- Free Scripts
- Free Scripts 2
- Free Scripts 3
- Free Scripts 4
- Free Scripts 5
- Free Scripts 6
- Free Scripts 7
- Car Type Land Vehicle Scripts (working on it...)
- Functions For Specific Tasks
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
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.
<syntaxhighlight lang="lsl2">// V2 //
key owner;
integer passes = 0;
integer channel;
list properties = ["All", // All the properties listed below.
"Text", // Floating text. Used to display text typically above a prim. "Particles", // Used in "Poofers" for example. "TextureAnim", // Texture Animation. Used to make textures on faces of prims move. "Sit Target", // Used in seats and poseballs. Sets an alternative sit position than the default. "Mouselook", // Forced Mouselook. Used to force an agents view to mouselook when sitting on the prim. "Sit Text", // Text other than the default "Sit Here" shown on the right click pie menu. "Touch Text", // Text other than the default "Touch" shown on the right click pie menu. "Status's", // There are many status's that can be set in prims. See the wiki (llSetStatus) for details. "Sound", // Looping sound emitting from the prim. "Light"]; // Light emitting from the prim.
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(); }
}</syntaxhighlight>
Bling Scrubber
This is specifically for removing particles and the scripts that set them from objects. It will cure link_sets or single prims. If the option to scrub the scripts is chosen (as well as to scrub the particles) ALL the scripts in the whole object will be removed.
<syntaxhighlight lang="lsl2">// V1 //
string instructions = "";
integer channel = -9865443;
string scrub = "SCRUB";
string no = "NO";
integer link_num;
Dialog(integer d) {
key owner = llGetOwner(); llListen(channel, "", owner, ""); if(d) llDialog(owner, "\n\n" + instructions + "ARE YOU SURE YOU WANT TO REMOVE ALL SCRIPTS?" + "CLICKING \"" + no + "\" WILL STILL REMOVE ALL PARTICLES BUT, THEY MIGHT COME BACK.", [scrub, no], channel);
}
default {
on_rez(integer param) { Dialog(1); } state_entry() { if((link_num = llGetLinkNumber()) == 1) { integer i = 2; do llGiveInventory(llGetLinkKey(i), llGetScriptName()); while((++i) <= llGetNumberOfPrims()); instructions = "Open an edit on me and goto your viewer \"Tools\" menu.\n" + "Near the bottom of the menu click \"Set Scripts Running in Selection\".\n" + "Once ALL the scripts are set running, click the \"" + scrub + "\" button.\n\n"; llOwnerSay("Take then rez me. Follow the instructions given on rez."); } else if(!link_num) Dialog(1); else Dialog(0); } listen(integer chan, string name, key id, string msg) { chan = 0; if(msg == scrub) { string name; while((llGetInventoryNumber(INVENTORY_SCRIPT) - 1)) { if((name = llGetInventoryName(INVENTORY_SCRIPT, chan)) != llGetScriptName()) llRemoveInventory(name); else chan = 1; } } if(((chan = link_num) == 1)) { do llLinkParticleSystem(chan, []); while((++chan) <= llGetNumberOfPrims()); } else llParticleSystem([]); if(link_num < 2) llOwnerSay("All done!"); llRemoveInventory(llGetScriptName()); }
}</syntaxhighlight>
Basic Notecard Readers
Two simple methods of reading from a notecard in the prim contents with one of these scripts.
Cyclically Sequential Lines
<syntaxhighlight lang="lsl2">// 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); }
}</syntaxhighlight>
Random Lines
<syntaxhighlight lang="lsl2">// 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))))); }
}</syntaxhighlight>
CamHUD
Simple two function scripted camera controller. When turned on, the camera position locks in whatever place it was at the time of activation. To change the camera position, turn the HUD off...move the camera to the desired position...turn the HUD back on.
- There are two buttons - One marked "Track" and another marked "Power".
- "Power" (I think) has a fairly obvious function.
- "Track" switches on and off, tracking of the owner. With tracking off the camera is locked solid. With tracking on the camera position is locked but it rotates to follow you around if you move.
The usefulness of this is up to you to decide.
Create the Object
To create the object use the following script. Just drop it onto/into a fresh prim. The resulting prim is quite small since it is designed to be a low impact HUD.
<syntaxhighlight lang="lsl2">// V1 //
default {
state_entry() { llSetObjectName("CamHUD"); // You can change this after if you want. llSetPrimitiveParams([7, <0.01, 0.05, 0.025>, 8, <1.0, 0.0, 0.0, 0.0>, 9, 0, 0, <0.125, 0.625, 0.0>, 0.1, <0.0, 0.0, 0.0>, <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 17, -1, "5748decc-f629-461c-9a36-a35a221fe21f", <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]); llRemoveInventory(llGetScriptName()); // Done its job so self deletes. }
}</syntaxhighlight>
CamHUD Script
Drop this script into the prim you just created. Wear the object as a HUD. If you do not see two distinct buttons separated by a black line, it is probably back to front or something.
<syntaxhighlight lang="lsl2">// V1 //
integer perms;
integer track;
integer on;
vector red = <1.0,0.0,0.0>;
vector green = <0.0,1.0,0.0>;
SetCameraParams(integer o, integer t) {
list focus = []; llClearCameraParams(); if(t) focus = [CAMERA_FOCUS, llGetPos()]; else focus = [CAMERA_FOCUS_LOCKED, TRUE]; llSetCameraParams([CAMERA_ACTIVE, o, CAMERA_POSITION_LOCKED, TRUE] + focus);
}
default {
on_rez(integer param) { llResetScript(); } state_entry() { if(llGetAttached()) llRequestPermissions(llGetOwner(), PERMISSION_CONTROL_CAMERA); } run_time_permissions(integer perm) { if(perm & PERMISSION_CONTROL_CAMERA) { perms = TRUE; llSetText(" Track
More Scripts...
- Direct Links To All Individual Scripts
- Free Scripts
- Free Scripts 2
- Free Scripts 3
- Free Scripts 4
- Free Scripts 5
- Free Scripts 6
- Free Scripts 7
- Car Type Land Vehicle Scripts (Working on it...)
If you have any comments about the content of this page please post them HERE