<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Filomena+Firelyte</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Filomena+Firelyte"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Filomena_Firelyte"/>
	<updated>2026-07-28T01:51:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetNotecardLine&amp;diff=1175332</id>
		<title>LlGetNotecardLine</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetNotecardLine&amp;diff=1175332"/>
		<updated>2012-12-17T00:17:17Z</updated>

		<summary type="html">&lt;p&gt;Filomena Firelyte: &amp;quot;If the requested line is longer then&amp;quot; to &amp;quot;If the requested line is longer than&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL_Function/negative_index|false|line}}{{LSL_Function/notecard|name|uuid=true}}&lt;br /&gt;
|func_id=217|func_sleep=0.1|func_energy=10.0&lt;br /&gt;
|sort=GetNotecardLine&lt;br /&gt;
|func=llGetNotecardLine&lt;br /&gt;
|return_type=key&lt;br /&gt;
|p1_type=string|p1_name=name&lt;br /&gt;
|p2_type=integer|p2_name=line|p2_desc=Line number in a notecard (the index starts at zero).&lt;br /&gt;
|func_desc=Requests the line {{LSLP|line}} of the notecard {{LSLP|name}} from the dataserver.&lt;br /&gt;
|return_text=that is the handle for a [[dataserver]] event response.&lt;br /&gt;
|func_footnote=If {{LSLP|line}} is past the end of the notecard [[EOF]] is returned by the [[dataserver]].&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=* If notecard contains embedded inventory items (such as textures and landmarks), [[EOF]] will be returned, regardless of the line requested.&lt;br /&gt;
*If the requested line is longer than 255 bytes the [[dataserver]] will return the first 255 bytes of the line.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
key notecardQueryId;&lt;br /&gt;
string notecardName = &amp;quot;name of notecard as in object&#039;s contents&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// first notecard line is line 0&lt;br /&gt;
integer notecardLine;&lt;br /&gt;
&lt;br /&gt;
say(string inputString)&lt;br /&gt;
{&lt;br /&gt;
    llSay(PUBLIC_CHANNEL, inputString);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // say(&amp;quot;reading notecard named &#039;&amp;quot; + notecardName + &amp;quot;&#039;.&amp;quot;);&lt;br /&gt;
        notecardQueryId = llGetNotecardLine(notecardName, notecardLine);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == notecardQueryId)&lt;br /&gt;
        {&lt;br /&gt;
            if (data == EOF)&lt;br /&gt;
                say(&amp;quot;Done reading notecard, read &amp;quot; + (string)(notecardLine + 1) + &amp;quot; notecard lines.&amp;quot;);&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                // the first line is line 0, the second line is line 1, etc.&lt;br /&gt;
                say(data);&lt;br /&gt;
&lt;br /&gt;
                ++notecardLine;&lt;br /&gt;
                notecardQueryId = llGetNotecardLine(notecardName, notecardLine);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
/////&lt;br /&gt;
//  Generic Multi Notecard reader by Brangus Weir&lt;br /&gt;
//  Given freely and published on wiki.secondlife.com&lt;br /&gt;
//&lt;br /&gt;
//  This script will read three note cards and store the results into three lists.&lt;br /&gt;
//  It can be modified and extended to as many (or few) cards as you&#039;d like to read. &lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
list gOneCard;    // All the lines from from the first card&lt;br /&gt;
list gTwoCard;    // All the lines from from the second card&lt;br /&gt;
list gThreeCard;  // All the lines from from the third card&lt;br /&gt;
&lt;br /&gt;
string gsCardOneName = &amp;quot;One&amp;quot;;  //Set these to the name of the invetory item.&lt;br /&gt;
string gsCardTwoName = &amp;quot;Two&amp;quot;;&lt;br /&gt;
string gsCardThreeName = &amp;quot;Three&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Temporary variables for processing&lt;br /&gt;
string g_sNoteCardName; // Name of the card to be read.&lt;br /&gt;
list g_lTempLines;      // The resulting data pushed into a list&lt;br /&gt;
integer g_iLine;        // The line count for the card reader&lt;br /&gt;
key g_kQuery;           // The key of the card being read&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
initialize(string _action) {&lt;br /&gt;
    // Due to the execution order when using dataserver, this function sets the first card to &lt;br /&gt;
    // be read, and the excetuion finishes when called again with the _action set to &amp;quot;finish&amp;quot;.&lt;br /&gt;
    if (_action == &amp;quot;&amp;quot;) {&lt;br /&gt;
        loadNoteCard(gsCardOneName);&lt;br /&gt;
    } else if (_action == &amp;quot;finish&amp;quot;) {&lt;br /&gt;
        // All cards have been read into the lists... now you can do any kind of string&lt;br /&gt;
        // manipulations to get the data you need to set your script.&lt;br /&gt;
        // But here we will prove that the cards have been read with a loop&lt;br /&gt;
&lt;br /&gt;
        g_lTempLines = []; // lets not forget to delete this global, or it will be dead weight.&lt;br /&gt;
&lt;br /&gt;
        integer len = llGetListLength(gOneCard);  //Always evaluate this once, don&#039;t do it&lt;br /&gt;
                                                  //INSIDE the for loop like noob programers will.&lt;br /&gt;
                                                  //Reduce lag, THINK ABOUT MACHINE CYCLES!&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        for (; i&amp;lt; len; ++i)&lt;br /&gt;
            llSay(0, llList2String(gOneCard,i));&lt;br /&gt;
&lt;br /&gt;
        len = llGetListLength(gTwoCard);&lt;br /&gt;
        for (i = 0; i&amp;lt; len; ++i)&lt;br /&gt;
            llSay(0, llList2String(gTwoCard,i));&lt;br /&gt;
&lt;br /&gt;
        len = llGetListLength(gThreeCard);&lt;br /&gt;
        for (i = 0; i&amp;lt; len; ++i)&lt;br /&gt;
            llSay(0, llList2String(gThreeCard,i));&lt;br /&gt;
    }                &lt;br /&gt;
                              &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
loadNoteCard( string _notecard ) {&lt;br /&gt;
    g_lTempLines = []; //clear the temp lines&lt;br /&gt;
    g_sNoteCardName = _notecard;&lt;br /&gt;
    g_iLine = 0;&lt;br /&gt;
    g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);  &lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
notecardFinished(string _notecard){&lt;br /&gt;
    // Called at the end of each notecard as it is read. The temp results are stored&lt;br /&gt;
    // and the next card is commanded to be read.&lt;br /&gt;
    if (_notecard == gsCardOneName) {&lt;br /&gt;
        gOneCard = g_lTempLines;&lt;br /&gt;
        loadNoteCard(gsCardTwoName);&lt;br /&gt;
    } else if (_notecard == gsCardTwoName) {&lt;br /&gt;
        gTwoCard = g_lTempLines;&lt;br /&gt;
        loadNoteCard(gsCardThreeName);&lt;br /&gt;
    } else if (_notecard == gsCardThreeName) {&lt;br /&gt;
        gThreeCard = g_lTempLines;&lt;br /&gt;
        initialize(&amp;quot;finish&amp;quot;);  // Finally pass execution to finish the initialization.   &lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer _num_det){&lt;br /&gt;
        initialize(&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    dataserver(key _query_id, string _data) &lt;br /&gt;
    {&lt;br /&gt;
        if (_query_id == g_kQuery) {&lt;br /&gt;
            // this is a line of our notecard&lt;br /&gt;
            if (_data != EOF) {    &lt;br /&gt;
                g_lTempLines += _data;&lt;br /&gt;
                //request a next line&lt;br /&gt;
                ++g_iLine;   // increment line count&lt;br /&gt;
                g_kQuery = llGetNotecardLine(g_sNoteCardName, g_iLine);&lt;br /&gt;
            } else {&lt;br /&gt;
                //The notecard has been read &lt;br /&gt;
                //notify end of read&lt;br /&gt;
                notecardFinished(g_sNoteCardName);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
/////&lt;br /&gt;
//  Generic Multi Notecard reader by Randur Source&lt;br /&gt;
//  Given freely and published on wiki.secondlife.com&lt;br /&gt;
//&lt;br /&gt;
//  This script will read all note cards in sequence and dump the results into chat as an example.&lt;br /&gt;
//  It can be modified and extended to do other things to the data. &lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
integer inventorycnt;&lt;br /&gt;
integer notecardlinecnt;&lt;br /&gt;
integer notecardlinenumber;&lt;br /&gt;
string notecardname;&lt;br /&gt;
key linenumberid;&lt;br /&gt;
key lineid;&lt;br /&gt;
&lt;br /&gt;
getnextnotecardlinenumber()&lt;br /&gt;
{&lt;br /&gt;
    // first get the number of lines from the notecard&lt;br /&gt;
    inventorycnt++;&lt;br /&gt;
    if (inventorycnt &amp;lt; llGetInventoryNumber(INVENTORY_NOTECARD))&lt;br /&gt;
    {&lt;br /&gt;
        notecardname = llGetInventoryName(INVENTORY_NOTECARD,inventorycnt);&lt;br /&gt;
        linenumberid = llGetNumberOfNotecardLines(notecardname);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
        llOwnerSay(&amp;quot;Done.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
getnextnotecardline()&lt;br /&gt;
{&lt;br /&gt;
     // get the next line from the notecard or skip to the next notecard&lt;br /&gt;
    notecardlinecnt++;&lt;br /&gt;
    if (notecardlinecnt &amp;lt; notecardlinenumber)&lt;br /&gt;
        lineid = llGetNotecardLine(notecardname,notecardlinecnt);&lt;br /&gt;
    else&lt;br /&gt;
        getnextnotecardlinenumber();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedKey(0) != llGetOwner()) return; // allow owner only&lt;br /&gt;
&lt;br /&gt;
        inventorycnt = -1;&lt;br /&gt;
        getnextnotecardlinenumber();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key queryid,string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (queryid == linenumberid) // this was a line number lookup&lt;br /&gt;
        {&lt;br /&gt;
            linenumberid = NULL_KEY;&lt;br /&gt;
            notecardlinenumber = (integer)data;&lt;br /&gt;
            if (notecardlinenumber == 0)&lt;br /&gt;
                getnextnotecardlinenumber();&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                notecardlinecnt = -1;&lt;br /&gt;
                getnextnotecardline();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else if (queryid == lineid) // this was a data line lookup&lt;br /&gt;
        {&lt;br /&gt;
            lineid = NULL_KEY;&lt;br /&gt;
&lt;br /&gt;
            // Example of what to do with the data:&lt;br /&gt;
            // Test for valid avatar names, possibly multiple names on each line, separated by ,&lt;br /&gt;
            // and say them in chat to the owner&lt;br /&gt;
            list names = llParseString2List(data,[&amp;quot;,&amp;quot;],[]); // split lines on ,&lt;br /&gt;
            integer len = llGetListLength(names); // I wouldn&#039;t dare to put this inside the for loop&lt;br /&gt;
            integer cnt;&lt;br /&gt;
            for (cnt = 0; cnt &amp;lt; len; cnt++)&lt;br /&gt;
            {&lt;br /&gt;
                string name = llDumpList2String(llParseString2List(llList2String(names,cnt),[&amp;quot; &amp;quot;],[]),&amp;quot; &amp;quot;); // remove extra spaces&lt;br /&gt;
                if (llGetListLength(llParseString2List(name,[&amp;quot; &amp;quot;],[])) == 2) // check for first + lastname&lt;br /&gt;
                    llOwnerSay(notecardname + &amp;quot;: &amp;quot; + name);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            getnextnotecardline();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetNumberOfNotecardLines]]|}}&lt;br /&gt;
|also_events={{LSL DefineRow||[[dataserver]]|}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_tests&lt;br /&gt;
|notes=The notecard read can be no modify, or no modify/no copy.&lt;br /&gt;
|permission&lt;br /&gt;
|cat1=Notecard&lt;br /&gt;
|cat2=Dataserver&lt;br /&gt;
|cat3=&lt;br /&gt;
|cat4=&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Filomena Firelyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL3&amp;diff=1174948</id>
		<title>LSL3</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL3&amp;diff=1174948"/>
		<updated>2012-12-02T23:10:30Z</updated>

		<summary type="html">&lt;p&gt;Filomena Firelyte: /* Types */ added const suggestion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightToc}}&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The purpose of the LSL3 project is to design a new programing language that would replace LSL2 in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Design Ideals ==&lt;br /&gt;
*It should be designed to enable expression and not hinder expression with complex or over burdensome syntax requirements.&lt;br /&gt;
*C style syntax and order of operations&lt;br /&gt;
*Type safety&lt;br /&gt;
*Strongly Typed&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* Address the shortcomings of LSL2 and add new functionality while limiting the increase of language complexity.&lt;br /&gt;
* Design LSL3 with Hierarchical Linking in mind {{Jira|MISC-2237}}&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes for LSL2 ==&lt;br /&gt;
Here are some proposed changes to LSL2. Please add new changes, if they cannot be summed up in a single sentence please create a subpage to this article and put a link in the appropriate section. &lt;br /&gt;
&lt;br /&gt;
=== Major changes ===&lt;br /&gt;
* Object model&lt;br /&gt;
* Get rid of get and set functions, use getters and setters instead where possible (syntax sugar).&lt;br /&gt;
* Persistent storage/memory&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
* Fix quaternion ordering&lt;br /&gt;
* Provide quaternion-scalar multiplication&lt;br /&gt;
* Provide quaternion exponentiation q^a where a is a float. (Useful for interpolating rotations to achieve smoothness)&lt;br /&gt;
* Object model for base types&lt;br /&gt;
* Array indexer&lt;br /&gt;
* continue and break keywords.&lt;br /&gt;
* switch statement.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
* User defined class &amp;amp; structures&lt;br /&gt;
** Duck Typing (LinFu?)&lt;br /&gt;
** Anonymous classes?&lt;br /&gt;
* bool type&lt;br /&gt;
* pointers&lt;br /&gt;
* Remove restriction on lists containing lists&lt;br /&gt;
* const&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
* Organized into static classes?&lt;br /&gt;
* Or keep the namespace flat to keep the syntax simple.&lt;br /&gt;
&lt;br /&gt;
=== States &amp;amp; Events ===&lt;br /&gt;
* State variables.&lt;br /&gt;
* User defined events that can be triggered by external scripts.&lt;br /&gt;
* Functions that are only available to specific states.&lt;br /&gt;
&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
* Script libraries that can be sold and passed around.&lt;br /&gt;
* Natural syntax which can be used instead of link_message&lt;br /&gt;
&lt;br /&gt;
== Flaws with LSL2 ==&lt;br /&gt;
Here is a list of flaws with LSL2 that should be fixed.&lt;br /&gt;
=== Combining Quaternions ===&lt;br /&gt;
* See {{JIRA|SVC-1047}} for a full description of this.&lt;br /&gt;
&lt;br /&gt;
=== Evaluation order ===&lt;br /&gt;
* Given the code &amp;lt;code&amp;gt;f(a) + g(a)&amp;lt;/code&amp;gt;, currently &amp;lt;code&amp;gt;g(a)&amp;lt;/code&amp;gt; gets executed before &amp;lt;code&amp;gt;f(a)&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Changing this so &amp;lt;code&amp;gt;f(a)&amp;lt;/code&amp;gt; gets executed first should improve performance on Mono.&lt;br /&gt;
&lt;br /&gt;
===Comparisons of lists=== &lt;br /&gt;
*Only length is compared.&lt;br /&gt;
*The result of a list equality is the difference of the lengths.&lt;br /&gt;
&lt;br /&gt;
===&#039;if else&#039; syntax===&lt;br /&gt;
* &amp;lt;code&amp;gt;if([1])&amp;lt;/code&amp;gt; evaluates to false.&lt;br /&gt;
* &amp;lt;code&amp;gt;if !(STRING)&amp;lt;/code&amp;gt; gives syntax error, forcing &amp;lt;code&amp;gt;if (STRING == &amp;quot;&amp;quot;)&amp;lt;/code&amp;gt; Applies to all types in which ! cannot be put directly in front.&lt;br /&gt;
&lt;br /&gt;
=== [[PRIM_ROTATION]] ===&lt;br /&gt;
* For child prims this requires dividing out the root prims rotation.&lt;br /&gt;
&lt;br /&gt;
=== [[llInsertString]] ===&lt;br /&gt;
* Does not support negative indexes.&lt;br /&gt;
&lt;br /&gt;
=== {{LSLGC|Detected|llDetected*}} Functions ===&lt;br /&gt;
* Do not support negative indexes.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*{{Jira|SVC-1657}}&lt;/div&gt;</summary>
		<author><name>Filomena Firelyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL3&amp;diff=1174947</id>
		<title>LSL3</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL3&amp;diff=1174947"/>
		<updated>2012-12-02T23:09:20Z</updated>

		<summary type="html">&lt;p&gt;Filomena Firelyte: /* States &amp;amp; Events */ Added suggestion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightToc}}&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The purpose of the LSL3 project is to design a new programing language that would replace LSL2 in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Design Ideals ==&lt;br /&gt;
*It should be designed to enable expression and not hinder expression with complex or over burdensome syntax requirements.&lt;br /&gt;
*C style syntax and order of operations&lt;br /&gt;
*Type safety&lt;br /&gt;
*Strongly Typed&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
* Address the shortcomings of LSL2 and add new functionality while limiting the increase of language complexity.&lt;br /&gt;
* Design LSL3 with Hierarchical Linking in mind {{Jira|MISC-2237}}&lt;br /&gt;
&lt;br /&gt;
== Proposed Changes for LSL2 ==&lt;br /&gt;
Here are some proposed changes to LSL2. Please add new changes, if they cannot be summed up in a single sentence please create a subpage to this article and put a link in the appropriate section. &lt;br /&gt;
&lt;br /&gt;
=== Major changes ===&lt;br /&gt;
* Object model&lt;br /&gt;
* Get rid of get and set functions, use getters and setters instead where possible (syntax sugar).&lt;br /&gt;
* Persistent storage/memory&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
* Fix quaternion ordering&lt;br /&gt;
* Provide quaternion-scalar multiplication&lt;br /&gt;
* Provide quaternion exponentiation q^a where a is a float. (Useful for interpolating rotations to achieve smoothness)&lt;br /&gt;
* Object model for base types&lt;br /&gt;
* Array indexer&lt;br /&gt;
* continue and break keywords.&lt;br /&gt;
* switch statement.&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
* User defined class &amp;amp; structures&lt;br /&gt;
** Duck Typing (LinFu?)&lt;br /&gt;
** Anonymous classes?&lt;br /&gt;
* bool type&lt;br /&gt;
* pointers&lt;br /&gt;
* Remove restriction on lists containing lists&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
* Organized into static classes?&lt;br /&gt;
* Or keep the namespace flat to keep the syntax simple.&lt;br /&gt;
&lt;br /&gt;
=== States &amp;amp; Events ===&lt;br /&gt;
* State variables.&lt;br /&gt;
* User defined events that can be triggered by external scripts.&lt;br /&gt;
* Functions that are only available to specific states.&lt;br /&gt;
&lt;br /&gt;
=== Libraries ===&lt;br /&gt;
* Script libraries that can be sold and passed around.&lt;br /&gt;
* Natural syntax which can be used instead of link_message&lt;br /&gt;
&lt;br /&gt;
== Flaws with LSL2 ==&lt;br /&gt;
Here is a list of flaws with LSL2 that should be fixed.&lt;br /&gt;
=== Combining Quaternions ===&lt;br /&gt;
* See {{JIRA|SVC-1047}} for a full description of this.&lt;br /&gt;
&lt;br /&gt;
=== Evaluation order ===&lt;br /&gt;
* Given the code &amp;lt;code&amp;gt;f(a) + g(a)&amp;lt;/code&amp;gt;, currently &amp;lt;code&amp;gt;g(a)&amp;lt;/code&amp;gt; gets executed before &amp;lt;code&amp;gt;f(a)&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Changing this so &amp;lt;code&amp;gt;f(a)&amp;lt;/code&amp;gt; gets executed first should improve performance on Mono.&lt;br /&gt;
&lt;br /&gt;
===Comparisons of lists=== &lt;br /&gt;
*Only length is compared.&lt;br /&gt;
*The result of a list equality is the difference of the lengths.&lt;br /&gt;
&lt;br /&gt;
===&#039;if else&#039; syntax===&lt;br /&gt;
* &amp;lt;code&amp;gt;if([1])&amp;lt;/code&amp;gt; evaluates to false.&lt;br /&gt;
* &amp;lt;code&amp;gt;if !(STRING)&amp;lt;/code&amp;gt; gives syntax error, forcing &amp;lt;code&amp;gt;if (STRING == &amp;quot;&amp;quot;)&amp;lt;/code&amp;gt; Applies to all types in which ! cannot be put directly in front.&lt;br /&gt;
&lt;br /&gt;
=== [[PRIM_ROTATION]] ===&lt;br /&gt;
* For child prims this requires dividing out the root prims rotation.&lt;br /&gt;
&lt;br /&gt;
=== [[llInsertString]] ===&lt;br /&gt;
* Does not support negative indexes.&lt;br /&gt;
&lt;br /&gt;
=== {{LSLGC|Detected|llDetected*}} Functions ===&lt;br /&gt;
* Do not support negative indexes.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*{{Jira|SVC-1657}}&lt;/div&gt;</summary>
		<author><name>Filomena Firelyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMinEventDelay&amp;diff=1174911</id>
		<title>LlMinEventDelay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMinEventDelay&amp;diff=1174911"/>
		<updated>2012-11-30T19:36:31Z</updated>

		<summary type="html">&lt;p&gt;Filomena Firelyte: Removed event category for this is not an event but a mere function.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=125|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|sort=MinEventDelay&lt;br /&gt;
|func=llMinEventDelay&lt;br /&gt;
|p1_type=float|p1_name=delay|p1_desc=time in seconds&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Set the minimum time between events being handled.&lt;br /&gt;
&lt;br /&gt;
Defaults and minimums vary by the event type, see [[LSL Delay]].&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llMinEventDelay(5.0);&lt;br /&gt;
    }&lt;br /&gt;
    touch(integer detected)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);//Without the event delay set touch would cause the screen to fill &lt;br /&gt;
                             //with the word &amp;quot;Touched&amp;quot; in a split second if you held the mouse button down.&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where as, if in one object you place this script (for the sake of fun call the object &amp;quot;Sandy Powell&amp;quot;). -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    touch(integer detected)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Can you hear me mother?&amp;quot;);//Northern English accent. Catch phase of Sandy Powell (comedian).&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and this in another object called &amp;quot;Mother&amp;quot; -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llMinEventDelay(5.0);&lt;br /&gt;
        llListen(0, &amp;quot;Sandy Powell&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Eh?&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the result in chat is as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Sandy Powell: Can you hear me mother?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:51]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
[12:52]  Mother: Eh?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and no more events are triggered. This is an example of lost transferred info because of [[llMinEventDelay]] so be careful with it.&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[LSL Delay]] |for default values}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Filomena Firelyte</name></author>
	</entry>
</feed>