User:Fred Gandt/Scripts/Continued 5

From Second Life Wiki
< User:Fred Gandt‎ | Scripts
Revision as of 13:04, 18 May 2010 by Fred Gandt (talk | contribs) (Added scripts)
Jump to navigation Jump to search
FG jpg.jpg

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