<?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=PixelProphet+Lane</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=PixelProphet+Lane"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/PixelProphet_Lane"/>
	<updated>2026-05-10T08:53:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1167442</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1167442"/>
		<updated>2012-05-17T12:57:30Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&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;
&lt;br /&gt;
{{box|Show Agent Script Count and memory|&lt;br /&gt;
&lt;br /&gt;
This script will display the amount of scripts attached to the avatar that touches the prim this script is in, and will display the amount of memory used by those scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Agent Script Count and memory usage by PixelProphet Lane&lt;br /&gt;
//bytesToSize function in PHP ThomasR, August 24th 2010, adapted to LSL by PixelProphet Lane &lt;br /&gt;
string bytesToSize(integer bytes)&lt;br /&gt;
{&lt;br /&gt;
    list units = [&amp;quot;Bytes&amp;quot;, &amp;quot;KiloBytes&amp;quot;, &amp;quot;MegaBytes&amp;quot;, &amp;quot;GigaBytes&amp;quot;, &amp;quot;TerraBytes&amp;quot;];&lt;br /&gt;
    if (bytes == 0) return &amp;quot;n/a&amp;quot;;&lt;br /&gt;
    integer i = llFloor(llLog(bytes) / llLog(1024));&lt;br /&gt;
    string val = (string)llRound(bytes / llPow(1024, i));&lt;br /&gt;
    return val + &amp;quot; &amp;quot; + llList2String(units,i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ONAME;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ONAME = llGetObjectName();&lt;br /&gt;
        llSay(0,llGetEnv(&amp;quot;sim_channel&amp;quot;) + &amp;quot; &amp;quot; + llGetEnv(&amp;quot;sim_version&amp;quot;));        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetObjectName(llDetectedName(0));&lt;br /&gt;
        list data = llGetObjectDetails(llDetectedKey(0),[OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
        string scripts = llList2String(data,0);&lt;br /&gt;
        integer mem = llList2Integer(data,1);&lt;br /&gt;
        string memory = bytesToSize(mem);&lt;br /&gt;
        llSay(0,&amp;quot;/me has &amp;quot;+scripts+&amp;quot; scripts attached using a total of &amp;quot;+memory);&lt;br /&gt;
        llSetObjectName(ONAME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Grid Status Feed|&lt;br /&gt;
&lt;br /&gt;
This script will periodically query the Second Life Grid Status Feed and will check to see the latest post is from the same day the request was made. If so, the script can optionally display title, link and description of the latest feed post to inform you. Posts from yesterday will not be displayed.&lt;br /&gt;
&lt;br /&gt;
This script operates in a prim rezzed on your parcel, or inside an attachment.&lt;br /&gt;
If you are using this script in an attachment, the data will be displayed using llOwnerSay.&lt;br /&gt;
If you are using this script in a prim not attached to you, it will check if you are on the same region, and if so, use llOwnerSay.&lt;br /&gt;
If you are on a different region, it will check your online status and use llInstantMessage if you are online.&lt;br /&gt;
If you are offline, the script will not inform you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
######## Grid Status Feed by PixelProphet Lane #########&lt;br /&gt;
######## Leave it at home, or carry it around with you #&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
integer SEND_TITLE = TRUE;  //include title in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_LINK = TRUE;   //include link in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_DESC = TRUE;   //include description in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer IS_ATTACHED = FALSE;&lt;br /&gt;
&lt;br /&gt;
string KEYWORD_ALERT = &amp;quot;&amp;quot;; //Define a string of characters that trigger a keyword alert (Firestorm Viewer), or leave empty&lt;br /&gt;
string FEED_URL = &amp;quot;http://status.secondlifegrid.net/feed&amp;quot;;&lt;br /&gt;
string PUB_DATE = &amp;quot;nothing&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
key HTTP_REQID;&lt;br /&gt;
key DATA_REQID;&lt;br /&gt;
key OWNER;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RequstOnlineStatus()&lt;br /&gt;
{&lt;br /&gt;
    DATA_REQID = llRequestAgentData(OWNER, DATA_ONLINE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RequestFeedData()&lt;br /&gt;
{&lt;br /&gt;
    HTTP_REQID = llHTTPRequest(FEED_URL,[],&amp;quot;&amp;quot;);    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string Today()&lt;br /&gt;
{&lt;br /&gt;
    list months_short = [&amp;quot;Jan&amp;quot;, &amp;quot;Feb&amp;quot;, &amp;quot;Mar&amp;quot;, &amp;quot;Apr&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;Jun&amp;quot;, &amp;quot;Jul&amp;quot;, &amp;quot;Aug&amp;quot;, &amp;quot;Sep&amp;quot;, &amp;quot;Oct&amp;quot;, &amp;quot;Nov&amp;quot;, &amp;quot;Dec&amp;quot;];&lt;br /&gt;
    list ldate = llParseString2List(llGetDate(),[&amp;quot;-&amp;quot;],[]);&lt;br /&gt;
    string day = (string)llList2Integer(ldate, 2);&lt;br /&gt;
    string month = llList2String(months_short, (llList2Integer(ldate, 1)-1));;&lt;br /&gt;
    string year = llList2String(ldate, 0);&lt;br /&gt;
    return day+&amp;quot; &amp;quot;+month+&amp;quot; &amp;quot;+year;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        if (OWNER != llGetOwner())&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        if (!SEND_TITLE &amp;amp;&amp;amp; !SEND_LINK &amp;amp;&amp;amp; !SEND_DESC)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Please set at least one of SEND_TITLE,SEND_LINK or SEND_DESC to 1&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        llSetTimerEvent(300);&lt;br /&gt;
        if ((IS_ATTACHED = llGetAttached()) != 0  || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    attach(key id)&lt;br /&gt;
    {&lt;br /&gt;
        IS_ATTACHED = llGetAttached(); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key queryid, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (queryid != DATA_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (data == &amp;quot;1&amp;quot;) &lt;br /&gt;
            RequestFeedData();    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http_response (key request_id, integer status, list metadata, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (request_id != HTTP_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (status == 200) //Under normal circumstances the server will return 200&lt;br /&gt;
        {&lt;br /&gt;
            //body = llGetSubString(body, 0, 2048); //In future HTTP Requests may receive a lot more than 2048 bytes&lt;br /&gt;
            integer begin = llSubStringIndex(body, &amp;quot;&amp;lt;pubDate&amp;gt;&amp;quot;) + 9;&lt;br /&gt;
            integer end = llSubStringIndex(body, &amp;quot;&amp;lt;/pubDate&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
            string data;&lt;br /&gt;
            if (~begin &amp;amp;&amp;amp; ~end) //If &amp;lt;pubDate&amp;gt; wasn&#039;t found, no need for further processing&lt;br /&gt;
            {&lt;br /&gt;
                data = llGetSubString(body, begin, end);&lt;br /&gt;
                if (-1 == llSubStringIndex(data,Today())) //Only posts from today&lt;br /&gt;
                    return;&lt;br /&gt;
                if (data != &amp;quot;&amp;quot; &amp;amp;&amp;amp; data != PUB_DATE) //Make sure data even contains something&lt;br /&gt;
                {&lt;br /&gt;
                    PUB_DATE = data;&lt;br /&gt;
                    begin = llSubStringIndex(body, &amp;quot;&amp;lt;item&amp;gt;&amp;quot;) + 6; //Get the beginning of first item&lt;br /&gt;
                    end = llSubStringIndex(body, &amp;quot;&amp;lt;/item&amp;gt;&amp;quot;) - 1; //Get the end of first item &lt;br /&gt;
                    string item = llGetSubString(body, begin, end); //Crop the string&lt;br /&gt;
                    string data = KEYWORD_ALERT;            &lt;br /&gt;
                    if (SEND_TITLE)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;title&amp;gt;&amp;quot;) + 7;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/title&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);&lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_LINK)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;link&amp;gt;&amp;quot;) + 6;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/link&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_DESC)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item,  &amp;quot;&amp;lt;description&amp;gt;&amp;quot;) + 22; //len &amp;lt;description&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/description&amp;gt;&amp;quot;) - 4;&lt;br /&gt;
                        item = llGetSubString(item, begin, end); //Crop the string&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+item;   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (data != KEYWORD_ALERT) //did we even get any data ?&lt;br /&gt;
                    {&lt;br /&gt;
                        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER)) //attached, or owner on region&lt;br /&gt;
                            llOwnerSay(data);&lt;br /&gt;
                        else&lt;br /&gt;
                            llInstantMessage(OWNER, data);     &lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Animation Permissions Tester|&lt;br /&gt;
&lt;br /&gt;
Just a script to test if animation scripts are generally operational on a region.&lt;br /&gt;
Usage: Create a prim and drop this script inside, then either touch the prim, or sit on the prim.&lt;br /&gt;
Sitting on the prim will use auto-grant permission, so you will not see a permissions request dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSitTarget(&amp;lt;0,0,1&amp;gt;,ZERO_ROTATION);    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llRequestPermissions(llDetectedKey(0),PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_LINK)&lt;br /&gt;
        {&lt;br /&gt;
            if (llAvatarOnSitTarget())&lt;br /&gt;
                llRequestPermissions(llAvatarOnSitTarget(),PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    run_time_permissions(integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        if (perm &amp;amp; PERMISSION_TRIGGER_ANIMATION)&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;PERMISSION_TRIGGER_ANIMATION granted&amp;quot;);&lt;br /&gt;
            llStopAnimation(&amp;quot;stand&amp;quot;);&lt;br /&gt;
            llStopAnimation(&amp;quot;sit&amp;quot;);&lt;br /&gt;
            llStartAnimation(&amp;quot;dance1&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1167441</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1167441"/>
		<updated>2012-05-17T12:54:29Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&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;
&lt;br /&gt;
{{box|Show Agent Script Count and memory|&lt;br /&gt;
&lt;br /&gt;
This script will display the amount of scripts attached to the avatar that touches the prim this script is in, and will display the amount of memory used by those scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Agent Script Count and memory usage by PixelProphet Lane&lt;br /&gt;
//bytesToSize function in PHP ThomasR, August 24th 2010, adapted to LSL by PixelProphet Lane &lt;br /&gt;
string bytesToSize(integer bytes)&lt;br /&gt;
{&lt;br /&gt;
    list units = [&amp;quot;Bytes&amp;quot;, &amp;quot;KiloBytes&amp;quot;, &amp;quot;MegaBytes&amp;quot;, &amp;quot;GigaBytes&amp;quot;, &amp;quot;TerraBytes&amp;quot;];&lt;br /&gt;
    if (bytes == 0) return &amp;quot;n/a&amp;quot;;&lt;br /&gt;
    integer i = llFloor(llLog(bytes) / llLog(1024));&lt;br /&gt;
    string val = (string)llRound(bytes / llPow(1024, i));&lt;br /&gt;
    return val + &amp;quot; &amp;quot; + llList2String(units,i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ONAME;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ONAME = llGetObjectName();&lt;br /&gt;
        llSay(0,llGetEnv(&amp;quot;sim_channel&amp;quot;) + &amp;quot; &amp;quot; + llGetEnv(&amp;quot;sim_version&amp;quot;));        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetObjectName(llDetectedName(0));&lt;br /&gt;
        list data = llGetObjectDetails(llDetectedKey(0),[OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
        string scripts = llList2String(data,0);&lt;br /&gt;
        integer mem = llList2Integer(data,1);&lt;br /&gt;
        string memory = bytesToSize(mem);&lt;br /&gt;
        llSay(0,&amp;quot;/me has &amp;quot;+scripts+&amp;quot; scripts attached using a total of &amp;quot;+memory);&lt;br /&gt;
        llSetObjectName(ONAME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Grid Status Feed|&lt;br /&gt;
&lt;br /&gt;
This script will periodically query the Second Life Grid Status Feed and will check to see the latest post is from the same day the request was made. If so, the script can optionally display title, link and description of the latest feed post to inform you. Posts from yesterday will not be displayed.&lt;br /&gt;
&lt;br /&gt;
This script operates in a prim rezzed on your parcel, or inside an attachment.&lt;br /&gt;
If you are using this script in an attachment, the data will be displayed using llOwnerSay.&lt;br /&gt;
If you are using this script in a prim not attached to you, it will check if you are on the same region, and if so, use llOwnerSay.&lt;br /&gt;
If you are on a different region, it will check your online status and use llInstantMessage if you are online.&lt;br /&gt;
If you are offline, the script will not inform you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
######## Grid Status Feed by PixelProphet Lane #########&lt;br /&gt;
######## Leave it at home, or carry it around with you #&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
integer SEND_TITLE = TRUE;  //include title in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_LINK = TRUE;   //include link in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_DESC = TRUE;   //include description in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer IS_ATTACHED = FALSE;&lt;br /&gt;
&lt;br /&gt;
string KEYWORD_ALERT = &amp;quot;&amp;quot;; //Define a string of characters that trigger a keyword alert (Firestorm Viewer), or leave empty&lt;br /&gt;
string FEED_URL = &amp;quot;http://status.secondlifegrid.net/feed&amp;quot;;&lt;br /&gt;
string PUB_DATE = &amp;quot;nothing&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
key HTTP_REQID;&lt;br /&gt;
key DATA_REQID;&lt;br /&gt;
key OWNER;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RequstOnlineStatus()&lt;br /&gt;
{&lt;br /&gt;
    DATA_REQID = llRequestAgentData(OWNER, DATA_ONLINE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RequestFeedData()&lt;br /&gt;
{&lt;br /&gt;
    HTTP_REQID = llHTTPRequest(FEED_URL,[],&amp;quot;&amp;quot;);    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string Today()&lt;br /&gt;
{&lt;br /&gt;
    list months_short = [&amp;quot;Jan&amp;quot;, &amp;quot;Feb&amp;quot;, &amp;quot;Mar&amp;quot;, &amp;quot;Apr&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;Jun&amp;quot;, &amp;quot;Jul&amp;quot;, &amp;quot;Aug&amp;quot;, &amp;quot;Sep&amp;quot;, &amp;quot;Oct&amp;quot;, &amp;quot;Nov&amp;quot;, &amp;quot;Dec&amp;quot;];&lt;br /&gt;
    list ldate = llParseString2List(llGetDate(),[&amp;quot;-&amp;quot;],[]);&lt;br /&gt;
    string day = (string)llList2Integer(ldate, 2);&lt;br /&gt;
    string month = llList2String(months_short, (llList2Integer(ldate, 1)-1));;&lt;br /&gt;
    string year = llList2String(ldate, 0);&lt;br /&gt;
    return day+&amp;quot; &amp;quot;+month+&amp;quot; &amp;quot;+year;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        if (OWNER != llGetOwner())&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        if (!SEND_TITLE &amp;amp;&amp;amp; !SEND_LINK &amp;amp;&amp;amp; !SEND_DESC)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Please set at least one of SEND_TITLE,SEND_LINK or SEND_DESC to 1&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        llSetTimerEvent(300);&lt;br /&gt;
        if ((IS_ATTACHED = llGetAttached()) != 0  || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    attach(key id)&lt;br /&gt;
    {&lt;br /&gt;
        IS_ATTACHED = llGetAttached(); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key queryid, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (queryid != DATA_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (data == &amp;quot;1&amp;quot;) &lt;br /&gt;
            RequestFeedData();    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http_response (key request_id, integer status, list metadata, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (request_id != HTTP_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (status == 200) //Under normal circumstances the server will return 200&lt;br /&gt;
        {&lt;br /&gt;
            //body = llGetSubString(body, 0, 2048); //In future HTTP Requests may receive a lot more than 2048 bytes&lt;br /&gt;
            integer begin = llSubStringIndex(body, &amp;quot;&amp;lt;pubDate&amp;gt;&amp;quot;) + 9;&lt;br /&gt;
            integer end = llSubStringIndex(body, &amp;quot;&amp;lt;/pubDate&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
            string data;&lt;br /&gt;
            if (~begin &amp;amp;&amp;amp; ~end) //If &amp;lt;pubDate&amp;gt; wasn&#039;t found, no need for further processing&lt;br /&gt;
            {&lt;br /&gt;
                data = llGetSubString(body, begin, end);&lt;br /&gt;
                if (-1 == llSubStringIndex(data,Today())) //Only posts from today&lt;br /&gt;
                    return;&lt;br /&gt;
                if (data != &amp;quot;&amp;quot; &amp;amp;&amp;amp; data != PUB_DATE) //Make sure data even contains something&lt;br /&gt;
                {&lt;br /&gt;
                    PUB_DATE = data;&lt;br /&gt;
                    begin = llSubStringIndex(body, &amp;quot;&amp;lt;item&amp;gt;&amp;quot;) + 6; //Get the beginning of first item&lt;br /&gt;
                    end = llSubStringIndex(body, &amp;quot;&amp;lt;/item&amp;gt;&amp;quot;) - 1; //Get the end of first item &lt;br /&gt;
                    string item = llGetSubString(body, begin, end); //Crop the string&lt;br /&gt;
                    string data = KEYWORD_ALERT;            &lt;br /&gt;
                    if (SEND_TITLE)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;title&amp;gt;&amp;quot;) + 7;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/title&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);&lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_LINK)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;link&amp;gt;&amp;quot;) + 6;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/link&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_DESC)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item,  &amp;quot;&amp;lt;description&amp;gt;&amp;quot;) + 22; //len &amp;lt;description&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/description&amp;gt;&amp;quot;) - 4;&lt;br /&gt;
                        item = llGetSubString(item, begin, end); //Crop the string&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+item;   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (data != KEYWORD_ALERT) //did we even get any data ?&lt;br /&gt;
                    {&lt;br /&gt;
                        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER)) //attached, or owner on region&lt;br /&gt;
                            llOwnerSay(data);&lt;br /&gt;
                        else&lt;br /&gt;
                            llInstantMessage(OWNER, data);     &lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Animation Permissions Tester|&lt;br /&gt;
&lt;br /&gt;
Just a script to test if animation scripts are generally operational on a region.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSitTarget(&amp;lt;0,0,1&amp;gt;,ZERO_ROTATION);    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llRequestPermissions(llDetectedKey(0),PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_LINK)&lt;br /&gt;
        {&lt;br /&gt;
            if (llAvatarOnSitTarget())&lt;br /&gt;
                llRequestPermissions(llAvatarOnSitTarget(),PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    run_time_permissions(integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        if (perm &amp;amp; PERMISSION_TRIGGER_ANIMATION)&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;PERMISSION_TRIGGER_ANIMATION granted&amp;quot;);&lt;br /&gt;
            llStopAnimation(&amp;quot;stand&amp;quot;);&lt;br /&gt;
            llStopAnimation(&amp;quot;sit&amp;quot;);&lt;br /&gt;
            llStartAnimation(&amp;quot;dance1&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlManageEstateAccess&amp;diff=1165794</id>
		<title>LlManageEstateAccess</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlManageEstateAccess&amp;diff=1165794"/>
		<updated>2012-04-19T00:19:38Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: According to Maestro Linden, a script error if the object owner is not allowed to manage the estate, is expected behavior&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2=&lt;br /&gt;
{{LSL_Function/avatar|avatar|group=*}}&lt;br /&gt;
&amp;lt;!-- Grab caveats etc from them --&amp;gt;&lt;br /&gt;
{{:ESTATE_ACCESS_ALLOWED_AGENT_ADD|set}}&lt;br /&gt;
{{:ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|set}}&lt;br /&gt;
{{:ESTATE_ACCESS_ALLOWED_GROUP_ADD|set}}&lt;br /&gt;
{{:ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|set}}&lt;br /&gt;
{{:ESTATE_ACCESS_BANNED_AGENT_ADD|set}}&lt;br /&gt;
{{:ESTATE_ACCESS_BANNED_AGENT_REMOVE|set}}&lt;br /&gt;
|func=llManageEstateAccess&lt;br /&gt;
|sort=ManageEstateAccess&lt;br /&gt;
|func_id|func_sleep|func_energy&lt;br /&gt;
|p1_type=integer|p1_name=action|p1_desc=ESTATE_ACCESS_* flag&lt;br /&gt;
|p2_type=key|p2_name=avatar&lt;br /&gt;
|func_desc=Use to add or remove agents from the estate&#039;s agent access or ban lists or groups from the estate&#039;s group access list.&lt;br /&gt;
|func_footnote=Only works for objects owned by the Estate Owner or an [[Estate Manager]].&lt;br /&gt;
|return_text= representing a boolean, [[TRUE]] if the call was successful; [[FALSE]] if throttled, invalid action, invalid or null id or object owner is not allowed to manage the estate. &lt;br /&gt;
|return_type=integer&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL Constants/llManageEstateAccess}}&lt;br /&gt;
|signature&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
* Calls are throttled at a rate of 30 calls per 30 seconds.&lt;br /&gt;
* [[FALSE]] will be returned...&lt;br /&gt;
** if throttled,&lt;br /&gt;
** if &#039;&#039;&#039;{{LSL Param|action}}&#039;&#039;&#039; is invalid,&lt;br /&gt;
** if &#039;&#039;&#039;{{LSL Param|avatar}}&#039;&#039;&#039; is invalid or null&lt;br /&gt;
** &amp;lt;del&amp;gt;if the object owner is not allowed to manage the estate.&amp;lt;/del&amp;gt;&lt;br /&gt;
A call to llManageEstateAccess will produce a script error if the object owner is not allowed to manage the estate [https://jira.secondlife.com/browse/SCR-233 SRC-233]&lt;br /&gt;
|examples&lt;br /&gt;
|helpers&lt;br /&gt;
|related&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llAddToLandPassList]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llAddToLandBanList]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRemoveFromLandBanList]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRemoveFromLandPassList]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llResetLandBanList]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llResetLandPassList]]|}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Security&lt;br /&gt;
|cat2=Region&lt;br /&gt;
|cat3=Estate&lt;br /&gt;
|cat4}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=1165792</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=1165792"/>
		<updated>2012-04-18T23:00:36Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
NOTE: Please add you scripts to this page and then add them to a category on the [[:Category:LSL Categorized Library|Categorized Library]] page.&lt;br /&gt;
&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [[Old forum Scripting Library index| old forum Scripting Library]], the [http://community.secondlife.com/t5/Scripting-Library/bd-p/2122 2010 library archive], or the current [http://community.secondlife.com/t5/LSL-Scripting-Library/bd-p/LSLScriptingLibrary LSL Scripting Library]; were lost with the death of the early scripting forums; or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&lt;br /&gt;
Visit the new [[:Category:LSL Categorized Library|Categorized Library]] which might help make it easier to find a script by the type of script it is. Please note, to wiki editors, if you want your script to appear on the category page after adding it to this library you need to also add it to the category library page as well.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[StringIsValidKey|(Function) StringIsValidKey]]&lt;br /&gt;
||[[User:Zion Tristan|Zion Tristan]]&lt;br /&gt;
||A User Made Function to return TRUE if a string based input is a valid [[key]], and return FALSE otherwise. &#039;&#039;&#039;It does not check if the key references an asset, agent/group, instance or terrain.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[StringIsNum|(Function) StringIsNum]]&lt;br /&gt;
||[[User:Zion Tristan|Zion Tristan]]&lt;br /&gt;
||A User Made Function to return TRUE if a string based input consists entirely of a whole number, and return FALSE otherwise.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remove all scripts from a linkset]]&lt;br /&gt;
||[[User:Dahlia Orfan|Dahlia Orfan]]&lt;br /&gt;
||Remove all scripts from a linkset.&lt;br /&gt;
|-&lt;br /&gt;
||[[RLV Viewer Titler]]&lt;br /&gt;
||[[User:Jenna Felton|Jenna Felton]]&lt;br /&gt;
||Titler displaying viewer and it&#039;s version, revealed via RLV interface.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Vitality plug-in]]&lt;br /&gt;
||[[User:Jenna Felton|Jenna Felton]]&lt;br /&gt;
||Uses vehicle technology to allow scripts (in same prim) to run in &#039;dead&#039;, i.e. no-script areas.&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[SetLinkText]]&lt;br /&gt;
||[[User:Tacusin Memo|Tacusin Memo]]&lt;br /&gt;
||Custom function like llSetText only applying to linked sets.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[RegionSitTeleport]]&lt;br /&gt;
||[[User:Vincent_Nacon| Vincent Nacon]]&lt;br /&gt;
||A very simple and clean sit/unsit teleporter.&lt;br /&gt;
|-&lt;br /&gt;
||[[AbcText]]&lt;br /&gt;
||[[User:Ange Capalini|Ange Capalini]]&lt;br /&gt;
||EXPERIMENTAL Hyper low prim Display. only 2 prims for 25char.&lt;br /&gt;
|-&lt;br /&gt;
||[[Access (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||An easy to use script for permissions on who can use the script, Public/Group/Owner&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Dugley Reanimator]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[AnkleLock]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||An ankle lock script and attached animation to fix your displaced shoes. This will help if your shoes look displaced when you sit in certain poses or when your animation overrider is active.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Artillery]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||An artillery gun script, performing the necessary calculations based on a user-chosen velocity, in order to hit a designated target avatar.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Avatar Radar (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Version 1.2; A nice new avatar radar script i just finish that you can place in your hud, Also features avatar locator&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[BaseN]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
||Variable base compression, dynamically maps to usable UTF code points.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bubble Gum]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script to create a bubble gum effect with sounds and animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bubble Trapper]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that rezzes a bubble and surrounds a dialog-chosen avatar, exploding 2 seconds after it has reached the avatar. The article also explains how to hash a name to a number or a key to a number and thereby avoiding to block the rezzer&#039;s timer() event or using llRegionSay().&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera following prim]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Pair of scripts to make a prim follow your camera position around (for lights etc).&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Collision message sender]]&lt;br /&gt;
||[[Taff Nouvelle]]&lt;br /&gt;
||Give a message to an avatar on collision if the message has not been sent in the last 10 minutes.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Cycle_Dialog_Items|Cycle Dialog Items w/ Callback]]&lt;br /&gt;
||[[User:Hawkster Westmoreland|Hawkster Westmoreland]]&lt;br /&gt;
||A customizable way to cycle dialog items with pagination&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan begin_of_the_skype_highlighting     end_of_the_skype_highlighting begin_of_the_skype_highlighting     end_of_the_skype_highlighting|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/DEMO_Shield|*DS*_DEMO_Shield]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||With this script, it is impossible to use these scripts in copied (Copybot) object.  &lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dispenser Vendor]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
|| A twist on [[Vendor]] that dispenses one object and then removes it from the list of objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[MultiUser_Dialog_Handler|Dialog Menus (multiuser)]]&lt;br /&gt;
||[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
|| Menu dialog handler that supports multiple menus open at once from the single script. Displays multi-page menus if necessary as well as allowing for fixed header and footer buttons.  Timeouts as well as Text and button size limits are handled.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Display Names Radar]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Simple HUD type avatar radar that can show [[display names]] and script memory usage&lt;br /&gt;
|-&lt;br /&gt;
||[[Display Names to Key]]&lt;br /&gt;
||[[User:Joran Yoshikawa|Joran Yoshikawa]]&lt;br /&gt;
||Simple way to get UUIDs from displaynames&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/DS_Display-Username_Online_Indicator|*DS*_Display-Username_Online_Indicator]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||This simple hover text-based script is used to shop owners in Second Life, customers at the current display name and user name to display publicly. Additionally shows the status of the Userkey and online. Furthermore, there are click of a chat link that opens the profile owner. &lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||Display Words On Top Of An Object&lt;br /&gt;
|-&lt;br /&gt;
||[[Distributed Primitive Database]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||The distributed primitive database (DPD) is a database which is meant to survive entirely in SL by using redundancy, replication and time synchronisation to maintain the consistency of the dataset contained in the DPD node/primitives spread out between regions and even grids. Similarly to the [[Intercom]], the robustness of the theory would allow users to maintain a cross-grid database; as of 30 of August 2011 I have managed to couple and replicate data between the two grids by using the methodology described in the script article.&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[Donut Dance]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Err, a script that makes you dance and say something on the local chat once you attach an object (good example for conditional re-entry flipping).&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/DS_Single_AO-Sit|*DS*_Single_AO-Sit]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||Posescript for use with or without AO and with or without Animation. With the menu it is possible the seated Avatar to move.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox|DropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kireji_Haiku/SIMchat_headset|Encrypted Region-wide chat]]&lt;br /&gt;
||&#039;&#039;&#039;[[User:Kireji Haiku|Kireji Haiku]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Kireji Haiku|talk]]|[[Special:Contributions/Kireji Haiku|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
||Encrypted Region-wide chat&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to print Object Inventory (Name, Type and next Owner permissions)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet_Lane/Scripts#Grid_Status_Feed|Grid Status Feed]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Receive important Grid information in-world &lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Flight Assist]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Flight feather / flight band implementation supporting various commands and allowing you to fly above the clouds.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[GA Event Notifier]]&lt;br /&gt;
||[[User:Victor Hua|Victor Hua]]&lt;br /&gt;
||Gathers seven days event data from a Google calendar and display it through a simple interface. The lsl script can access several calendars at once through seperate php files. One file per calendar. Host the included php on your own web server.&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Giver]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A menu-driven script that will hand out the objects in a prim. Supports multiple pages.&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Google_Translator]]&lt;br /&gt;
||[[User:Ugleh Ulrik|Ugleh Ulrik]]&lt;br /&gt;
||Translates spanish to english, and its simple to make it any other way.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Great Wanderer]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A movement system based on [[Wizardry and Steamworks|State Machines]] which provides free roaming.&lt;br /&gt;
|-&lt;br /&gt;
||[[Greeter]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A multi-purpose greeter with multiple options (IM, landmark, notecard, URL, visitor statistics, shared access and compatible with the [[Mail]] system) that could work for shops, clubs, galleries and any other public place.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics2]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Second generation, one script per object. Only two functions, can be embedded in others. Uses the new [[llSetLinkPrimitiveParamsFast]]/[[llGetLinkPrimitiveParams]] functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[HUD Dots Radar]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise]]&lt;br /&gt;
||HUD target example, draws dots on the HUD over avatars in view.&lt;br /&gt;
|-&lt;br /&gt;
||[[I Got It]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Educational tool to provide feedback from students.&lt;br /&gt;
|-&lt;br /&gt;
||[[Intercom|Intercom]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A system allowing region-wide and grid-wide (as of 30 of August 2011, it also works grid-wide, a test was performed by linking up the chat between the OSGrid and SecondLife) mass chat relay. By using this you can relay a main chat across multiple regions or grids. The script was initially meant as a mid-way project in order to test and gather information for the [[Distributed Primitive Database]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Jingle]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that will make a primitive emit a sound when you wear it and walk around. Ideal for bells, footsteps and so on...&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Key2Name]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
|| Key2Name service where a user no longer needs to be in the same region to get users name&lt;br /&gt;
|-&lt;br /&gt;
||[[Kilt Editor|Kilt / Skirt Editor]]&lt;br /&gt;
||[[User:Brangus Weir|Brangus Weir]]&lt;br /&gt;
|| This changes all the parameters of all the flexis in the link set in one swell foop!&lt;br /&gt;
|-&lt;br /&gt;
||[[Kira Warp Core Drive]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Scripts and instructions on how to create a vehicle that teleports an avatar and a vehicle to any region on the grid. You can [http://www.youtube.com/watch?v=xQkBRD7HBvw watch the YouTube video showing the prototype] I created to demonstrate how it works.&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/LinkNumber-List_in_llSetLinkPrimitiveParamsFast|LinkNumber-List_in_llSetLinkPrimitiveParamsFast]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||Changed several prims in linkset with the same parameters, with a list. Without separate llSetLinkPrimitiveParams for each prim. (ideal for show/hide effects)&lt;br /&gt;
|-&lt;br /&gt;
||[[Limit Vendor]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||This is a vendor supporting any number of items with different prices which will only dispense a certain number of individual items by setting limits for each item based on a notecard configuration.&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizing each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer with menu]]&lt;br /&gt;
||[[User:Brilliant Scientist|Brilliant Scientist]]&lt;br /&gt;
||A menu-driven script that rescales a linkset by moving and resizing the prims using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]] functions. Based on [[Linkset resizer]].&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/*DS*_Resize_Script|*DS* Resize Script (m/c/t) v2.0.01]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||Single resize script for a complete linkset with save and restore option. &lt;br /&gt;
|-&lt;br /&gt;
||[[Pointing Stick]]&lt;br /&gt;
||[[User: rhonin Nissondorf|rhonin Nissondorf]]&lt;br /&gt;
||A device that takes controls of your arrow keys and directs the device in the relative direction its pointing, forward and back of course.&lt;br /&gt;
|-&lt;br /&gt;
||[[Gun Script]]&lt;br /&gt;
||[[User:rhonin Nissondorf| rhonin Nissondorf]]&lt;br /&gt;
||Shoots out &amp;quot;ammo&amp;quot; from the root prim of your &amp;quot;gun&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset Resizer 2]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||A more user-friendly resizer script designed for either drop-in use by the end-user or builder or for use in products. Based on [[Fix Small Prims]].&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[LinksetIndexing]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
||Functions for indexing a linkset by patterns or names down to their linkset numbers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Live Event Timeout]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script which will set the the music URL back to a radio station of your liking when a DJ leaves or forgets to switch back the URL after a live event. It takes multiple DJs, using a notecard and several configuration parameters.&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Mail]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||An system for sending objects to multiple recipients automatically supporting shared access and [[Greeter]] compatible auto-subscriptions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Materialization Effects]]&lt;br /&gt;
||[[User:Overbrain Unplugged|Overbrain Unplugged]]&lt;br /&gt;
|| Special effects to add to rezzing events to simulate a teleportation or materialization.&lt;br /&gt;
|-&lt;br /&gt;
||[[Materialization Effects 2]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
|| More efficient and faster version of Materialization Effects by Overbrain Unplugged.&lt;br /&gt;
|-&lt;br /&gt;
||[[Memory Module]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||An example of pseudo-persistent variable in-world storage.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mood Color Changer]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that changes the color of all primitives in a linkset depending on the smileys the owner types on the main chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi-displays Texture Cycler]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
||A simple texture rotator designed for multiple display screens. With delay between each screen AND delay between each loop.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Allen_Kerensky/Myriad_Lite_Preview_5|Myriad Lite Preview 5 RPG System]]&lt;br /&gt;
||[[User:Allen_Kerensky|Allen Kerensky]]&lt;br /&gt;
||Working preview of the Myriad Universal RPG System by Ashok Desai, converted to LSL as a roleplay meter with quest NPC and goals, hand-to-hand and melee close combat, ranged combat, armor, healing, bullet, firearm, holster, practice target, and much more&lt;br /&gt;
|-&lt;br /&gt;
||[[N2K]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A Name To Key (Name2Key) implementation that does not use third-party databases, nor relies on the uptime of not well known websites but rather uses the World Wide Web Consortium to fetch the key of avatars while trying to alert the developers of the consequences of using Name2Key third-party providers as well as trying to refrain from sales pitch terminology such as &amp;quot;best&amp;quot;, &amp;quot;newest&amp;quot; and &amp;quot;fastest&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||Newest and fastest Name2Key search, While the database is small it is also connected to Second Life&#039;s search.&lt;br /&gt;
|-&lt;br /&gt;
||[[NexiiText]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Text Renderer, specialised in features, performance and a compact nature. It features unique per character control, such as Colour, Bold, Italics, Underline, Stroke, Icons. The high performance means it comes in at a 5 char / prim ratio, but it is perfect where highly dynamic and rich text is required.&lt;br /&gt;
|-&lt;br /&gt;
||[[NexiiText2]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Second Gen Text Renderer. Same as above but features use of [[PRIM_LINK_TARGET]] and an awesome dynamic prim allocation architecture.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.4|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Prim Animator]]&lt;br /&gt;
||[[User:Todd Borst|Todd Borst]]&lt;br /&gt;
||Single script prim animation tool.  Menu driven, easy to use.&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Zyngo Skin Installer]]&lt;br /&gt;
||[[User:Tmzasz Luminos|Tmzasz Luminos]]&lt;br /&gt;
||A Simple Script designed to install skins on the popular Skill machines.&lt;br /&gt;
|-&lt;br /&gt;
||[[Orbitor]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Based on [[Wanderer]], we create [[Orbitor]] which allows a primitive to orbit around an origin point.&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pay to Strip]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||This script is mainly meant for dancers and uses RLV to allow people to strip an avatar by making every clothes and attachment piece removable, respectively detachable for a settable price.&lt;br /&gt;
|-&lt;br /&gt;
||[[Permanent Primitive URL]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that uses [http://tiny.cc http://tiny.cc] REST API to update a SIM URL and make it permanent. Full description on how to register and set up a &amp;quot;nice&amp;quot; URL, like: http://tiny.cc/Kira. Should work with most URL shortening services (I&#039;m not affiliated with tiny.cc except for having a pass at them for not allowing OpenSIM-style generated URLs).&lt;br /&gt;
|-&lt;br /&gt;
||[[Personal ATM Machine]]&lt;br /&gt;
||[[User:Jessikiti Nikitin|Jessikiti Nikitin]]&lt;br /&gt;
||Allows deposits and withdrawals into another of your accounts, without the account being logged in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PHP_RegionFunctions]]&lt;br /&gt;
||[[User:Gypsy Paz|Gypsy Paz]] and [[User:Zayne Exonar|Zayne Exonar]]&lt;br /&gt;
||Three useful PHP functions to get region info&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Planar Tile Generator]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script to generate perfectly aligned tiles.&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Puppeteer]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A simple puppeteer script that will allow you to record and animate prim movements and rotations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Primitive Name Changer]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
|| A script that changes the primitive&#039;s name based on an user-configurable interval and a notecard list containing possible names.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Profile Generator]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A cynical script for generating boilerplate profiles by based on cliches and profile memes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Profile Picture]]&lt;br /&gt;
||[[User: Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||A working profile picture script with the new SecondLife API (1/11/2011)&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[Quick Collar]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A simple, no-bulk, no external database and essential feature-packed RLV collar script for your pleasures.&lt;br /&gt;
|-&lt;br /&gt;
||[[Quicksort]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||LSL implementation of the Quicksort algorithm.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Racter]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||In-world, multi-purpose chatterbot (Eliza/A.L.I.C.E. inspired) supporting multiple configurable hot-swappable brain-files with a wide range of applications.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random Gaussian Number Generator]]&lt;br /&gt;
||[[User:Vlad Davidson|Vlad Davidson]]&lt;br /&gt;
||Generates a random number drawn from a normal (Gaussian; bell-curve) distribution, based on a specified mean/stdev&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Display any amount of items contained in an Object in a Dialog, regardless of item name length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[Security Orb|Security Orb]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A regular security orb that ejects people from a land parcel supporting a menu configuration and a notecard based access list.&lt;br /&gt;
|-&lt;br /&gt;
||[[Resizer multi-prims|Resizer multi-prims]]&lt;br /&gt;
||[[User:Christy Mansbridge|Christy Mansbridge]]&lt;br /&gt;
||1 Mono script to resize object (1 to 256 prims) by blue menu. Avoid risk to break the build by increasing link distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduled Payments]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that will allow you to make scheduled (and reoccurring) payments to multiple avatars via a notecard. &lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Toady_Nakamura/Scrubber_Script|Script Scrubber]]&lt;br /&gt;
||[[User:Toady_Nakamura|Toady_Nakamura]]&lt;br /&gt;
||Script scrubs memory resident script functions from prim and self-deletes the script. Does not damage the prim, or remove other scripts.  Use this to kill bling or other particle effects!&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA-1|SHA-1 Hash]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Performs a SHA-1 Hash on an input text. Similar to MD5 only (slightly) more secure. &lt;br /&gt;
|-&lt;br /&gt;
||[[SHA-2|SHA-2 Hash]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Performs a SHA-2 Hash on an input text. Similar to SHA-1 only (slightly) more secure. &lt;br /&gt;
|-&lt;br /&gt;
||[[Shoutcast - radio controller v0.3 (remake of similar scripts)]]&lt;br /&gt;
||[[User:Flennan Roffo|Logic Scripts]]&lt;br /&gt;
||Control your shoutcast radio stations with this shoutcast controller. Uses notecard for info about genres and stations and menu to select the station. Sends info to Xytext display.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Show Agent Script Count and memory|Show Agent Script Count and memory]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to display the amount of scripts and memory usage for an agent&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[SIM status]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that will scan and display the status of SIMs (up, down, starting, stopping, unknown, crashed) from a notecard in the same prim as the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Pay Door]]&lt;br /&gt;
||[[User:Giygas Static|Giygas Static]]&lt;br /&gt;
||Simple door you pay to get access.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skillingo AntiHack Script]]&lt;br /&gt;
||[[User:Tmzasz Luminos|Tmzasz Luminos]]&lt;br /&gt;
||A simple Protection script for skillingo thats modifyable to work with other machines.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[BuildSlurl (NewAge)]]&lt;br /&gt;
||[[User:Archile Azalee|Archile Azalee]]&lt;br /&gt;
||A way to create a SLurl in a single function BuildSlurl&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Slide Display]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A display for presentations or talks supporting multiple slides as well as zooming-in on the slides.&lt;br /&gt;
|-&lt;br /&gt;
||[[Smile]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||An extended smile script supporting two smiles (extendable via a list) and a time delay triggering them at random.&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Snake Game]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||The game of snake in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[Song Requests]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||Helper script for DJs, allowing listeners to request songs and make dedications.&lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[Synchronize]]&lt;br /&gt;
||[[User:Cay Trudeau|Cay Trudeau]]&lt;br /&gt;
||Makes synchronized start to a task on even/odd seconds&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Tail Messages (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||A super nice easy to use script for those non-scripters out there! NewAge coding has done it again where you no longer need to scroll up and down adding buttons and adding messages, Features a tag system (you&#039;ll see what i mean :P)&lt;br /&gt;
|-&lt;br /&gt;
||[[Taper Door (minimalistic)]]&lt;br /&gt;
||[[User:Kopilo Hallard|Kopilo Hallard]]&lt;br /&gt;
||A basic script for doors which open and close using taper.&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Text_Scroller|Text Scroller]]&lt;br /&gt;
||[[User:Fred_Gandt|Fred Gandt]]&lt;br /&gt;
||A simple text display object that scrolls text (applied as a texture) from right to left (like &#039;&#039;those&#039;&#039; LED signs) in a continuous loop.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Particle Poofer|Texture Particle Poofer]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||This is a generic dialog-based particle poofer, emitting textures towards an avatar for a configurable amount of time.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Xen_Lisle/Texture_Slide|Texture Slide]]&lt;br /&gt;
||[[user:Xen Lisle|Xen Lisle]]&lt;br /&gt;
||Slides a texture on mouse movement&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists.&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[The Stash (Bank)]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||This is a depositing system to link your secondary account (alt) to a prim in-world so you can retrieve money without switching back and forth between accounts. It supports setting an upper limit, sharing the stash if you wish, logging everybody who deposited money and retrieved money, sending money to a list of bookmarked avatars and getting a status of your current holdings. It also explains some tricks for developers, for example, how to get another timer() if your current timer() is used up already.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tipjar]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||This is a fully fledged tipjar supporting shared access, split profits, inviting to group, handing over gifts, maintaining statistics of who tipped most and who tipped in general, eliminating deed to group and comes with an innovative feature: it periodically moves around from avatar to avatar in the room and returns back to its initial position after a sweep. This way your tijpar will not be static, but participate in the party!&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Towncrier]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A simple towncrier to be used in role-play SIMs or wherever there is a need to broadcast news in random intervals.&lt;br /&gt;
|-&lt;br /&gt;
||[[Trivia]]&lt;br /&gt;
||[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A trivia game engine with provided ready-made notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/UNDO_PosRot|UNDO_PosRot]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Allows user to undo position and rotation changes that have been made &amp;quot;manually&amp;quot; to any or all prims in a linkset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unpacker On Rez (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||A very simple to use script for all you creators out there, This script will enable you to send out boxed items and make it easier for users to unpack, Also features auto die on completion. Very simple to configure!&lt;br /&gt;
|-&lt;br /&gt;
||[[Unpacker On Touch (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Exactly like Unpacker On Rez, But changed some things about to make it Unpack On Touch&lt;br /&gt;
|-&lt;br /&gt;
||[[Update distributor]]&lt;br /&gt;
|[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Distribute an object (like a project update) to a list of people named in a notecard.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID2Channel]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Optimised version of the original key2channel generators.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitors]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A series of scripts to hold lists of visitors taking into account display names and supporting tracking multiple visits.&lt;br /&gt;
|-&lt;br /&gt;
||[[Volleyball Game (Kira&#039;s Artillery Variations)]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||The game of Volleyball in SecondLife, based on the [[Artillery]] script and freefall theory. Full build instructions, scripts, import archive and marketplace freebie product. All full permission.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[Walking Sound (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Very powerful walking sound script, Featuring customer ability to add their own sounds with the API Sound Feature!&lt;br /&gt;
|-&lt;br /&gt;
||[[Wanderer]]&lt;br /&gt;
|[[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
||A script that can be used to randomly move a prim around relative to its origin point. Can be used for breeders, robots, birds and other applications where a primitive has to move around by itself.&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Watchdog]]&lt;br /&gt;
|[[User:Tika Oberueng|Tika Oberueng]]&lt;br /&gt;
||LSL Watchdog scripts to monitor other scripts in the prim and restart them if they crash or stop running.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]] and [[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|-&lt;br /&gt;
||[[Zigzag Sequence]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Zigzag sequence generator I developed while scripting checkers&lt;br /&gt;
|-&lt;br /&gt;
||[[Input number of seconds, get a string back that shows days, hours, minutes, seconds]]&lt;br /&gt;
||[[User:Fire Centaur|Fire Centaur]]&lt;br /&gt;
||Returns a string that displays days, hours, seconds&lt;br /&gt;
|-&lt;br /&gt;
||[[Random Giver Prim]]&lt;br /&gt;
||[[User:Damian Darkwyr|Damian Darkwyr]]&lt;br /&gt;
||A randomized item giver with a game-like twist&lt;br /&gt;
|-&lt;br /&gt;
||[[Client Specific Contents Giver]]&lt;br /&gt;
||[[User:Damian Darkwyr|Damian Darkwyr]]&lt;br /&gt;
||Give Contents only to users of a specific Client. Such as Phoenix, CoolVL or 2.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| [https://github.com/Nexii-Malthus/phpPathfinding phpPathfinding]&lt;br /&gt;
|| [[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| PHP script for offloading complex pathfinding operations away from heavy use simulators onto external servers. Primarily A* Algorithm. Flexible -- works with any type of node graph. Public Domain. Clean and minimalistic code.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Minify|LSL Minify]]&lt;br /&gt;
|| [[User:Kira Komarov|Kira Komarov]]&lt;br /&gt;
|| LSL Minification and obfuscation tool written in JavaScript. Contains a form on the wiki using a widget where you can post LSL scripts to be minified as well as the source-code. For another full-screen demo you may [http://eva.comaroski.me/lslclean.html check it on my website]. To use, paste any LSL code and press ctrl+alt+enter to get the minified version.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums-archive.secondlife.com/54/69/119570/1.html Announcement].&lt;br /&gt;
|-&lt;br /&gt;
||[[Silverday ObjectDNS]]&lt;br /&gt;
||[[User:Till Stirling|Till Stirling]]&lt;br /&gt;
||Dynamic Object-DNS-System to provide dynamic mapping of LSL-URLs to persistent domains. Features include redirect service, password protected domains, write protected domains, LSL-API for all necessary functions, optional web-interface.&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|-&lt;br /&gt;
|| [https://tlabsfoundry.atlassian.net/wiki/display/SLAD/SL+Asset+Data SL Asset Data]&lt;br /&gt;
|| [[User:Trimda Hedges|Trimda Hedges]]&lt;br /&gt;
|| A set of Java classes to retrieve information about Groups, Parcels and Agents/Avatars based on their key (UUID).  Includes caching of requests and results and example application.  Copyright under Eclipse Public License v1&lt;br /&gt;
* [https://tlabsfoundry.atlassian.net/wiki/display/SLAD/Downloads Downloads]&lt;br /&gt;
* [http://trimda.com/javadocs/slassetdata/1.1.0/ JavaDocs]&lt;br /&gt;
* [https://tlabsfoundry.atlassian.net/wiki/display/TF/TLabs+Foundry Other Projects]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=1165790</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=1165790"/>
		<updated>2012-04-18T22:10:30Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
Once I got away from there, and after learning some key basics of Second Life, I was able to very quickly figure out various other things in here, and soon reached a high level of knowledge about Second Life. I love to figure out how things work (presumed I find things interesting), and usually it doesn&#039;t take very long.&lt;br /&gt;
&lt;br /&gt;
Remember, your Second Life is what you make of it. You can make it interesting and exciting if you want to. There&#039;s something in here for (almost) everybody.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Techniques and formatting|&lt;br /&gt;
As you will notice, each programmer has his/her own style of producing code.&lt;br /&gt;
I personally like to use CAPS for global variables because they stand out from the rest, and lower case for local variables.&lt;br /&gt;
&lt;br /&gt;
Usually I use CamelCase for function declarations.&lt;br /&gt;
&lt;br /&gt;
I also like to cache values in variables (where possible) instead of repeatedly calling the corresponding functions.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Scripts|&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]] - Print Object Inventory (Name, Type and next Owner perms)&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]] - Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
&lt;br /&gt;
[[User:PixelProphet_Lane/Scripts#Grid_Status_Feed|Grid Status Feed]] - Receive important Grid information in-world&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1165789</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1165789"/>
		<updated>2012-04-18T22:06:15Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&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;
&lt;br /&gt;
{{box|Show Agent Script Count and memory|&lt;br /&gt;
&lt;br /&gt;
This script will display the amount of scripts attached to the avatar that touches the prim this script is in, and will display the amount of memory used by those scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Agent Script Count and memory usage by PixelProphet Lane&lt;br /&gt;
//bytesToSize function in PHP ThomasR, August 24th 2010, adapted to LSL by PixelProphet Lane &lt;br /&gt;
string bytesToSize(integer bytes)&lt;br /&gt;
{&lt;br /&gt;
    list units = [&amp;quot;Bytes&amp;quot;, &amp;quot;KiloBytes&amp;quot;, &amp;quot;MegaBytes&amp;quot;, &amp;quot;GigaBytes&amp;quot;, &amp;quot;TerraBytes&amp;quot;];&lt;br /&gt;
    if (bytes == 0) return &amp;quot;n/a&amp;quot;;&lt;br /&gt;
    integer i = llFloor(llLog(bytes) / llLog(1024));&lt;br /&gt;
    string val = (string)llRound(bytes / llPow(1024, i));&lt;br /&gt;
    return val + &amp;quot; &amp;quot; + llList2String(units,i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ONAME;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ONAME = llGetObjectName();&lt;br /&gt;
        llSay(0,llGetEnv(&amp;quot;sim_channel&amp;quot;) + &amp;quot; &amp;quot; + llGetEnv(&amp;quot;sim_version&amp;quot;));        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetObjectName(llDetectedName(0));&lt;br /&gt;
        list data = llGetObjectDetails(llDetectedKey(0),[OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
        string scripts = llList2String(data,0);&lt;br /&gt;
        integer mem = llList2Integer(data,1);&lt;br /&gt;
        string memory = bytesToSize(mem);&lt;br /&gt;
        llSay(0,&amp;quot;/me has &amp;quot;+scripts+&amp;quot; scripts attached using a total of &amp;quot;+memory);&lt;br /&gt;
        llSetObjectName(ONAME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Grid Status Feed|&lt;br /&gt;
&lt;br /&gt;
This script will periodically query the Second Life Grid Status Feed and will check to see the latest post is from the same day the request was made. If so, the script can optionally display title, link and description of the latest feed post to inform you. Posts from yesterday will not be displayed.&lt;br /&gt;
&lt;br /&gt;
This script operates in a prim rezzed on your parcel, or inside an attachment.&lt;br /&gt;
If you are using this script in an attachment, the data will be displayed using llOwnerSay.&lt;br /&gt;
If you are using this script in a prim not attached to you, it will check if you are on the same region, and if so, use llOwnerSay.&lt;br /&gt;
If you are on a different region, it will check your online status and use llInstantMessage if you are online.&lt;br /&gt;
If you are offline, the script will not inform you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
######## Grid Status Feed by PixelProphet Lane #########&lt;br /&gt;
######## Leave it at home, or carry it around with you #&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
integer SEND_TITLE = TRUE;  //include title in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_LINK = TRUE;   //include link in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer SEND_DESC = TRUE;   //include description in IM ? FALSE = no, TRUE = yes&lt;br /&gt;
integer IS_ATTACHED = FALSE;&lt;br /&gt;
&lt;br /&gt;
string KEYWORD_ALERT = &amp;quot;&amp;quot;; //Define a string of characters that trigger a keyword alert (Firestorm Viewer), or leave empty&lt;br /&gt;
string FEED_URL = &amp;quot;http://status.secondlifegrid.net/feed&amp;quot;;&lt;br /&gt;
string PUB_DATE = &amp;quot;nothing&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
key HTTP_REQID;&lt;br /&gt;
key DATA_REQID;&lt;br /&gt;
key OWNER;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RequstOnlineStatus()&lt;br /&gt;
{&lt;br /&gt;
    DATA_REQID = llRequestAgentData(OWNER, DATA_ONLINE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RequestFeedData()&lt;br /&gt;
{&lt;br /&gt;
    HTTP_REQID = llHTTPRequest(FEED_URL,[],&amp;quot;&amp;quot;);    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string Today()&lt;br /&gt;
{&lt;br /&gt;
    list months_short = [&amp;quot;Jan&amp;quot;, &amp;quot;Feb&amp;quot;, &amp;quot;Mar&amp;quot;, &amp;quot;Apr&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;Jun&amp;quot;, &amp;quot;Jul&amp;quot;, &amp;quot;Aug&amp;quot;, &amp;quot;Sep&amp;quot;, &amp;quot;Oct&amp;quot;, &amp;quot;Nov&amp;quot;, &amp;quot;Dec&amp;quot;];&lt;br /&gt;
    list ldate = llParseString2List(llGetDate(),[&amp;quot;-&amp;quot;],[]);&lt;br /&gt;
    string day = (string)llList2Integer(ldate, 2);&lt;br /&gt;
    string month = llList2String(months_short, (llList2Integer(ldate, 1)-1));;&lt;br /&gt;
    string year = llList2String(ldate, 0);&lt;br /&gt;
    return day+&amp;quot; &amp;quot;+month+&amp;quot; &amp;quot;+year;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        if (OWNER != llGetOwner())&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        if (!SEND_TITLE &amp;amp;&amp;amp; !SEND_LINK &amp;amp;&amp;amp; !SEND_DESC)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;Please set at least one of SEND_TITLE,SEND_LINK or SEND_DESC to 1&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        llSetTimerEvent(300);&lt;br /&gt;
        if ((IS_ATTACHED = llGetAttached()) != 0  || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    attach(key id)&lt;br /&gt;
    {&lt;br /&gt;
        IS_ATTACHED = llGetAttached(); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key queryid, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (queryid != DATA_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (data == &amp;quot;1&amp;quot;) &lt;br /&gt;
            RequestFeedData();    &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http_response (key request_id, integer status, list metadata, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (request_id != HTTP_REQID)&lt;br /&gt;
            return;&lt;br /&gt;
        if (status == 200) //Under normal circumstances the server will return 200&lt;br /&gt;
        {&lt;br /&gt;
            //body = llGetSubString(body, 0, 2048); //In future HTTP Requests may receive a lot more than 2048 bytes&lt;br /&gt;
            integer begin = llSubStringIndex(body, &amp;quot;&amp;lt;pubDate&amp;gt;&amp;quot;) + 9;&lt;br /&gt;
            integer end = llSubStringIndex(body, &amp;quot;&amp;lt;/pubDate&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
            string data;&lt;br /&gt;
            if (~begin &amp;amp;&amp;amp; ~end) //If &amp;lt;pubDate&amp;gt; wasn&#039;t found, no need for further processing&lt;br /&gt;
            {&lt;br /&gt;
                data = llGetSubString(body, begin, end);&lt;br /&gt;
                if (-1 == llSubStringIndex(data,Today())) //Only posts from today&lt;br /&gt;
                    return;&lt;br /&gt;
                if (data != &amp;quot;&amp;quot; &amp;amp;&amp;amp; data != PUB_DATE) //Make sure data even contains something&lt;br /&gt;
                {&lt;br /&gt;
                    PUB_DATE = data;&lt;br /&gt;
                    begin = llSubStringIndex(body, &amp;quot;&amp;lt;item&amp;gt;&amp;quot;) + 6; //Get the beginning of first item&lt;br /&gt;
                    end = llSubStringIndex(body, &amp;quot;&amp;lt;/item&amp;gt;&amp;quot;) - 1; //Get the end of first item &lt;br /&gt;
                    string item = llGetSubString(body, begin, end); //Crop the string&lt;br /&gt;
                    string data = KEYWORD_ALERT;            &lt;br /&gt;
                    if (SEND_TITLE)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;title&amp;gt;&amp;quot;) + 7;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/title&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);&lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_LINK)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item, &amp;quot;&amp;lt;link&amp;gt;&amp;quot;) + 6;&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/link&amp;gt;&amp;quot;) - 1;&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+llGetSubString(item, begin, end);   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (SEND_DESC)&lt;br /&gt;
                    {&lt;br /&gt;
                        begin = llSubStringIndex(item,  &amp;quot;&amp;lt;description&amp;gt;&amp;quot;) + 22; //len &amp;lt;description&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
                        end = llSubStringIndex(item, &amp;quot;&amp;lt;/description&amp;gt;&amp;quot;) - 4;&lt;br /&gt;
                        item = llGetSubString(item, begin, end); //Crop the string&lt;br /&gt;
                        if (~begin &amp;amp;&amp;amp; ~end)&lt;br /&gt;
                            data += &amp;quot;\n&amp;quot;+item;   &lt;br /&gt;
                    }&lt;br /&gt;
                    if (data != KEYWORD_ALERT) //did we even get any data ?&lt;br /&gt;
                    {&lt;br /&gt;
                        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER)) //attached, or owner on region&lt;br /&gt;
                            llOwnerSay(data);&lt;br /&gt;
                        else&lt;br /&gt;
                            llInstantMessage(OWNER, data);     &lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (IS_ATTACHED || &amp;lt;0.0, 0.0, 0.0&amp;gt; != llGetAgentSize(OWNER))&lt;br /&gt;
            RequestFeedData();&lt;br /&gt;
        else&lt;br /&gt;
            RequstOnlineStatus();     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Mono&amp;diff=1162753</id>
		<title>Talk:Mono</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Mono&amp;diff=1162753"/>
		<updated>2012-02-12T00:51:17Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: /* Why is this page referring to LSL2, and not LSO ? */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mono Benchmarks==&lt;br /&gt;
&lt;br /&gt;
I notice that the benchmarks listed seem to mostly be numeric.  Has anyone done any benchmarks on string and list processing?  [[User:Lee Ponzu|Lee Ponzu]] 08:36, 4 February 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
:I was testing some encoding and decoding functions I wrote and ran both versions sided by side. Very string intensive. The Mono version finished the full circuit before the LSO had code finished the encoding.&lt;br /&gt;
&lt;br /&gt;
==Other languages==&lt;br /&gt;
Here&#039;s a question about mono that the article doesn&#039;t address:  Will scripters be limited to &lt;br /&gt;
LSL or will they be able to code in C# or something else more Mono-like?  --[[User:Steamy Latte|Steamy Latte]] 12:20, 22 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
:Until LL can ensure that Mono is properly sandboxed and secure, the compiler will remain server side and the only language available will be LSL. -- [[User:Strife Onizuka|Strife Onizuka]] 12:40, 23 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
::That makes total sense.  Your comment &#039;&#039;&#039;does&#039;&#039;&#039; make it sound like there&#039;s a future plan to add other languages, after adequate testing has taken place.  If so it&#039;s good news, as LSL lacks OOP and is cumbersome by comparison.  --[[User:Steamy Latte|Steamy Latte]] 09:53, 24 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
:::In 16k you don&#039;t want OOP. Trust me. The overhead would be killer. I just want pass by reference. Pass by value is the worst feature of LSO. If I had to guess I would say that most of speed improvements come from pass by reference alone. -- [[User:Strife Onizuka|Strife Onizuka]] 17:19, 24 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
::::Agreed! We would be able to leverage so much more from the sad 16kb we get if we could do address operations and pass by reference. Oh, a second question there. Will the maximum size of scripts be increased? [[User:Jana Kamachi|Jana Kamachi]] 09:55, 26 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
:::::I don&#039;t know. One advantage of the new system is that script asset transfers will be faster for the vast majority of script, they won&#039;t be statically allocated to 16kb. This means sim crossings should be faster. -- [[User:Strife Onizuka|Strife Onizuka]] 15:56, 26 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
::::::You sure? Serializing a mono script is a lot more work than serializing an LSL2 script, because the LSL2 script is basically serialized already. My concern has been that the cost of sim crossings with Mono scripts would likely be *higher*. I notice that in the Mono demos the Lindens have not shown a sim crossing for an avatar running Mono scripts: Babbage turned around before the edge of the sim in the one scene that looked like he might venture one. I hope they have multiple *adjacent* Mono-enabled sims in Beta. -- [[User:Argent Stonecutter|Argent Stonecutter]] 12:25, 28 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
:::::::Good point, I hadn&#039;t taken that into consideration. But if the script is a slave script without globals and not currently in an event that it won&#039;t have a stack or variables allocated. It should result in very little that needs serializing. I&#039;m curious which system has a faster serialization of the event queue. -- [[User:Strife Onizuka|Strife Onizuka]] 16:21, 28 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
::::::::I&#039;m just looking forward to using Python.  I wonder if LL will give any sort of time frame (like late Q1, a few weeks after Mono releases, we&#039;ll be adding it during beta...) for adding other languages.  I&#039;d appreciate a little more script overhead so I could go nuts making class objects (like I normally do to make my life easier), but I suppose that will be subject to thorough testing as to whether any scripts currently in existence can push that 64kb cap.  I&#039;m also hoping sockets are retained, I&#039;d like to be able to open connections to outside servers for whatever purposes I&#039;d need. --  [[User:Feynt Mistral|Feynt Mistral]] 09:32, 30 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
==Compile Data Flow==&lt;br /&gt;
Can someone describe the way the current flow works, and how the new flow will contrast.  That is, I think at present: &lt;br /&gt;
#You edit on the viewer.&lt;br /&gt;
#When you [save], the source is uploaded.&lt;br /&gt;
#A compiler in the viewer creates bytecode.&lt;br /&gt;
#The bytecode is uploaded.&lt;br /&gt;
Is this correct?  How will this change, if at all?&lt;br /&gt;
[[User:Lee Ponzu|Lee Ponzu]] 09:20, 26 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
I can&#039;t be sure of this but the new system would be:&lt;br /&gt;
#You edit on the viewer.&lt;br /&gt;
#When you [save] and check the Mono checkbox, the source is uploaded.&lt;br /&gt;
#Upon receiving the script some server (sim or centralized compiler?) compiles the script to CIL bytecode.&lt;br /&gt;
#The bytecode is saved.&lt;br /&gt;
[[User:Strife Onizuka|Strife Onizuka]] 16:01, 26 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
Strife has it correct. The compilation is done by a process running on each mono-enabled sim host. [[User:Periapse Linden|Periapse Linden]] 12:20, 30 January 2008 (PST)&lt;br /&gt;
&lt;br /&gt;
== Optimization ==&lt;br /&gt;
&lt;br /&gt;
Oddly enough different .net functions that do basically the same things run at different speeds. It may be of interest to read this article: [http://www.codeproject.com/KB/cs/StringBuilder_vs_String.aspx?fid=326464&amp;amp;df=90&amp;amp;mpp=25&amp;amp;noise=3&amp;amp;sort=Position&amp;amp;view=Quick&amp;amp;fr=26 StringBuilder vs. String / Fast String Operations with .NET 2.0]. The information may not be totally applicable with Mono but it should get you thinking. -- [[User:Strife Onizuka|Strife Onizuka]] 17:31, 4 April 2008 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Why is this page referring to LSL2, and not LSO ? ==&lt;br /&gt;
&lt;br /&gt;
To my knowledge, the old scripting engine is LSO VM, which requires LSO bytecode.&lt;br /&gt;
In various locations on this page, I see LSL2 being mentioned, for example &#039;&#039;Performance benchmark tests show that Mono is up to 220 times faster than LSL2.&#039;&#039;.&lt;br /&gt;
Shouldn&#039;t LSL2 be replaced with LSO ?&lt;br /&gt;
I find the term LSL2 somewhat misleading, as it implies to me that there&#039;s a difference in the actual scripting language (LSL) depending on whether the script is going to compiled in Mono or LSO bytecode.[[User:PixelProphet Lane|PixelProphet Lane]] 16:51, 11 February 2012 (PST)&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Lighting_and_shadows&amp;diff=1148673</id>
		<title>Lighting and shadows</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Lighting_and_shadows&amp;diff=1148673"/>
		<updated>2011-07-13T17:51:25Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Minor spelling corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
== Overview ==&lt;br /&gt;
The lighting and shadows feature in Second Life Viewer 2.7.1 improves the quality of the in-world visual experience, adding:&lt;br /&gt;
* High quality real-time shadows. &lt;br /&gt;
* Full dynamic lighting for an infinite number of local light sources.&lt;br /&gt;
* Special effects such as ambient occlusion and depth of field.&lt;br /&gt;
&lt;br /&gt;
Sky and water environments appear and function the same regardless of whether lighting and shadows are enabled.&lt;br /&gt;
&lt;br /&gt;
See the [http://community.secondlife.com/t5/Featured-News/New-SL-Viewer-with-Improved-Search-and-Real-Time-Shadows/ba-p/927463 release announcement].&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
This feature requires an OpenGL 3.0-capable graphics card, such as Nvidia GeForce 8600 and 8800, GTX 2xx, or Radeon HD 4xxxx.&lt;br /&gt;
&lt;br /&gt;
If your graphics card cannot support the feature, then it is disabled by default, and you cannot enable it.&lt;br /&gt;
&lt;br /&gt;
== Graphics preferences settings ==&lt;br /&gt;
&lt;br /&gt;
To enable or change your lighting and shadows settings:&lt;br /&gt;
# Choose &#039;&#039;&#039;Me &amp;gt; Preferences&#039;&#039;&#039;.&lt;br /&gt;
# Click the &#039;&#039;&#039;Graphics&#039;&#039;&#039; tab.&lt;br /&gt;
# Click &#039;&#039;&#039;Advanced&#039;&#039;&#039;.&lt;br /&gt;
# Check &#039;&#039;&#039;Atmospheric Shaders&#039;&#039;&#039; And &#039;&#039;&#039;Hardware Skinning&#039;&#039;&#039; (under &#039;&#039;&#039;Avatar Rendering&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
[[Image:Lighting and shadows prefs.png|650px]]&lt;br /&gt;
&lt;br /&gt;
{{KBnote|In general, enabling lighting and shadows will lower the frame-rate somewhat; by default the feature is &#039;&#039;disabled&#039;&#039; on hardware where the typical frame-rate would be decreased below 10FPS.}}&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;Atmospheric Shaders&#039;&#039;&#039; is enabled, if your system supports it, you can then enable: &lt;br /&gt;
* Lighting and Shadows &lt;br /&gt;
* Ambient Occlusion&lt;br /&gt;
* Shadows&lt;br /&gt;
&lt;br /&gt;
When you check &#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039;, you can then enable &#039;&#039;&#039;Ambient Occlusion&#039;&#039;&#039;, &#039;&#039;&#039;Depth of Field&#039;&#039;&#039;, and select the desired type of &#039;&#039;&#039;Shadows&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;&#039;Water Reflections&#039;&#039;&#039;, check &#039;&#039;&#039;Basic shaders&#039;&#039;&#039;.  Options are &amp;quot;Minimal&amp;quot;, &amp;quot;Terrain and Trees&amp;quot;, &amp;quot;All static objects&amp;quot;, &amp;quot;All avatars and objects&amp;quot;, &amp;quot;Everything&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{KBwarning|&#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039; can greatly lower performance and conflict badly with [[antialiasing]]. If you crash when trying to enable &#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039; on an otherwise supported system, disable antialiasing.}}&lt;br /&gt;
&lt;br /&gt;
== Shadows ==&lt;br /&gt;
&lt;br /&gt;
Shadows are cast in the direction opposite the sun or moon (or other light source). &lt;br /&gt;
&lt;br /&gt;
Shadows start fading away as the distance to the object approaches your draw distance (set in your graphics preferences).&lt;br /&gt;
&lt;br /&gt;
Faces far from the camera (more than about 256 meters) will not receive shadows.  As they approach this distance, the received shadows quickly fade away.  &lt;br /&gt;
&lt;br /&gt;
=== Receiving shadows ===&lt;br /&gt;
[[Image:Receivers.PNG|frame|Receiving shadows]]&lt;br /&gt;
&lt;br /&gt;
The following can receive shadows: &lt;br /&gt;
* Avatars and [[Avatar Impostors|avatar impostors]].&lt;br /&gt;
* [[Glow|Glowing prims]].&lt;br /&gt;
* [[Sculpted prim|Sculpted prims]].&lt;br /&gt;
* Water, ground, and foliage.&lt;br /&gt;
* Particles that are not full-bright (this can produce cool &amp;quot;shafts of light&amp;quot; effects).&lt;br /&gt;
&lt;br /&gt;
Full-bright surfaces (opaque or transparent) cannot receive shadows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #aaa; background-color: #eee; width: 275px; padding: 15px; font-size: 85%;&amp;quot;&amp;gt;&#039;&#039;&#039;Key to illustrations in this section&#039;&#039;&#039;:&lt;br /&gt;
*A = avatar&lt;br /&gt;
*B = opaque object&lt;br /&gt;
*C = 39% transparency&lt;br /&gt;
*D = 40% transparency&lt;br /&gt;
*E = 80% transparency&lt;br /&gt;
*F = opaque full-bright object&lt;br /&gt;
*G = alpha texture (per-pixel transparency)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Casting shadows ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Casters.png|frame|right|Casting shadows]]&lt;br /&gt;
&lt;br /&gt;
Things that can cast shadows:&lt;br /&gt;
* Alpha pixels that are less than 40% transparent&lt;br /&gt;
* Full-brights, glowies, sculpties, avatars, foliage, ground&lt;br /&gt;
&lt;br /&gt;
Things that do not cast shadows:&lt;br /&gt;
* Alpha pixels 40% or greater transparent&lt;br /&gt;
* Avatar impostors&lt;br /&gt;
* Particles&lt;br /&gt;
&lt;br /&gt;
An object that both casts and receives shadows can cast a shadow on &#039;&#039;itself&#039;&#039;.  For example, an avatar&#039;s arm can cast a shadow on the avatar&#039;s leg, where appropriate.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shadows on bumpy objects ===&lt;br /&gt;
[[Image:Bumpgeneral.png|120px|right]]&lt;br /&gt;
Full-bright bumpy objects render the same as with lighting and shadows off.&lt;br /&gt;
Non-full-bright bumpy objects display realistic lighting for the depth-like roughness detail of the bump texture, according to the direction of the lighting.&lt;br /&gt;
&lt;br /&gt;
=== Shadow settings ===&lt;br /&gt;
&lt;br /&gt;
In preferences, you can choose to see the following types of shadows:&lt;br /&gt;
* None&lt;br /&gt;
* Sun / Moon&lt;br /&gt;
* Sun / Moon + Projectors&lt;br /&gt;
&lt;br /&gt;
==== None ====&lt;br /&gt;
Broadly-speaking, setting &#039;&#039;&#039;Shadows&#039;&#039;&#039; to &#039;&#039;&#039;None&#039;&#039;&#039; looks similar to turning off &#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039; altogether, except:&lt;br /&gt;
* A bit smoother lighting from sun, moon, and local lights.&lt;br /&gt;
* Shininess on non-full-bright surfaces looks different.&lt;br /&gt;
* Any number of lights will now light the scene simultaneously.&lt;br /&gt;
* Increased accuracy in lighting means that a bright light near a surface &#039;&#039;may&#039;&#039; now light nearby points on that surface more intensely than previously.&lt;br /&gt;
* Avatar impostors are lit similarly to non-impostors&lt;br /&gt;
&lt;br /&gt;
==== Sun/Moon ====&lt;br /&gt;
&lt;br /&gt;
Setting &#039;&#039;&#039;Shadows&#039;&#039;&#039; to &#039;&#039;&#039;Sun/Moon&#039;&#039;&#039; causes all qualifying objects to cast shadows and have shadows cast upon them.&lt;br /&gt;
&lt;br /&gt;
==== Sun/Moon + Projectors ====&lt;br /&gt;
&lt;br /&gt;
When you select &#039;&#039;&#039;Sun/Moon + Projectors&#039;&#039;&#039; shadows, objects will cast shadows from the light of the sun and the moon and up to two projector light sources.  Shadows will only be cast from the two most significant projectors in the scene.  Point lights will never cast shadows.&lt;br /&gt;
&lt;br /&gt;
== Ambient occlusion ==&lt;br /&gt;
&lt;br /&gt;
You may use shadows settings with or without ambient occlusion.&lt;br /&gt;
Enabling ambient occlusion causes a subtle darkening of nooks and crannies in shapes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Aooffon.png|frame|left|Softer shadows with ambient occlusion]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
Enabling &#039;&#039;&#039;Ambient Occlusion&#039;&#039;&#039; and setting &#039;&#039;&#039;Shadows&#039;&#039;&#039; to &#039;&#039;&#039;Sun/Moon&#039;&#039;&#039; simultaneously exhibits both effects, with the added effect that shadows are smoother (softer and blurrier).&lt;br /&gt;
&lt;br /&gt;
[[Image:Shadall400.png|frame|left|Ambient occlusion and shadows]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Depth of field ==&lt;br /&gt;
&lt;br /&gt;
Check &#039;&#039;&#039;Depth of field&#039;&#039;&#039; to make objects far from the focal distance appear fuzzy or out-of-focus.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|--&lt;br /&gt;
|align=center| [[File:DepthOfField.png|400px|left|Depth of Field On]]&lt;br /&gt;
&#039;&#039;&#039;Depth of Field On&#039;&#039;&#039;&lt;br /&gt;
|align=center| [[File:No DOF.png|380px|right|right|Depth of Field Off]]&lt;br /&gt;
&#039;&#039;&#039;Depth of Field Off&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Depth of field|Learn more about depth of field]]&#039;&#039;&#039; — you can fine-tune settings and achieve effects like tilt-shift (miniature-looking scenes), as shown on the [[Login_screen|login screens]].&lt;br /&gt;
&lt;br /&gt;
== Creating light sources ==&lt;br /&gt;
&lt;br /&gt;
Creating and editing a light source is the same as in previous releases, but the Build Tools provide some additional options when lighting and shadows are enabled, as shown at right.&lt;br /&gt;
[[Image:New build tools options.png|right|300px]]&lt;br /&gt;
&lt;br /&gt;
The extra options are:&lt;br /&gt;
* Texture-chooser next to the light&#039;s color-chooser.  Click it to choose a texture for the light.  This enables you to create &#039;&#039;projectors&#039;&#039;, lights that project a texture.  When you select a texture, the following settings then take effect:&lt;br /&gt;
* [[#FOV|FOV (field of view) ]]&lt;br /&gt;
* [[#Focus|Focus]]&lt;br /&gt;
* [[#Ambiance|Ambiance]]&lt;br /&gt;
&lt;br /&gt;
The standard light attributes &#039;&#039;&#039;color&#039;&#039;&#039;, &#039;&#039;&#039;intensity&#039;&#039;&#039;, &#039;&#039;&#039;radius&#039;&#039;&#039;, and &#039;&#039;&#039;falloff&#039;&#039;&#039; have the same effect regardless of whether lighting and shadows are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Projectors ===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;projector&#039;&#039; is a new kind of light source that casts a directional, textured light similar to that of a slide projector.&lt;br /&gt;
&lt;br /&gt;
To create a projector light source, select a texture for it in the build tools.&lt;br /&gt;
The features of projectors are visible when &#039;&#039;&#039;lighting and shadows&#039;&#039;&#039; is enabled.&lt;br /&gt;
&lt;br /&gt;
A projector differs from a regular (point) light as follows:&lt;br /&gt;
* It respects the FOV, Ambiance and Focus attributes.&lt;br /&gt;
* It only casts light along its negative Z-axis: the light is &#039;&#039;directional&#039;&#039;, and may be pointed at things like a flashlight.&lt;br /&gt;
:* Thus, the effect of a projector&#039;s light depends on the rotation of the object with the light.&lt;br /&gt;
* The projector&#039;s light  has the selected  texture, tinted with the color selected alongside it, like a slide-projector.&lt;br /&gt;
&lt;br /&gt;
A projector&#039;s light will create shadows if:&lt;br /&gt;
* You have selected &#039;&#039;&#039;Sun/Moon + Projectors&#039;&#039;&#039; for your &#039;&#039;&#039;Shadows&#039;&#039;&#039; preference.&lt;br /&gt;
* The projector is one of the two closest to the object casting shadows.&lt;br /&gt;
&lt;br /&gt;
[[Image:Proj.png|frame|left|Example of projector light]]&lt;br /&gt;
&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
Projectors do not project textures onto alpha/transparent faces that have partial transparency.  Such faces are lit by the projector as if &#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039; were disabled.&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;&#039;Lighting and shadows&#039;&#039;&#039; is disabled, a projector behaves like a point light, but it continues to obey the Color, Intensity, Radius, Falloff attributes of the light.  This essentially makes it operate like a spotlight.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
==== Projectors and shininess ====&lt;br /&gt;
[[Image:Projref.png]]&lt;br /&gt;
&lt;br /&gt;
A projecting prim reflecting in a shiny surface exhibits a reflection of the prim&#039;s projected texture.  This is increasingly sharper and brighter, the more shiny the reflecting surface is.&lt;br /&gt;
&lt;br /&gt;
==== FOV ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Fov.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;FOV&#039;&#039;&#039; setting defines the &#039;&#039;field of view&#039;&#039; of the projector, in radians.  The field of view is the angular width of the cone of light projected.  The possible range of values from 0.0 to 3.0 correspond to widths from 0 degrees to approx 172 degrees (almost a hemisphere of influence).&lt;br /&gt;
Fidelity of shadows caused by a projector may degrade as the FOV becomes larger.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Focus ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Focus.jpg|left]]&lt;br /&gt;
&lt;br /&gt;
A projected texture appears blurrier the further the projection point is from the projector.  The &#039;&#039;&#039;Focus&#039;&#039;&#039; value controls how attenuated this effect is.  Positive values keep the projection sharper for further, negative values make the projection start to blur at a closer range.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ambiance ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Amb.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ambiance&#039;&#039;&#039; adds a very blurred version of the projected image to all faces within the cone of influence, regardless of whether they are in shadow or facing away from the projector.  The goal is to roughly simulate light influence being diffused in all directions by surfaces receiving a projected image.  Thus it is acceptable that this be even brighter on faces facing &#039;&#039;away&#039;&#039; from the projector.&lt;br /&gt;
The brightness of this effect is proportional to the Ambiance value. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&amp;lt;br clear=&amp;quot;all&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point lights ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Pointlights.png|left|frame|Point light]]&lt;br /&gt;
&lt;br /&gt;
Existing in-world point light sources do not cast shadows.&lt;br /&gt;
Point lights are largely unaffected by the &#039;&#039;&#039;Lighting and Shadows&#039;&#039;&#039; setting, except:&lt;br /&gt;
* The generated light should generally look smoother (less triangular, less delineated, and more rounded in its influence)&lt;br /&gt;
* The generated light may appear brighter on surfaces close to the light source.&lt;br /&gt;
* Lights whose areas of influence overlap may make that area seem lit &#039;&#039;much&#039;&#039; brighter than previously.&lt;br /&gt;
* &#039;&#039;Every&#039;&#039; light in the scene will have a cumulative influence on lighting (not just the closest six lights).&lt;br /&gt;
&lt;br /&gt;
These exceptions may not apply to lighting falling upon transparent or alpha-textured faces: faces with a lot of partial transparency appear essentially identical (apart from shadows falling upon them) regardless of whether &#039;&#039;&#039;Lighting and shadows&#039;&#039;&#039; is enabled.&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1137024</id>
		<title>Release Notes/Second Life Server/11</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1137024"/>
		<updated>2011-03-08T17:06:35Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Corrected spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
===11.03.01.222364===&lt;br /&gt;
* &amp;quot;server-maint&amp;quot; project, scheduled 2011-03-02&lt;br /&gt;
* &#039;&#039;Bugs Fixed&#039;&#039;&lt;br /&gt;
** {{jira|SVC-6781}}: Duplicating old attachments does not copy attachment point/position/rotation info&lt;br /&gt;
** Some people may notice a slight improvement in regions with heavy object creation/deletion.  (Maestro claims he saw his object-creation benchmark speed up from 14 obj/sec to 17 obj/sec.  Nothing was changed in object creation, however we did clean up object deletion, and Maestro&#039;s benchmark deletes objects as fast as they are created.)&lt;br /&gt;
** History: https://wiki.secondlife.com/wiki/Release_Notes/Second_Life_RC_Magnum/11#11.03.01.222364&lt;br /&gt;
&lt;br /&gt;
===11.02.22.221781===&lt;br /&gt;
* Kelly&#039;s &amp;quot;mono2-aware&amp;quot; project, scheduled 2011-03-01&lt;br /&gt;
** Preparation for Mono2&lt;br /&gt;
** This branch paves the way for upgrading the Mono virtual machine that runs scripts in Second Life. This branch ensures that scripts continue to work as we upgrade.&lt;br /&gt;
&lt;br /&gt;
===11.02.15.221184===&lt;br /&gt;
* &amp;quot;Andrew&#039;s maint-server&amp;quot;, scheduled 2011-02-22&lt;br /&gt;
** Fixed a security issue related to deleting other people&#039;s objects.&lt;br /&gt;
** Fixed two simulator crash modes.&lt;br /&gt;
** Removed some unnecessary server logs.&lt;br /&gt;
** Fixed {{Jira|SVC-6678}}: Changing Regions Very fast Causes &amp;quot; No Valid Agent ID &amp;quot;&lt;br /&gt;
** Fixed {{Jira|SVC-6723}}: Scripted and linked objects not behaving properly when crossing parcel boundaries&lt;br /&gt;
** Updates to Parcel API for supporting large land owners&lt;br /&gt;
** NEW Feature added in 11.02.03.220327: &lt;br /&gt;
*** &amp;quot;Threaded Rez&amp;quot;: Object rezzing is moved to a separate thread. This should minimize lag instances when complex objects are rezzed in a region.&lt;br /&gt;
&lt;br /&gt;
===11.02.08.220555===&lt;br /&gt;
* Display Names project scheduled 2011-02-15&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Display Names Improvements&lt;br /&gt;
*** Modify simulator top scripts report to include agent IDs instead of usernames.&lt;br /&gt;
*** Messages sent to estate by user with last name resident are seen as forged by simulator&lt;br /&gt;
*** [[llGetDisplayName]] failed intermittently&lt;br /&gt;
*** Offline group invite email contains Username only and contains Resident last name in body of message&lt;br /&gt;
*** [[llGetDisplayName]] returns nothing if the resident has not chosen a new name (shouldn&#039;t it return at least the legacy name, like the viewer is showing for their name?)&lt;br /&gt;
*** Last name resident shown in title of IM Conference Window with no Display name&lt;br /&gt;
*** metadata embedded in postcards: shows username=&amp;quot;Firstname Lastname&amp;quot; instead of &amp;quot;firstname.lastname&amp;quot;&lt;br /&gt;
*** Confirm LSL functions tool tips have current valid descriptions&lt;br /&gt;
&lt;br /&gt;
===11.02.01.220158===&lt;br /&gt;
* Interest List project scheduled 2011-02-08&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Interest List Improvements&lt;br /&gt;
**: The Interest List is part of the simulator that controls how updates are sent to viewers.  It is a core part of the simulator responsible for timely updates.&lt;br /&gt;
**: This version should change the way updates for static (non-moving) objects are detected and sent to the viewer. This should be noticeable in form of:&lt;br /&gt;
*** Faster region load times.   It should take less time to see what is around you after a teleport or log in.&lt;br /&gt;
*** Faster updates when moving in a region.   While flying, for example, objects should appear sooner than before.&lt;br /&gt;
&lt;br /&gt;
===11.01.25.219622===&lt;br /&gt;
* &amp;quot;Viewer Metrics&amp;quot; project, scheduled 2010-02-01&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;:&lt;br /&gt;
** Improved viewer-side metrics collection to help Linden Lab analyze performance of various features.&lt;br /&gt;
&lt;br /&gt;
===11.01.18.219191===&lt;br /&gt;
* &amp;quot;Encroachment&amp;quot; project, scheduled 2011-01-25&lt;br /&gt;
* &#039;&#039;&#039;Bug Fix / Feature&#039;&#039;&#039;&lt;br /&gt;
** Ability to return objects that overlap (&amp;quot;encroach&amp;quot;) on a parcel.&lt;br /&gt;
**: Depends on future viewer modifications. More details on how this works ([[Parcel encroachment|here]]).&lt;br /&gt;
&lt;br /&gt;
===11.01.14.219134===&lt;br /&gt;
* &amp;quot;Simulator Shutdown&amp;quot; project deployed: 2011-01-18&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Addresses back-end issues to make simulator/region restarts faster and more reliable.&lt;br /&gt;
** Also includes a bundle of 3 updates to our &amp;quot;central servers.&amp;quot; The Centrals, as we call them, are all the various machines that do things besides simulating regions. The three updates are:&lt;br /&gt;
**# &#039;&#039;&#039;Mapserver&#039;&#039;&#039;: a minor update to the machine that generates the region images that you see on the World Map&lt;br /&gt;
**# &#039;&#039;&#039;Inventory API&#039;&#039;&#039;: you may remember that this service was deployed a few weeks ago. We&#039;ve since had to disable it due to conflicts with older viewers. This deploy is to add a version number to the API capability that the sims hand out, thereby making it only accessible to newer viewers that can properly interact with it. Older viewers will use the legacy inventory protocol that has been on the grid since the dawn of time.&lt;br /&gt;
**# &#039;&#039;&#039;Region Conductor&#039;&#039;&#039;: this is the service that decides which simulator to put regions on. When your region is down, either from a restart, crash, or whatever, the region conductor finds an empty sim to start it up on. The changes here are to improve the efficiency of how regions are placed on sims.&lt;br /&gt;
&lt;br /&gt;
===11.01.10.218736===&lt;br /&gt;
* Deployed 2011-01-11&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** TP / region crossing [[Release_Notes/Second_Life_RC_BlueSteel/10#10.12.06.216207|compression]] enabled grid wide.&lt;br /&gt;
** Security fixes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Server Release Notes]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Tutorial&amp;diff=1136833</id>
		<title>LSL Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Tutorial&amp;diff=1136833"/>
		<updated>2011-03-06T15:17:01Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Script Generator is not a Tutorial and does not belong in the Tutorial section. A link to Script Generator already exists in Scripting Tools.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
&lt;br /&gt;
== Beginner Tutorials ==&lt;br /&gt;
&#039;&#039;&#039;[[Getting Ready to Learn LSL]]:&#039;&#039;&#039; Before learning LSL, it is helpful to learn the basics of Second Life. Here are some pointers to getting started.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Help:Getting started with LSL|Getting started with LSL]]:&#039;&#039;&#039; Tutorial for absolute beginners.  Basic SL inventory and navigation required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Hello Avatar]]:&#039;&#039;&#039; A place to try next after Getting Started in LSL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Chatbot]]:&#039;&#039;&#039; A short tutorial list of concise LSL statements that make the default wood box translucent and bouncy and then kick and spin it along, also a script to run such commands for you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[DialogMenus|Building a dialog menu step by step]]:&#039;&#039;&#039; A tutorial for learners on implementing a simple, starter dialog menu system. Designed to illustrate the basic principles in layman&#039;s English.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Video Tutorial/Script editor featurettes]]:&#039;&#039;&#039; Features of the inworld Script editor. Look at [[LSL Alternate Editors]] for external 3rd party editors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[LSL 101: The Wikibook]]:&#039;&#039;&#039; A collaborative project to create a &amp;quot;complete&amp;quot;, narrative, guide to LSL scripting, starting with no assumptions of previous programming experience. and going to ... who knows where?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[A Basic LSL Tutorial]]:&#039;&#039;&#039; A tutorial for people who are new to LSL scripting, with basics tasks and LSL scripting terms explained in quick short answers for you.&lt;br /&gt;
&lt;br /&gt;
== In-World Tutorials ==&lt;br /&gt;
&#039;&#039;&#039;[http://slurl.com/secondlife/Hyles/124/208/1002/?title=Linden%20Script%20Exhibition Free interactive in-world Linden Script Tutorial]:&#039;&#039;&#039; Bromley College has developed a free interactive scripting tutorial exhibition in-world. &lt;br /&gt;
&lt;br /&gt;
You can also find the tutorial in-world by choosing &#039;&#039;&#039;Search &amp;gt; Classifieds&#039;&#039;&#039; and searching for the phrase &#039;&#039;&#039;linden script tutorial&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://slurl.com/secondlife/Star%20Beach%20Island/150/212/22/?x=300&amp;amp;y=300&amp;amp;img=http%3A//cd.bromley.ac.uk/bteccourses/sl/images/shimmer_island.jpg&amp;amp;title=Learning%20in%20Virtual%20Reality&amp;amp;msg=Here%20at%20Shimmer%20island%2C%20I%20shall%20be%20exploring%20the%20potential%20of%20Second%20Life%20in%20support%20of%20my%20current%20trials%20with%20the%20Moodle%20vle%20for%20Virtual%20Learning.%20So%20please%20feel%20free%20to%20drop%20in%20for%20a%20chat%20with%20us%20to%20see%20how%20things%20are%20going.%20Regards%20Skipper%20Abel  Bromley College in-world Virtual Learning trials]:&#039;&#039;&#039; Please feel free to come over and look around&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://slurl.com/secondlife/Horsa/43/236/84 Many free scripting tutorials that are easy to read at our College of Scripting, Music and Science]:&#039;&#039;&#039;  Come by to learn scripting and building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://swiss-projects.ch/secondlife-tutorial Swiss Projects Tutorial, the Swiss Tutorial for Second Life®; interactive, inworld and in the Web, in German]:&#039;&#039;&#039; das schweizer Tutorial zu Second Life®; interaktiv, inworld und im Web, in deutscher Sprache. SLURL: &#039;&#039;&#039;[http://slurl.com/secondlife/swiss%20projects]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== External Tutorials ==&lt;br /&gt;
&#039;&#039;&#039;[http://www.ddj.com/dept/ai/197008520?pgno=1 Using LSL introductory tutorial]&#039;&#039;&#039; Dr. Dobb&#039;s tutorial&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.slbuilding.com/Clock_video.html Building a Clock in Second Life - Full Video Tutorial]:&#039;&#039;&#039; Video tutorial for building and scripting a clock.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://people.cc.ku.edu/~grobe/intro-to-LSL/ Using the Linden Script Language]:&#039;&#039;&#039; A very comprehensive tutorial on basic scripting from Kan-ed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://johannahyacinth.blogspot.com/2006/12/scripting-basics-part-1.html Scripting Basics (Part 1)]:&#039;&#039;&#039; Scripting basics from Johanna Hyacinth.  Also try [http://johannahyacinth.blogspot.com/2006/12/scripting-basics-part-2_18.html part2] and [http://johannahyacinth.blogspot.com/2006/11/lsl-magic-barrier.html part3].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://stonedchipmunkrocks.googlepages.com/peternelson%27sguidetolsl Peter Nelson&#039;s Guide to LSL]:&#039;&#039;&#039; A series of LSL tutorials from Peter Nelson. A work in progress.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://dev.aol.com/article/2007/04/second-life A New Hampshire Coder in Linden Lab&#039;s Court]:&#039;&#039;&#039; An article on dev.aol.com discussing software engineering strategies for LSL&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://slifeguide.googlepages.com/scripting.html Scripting in Second Life]:&#039;&#039;&#039; by oceanspray&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://wintermute.linguistics.ucla.edu/lsl/ Programming in Second Life]&#039;&#039;&#039; tutorial for teen grid and others&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.wakatech.com/articles/lsl-scripting-basics/configuring-lsl-scripts-using-a-notecard/ Configuring LSL Scripts Using a Notecard]&#039;&#039;&#039; Tutorial on configuring with notecards.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://hobblescripts.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=2:lsl-scripting-tutorial&amp;amp;catid=5:tutorial&amp;amp;Itemid=3 An easy to follow tutorial for LSL]&#039;&#039;&#039; Guides you through creating your first fun script explaining the basic language features.&lt;br /&gt;
&lt;br /&gt;
== Scripting Tools ==&lt;br /&gt;
These tools are designed to &#039;&#039;&#039;ease the process of scripting&#039;&#039;&#039;, whether it&#039;s autogenerating scripts or helping you to edit them. Some of them were featured in [http://blog.secondlife.com/2008/07/19/get-started-scripting-with-autoscript-video-tip-of-the-week-42/ Torley&#039;s Autoscript post]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash&amp;gt;xW619vHfYeg&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://sl.wylie-host.co.cc/projects/autoscript/ Script Generator]&#039;&#039;&#039; - Con Wylie&#039;s up-to-date tool lets you create a script in a few seconds. A easy to use interface helps you to create your script. this tool is updated weekly, so remember to visit to see what new scripts you can make!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.3greeneggs.com/autoscript/ Autoscript]&#039;&#039;&#039; - Ann Enigma&#039;s versatile tool lets you make a script with a few clicks, then examine and edit it further. Easily add interactivity to your objects and get started scripting! Available in Français and Deutsch too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://web.mit.edu/~eric_r/Public/S4SL/ Scratch for Second Life]&#039;&#039;&#039; - Eric Rosenbaums’s exciting app (for Mac and Windows) in development which lets you arrange scripts visually as if they were Legos. I haven’t had a chance to even scratch (ha!) its surface yet, but watch Eric’s video to better understand:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://particles-lsl-generator.bashora.com/ Particle script generator]&#039;&#039;&#039; - This formatted webpage may be easier to use than SL’s own script editor. Change your parameters and try it out inworld.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.heatonresearch.com/examples/particle/particle.html Encog&#039;s Particle Machine]&#039;&#039;&#039; - &amp;quot;The particle machine allows you to specify particle effects and see them created in the Second Life world.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://ugleh.com/llDialog.php Dialog Menu script generator]&#039;&#039;&#039; - Ugleh Ulrik&#039;s Dialog Menu generator creates a menu for even the basic Scripters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.miceonabeam.com MiceOnABeam Visual Scripting Tool]&#039;&#039;&#039; - MiceOnABeam is a visual scripting tool for SL where you graphically design the logic for your script, while still being able to include your own event-handling code. The program then generates the corresponding LSL script and automatically integrates in your code to form a complete, ready to be deployed script for the SL environment. A Free version can be downloaded from &#039;&#039;&#039;[http://www.miceonabeam.com here]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:LSL Tutorials]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1133683</id>
		<title>Release Notes/Second Life Server/11</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1133683"/>
		<updated>2011-02-08T14:12:11Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Rephrase and spelling correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
===11.02.01.220158===&lt;br /&gt;
* Interest List project scheduled 2011-02-08&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Interest List Improvements&lt;br /&gt;
**: The Interest List is part of the simulator that controls how updates are sent to viewers.  It is a core part of the simulator responsible for timely updates.&lt;br /&gt;
**: This version should change the way updates for static (non-moving) objects are detected and sent to the viewer. This should be noticeable in form of:&lt;br /&gt;
*** Faster region load times.   It should take less time to see what is around you after a teleport or log in.&lt;br /&gt;
*** Faster updates when moving in a region.   While flying, for example, objects should appear sooner than before.&lt;br /&gt;
&lt;br /&gt;
===11.01.25.219622===&lt;br /&gt;
* &amp;quot;Viewer Metrics&amp;quot; project, scheduled 2010-02-01&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;:&lt;br /&gt;
** Improved viewer-side metrics collection to help Linden Lab analyze performance of various features.&lt;br /&gt;
&lt;br /&gt;
===11.01.18.219191===&lt;br /&gt;
* &amp;quot;Encroachment&amp;quot; project, scheduled 2011-01-25&lt;br /&gt;
* &#039;&#039;&#039;Bug Fix / Feature&#039;&#039;&#039;&lt;br /&gt;
** Ability to return objects that overlap (&amp;quot;encroach&amp;quot;) on a parcel.&lt;br /&gt;
**: Depends on future viewer modifications. More details on how this works ([[Parcel encroachment|here]]).&lt;br /&gt;
&lt;br /&gt;
===11.01.14.219134===&lt;br /&gt;
* &amp;quot;Simulator Shutdown&amp;quot; project deployed: 2011-01-18&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Addresses back-end issues to make simulator/region restarts faster and more reliable.&lt;br /&gt;
** Also includes a bundle of 3 updates to our &amp;quot;central servers.&amp;quot; The Centrals, as we call them, are all the various machines that do things besides simulating regions. The three updates are:&lt;br /&gt;
**# &#039;&#039;&#039;Mapserver&#039;&#039;&#039;: a minor update to the machine that generates the region images that you see on the World Map&lt;br /&gt;
**# &#039;&#039;&#039;Inventory API&#039;&#039;&#039;: you may remember that this service was deployed a few weeks ago. We&#039;ve since had to disable it due to conflicts with older viewers. This deploy is to add a version number to the API capability that the sims hand out, thereby making it only accessible to newer viewers that can properly interact with it. Older viewers will use the legacy inventory protocol that has been on the grid since the dawn of time.&lt;br /&gt;
**# &#039;&#039;&#039;Region Conductor&#039;&#039;&#039;: this is the service that decides which simulator to put regions on. When your region is down, either from a restart, crash, or whatever, the region conductor finds an empty sim to start it up on. The changes here are to improve the efficiency of how regions are placed on sims.&lt;br /&gt;
&lt;br /&gt;
===11.01.10.218736===&lt;br /&gt;
* Deployed 2011-01-11&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** TP / region crossing [[Release_Notes/Second_Life_RC_BlueSteel/10#10.12.06.216207|compression]] enabled grid wide.&lt;br /&gt;
** Security fixes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Server Release Notes]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1133682</id>
		<title>Release Notes/Second Life Server/11</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1133682"/>
		<updated>2011-02-08T14:03:27Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
===11.02.01.220158===&lt;br /&gt;
* Interest List project scheduled 2011-02-08&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Interest List Improvements&lt;br /&gt;
**: The Interest List is part of the simulator that controls how updates are sent to viewers.  It is a core part of the simulator responsible for timely updates.&lt;br /&gt;
**: This version should change the way updates for static (non-moving) objects are detected and sent to the viewer.   This should be visible as:&lt;br /&gt;
*** Faster region load times.   It should take less time to see what is around you after a teleport or log in.&lt;br /&gt;
*** Faster updates when moving in a region.   While flying, for example, objects should appear sooner than before.&lt;br /&gt;
&lt;br /&gt;
===11.01.25.219622===&lt;br /&gt;
* &amp;quot;Viewer Metrics&amp;quot; project, scheduled 2010-02-01&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;:&lt;br /&gt;
** Improved viewer-side metrics collection to help Linden Lab analyze performance of various features.&lt;br /&gt;
&lt;br /&gt;
===11.01.18.219191===&lt;br /&gt;
* &amp;quot;Encroachment&amp;quot; project, scheduled 2011-01-25&lt;br /&gt;
* &#039;&#039;&#039;Bug Fix / Feature&#039;&#039;&#039;&lt;br /&gt;
** Ability to return objects that overlap (&amp;quot;encroach&amp;quot;) on a parcel.&lt;br /&gt;
**: Depends on future viewer modifications. More details on how this works ([[Parcel encroachment|here]]).&lt;br /&gt;
&lt;br /&gt;
===11.01.14.219134===&lt;br /&gt;
* &amp;quot;Simulator Shutdown&amp;quot; project deployed: 2011-01-18&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Addresses back-end issues to make simulator/region restarts faster and more reliable.&lt;br /&gt;
** Also includes a bundle of 3 updates to our &amp;quot;central servers.&amp;quot; The Centrals, as we call them, are all the various machines that do things besides simulating regions. The three updates are:&lt;br /&gt;
**# &#039;&#039;&#039;Mapserver&#039;&#039;&#039;: a minor update to the machine that generates the region images that you see on the World Map&lt;br /&gt;
**# &#039;&#039;&#039;Inventory API&#039;&#039;&#039;: you may remember that this service was deployed a few weeks ago. We&#039;ve since had to disable it due to conflicts with older viewers. This deploy is to add a version number to the API capability that the sims hand out, thereby making it only accessible to newer viewers that can properly interact with it. Older viewers will use the legacy inventory protocol that has been on the grid since the dawn of time.&lt;br /&gt;
**# &#039;&#039;&#039;Region Conductor&#039;&#039;&#039;: this is the service that decides which simulator to put regions on. When your region is down, either from a restart, crash, or whatever, the region conductor finds an empty sim to start it up on. The changes here are to improve the efficiency of how regions are placed on sims.&lt;br /&gt;
&lt;br /&gt;
===11.01.10.218736===&lt;br /&gt;
* Deployed 2011-01-11&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** TP / region crossing [[Release_Notes/Second_Life_RC_BlueSteel/10#10.12.06.216207|compression]] enabled grid wide.&lt;br /&gt;
** Security fixes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Server Release Notes]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1132516</id>
		<title>Release Notes/Second Life Server/11</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Server/11&amp;diff=1132516"/>
		<updated>2011-01-25T14:23:08Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: /* 11.01.14.219134 */  corrected spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===11.01.18.219191===&lt;br /&gt;
* &amp;quot;Encroachment&amp;quot; project, scheduled 2011-01-25&lt;br /&gt;
* &#039;&#039;&#039;Bug Fix / Feature&#039;&#039;&#039;&lt;br /&gt;
** Ability to return objects that overlap (&amp;quot;encroach&amp;quot;) on a parcel.&lt;br /&gt;
**: Depends on future viewer modifications. More details on how this works ([[Parcel encroachment|here]]).&lt;br /&gt;
&lt;br /&gt;
===11.01.14.219134===&lt;br /&gt;
* &amp;quot;Simulator Shutdown&amp;quot; project deployed: 2011-01-18&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Addresses back-end issues to make simulator/region restarts faster and more reliable.&lt;br /&gt;
** Also includes a bundle of 3 updates to our &amp;quot;central servers.&amp;quot; The Centrals, as we call them, are all the various machines that do things besides simulating regions. The three updates are:&lt;br /&gt;
**# &#039;&#039;&#039;Mapserver&#039;&#039;&#039;: a minor update to the machine that generates the region images that you see on the World Map&lt;br /&gt;
**# &#039;&#039;&#039;Inventory API&#039;&#039;&#039;: you may remember that this service was deployed a few weeks ago. We&#039;ve since had to disable it due to conflicts with older viewers. This deploy is to add a version number to the API capability that the sims hand out, thereby making it only accessible to newer viewers that can properly interact with it. Older viewers will use the legacy inventory protocol that has been on the grid since the dawn of time.&lt;br /&gt;
**# &#039;&#039;&#039;Region Conductor&#039;&#039;&#039;: this is the service that decides which simulator to put regions on. When your region is down, either from a restart, crash, or whatever, the region conductor finds an empty sim to start it up on. The changes here are to improve the efficiency of how regions are placed on sims.&lt;br /&gt;
&lt;br /&gt;
===11.01.10.218736===&lt;br /&gt;
* Deployed 2011-01-11&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** TP / region crossing [[Release_Notes/Second_Life_RC_BlueSteel/10#10.12.06.216207|compression]] enabled grid wide.&lt;br /&gt;
** Security fixes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=How_objects_(prims)_on_land_are_calculated&amp;diff=1132144</id>
		<title>How objects (prims) on land are calculated</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=How_objects_(prims)_on_land_are_calculated&amp;diff=1132144"/>
		<updated>2011-01-16T01:35:59Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{KBmaster}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
Each Region is exactly 65536 square meters, and supports 15,000 primitive objects. Divided evenly, this means that each Region can support approximately 0.229 objects per square meter. In practical terms, this means a standard 512 square meter parcel can support up to 117 objects, a 1024 square meter parcel can support up to 234 objects, and so forth.&lt;br /&gt;
&lt;br /&gt;
===More than one parcel in a Region===&lt;br /&gt;
&lt;br /&gt;
All parcels belonging to the same owner (or group) in the same Region share their object capacity- this is represented as &#039;&#039;Simulator primitive usage&#039;&#039; in the About Land window. In this way, it is possible for the &#039;&#039;Primitives on parcel&#039;&#039; number to be higher than the &#039;&#039;Primitives parcel supports&#039;&#039; number.&lt;br /&gt;
&lt;br /&gt;
To view the About Land window, stand on a parcel and select &#039;&#039;&#039;World &amp;amp;gt; About Land&#039;&#039;&#039;. For information about objects on the land, select the &#039;&#039;&#039;Objects&#039;&#039;&#039; tab in the About Land window.&lt;br /&gt;
&lt;br /&gt;
===Vehicles and parcel limits===&lt;br /&gt;
&lt;br /&gt;
Objects that are &#039;&#039;Selected / sat upon&#039;&#039; do not count against the &#039;&#039;Primitives on parcel&#039;&#039; count. This allows vehicles to pass freely through parcels that might not otherwise be able to support them. Remember that a Region can only support 15,000 objects, regardless of parcel settings- if a Region is full, you cannot drive a vehicle into it.&lt;br /&gt;
&lt;br /&gt;
===Object Bonus Factor===&lt;br /&gt;
&lt;br /&gt;
In Private Regions, the owner may set a &#039;&#039;Region Object Bonus Factor&#039;&#039; to increase the number of objects supported by each parcel. This setting multiplies the number of objects each parcel can support by the Bonus Factor. It is important to note that this does &#039;&#039;not&#039;&#039; increase the maximum number of objects supported by the Region, which means that not all parcels in the Region will be able to reach their listed maximum capacity.&lt;br /&gt;
[[Category:Building Objects]]&lt;br /&gt;
[[Category:Information for Renters]]&lt;br /&gt;
[[Category:Creators]]&lt;br /&gt;
[[Category:Information for Landowners]]&lt;br /&gt;
[[Category:Landowners]]&lt;br /&gt;
[[Category:Land and the Linden Dollar (L$) Economy]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Knowledge Base]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=1122413</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=1122413"/>
		<updated>2010-12-07T20:11:18Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: /* LSL Script Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [[Old forum Scripting Library index| old forum Scripting Library]] or the newer [https://blogs.secondlife.com/community/forums/scripting_library?view=discussions Scripting Library forum], were lost with the death of the early scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[SetLinkText]]&lt;br /&gt;
||[[User:Tacusin Memo|Tacusin Memo]]&lt;br /&gt;
||Custom function like llSetText only applying to linked sets.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[Access (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||An easy to use script for permissions on who can use the script, Public/Group/Owner&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Han Shuffle]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Avatar Radar (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Version 1.2; A nice new avatar radar script i just finish that you can place in your hud, Also features avatar locator&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[BaseN]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
||Variable base compression, dynamically maps to usable UTF code points.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic A-Star Pathfinder]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| My own interpretation of A Star into a highly efficient algorithmn&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera following prim]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Pair of scripts to make a prim follow your camera position around (for lights etc).&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan begin_of_the_skype_highlighting     end_of_the_skype_highlighting begin_of_the_skype_highlighting     end_of_the_skype_highlighting|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[MultiUser_Dialog_Handler|Dialog Menus (multiuser)]]&lt;br /&gt;
||[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
|| Menu dialog handler that supports multiple menus open at once from the single script. Displays multi-page menus if necessary as well as allowing for fixed header and footer buttons.  Timeouts as well as Text and button size limits are handled.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Display Names Radar]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Simple HUD type avatar radar that can show [[display names]] and script memory usage&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/DS_Display-Username_Online_Indicator|*DS*_Display-Username_Online_Indicator]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||This simple hover text-based script is used to shop owners in Second Life, customers at the current display name and user name to display publicly. Additionally shows the status of the Userkey and online. Furthermore, there are click of a chat link that opens the profile owner. &lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||Display Words On Top Of An Object&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/DS_Single_AO-Sit|*DS*_Single_AO-Sit]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||Posescript for use with or without AO and with or without Animation. With the menu it is possible the seated Avatar to move.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox|DropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kireji_Haiku/SIMchat_headset|Encrypted Region-wide chat]]&lt;br /&gt;
||&#039;&#039;&#039;[[User:Kireji Haiku|Kireji Haiku]]&#039;&#039;&#039; &amp;lt;sup&amp;gt;&amp;lt;small&amp;gt;([[User talk:Kireji Haiku|talk]]|[[Special:Contributions/Kireji Haiku|contribs]])&amp;lt;/small&amp;gt;&amp;lt;/sup&amp;gt;&lt;br /&gt;
||Encrypted Region-wide chat&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to print Object Inventory (Name, Type and next Owner permissions)&lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[GA Event Notifier]]&lt;br /&gt;
||[[User:Victor Hua|Victor Hua]]&lt;br /&gt;
||Gathers seven days event data from a Google calendar and display it through a simple interface. The lsl script can access several calendars at once through seperate php files. One file per calendar. Host the included php on your own web server.&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Google_Translator]]&lt;br /&gt;
||[[User:Ugleh Ulrik|Ugleh Ulrik]]&lt;br /&gt;
||Translates spanish to english, and its simple to make it any other way.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics2]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Second generation, one script per object. Only two functions, can be embedded in others. Uses the new [[llSetLinkPrimitiveParamsFast]]/[[llGetLinkPrimitiveParams]] functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[HUD Dots Radar]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise]]&lt;br /&gt;
||HUD target example, draws dots on the HUD over avatars in view.&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Kilt Editor|Kilt / Skirt Editor]]&lt;br /&gt;
||[[User:Brangus Weir|Brangus Weir]]&lt;br /&gt;
|| This changes all the parameters of all the flexis in the link set in one swell foop!&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Daemonika_Nightfire/Scripts/LinkNumber-List_in_llSetLinkPrimitiveParamsFast|LinkNumber-List_in_llSetLinkPrimitiveParamsFast]]&lt;br /&gt;
||[[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||Changed several prims in linkset with the same parameters, with a list. Without separate llSetLinkPrimitiveParams for each prim. (ideal for show/hide effects)&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizing each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer with menu]]&lt;br /&gt;
||[[User:Brilliant Scientist|Brilliant Scientist]]&lt;br /&gt;
||A menu-driven script that rescales a linkset by moving and resizing the prims using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]] functions. Based on [[Linkset resizer]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset Resizer 2]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||A more user-friendly resizer script designed for either drop-in use by the end-user or builder or for use in products. Based on [[Fix Small Prims]].&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Materialization Effects]]&lt;br /&gt;
||[[User:Overbrain Unplugged|Overbrain Unplugged]]&lt;br /&gt;
|| Special effects to add to rezzing events to simulate a teleportation or materialization.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi-displays Texture Cycler]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
||A simple texture rotator designed for multiple display screens. With delay between each screen AND delay between each loop.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.3|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Zyngo Skin Installer]]&lt;br /&gt;
||[[User:Tmzasz Luminos|Tmzasz Luminos]]&lt;br /&gt;
||A Simple Script designed to install skins on the popular Skill machines.&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Display any amount of items contained in an Object in a Dialog, regardless of item name length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[Resizer multi-prims|Resizer multi-prims]]&lt;br /&gt;
||[[User:Christy Mansbridge|Christy Mansbridge]]&lt;br /&gt;
||1 Mono script to resize object (1 to 256 prims) by blue menu. Avoid risk to break the build by increasing link distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA1|SHA1 Hash]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure. &lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Show Agent Script Count and memory|Show Agent Script Count and memory]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to display the amount of scripts and memory usage for an agent&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skillingo AntiHack Script]]&lt;br /&gt;
||[[User:Tmzasz Luminos|Tmzasz Luminos]]&lt;br /&gt;
||A simple Protection script for skillingo thats modifyable to work with other machines.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[BuildSlurl (NewAge)]]&lt;br /&gt;
||[[User:Archile Azalee|Archile Azalee]]&lt;br /&gt;
||A way to create a SLurl in a single function BuildSlurl&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[Synchronize]]&lt;br /&gt;
||[[User:Cay Trudeau|Cay Trudeau]]&lt;br /&gt;
||Makes synchronized start to a task on even/odd seconds&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Tail Messages (NewAge)]]&lt;br /&gt;
||[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||A super nice easy to use script for those non-scripters out there! NewAge coding has done it again where you no longer need to scroll up and down adding buttons and adding messages, Features a tag system (you&#039;ll see what i mean :P)&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Text_Scroller|Text Scroller]]&lt;br /&gt;
||[[User:Fred_Gandt|Fred Gandt]]&lt;br /&gt;
||A simple text display object that scrolls text (applied as a texture) from right to left (like &#039;&#039;those&#039;&#039; LED signs) in a continuous loop.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Revolution Perenti]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists.&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/UNDO_PosRot|UNDO_PosRot]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Allows user to undo position and rotation changes that have been made &amp;quot;manually&amp;quot; to any or all prims in a linkset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unpacker On Rez (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||A very simple to use script for all you creators out there, This script will enable you to send out boxed items and make it easier for users to unpack, Also features auto die on completion. Very simple to configure!&lt;br /&gt;
|-&lt;br /&gt;
||[[Unpacker On Touch (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Exactly like Unpacker On Rez, But changed some things about to make it Unpack On Touch&lt;br /&gt;
|-&lt;br /&gt;
||[[Update distributor]]&lt;br /&gt;
|[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Distribute an object (like a project update) to a list of people named in a notecard.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID2Channel]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Optimised version of the original key2channel generators.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[VirtualID_URLMap|VirtualID URL Mapper for HTTP-in]]&lt;br /&gt;
|[[User:Cenji Neutra|Cenji Neutra]]&lt;br /&gt;
||A script showing how to setup a static URL of the form &amp;lt;your-alias&amp;gt;.obj.virtualid.info which maps to the dynamic HTTP-in URL LSL generates and keeps it up-to-date.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[Walking Sound (NewAge)]]&lt;br /&gt;
|[[User:Asia Snowfall|Asia Snowfall]]&lt;br /&gt;
||Very powerful walking sound script, Featuring customer ability to add their own sounds with the API Sound Feature!&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[WHMcs SecondLife plugin]]&lt;br /&gt;
|[[User:Alicia Sautereau|Alicia Sautereau]]&lt;br /&gt;
||Linden Dollar payment plugin for the WHMcs hosting portal.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]] and [[User:Daemonika Nightfire|Daemonika Nightfire]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|-&lt;br /&gt;
||[[Input number of seconds, get a string back that shows days, hours, minutes, seconds]]&lt;br /&gt;
||[[User:Fire Centaur|Fire Centaur]]&lt;br /&gt;
||Returns a string that displays days, hours, seconds&lt;br /&gt;
|-&lt;br /&gt;
||[[Random Giver Prim]]&lt;br /&gt;
||[[User:Damian Darkwyr|Damian Darkwyr]]&lt;br /&gt;
||A randomized item giver with a game-like twist&lt;br /&gt;
|-&lt;br /&gt;
||[[Client Specific Contents Giver]]&lt;br /&gt;
||[[User:Damian Darkwyr|Damian Darkwyr]]&lt;br /&gt;
||Give Contents only to users of a specific Client. Such as Phoenix, CoolVL or 2.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums-archive.secondlife.com/54/69/119570/1.html Announcement].&lt;br /&gt;
|-&lt;br /&gt;
||[[Silverday ObjectDNS]]&lt;br /&gt;
||[[User:Till Stirling|Till Stirling]]&lt;br /&gt;
||Dynamic Object-DNS-System to provide dynamic mapping of LSL-URLs to persistent domains. Features include redirect service, password protected domains, write protected domains, LSL-API for all necessary functions, optional web-interface.&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1122403</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1122403"/>
		<updated>2010-12-07T20:06:14Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&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;
&lt;br /&gt;
{{box|Show Agent Script Count and memory|&lt;br /&gt;
&lt;br /&gt;
This script will display the amount of scripts attached to the avatar that touches the prim this script is in, and will display the amount of memory used by those scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Agent Script Count and memory usage by PixelProphet Lane&lt;br /&gt;
//bytesToSize function in PHP ThomasR, August 24th 2010, adapted to LSL by PixelProphet Lane &lt;br /&gt;
string bytesToSize(integer bytes)&lt;br /&gt;
{&lt;br /&gt;
    list units = [&amp;quot;Bytes&amp;quot;, &amp;quot;KiloBytes&amp;quot;, &amp;quot;MegaBytes&amp;quot;, &amp;quot;GigaBytes&amp;quot;, &amp;quot;TerraBytes&amp;quot;];&lt;br /&gt;
    if (bytes == 0) return &amp;quot;n/a&amp;quot;;&lt;br /&gt;
    integer i = llFloor(llLog(bytes) / llLog(1024));&lt;br /&gt;
    string val = (string)llRound(bytes / llPow(1024, i));&lt;br /&gt;
    return val + &amp;quot; &amp;quot; + llList2String(units,i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ONAME;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ONAME = llGetObjectName();&lt;br /&gt;
        llSay(0,llGetEnv(&amp;quot;sim_channel&amp;quot;) + &amp;quot; &amp;quot; + llGetEnv(&amp;quot;sim_version&amp;quot;));        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetObjectName(llDetectedName(0));&lt;br /&gt;
        list data = llGetObjectDetails(llDetectedKey(0),[OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
        string scripts = llList2String(data,0);&lt;br /&gt;
        integer mem = llList2Integer(data,1);&lt;br /&gt;
        string memory = bytesToSize(mem);&lt;br /&gt;
        llSay(0,&amp;quot;/me has &amp;quot;+scripts+&amp;quot; scripts attached using a total of &amp;quot;+memory);&lt;br /&gt;
        llSetObjectName(ONAME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1122393</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1122393"/>
		<updated>2010-12-07T20:01:23Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&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;
&lt;br /&gt;
{{box|Show Agent Script Count and memory|&lt;br /&gt;
&lt;br /&gt;
This script will display the amount of script attached to the avatar that touches the prim this script is in, and will display the amount of memory used by those scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Agent Script Count and memory usage by PixelProphet Lane&lt;br /&gt;
string bytesToSize(integer bytes)&lt;br /&gt;
{&lt;br /&gt;
    list units = [&amp;quot;Bytes&amp;quot;, &amp;quot;KiloBytes&amp;quot;, &amp;quot;MegaBytes&amp;quot;, &amp;quot;GigaBytes&amp;quot;, &amp;quot;TerraBytes&amp;quot;];&lt;br /&gt;
    if (bytes == 0) return &amp;quot;n/a&amp;quot;;&lt;br /&gt;
    integer i = llFloor(llLog(bytes) / llLog(1024));&lt;br /&gt;
    string val = (string)llRound(bytes / llPow(1024, i));&lt;br /&gt;
    return val + &amp;quot; &amp;quot; + llList2String(units,i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ONAME;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ONAME = llGetObjectName();&lt;br /&gt;
        llSay(0,llGetEnv(&amp;quot;sim_channel&amp;quot;) + &amp;quot; &amp;quot; + llGetEnv(&amp;quot;sim_version&amp;quot;));        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetObjectName(llDetectedName(0));&lt;br /&gt;
        list data = llGetObjectDetails(llDetectedKey(0),[OBJECT_TOTAL_SCRIPT_COUNT,OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
        string scripts = llList2String(data,0);&lt;br /&gt;
        integer mem = llList2Integer(data,1);&lt;br /&gt;
        string memory = bytesToSize(mem);&lt;br /&gt;
        llSay(0,&amp;quot;/me has &amp;quot;+scripts+&amp;quot; scripts attached using a total of &amp;quot;+memory);&lt;br /&gt;
        llSetObjectName(ONAME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1112822</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=1112822"/>
		<updated>2010-11-22T19:59:48Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
 &lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
 &lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; lastpage == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == lastpage &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=845123</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=845123"/>
		<updated>2010-04-08T12:26:13Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
&lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
&lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == LASTPAGE &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840502</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840502"/>
		<updated>2010-04-03T20:12:32Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: /* LSL Script Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Han Shuffle]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||[[Display Words On Top Of An Object]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic A-Star Pathfinder]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| My own interpretation of A Star into a highly efficient algorithmn&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to print Object Inventory (Name, Type and next Owner permissions)&lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizes each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.3|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes. &lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA1|SHA1 Hash]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example. &lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Coordinate Plane]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Just a simple one prim coordinate plane system, using a custom method&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Revolution Perenti]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists. &lt;br /&gt;
&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[VirtualID_URLMap|VirtualID URL Mapper for HTTP-in]]&lt;br /&gt;
|[[User:Cenji Neutra|Cenji Neutra]]&lt;br /&gt;
||A script showing how to setup a static URL of the form &amp;lt;your-alias&amp;gt;.obj.virtualid.info which maps to the dynamic HTTP-in URL LSL generates and keeps it up-to-date.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[WHMcs SecondLife plugin]]&lt;br /&gt;
|[[User:Alicia Sautereau|Alicia Sautereau]]&lt;br /&gt;
||Linden Dollar payment plugin for the WHMcs hosting portal.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840482</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840482"/>
		<updated>2010-04-03T18:26:40Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
Once I got away from there, and after learning some key basics of Second Life, I was able to very quickly figure out various other things in here, and soon reached a high level of knowledge about Second Life. I love to figure out how things work (presumed I find things interesting), and usually it doesn&#039;t take very long.&lt;br /&gt;
&lt;br /&gt;
Remember, your Second Life is what you make of it. You can make it interesting and exciting if you want to. There&#039;s something in here for (almost) everybody.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Techniques and formatting|&lt;br /&gt;
As you will notice, each programmer has his/her own style of producing code.&lt;br /&gt;
I personally like to use CAPS for global variables because they stand out from the rest, and lower case for local variables.&lt;br /&gt;
&lt;br /&gt;
Usually I use CamelCase for function declarations.&lt;br /&gt;
&lt;br /&gt;
I also like to cache values in variables (where possible) instead of repeatedly calling the corresponding functions.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Scripts|&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]] - Print Object Inventory (Name, Type and next Owner perms)&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]] - Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840472</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840472"/>
		<updated>2010-04-03T18:07:28Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll tell you more later.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Techniques and formatting|&lt;br /&gt;
As you will notice, each programmer has his/her own style of producing code.&lt;br /&gt;
I personally like to use CAPS for global variables because they stand out from the rest, and lower case for local variables.&lt;br /&gt;
&lt;br /&gt;
Usually I use CamelCase for function declarations.&lt;br /&gt;
&lt;br /&gt;
I also like to cache values in variables (where possible) instead of repeatedly calling the corresponding functions.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{box|Scripts|&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]] - Print Object Inventory (Name, Type and next Owner perms)&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]] - Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840462</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840462"/>
		<updated>2010-04-03T18:02:03Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
&lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
&lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer lastpage= llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; lastpage)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = lastpage;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == LASTPAGE &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840452</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840452"/>
		<updated>2010-04-03T17:59:13Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
Apart from displaying content in a dialog, this script demonstrates several techniques that are useful in many ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
&lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
&lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer LASTPAGE = llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = LASTPAGE;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == LASTPAGE &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840402</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840402"/>
		<updated>2010-04-03T17:41:25Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Han Shuffle]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to print Object Inventory (Name, Type and next Owner permissions)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||[[Display Words On Top Of An Object]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic A-Star Pathfinder]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| My own interpretation of A Star into a highly efficient algorithmn&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizes each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.3|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes. &lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA1|SHA1 Hash]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example. &lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Coordinate Plane]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Just a simple one prim coordinate plane system, using a custom method&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Revolution Perenti]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists. &lt;br /&gt;
&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[VirtualID_URLMap|VirtualID URL Mapper for HTTP-in]]&lt;br /&gt;
|[[User:Cenji Neutra|Cenji Neutra]]&lt;br /&gt;
||A script showing how to setup a static URL of the form &amp;lt;your-alias&amp;gt;.obj.virtualid.info which maps to the dynamic HTTP-in URL LSL generates and keeps it up-to-date.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[WHMcs SecondLife plugin]]&lt;br /&gt;
|[[User:Alicia Sautereau|Alicia Sautereau]]&lt;br /&gt;
||Linden Dollar payment plugin for the WHMcs hosting portal.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840392</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=840392"/>
		<updated>2010-04-03T17:35:47Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll tell you more later.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Scripts|&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]] - Print Object Inventory (Name, Type and next Owner perms)&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Real Object Inventory To Dialog|Real Object Inventory To Dialog]] - Display any amount of items contained in an Object in a Dialog, regardless of item name legth..&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840382</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840382"/>
		<updated>2010-04-03T17:29:41Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Real Object Inventory To Dialog|&lt;br /&gt;
&lt;br /&gt;
This script will display all items contained in an Object Inventory, regardless of the amount of items or length of item names.&lt;br /&gt;
Further more, this script allows you to determine who has access to the Object using this script.&lt;br /&gt;
It also provides an easy way to configure end, next and back buttons.&lt;br /&gt;
I have used non standard unicode characters for my buttons in this example (characters that cannot be part of an item name).&lt;br /&gt;
A simple giver has been implemented, which checks your permissions on any selected Inventory Item to see if it&#039;s actually transferable.&lt;br /&gt;
If the Owner uses the object, the above check is not done.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Real Object Inventory To Dialog&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// Please note that any and every script published in the script library falls under the &lt;br /&gt;
// Creative Commons Creative Commons Attribution-Share Alike 3.0 license.&lt;br /&gt;
// See https://wiki.secondlife.com/wiki/Project:Copyrights for details.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts or objects, please include a reference to the page&lt;br /&gt;
// you aquired the source from.&lt;br /&gt;
&lt;br /&gt;
integer DLGCHAN;&lt;br /&gt;
integer HDL;&lt;br /&gt;
integer ISACTIVE;&lt;br /&gt;
integer PAGE;&lt;br /&gt;
integer LINE;&lt;br /&gt;
integer INBOX;&lt;br /&gt;
integer UPDATE;&lt;br /&gt;
integer TIMEOUT = 20;&lt;br /&gt;
string  NOTECARD = &amp;quot;users&amp;quot;;&lt;br /&gt;
string  BTN_NEXT = &amp;quot;next ►&amp;quot;;&lt;br /&gt;
string  BTN_BACK = &amp;quot;◄ back&amp;quot;;&lt;br /&gt;
string  BTN_END = &amp;quot;▣ end&amp;quot;;&lt;br /&gt;
string  OBJECTNAME;&lt;br /&gt;
string  ME;&lt;br /&gt;
string  MESSAGE;&lt;br /&gt;
string  CURRENTUSERNAME;&lt;br /&gt;
key     CURRENTUSERKEY;&lt;br /&gt;
key     QUERY;&lt;br /&gt;
key     OWNER;&lt;br /&gt;
list    USERS;&lt;br /&gt;
list    BUTTONS;&lt;br /&gt;
&lt;br /&gt;
SendDialog()&lt;br /&gt;
{&lt;br /&gt;
    if (INBOX == 0)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(CURRENTUSERKEY,&amp;quot;No items in inventory!&amp;quot;,[],-1);&lt;br /&gt;
        return;   &lt;br /&gt;
    }&lt;br /&gt;
    integer items_per_dlg = 10;&lt;br /&gt;
    integer LASTPAGE = llCeil((float)INBOX / (float)items_per_dlg);&lt;br /&gt;
    if (PAGE &amp;gt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = LASTPAGE;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;lt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
    }&lt;br /&gt;
    BUTTONS = [];&lt;br /&gt;
    MESSAGE = &amp;quot;&amp;quot;;&lt;br /&gt;
    integer i;&lt;br /&gt;
    integer min = (PAGE - 1) * items_per_dlg;&lt;br /&gt;
    integer max = PAGE * items_per_dlg;&lt;br /&gt;
    if (max &amp;gt;= INBOX)&lt;br /&gt;
    {&lt;br /&gt;
        max = INBOX;&lt;br /&gt;
    }&lt;br /&gt;
    for (i = min; i &amp;lt; max; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        string item =  llGetInventoryName(INVENTORY_ALL, i);&lt;br /&gt;
        //Don&#039;t give this script or users notecard away&lt;br /&gt;
        if (item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
        {&lt;br /&gt;
            MESSAGE += (string)i+&amp;quot; &amp;quot;+item+&amp;quot;\n&amp;quot;;&lt;br /&gt;
            BUTTONS += (string)i;&lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE &amp;gt; 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_END,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == 1 &amp;amp;&amp;amp; LASTPAGE == 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_END;&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE &amp;gt; 1 &amp;amp;&amp;amp; PAGE &amp;lt; LASTPAGE)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += [BTN_BACK,BTN_NEXT];&lt;br /&gt;
    }&lt;br /&gt;
    if (PAGE == LASTPAGE &amp;amp;&amp;amp; PAGE != 1)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS += BTN_BACK;&lt;br /&gt;
    }&lt;br /&gt;
    integer len = llGetListLength(BUTTONS);&lt;br /&gt;
    for (i = 0; i &amp;lt; len; i = i + 3)&lt;br /&gt;
    {&lt;br /&gt;
        BUTTONS = llListInsertList(llDeleteSubList(BUTTONS, -3, -1), llList2List(BUTTONS, -3, -1), i);&lt;br /&gt;
    }                &lt;br /&gt;
    llSetTimerEvent(TIMEOUT);&lt;br /&gt;
    llDialog(CURRENTUSERKEY, MESSAGE+&amp;quot; &amp;quot;,BUTTONS,DLGCHAN); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsAuthorized(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(USERS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer IsValidButton(string name)&lt;br /&gt;
{&lt;br /&gt;
    if (~llListFindList(BUTTONS, [name]))&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();   &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        OWNER = llGetOwner();&lt;br /&gt;
        OBJECTNAME = llGetObjectName();&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
        DLGCHAN = ( -1 * (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),-5,-1)) );&lt;br /&gt;
        LINE = 0;&lt;br /&gt;
        PAGE = 1;&lt;br /&gt;
        //Notecards that have been newly created and have not been opened and saved at least once,&lt;br /&gt;
        //do not have a valid asset id and will return NULL_KEY (They&#039;re just placeholders)&lt;br /&gt;
        if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
        {&lt;br /&gt;
            QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
     &lt;br /&gt;
    touch_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        key avatarkey = llDetectedKey(0);&lt;br /&gt;
        string avatarname = llDetectedName(0);&lt;br /&gt;
        //Check if avatar who touched is authorized&lt;br /&gt;
        if(avatarkey != OWNER &amp;amp;&amp;amp; !IsAuthorized(avatarname))&lt;br /&gt;
        {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently updating....\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!ISACTIVE || avatarkey == CURRENTUSERKEY)&lt;br /&gt;
        {&lt;br /&gt;
            ISACTIVE = TRUE;&lt;br /&gt;
            llListenRemove(HDL);&lt;br /&gt;
            //Listen to this avatar only&lt;br /&gt;
            HDL = llListen(DLGCHAN, &amp;quot;&amp;quot;, avatarkey, &amp;quot;&amp;quot;);&lt;br /&gt;
            CURRENTUSERKEY = avatarkey;&lt;br /&gt;
            CURRENTUSERNAME = avatarname;&lt;br /&gt;
            PAGE = 1;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llDialog(avatarkey, OBJECTNAME+&amp;quot; is currently in use by &amp;quot;+CURRENTUSERNAME+&amp;quot;\nPlease wait.&amp;quot;, [] ,-1);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            UPDATE = TRUE;&lt;br /&gt;
            //Wait until there are no changes for atleast 2 seconds until reading notecard again&lt;br /&gt;
            //Since there was a change in inventory, we can remove the listener too if there was one&lt;br /&gt;
            llSetTimerEvent(2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (msg == BTN_END)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.1);&lt;br /&gt;
            return;   &lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_NEXT)&lt;br /&gt;
        {&lt;br /&gt;
            ++PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (msg == BTN_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            --PAGE;&lt;br /&gt;
            SendDialog();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        //If it wasn&#039;t end, back or next, then check if it was valid&lt;br /&gt;
        if (IsValidButton(msg))&lt;br /&gt;
        { &lt;br /&gt;
            string item = llGetInventoryName(INVENTORY_ALL, (integer)msg);&lt;br /&gt;
            if (item != &amp;quot;&amp;quot; &amp;amp;&amp;amp; item != ME &amp;amp;&amp;amp; item != NOTECARD)&lt;br /&gt;
            {&lt;br /&gt;
                //If the user is not the Owner, check to see that item is actually transferable&lt;br /&gt;
                if (id != OWNER)&lt;br /&gt;
                {&lt;br /&gt;
                    integer ownerPerms = llGetInventoryPermMask(item, MASK_OWNER);&lt;br /&gt;
                    if (ownerPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        llGiveInventory(id,item);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //Owner always gets item&lt;br /&gt;
                    llGiveInventory(id,item);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            SendDialog();&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver(key query_id, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if (query_id == QUERY)&lt;br /&gt;
        {&lt;br /&gt;
            if (data != EOF)&lt;br /&gt;
            {    &lt;br /&gt;
                //Remove leading and trailing spaces&lt;br /&gt;
                data = llStringTrim(data,STRING_TRIM);&lt;br /&gt;
                //If data still contains valid information after trimming, store it&lt;br /&gt;
                if (data != &amp;quot;\n&amp;quot; &amp;amp;&amp;amp; data != &amp;quot;&amp;quot;)&lt;br /&gt;
                    USERS += data;&lt;br /&gt;
                ++LINE;&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                UPDATE = FALSE;&lt;br /&gt;
                llOwnerSay(&amp;quot;No more lines in &amp;quot;+NOTECARD+&amp;quot;, read &amp;quot; + (string)LINE + &amp;quot; lines.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llListenRemove(HDL);&lt;br /&gt;
        ISACTIVE = FALSE;&lt;br /&gt;
        CURRENTUSERNAME = &amp;quot;&amp;quot;;&lt;br /&gt;
        CURRENTUSERKEY = NULL_KEY;&lt;br /&gt;
        if (UPDATE)&lt;br /&gt;
        {&lt;br /&gt;
            INBOX = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
            LINE = 0;&lt;br /&gt;
            USERS = [];&lt;br /&gt;
            //Since inventory has changed and we need to read out notecard, we check again to see if it&#039;s valid&lt;br /&gt;
            if (llGetInventoryKey(NOTECARD) != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                QUERY = llGetNotecardLine(NOTECARD, LINE);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;No Notecard by the name of &amp;quot;+NOTECARD+&amp;quot; or &amp;quot;+NOTECARD+&amp;quot; is not a valid asset.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840173</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=840173"/>
		<updated>2010-04-03T13:38:32Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Han Shuffle]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;br /&gt;
||[[User:PixelProphet Lane|PixelProphet Lane]]&lt;br /&gt;
||Fast and efficient method to print Object Inventory (Name, Type and next Owner permissions)&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||[[Display Words On Top Of An Object]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic A-Star Pathfinder]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| My own interpretation of A Star into a highly efficient algorithmn&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizes each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.3|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes. &lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA1|SHA1 Hash]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example. &lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Coordinate Plane]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Just a simple one prim coordinate plane system, using a custom method&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Revolution Perenti]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists. &lt;br /&gt;
&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[VirtualID_URLMap|VirtualID URL Mapper for HTTP-in]]&lt;br /&gt;
|[[User:Cenji Neutra|Cenji Neutra]]&lt;br /&gt;
||A script showing how to setup a static URL of the form &amp;lt;your-alias&amp;gt;.obj.virtualid.info which maps to the dynamic HTTP-in URL LSL generates and keeps it up-to-date.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[WHMcs SecondLife plugin]]&lt;br /&gt;
|[[User:Alicia Sautereau|Alicia Sautereau]]&lt;br /&gt;
||Linden Dollar payment plugin for the WHMcs hosting portal.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840163</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=840163"/>
		<updated>2010-04-03T13:34:21Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = llList2Integer(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839912</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839912"/>
		<updated>2010-04-02T20:52:26Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839902</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839902"/>
		<updated>2010-04-02T20:50:24Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll tell you more later.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{box|Scripts|&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]] - Print Object Inventory (Name, Type and next Owner perms)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839892</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839892"/>
		<updated>2010-04-02T20:47:03Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gotta figure this Wiki stuff out first&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Scripts#Fast List Prim Contents|Fast List Prim Contents]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Fast_List_Prim_Contents&amp;diff=839882</id>
		<title>User:PixelProphet Lane/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Fast_List_Prim_Contents&amp;diff=839882"/>
		<updated>2010-04-02T20:35:58Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: moved User:PixelProphet Lane/Fast List Prim Contents to User:PixelProphet Lane/Scripts/Fast List Prim Contents&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:PixelProphet Lane/Scripts/Fast List Prim Contents]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839872</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839872"/>
		<updated>2010-04-02T20:35:58Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: moved User:PixelProphet Lane/Fast List Prim Contents to User:PixelProphet Lane/Scripts/Fast List Prim Contents&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839782</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839782"/>
		<updated>2010-04-02T18:43:09Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gotta figure this Wiki stuff out first&lt;br /&gt;
&lt;br /&gt;
[[User: PixelProphet Lane/Fast List Prim Contents]]&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839772</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839772"/>
		<updated>2010-04-02T18:37:41Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please leave the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839762</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839762"/>
		<updated>2010-04-02T18:37:02Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to this page.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839752</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839752"/>
		<updated>2010-04-02T18:34:01Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
It&#039;s easier and much faster to loop through the Inventory Item types, store the current type in a variable, and then loop through each item that is an item of our currently stored type. This way you don&#039;t need to fetch the Inventory Item type for each item you find.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to the page&lt;br /&gt;
// you aquired this source code from.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839742</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839742"/>
		<updated>2010-04-02T18:29:25Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
{{box|Fast List Prim Contents|&lt;br /&gt;
&lt;br /&gt;
A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to the page&lt;br /&gt;
// you aquired this source code from.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839732</id>
		<title>User:PixelProphet Lane/Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts&amp;diff=839732"/>
		<updated>2010-04-02T18:22:35Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Created page with &amp;#039;Gotta figure this Wiki stuff out first&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gotta figure this Wiki stuff out first&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839722</id>
		<title>User:PixelProphet Lane/Scripts/Fast List Prim Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane/Scripts/Fast_List_Prim_Contents&amp;diff=839722"/>
		<updated>2010-04-02T18:16:27Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Created page with &amp;#039;A script which can display Object Inventory already exists, but it&amp;#039;s a rather slow and inefficient implementation. This script loops through the Object Inventory of the Prim you ...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A script which can display Object Inventory already exists, but it&#039;s a rather slow and inefficient implementation.&lt;br /&gt;
This script loops through the Object Inventory of the Prim you add it to, and displays Itemname, Itemtype and next Owner permissions in chat by means of Owner message.&lt;br /&gt;
&lt;br /&gt;
{{LSL Header}}&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Fast Display Prim Contents and corresponding next Owner permissions in chat&lt;br /&gt;
// By PixelProphet Lane&lt;br /&gt;
// This code is free to copy, modify and transfer.&lt;br /&gt;
// If you intend to distribute this code as is, then please the comments above as they are.&lt;br /&gt;
// In case you distribute this code as non modifiable part of your scripts, please include a reference to the page&lt;br /&gt;
// you aquired this source code from.&lt;br /&gt;
 &lt;br /&gt;
string ME;&lt;br /&gt;
string PARENT;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer arg)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        ME = llGetScriptName();&lt;br /&gt;
        PARENT = llGetObjectName();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list InventoryConstants = [INVENTORY_TEXTURE,INVENTORY_SOUND,INVENTORY_OBJECT,INVENTORY_SCRIPT,INVENTORY_LANDMARK,&lt;br /&gt;
                                    INVENTORY_CLOTHING,INVENTORY_NOTECARD,INVENTORY_BODYPART];&lt;br /&gt;
        list ConstantNames = [&amp;quot;TEXTURE&amp;quot;,&amp;quot;SOUND&amp;quot;,&amp;quot;OBJECT&amp;quot;,&amp;quot;SCRIPT&amp;quot;,&amp;quot;LANDMARK&amp;quot;,&amp;quot;CLOTHING&amp;quot;,&amp;quot;NOTECARD&amp;quot;,&amp;quot;BODYPART&amp;quot;];&lt;br /&gt;
        integer type;&lt;br /&gt;
        integer item;&lt;br /&gt;
        integer len = llGetListLength(InventoryConstants);&lt;br /&gt;
        llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
        for (type = 0; type &amp;lt; len; ++type)&lt;br /&gt;
        {&lt;br /&gt;
            integer constant = (integer) llList2String(InventoryConstants, type);&lt;br /&gt;
            string constname = llList2String(ConstantNames, type);&lt;br /&gt;
            integer num = llGetInventoryNumber(constant);&lt;br /&gt;
            &lt;br /&gt;
            for (item = 0; item &amp;lt; num; ++item)&lt;br /&gt;
            {&lt;br /&gt;
                string itemname = llGetInventoryName(constant, item);&lt;br /&gt;
                if (itemname != ME)&lt;br /&gt;
                {&lt;br /&gt;
                    integer nextPerms = llGetInventoryPermMask(itemname, MASK_NEXT);&lt;br /&gt;
                    string Perms;&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_COPY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Copy&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_MODIFY)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Modify&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (nextPerms &amp;amp; PERM_TRANSFER)&lt;br /&gt;
                    {&lt;br /&gt;
                        Perms += &amp;quot; Transfer&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    string output = &amp;quot;Name = &amp;quot;+itemname+&amp;quot;, Type = &amp;quot;+constname+&amp;quot;, Next Owner Permissions = &amp;quot;+Perms;&lt;br /&gt;
                    llOwnerSay(&amp;quot;/me &amp;quot;+output);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llSetObjectName(PARENT);&lt;br /&gt;
        llRemoveInventory(ME);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839672</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839672"/>
		<updated>2010-04-02T16:49:59Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account, because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll tell you more later.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839662</id>
		<title>User:PixelProphet Lane</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:PixelProphet_Lane&amp;diff=839662"/>
		<updated>2010-04-02T16:45:58Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Created page with &amp;#039;{{box|About PixelProphet| I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world. After a few days I wondered how I&amp;#039;m supposed to ru...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{box|About PixelProphet|&lt;br /&gt;
I joined Second Life on Febuary 5th, 2007 and was playing around with scripts on my 2nd day in world.&lt;br /&gt;
After a few days I wondered how I&#039;m supposed to run a script I&#039;ve made. I searched my inventory for some hidden menu option like &amp;quot;&#039;&#039;Run this script&#039;&#039;&amp;quot;, but fortunately one of the many Residents I asked was kind enough to inform me that scripts run in Prims.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aaahhh...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ok, what&#039;s a Prim then ?&lt;br /&gt;
Searched the forums...&amp;quot;&#039;&#039;how to create prims&#039;&#039;&amp;quot;..you&#039;d think it was that easy....It wasn&#039;t lol.&lt;br /&gt;
By the way, I found out about Help Islands and all that about half a year after I created my account because&lt;br /&gt;
I landed right in Korea 3 on my first day, a place I can totally not recommend for newbies who need answers to questions.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll tell you more later.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=834363</id>
		<title>Category:LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=834363"/>
		<updated>2010-03-30T23:50:07Z</updated>

		<summary type="html">&lt;p&gt;PixelProphet Lane: Moved from Inventory_Menu to Inventory_Based_Menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}{{RightToc}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
Come to this page to see complex examples that show how to combine parts of LSL.&lt;br /&gt;
&lt;br /&gt;
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL &lt;br /&gt;
&lt;br /&gt;
Why collect complex examples here? Well, ...&lt;br /&gt;
&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&lt;br /&gt;
Note that there are many more scripts in the LSL Library here, but you can&#039;t get to them if you don&#039;t know they exist, because they are subpages now, instead of an automatically updated category.  Good luck searching.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page. Start your page with &amp;lt;nowiki&amp;gt;{{LSL Header}}&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.&lt;br /&gt;
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
==LSL Script Library==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[1st necessity of SL]]&lt;br /&gt;
||[[User:Beer Dailey|Beer Dailey]]&lt;br /&gt;
||Monitors for avatars and (de)activates scripts states to control script performance/lag.&lt;br /&gt;
|-&lt;br /&gt;
||[[Aim Detection]]&lt;br /&gt;
||[[User:Han Shuffle|Han Shuffle]]&lt;br /&gt;
||Monitors for avatars and reports back to owner about who is aiming at them.&lt;br /&gt;
|-&lt;br /&gt;
||[[3D Radar]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Rezzes a ball for each avatar in range. Each ball tracks its own AV and displays distance.&lt;br /&gt;
|-&lt;br /&gt;
||[[AntiDelay Node]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Uses [[llMessageLinked]] to stop those pesky delays.&lt;br /&gt;
|-&lt;br /&gt;
||[[AO Overriding Pose Ball]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||No more turning your AO off and on when you sit down&lt;br /&gt;
|-&lt;br /&gt;
||[[ARCFOUR Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Nekow42 Zarf|Nekow42 Zarf]]&lt;br /&gt;
||An LSL implementation of ARCFOUR, the most popular stream cipher still in use. It is licensed under a Creative Commons Attribution 3.0 license.&lt;br /&gt;
|-&lt;br /&gt;
||[[Assembly Programming Language|Assembly-Like Programming Language]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A compiler that runs assembly-like programs.&lt;br /&gt;
|-&lt;br /&gt;
||[[Associative Array Emulator|Associative Array (Dictionary) Emulator]]&lt;br /&gt;
||[[User:Alynna Vixen|Alynna Vixen]]&lt;br /&gt;
||This library provides a set of functions for using a list as an associative array where string based keys can refer to one or more variant elements.&lt;br /&gt;
|-&lt;br /&gt;
||[[AvatarFollower]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Allows one avatar to automatically follow another.&lt;br /&gt;
|-&lt;br /&gt;
||[[Base2Dec]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert a number to decimal from any base.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[BigNum|BigNum Library (RSA Encryption)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A BigNum Library for dealing with big numbers! Specialized for modular multiplication, and RSA encryption.&lt;br /&gt;
|-&lt;br /&gt;
||[[Binary Clock v1.1|Binary Clock]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||A Binary Clock.&lt;br /&gt;
|-&lt;br /&gt;
||[[BinaryDecimalConverter]]&lt;br /&gt;
||[[User:Soundless Smalls|Soundless Smalls]]&lt;br /&gt;
||Converts a binary value to a decimal value and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Blacklist and Remote Kill|Blacklist and Remote Kill]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Blacklist(denial of use) or a creator kill script(can delete someone&#039;s item by command on private channel)&lt;br /&gt;
|-&lt;br /&gt;
||[[Be happy]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Basic smile attachment script, makes your avatar smile.&lt;br /&gt;
|-&lt;br /&gt;
||[[Best Neighbor Ad Hiding Script|Best Neighbor]]&lt;br /&gt;
||[[User:Doran Zemlja|Doran Zemlja]]&lt;br /&gt;
||Reduce ad clutter by hiding ads when users are on their own land nearby.&lt;br /&gt;
|-&lt;br /&gt;
||[[User_talk:Rolig_Loon/Bookmark_URLs|Bookmark URLs]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Dialog driven HUD reads bookmarked URLs from notecards and navigates directly to them with user&#039;s in-world browser.&lt;br /&gt;
|-&lt;br /&gt;
||[[Builders Buddy|Builder&#039;s Buddy Tool]]&lt;br /&gt;
||[[User:Newfie Pendragon|Newfie Pendragon]]&lt;br /&gt;
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).&lt;br /&gt;
|-&lt;br /&gt;
||[[Button Click Detector]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Use [[llDetectedTouchUV]] to determine which button was pressed on a texture.&lt;br /&gt;
|-&lt;br /&gt;
||[[Camera Sync]]&lt;br /&gt;
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]&lt;br /&gt;
||A system to synchronize the cameras of two avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chatbot]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat Logger (GPL)]]&lt;br /&gt;
||[[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
||Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[Chat_Relay|Chat Relay]]&lt;br /&gt;
||[[User:grumble Loudon|grumble Loudon]]&lt;br /&gt;
||A Chat relay which can be routed using a path header and won&#039;t echo.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Racer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Race two versions of code forever, to see which runs faster.&lt;br /&gt;
|-&lt;br /&gt;
||[[Code Sizer]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Count the bytes compiled from source code, to measure how to write small code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color Changer|Color Changer Plus]]&lt;br /&gt;
||[[User:Neo Calcutt|Neo Calcutt]]&lt;br /&gt;
||A color changer with 14 colors, a random function, and a custom vector function.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Color_Picker|Color Changer]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Dialog driven color changer. Supports 16million+ colors, web color codes, multiple targeted prims, with save and recall.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color conversion scripts|Color Conversion]]&lt;br /&gt;
||[[User:Sally LaSalle|Sally LaSalle]]&lt;br /&gt;
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).&lt;br /&gt;
|-&lt;br /&gt;
||[[ColorConvert]]&lt;br /&gt;
||[[User:Siann Beck|Siann Beck]]&lt;br /&gt;
||Convert color values to vector from RGB, hex or HTML color name.&lt;br /&gt;
|-&lt;br /&gt;
||[[Color script]]&lt;br /&gt;
||[[User:Masakazu Kojima|Masakazu Kojima]]&lt;br /&gt;
||Script for changing colors trough a listener with pre-defined colors.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library Combined Library|Combined Library]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Library of mostly encoding and decoding functions, some more useful then others.&lt;br /&gt;
* String functions: Replace / Trim right / Trim left / Trim both&lt;br /&gt;
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8&lt;br /&gt;
* List functions: Replace / Compare&lt;br /&gt;
|-&lt;br /&gt;
||[[Computer:jaycoonlanguage]]&lt;br /&gt;
||[[User:jayco121 Bing|jayco121 Bing]]&lt;br /&gt;
|| A language written in LSL that is meant for my computer (available at the shop).&lt;br /&gt;
|-&lt;br /&gt;
||[[Read Note Card Configuration|Configuration Notecard Reader]]&lt;br /&gt;
||{{User|Dedric Mauriac}}&lt;br /&gt;
||A script to read configuration information from a notecard. Parses notecard to extract key words and their assigned values. Allows for comment lines and many more useful features.&lt;br /&gt;
|-&lt;br /&gt;
||[[AdvancedNotecardReader|Configuration Notecard Reader (advanced)]]&lt;br /&gt;
||[[Lear Cale|Lear Cale]]&lt;br /&gt;
||Robust configuration notecard reader; supports multiple notecards with same suffix, handles reconfig on inventory change, and does not usurp the default state.&lt;br /&gt;
|-&lt;br /&gt;
||[[Library_Chat_Relay|Conversation Relay]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).&lt;br /&gt;
|-&lt;br /&gt;
||[[Curtain script]]&lt;br /&gt;
||[[User:Zilla Larsson|Zilla Larsson]]&lt;br /&gt;
||A simple script to retract/stretch curtains, blinds, bedcovers and more&lt;br /&gt;
|-&lt;br /&gt;
||[[Dataserver API]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dataserver Framework for Notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[Days in Month]]&lt;br /&gt;
||[[User:IntLibber Brautigan|IntLibber Brautigan]]&lt;br /&gt;
||Clicking on it returns the number of days in the present month. Useful for scripting calendars and tier systems that need to know the number of days in the month at hand or to calculate for any month. Even adjusts for leap years.&lt;br /&gt;
|-&lt;br /&gt;
||[[Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Deed Tools]]&lt;br /&gt;
||[[User:Falados Kapuskas|Falados Kapuskas]]&lt;br /&gt;
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.&lt;br /&gt;
|-&lt;br /&gt;
||[[Describe Chatter]]&lt;br /&gt;
||Anonymous&lt;br /&gt;
||Chat to see yourself as others do.&lt;br /&gt;
|-&lt;br /&gt;
||[[Displayer Script]]&lt;br /&gt;
||[[User:Akinori Kimagawa|Akinori Kimagawa]]&lt;br /&gt;
||[[Display Words On Top Of An Object]]&lt;br /&gt;
|-&lt;br /&gt;
||[[Drink script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Used mainly for food and drink in Second Life.&lt;br /&gt;
|-&lt;br /&gt;
||[[TOXDropBox]]&lt;br /&gt;
||[[User:Dimentox Travanti|Dimentox Travanti]]&lt;br /&gt;
|| This is a Drop box which allows people to drop certain items in a object &amp;amp; has many config options.&lt;br /&gt;
|-&lt;br /&gt;
||[[ClickAndDrag]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Click and Drag user interface elements using dynamic feedback&lt;br /&gt;
|-&lt;br /&gt;
||[[First Name Letter Prize]]&lt;br /&gt;
||[[User:RaithSphere Whybrow|RaithSphere Whybrow]]&lt;br /&gt;
||Gives a prize if the person who sits on it&#039;s first letter of first name matches the random letter!&lt;br /&gt;
|-&lt;br /&gt;
||[[Hierarchics]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Advanced script to create an efficient self-aware hierarchic structure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Basic A-Star Pathfinder]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| My own interpretation of A Star into a highly efficient algorithmn&lt;br /&gt;
|-&lt;br /&gt;
||[[PhysicsLib]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Interesting set of fun physics functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[FastConeSpread]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Fast Algorithmn to achieve cone spread, main use in weaponry systems.&lt;br /&gt;
|-&lt;br /&gt;
||[[Progress Bar]]&lt;br /&gt;
||[[User:Nexii Malthus|Nexii Malthus]]&lt;br /&gt;
|| Flexible and powerful little function for creating progress bars useful in hovertext.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog Control]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog &amp;amp; menu control script. Call dialog and receive selected value via [[link_message]](), with built-in timer and [[link_message]]() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog&#039;s returned value can differ.&lt;br /&gt;
&lt;br /&gt;
Latest version also has [[Dialog Menus Control]] built-in; which allow multi-level menus through SL dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[Efficiency Tester]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Tests the speed of a function.&lt;br /&gt;
|-&lt;br /&gt;
||[[Email-to-IM|Email2IM]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Send IMs to SL friends via [[email]] (translate emails from friends into IMs).&lt;br /&gt;
|-&lt;br /&gt;
||[[ExplodingObjects]]&lt;br /&gt;
||[[User:Dale Innis|Dale Innis]]&lt;br /&gt;
||Causes an object (of the appropriate type) to explode on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[FadeEasy]]&lt;br /&gt;
||[[User:Nika Rugani|Nika Rugani]]&lt;br /&gt;
||The easy way of fading objects in or out (Using llSetLinkAlpha)&lt;br /&gt;
|-&lt;br /&gt;
||[[Find Avatar Key|Find Avatar Key]]&lt;br /&gt;
||[[User:Huney Jewell|Huney Jewell]]&lt;br /&gt;
||Explores [[UUID]] of avatar whose name is said in local chat or who touches the prim.&lt;br /&gt;
|-&lt;br /&gt;
||[[Fix Small Prims|Fix_Small_Prims]]&lt;br /&gt;
||[[User:Emma Nowhere|Emma Nowhere]]&lt;br /&gt;
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.&lt;br /&gt;
|-&lt;br /&gt;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Float Box Contents]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Displays object inventory in hover text, identified by type and updated marquee-style.&lt;br /&gt;
|-&lt;br /&gt;
||[[Follower (script)|Follower]]&lt;br /&gt;
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Geometric|Geometric Library]]&lt;br /&gt;
||Community Project&lt;br /&gt;
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.&lt;br /&gt;
|-&lt;br /&gt;
||[[Get Profile Picture]]&lt;br /&gt;
||[[User:Valentine Foxdale|Valentine Foxdale]]&lt;br /&gt;
||Sets the texture of the object to profile picture of the person that touches ot&lt;br /&gt;
|-&lt;br /&gt;
||[[GetTimestampOffset]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||Returns [[llGetTimestamp]]() with an hour offset.&lt;br /&gt;
|-&lt;br /&gt;
||[[Give InvItem every n hours]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. &lt;br /&gt;
|-&lt;br /&gt;
||[[Give random object]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to receive a random object in the prim&#039;s inventory&lt;br /&gt;
|-&lt;br /&gt;
||[[Google Charts]]&lt;br /&gt;
||[[User:Dedric Mauriac|Dedric Mauriac]]&lt;br /&gt;
||Create links to display raw data as a chart image.&lt;br /&gt;
|-&lt;br /&gt;
||[[Go transparent when walking]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||An attachment that goes invisible when you walk and visible when you don&#039;t walk.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Information v1.0]]&lt;br /&gt;
||[[User:Tyrennic Rivera|Tyrennic Rivera]]&lt;br /&gt;
||When clicked the prim will show group information (set on the prim) from the official Second Life Search page.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Authorization]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Checks to see if object is set to appropriate group (checks by [[Group key finder|group key]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Group Privacy]]&lt;br /&gt;
||[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device to insure members of a group can have a private area. Deactivates when nobody present.&lt;br /&gt;
|-&lt;br /&gt;
||[[Group key finder]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to find the key of the group&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Hello Avatar Companion]]&lt;br /&gt;
||[[Chase Quinnell]]&lt;br /&gt;
||Companion to the original [[Hello Avatar]] script&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/High-Capacity_Greeter-Counter|High-Capacity Greeter-Counter]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||Uses a memory compression algorithm to store hashed visitor UUID&#039;s in a string instead of using a list. &lt;br /&gt;
|-&lt;br /&gt;
||[[Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Home Rezzing System (Open Source).&lt;br /&gt;
|-&lt;br /&gt;
||[[Intra-Region Update Server]]&lt;br /&gt;
||[[User:Emma_Nowhere|Emma Nowhere]]&lt;br /&gt;
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.&lt;br /&gt;
|-&lt;br /&gt;
||[[Interpolation|Interpolation Library]]&lt;br /&gt;
||[[User:Nexii_Malthus|Nexii Malthus]]&lt;br /&gt;
||A small set of interpolation functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[Inventory_Based_Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&lt;br /&gt;
|-&lt;br /&gt;
||[[iTunes RPC Email|iTunes RPC]]&lt;br /&gt;
||[[User:Fox Diller|Fox Diller]]&lt;br /&gt;
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].&lt;br /&gt;
|-&lt;br /&gt;
||[[Key Pad Door|Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changeable code. Follow instructions carefully!&lt;br /&gt;
|-&lt;br /&gt;
||[[Linkset resizer]]&lt;br /&gt;
||[[User:Maestro Linden|Maestro Linden]]&lt;br /&gt;
||Systematically rescales a linkset by moving and resizes each prim (by using [[llGetLinkPrimitiveParams]] and [[llSetLinkPrimitiveParamsFast]])&lt;br /&gt;
|-&lt;br /&gt;
||[[list_cast]]&lt;br /&gt;
||[[User:Fractured Crystal|Fractured Crystal]]&lt;br /&gt;
||Casts a list of strings into the type they appear to be. Designed for preprocessing user input for feeding into [[llSetPrimitiveParams]]&lt;br /&gt;
|-&lt;br /&gt;
||[[LibraryDisplayLandScreenshot]]&lt;br /&gt;
||[[User:Jon Desmoulins|Jon Desmoulins]]&lt;br /&gt;
||A modified version of LibraryDisplayProfilePic using the new [[PARCEL_DETAILS_ID]] Implemented in Server v1.36&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDancemachine|lsDancemachine]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Low lag client server dancemachine.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDeejay|lsDeejay Home Edition]] &lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Client server media control for music, video, youtube, pictures, and texture animations.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDialog|lsDialog]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Universal notecard driven menu dialog system.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDisplay|lsDisplay]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Picture cycler with preloader.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Kephra_Nurmi/lsDistributor|lsDistributor]]&lt;br /&gt;
||[[User:Kephra_Nurmi|Kephra Nurmi]]&lt;br /&gt;
|| Simple &#039;try&#039; and &#039;buy&#039; vendor system.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL_languageAPI]]&lt;br /&gt;
||[[User:Gypsy paz|Gypsy Paz]]&lt;br /&gt;
||Multi-lingual API from notecard based language files&lt;br /&gt;
|-&lt;br /&gt;
||[[Last Sound System]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL [http://Last.fm Last.fm] client.&lt;br /&gt;
|-&lt;br /&gt;
||[[Listener Script]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Use to [[listen]] to other people&#039;s conversations (Like spying)&lt;br /&gt;
|-&lt;br /&gt;
||[[List2CSV]]&lt;br /&gt;
||[[User:Kunnis Basiat|Kunnis Basiat]]&lt;br /&gt;
||List2CSV &amp;amp; CSV2List that include preserving type and escaping characters.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Get_Reverse_Order|List: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input List in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Find_Last_Index|List: Find Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of searched item in a source list. (backwards version of [[llListFindList]])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List:_Multi-Find_Index_.28First_or_Last.29|List: Multi Find]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the first found index of multiple search items in a list. (Multi-item version of [[llListFindList]]. Fwd and Rev versions included)&lt;br /&gt;
|-&lt;br /&gt;
||[[Load URL]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||Touch to get a dialog to visit the URL inside the script.&lt;br /&gt;
|-&lt;br /&gt;
||[[Mandelbrot Explorer]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An interactive fractal explorer.&lt;br /&gt;
|-&lt;br /&gt;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don&#039;t use this in a script!&lt;br /&gt;
|-&lt;br /&gt;
||[[Minesweeper]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A simple minesweeper game.&lt;br /&gt;
|-&lt;br /&gt;
||[[Morse Code]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that allows for the conversion to and from morse code and can &amp;quot;play&amp;quot; morse code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multi Item Rezzer|Multi Item Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||A rework of my old High Altitude Rezzer. Place the objects that you wish to choose from to be rezzed inside. Sit on the rezzer and pick the item and the height. It will go to target height and rez the object.&lt;br /&gt;
|-&lt;br /&gt;
||[[Multirezzer|Multirezzer (on collision)]]&lt;br /&gt;
||[[User:Beet Streeter|Beet Streeter]]&lt;br /&gt;
||Spawns up to 10 objects when the object containing the script collides with a user.&lt;br /&gt;
|-&lt;br /&gt;
||[[Name2Key in LSL]]&lt;br /&gt;
||[[User:Maeva Anatine|Maeva Anatine]]&lt;br /&gt;
||Get the Name2Key feature inside your scripts. Works even on lastly subscribed avatars.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||To stop your long and hard builds from getting returned in sandboxes (&#039;&#039;only single prims, though!&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return NR]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||This really works (29-05-09), needs a nearby region to do the trick and avoid auto return. (Tested on Blue and Rausch)&lt;br /&gt;
|-&lt;br /&gt;
||[[No Auto-Return (Multi)]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A revision of Bella&#039;s that works for multi-prim objects.&lt;br /&gt;
|-&lt;br /&gt;
||[[No Limit Teleporter]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Teleport to infinite altitudes (up to 4096m)&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.3|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text (and back). Allows people to transfer objects through notecards (or otherwise).&lt;br /&gt;
|-&lt;br /&gt;
||[[Online Indicator|Online Indicator]]&lt;br /&gt;
||[[User:Kristy Fanshaw|Kristy Fanshaw]]&lt;br /&gt;
||Will show if the user is online or not. Displays users profile picture and allows to send IM&#039;s to user. Also gives a link to open the users profile&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Group Join]]&lt;br /&gt;
||[[User:Alicia Stella|Alicia Stella]]&lt;br /&gt;
||User Touches Object to Join Group from Group Info window, (no bot.)&lt;br /&gt;
|-&lt;br /&gt;
||[[One Script, many doors]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Door script able to manage more than 50 linked doors from a single script instance.&lt;br /&gt;
|-&lt;br /&gt;
||[[Object Size]]&lt;br /&gt;
||[[User:Chase Quinnell|Chase Quinnell]]&lt;br /&gt;
||Gets the dimensions and footprint of a linkset&lt;br /&gt;
|-&lt;br /&gt;
||[[ParseString2List]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.&lt;br /&gt;
|-&lt;br /&gt;
||[[Password Generator]]&lt;br /&gt;
||[[User:Syntrax Canucci|Syntrax Canucci]]&lt;br /&gt;
||This is an over-complicated, semi-complex password generator, which goes through multiple steps.&lt;br /&gt;
|-&lt;br /&gt;
||[[Pathfinder]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||A potential field based pathfinding library.&lt;br /&gt;
|-&lt;br /&gt;
||[[Phantom Child]]&lt;br /&gt;
||[[User:Aeron Kohime|Aeron Kohime]]&lt;br /&gt;
||Causes a child in a link set to become phantom without the entire object becoming phantom.&lt;br /&gt;
|-&lt;br /&gt;
||[[PosJump]]&lt;br /&gt;
||[[User:Uchi Desmoulins|Uchi Desmoulins]]&lt;br /&gt;
||A much more efficient alternative to the popular [[warpPos]] function for bypassing 10m distance-moved limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[Posing stand|Posing Stand]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Just a pose script to edit [[attachments]] more easily.&lt;br /&gt;
|-&lt;br /&gt;
||[[Prefix Calculator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| A calculator that evaluates expressions in prefix notation. &lt;br /&gt;
&amp;lt;code&amp;gt;+ 3 4 = 5. * + 1 2 + 3 4 = 14.&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
||[[Pseudo-random Number Generator]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF&lt;br /&gt;
|-&lt;br /&gt;
||[[Play and Loop Sound]]&lt;br /&gt;
||[[User:Bellla Clarity|Bella Clarity]]&lt;br /&gt;
||Very short and simple script; plays and loops a sound in an object.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Rolig_Loon/Quiz_From_Notecard|Quiz From Notecard]]&lt;br /&gt;
||[[User:Rolig Loon|Rolig Loon]]&lt;br /&gt;
||A multiple-choice testing script that reads questions and answer choices from a notecard and presents them in dialog boxes. &lt;br /&gt;
|-&lt;br /&gt;
||[[Rainbow_palette]]&lt;br /&gt;
||[[User:Rui Clary|Rui Clary]]&lt;br /&gt;
||Build a color picker, using only one prim, and a few lines of code.&lt;br /&gt;
|-&lt;br /&gt;
||[[Random AV Profile Projector]]&lt;br /&gt;
||[[User:Debbie Trilling|Debbie Trilling]]&lt;br /&gt;
||Randomly selects an AV from a crowd &amp;amp; then projects their profile picture as a &#039;holographic&#039; image &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Object Vendor]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Simple vendor that gives out random objects when paid the right amount &lt;br /&gt;
|-&lt;br /&gt;
||[[Random Password Generator]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||Generate Random passwords based on String Length.&lt;br /&gt;
|-&lt;br /&gt;
||[[RavText]]&lt;br /&gt;
||[[User:Ravenous Dingo|Ravenous Dingo]]&lt;br /&gt;
||An alternate to XyText.  This is a lightweight, multiple font 10 character text display system.  It only supports uppercase alphanumeric text and a few special characters, but it is very fast, renders quickly and supports multiple fonts. It is meant for specialized use when all that is desired is basic, fast text display and the extra &amp;quot;bells and whistles&amp;quot; are not needed.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say Region Frames Per Second|Region Frames Per Second]]&lt;br /&gt;
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]&lt;br /&gt;
|| Says the region name and frames per second out loud on command.&lt;br /&gt;
|-&lt;br /&gt;
||[[RentalBoxv1|Rental Box, Simply]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Simple explanation of how to make rental boxes.&lt;br /&gt;
|-&lt;br /&gt;
||[[Rental Cube]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple cube for renting out a space.&lt;br /&gt;
|-&lt;br /&gt;
||[[Remote Texture Loader]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A set of scripts for remotely loading textures within a sim. This means that a single &amp;quot;texture server&amp;quot; can manage multiple changing billboards within a sim.&lt;br /&gt;
|-&lt;br /&gt;
||[[sbDialog]]&lt;br /&gt;
||[[User:Siann_Beck|Siann Beck]]&lt;br /&gt;
||A simple replacement function for [[llDialog]]. It re-orders the button list so that the button values, as passed to it, display left-to-right, top-to-bottom. It also opens a [[llListen|listen]] on the specified channel, and returns the handle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheduler]]&lt;br /&gt;
||[[User:Haravikk Mistral|Haravikk Mistral]]&lt;br /&gt;
||Schedule multiple events using a single script timer&lt;br /&gt;
|-&lt;br /&gt;
||[[Scheme_Interpreter|Scheme Interpreter]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||A scheme interpreter capable of handling most scheme expressions, including lambda and lists.&lt;br /&gt;
|-&lt;br /&gt;
||[[Script Override Functions]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||bypass default strings, integer etc in chat channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[Scripted Attachment Detector.lsl|Scripted Attachment Detector]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A script that will display avatars wearing scripted attatchments in hovertext. This may be worn as an hud or rezzed. &lt;br /&gt;
|-&lt;br /&gt;
||[[Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[Sensor Visualizer]]&lt;br /&gt;
||[[User:Cerise Sorbet|Cerise Sorbet]]&lt;br /&gt;
||Shows the size and shape you get with [[llSensor]] range and arc parameters&lt;br /&gt;
|-&lt;br /&gt;
||[[Serverless Key Exchange]]&lt;br /&gt;
||[[User:Sendao Goodman|Sendao Goodman]]&lt;br /&gt;
||Maintains a network of object keys without using an external server.&lt;br /&gt;
|-&lt;br /&gt;
||[[SHA1|SHA1 Hash]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Map Particle Projector]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Displays a floating map of the sim the script is in.&lt;br /&gt;
|-&lt;br /&gt;
||[[Sim Restart Logger]]&lt;br /&gt;
||[[User:Kyrah Abattoir|Kyrah Abattoir]]&lt;br /&gt;
||Counts region restarts and displays log of last 9 restarts together with region FPS and dilation. &lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Elevator in a Box]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Simple elevator example. &lt;br /&gt;
|-&lt;br /&gt;
||[[Speed Tester]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||Similar to the [[Efficiency Tester]], this script allows you to test the speed of a particular function or snippet with multiple trials giving min/max/avg/median and the standard deviation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Skunk Money]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Fun gambling machine of yesteryear, which only supports freeplay now due to SL regulations against gambling. &lt;br /&gt;
|-&lt;br /&gt;
||[[SLateIt]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An augmented virtual reality HUD.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLetanque]]&lt;br /&gt;
||[[User:Babbage Linden|Babbage Linden]]&lt;br /&gt;
||An LSL petanque game.&lt;br /&gt;
|-&lt;br /&gt;
||[[SLURL HUD]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch this HUD to get a SLURL through IM, email and floating text.&lt;br /&gt;
|-&lt;br /&gt;
||[[SL Mail V1.2]]&lt;br /&gt;
||[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Second Life mail client V1.2 (released sept&#039;07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! &lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol&lt;br /&gt;
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID&#039;s SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Rotating Door]]&lt;br /&gt;
|[[User:Toy Wylie|Toy Wylie]]&lt;br /&gt;
||A script for doors that open and close smoothly using llTargetOmega&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Smooth Sliding Door]]&lt;br /&gt;
|[[User:SimonT Quinnell|SimonT Quinnell]]&lt;br /&gt;
||A script for sliding doors that open and close smoothly using [[llMoveToTarget]]. Asjusts for prim orientation.&lt;br /&gt;
|-&lt;br /&gt;
||[[Simple Coordinate Plane]]&lt;br /&gt;
||[[User:Project Neox|Project Neox]]&lt;br /&gt;
||Just a simple one prim coordinate plane system, using a custom method&lt;br /&gt;
|-&lt;br /&gt;
||[[Spiral Staircase Generator]]&lt;br /&gt;
|[[User:Meyermagic Salome|Meyermagic Salome]]&lt;br /&gt;
||Generates nice looking spiral staircases without much hassle.&lt;br /&gt;
|-&lt;br /&gt;
||[[Static URL&#039;s for HTTP-In Service|Static_URLs]]&lt;br /&gt;
||[[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
||How to generate a static url for HTTP-In temporal limitations.&lt;br /&gt;
|-&lt;br /&gt;
||[[String Compare]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Find_Last_Index|String: Reverse]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns an input string in reverse order&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#String:_Get_Reverse_Order|String: Last Index]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Returns the last index of search found in string (the backward equivalent of [[llSubStringIndex]])&lt;br /&gt;
|-&lt;br /&gt;
||[[Teleport HUD]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching &amp;quot;Add&amp;quot; &amp;amp; naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Enh._Landmark-2-Map|Teleporter (landmark based)]]&lt;br /&gt;
||[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Uses Landmarks to offer map teleports. Works as Hud or inworld objects, just drop in landmarks and go.&lt;br /&gt;
|-&lt;br /&gt;
||[[Bobbyb&#039;s texture changer|Texture Changers]]&lt;br /&gt;
||{{User|Bobbyb30 Swashbuckler}}&lt;br /&gt;
||A collection of texture changing scripts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Texture Menu Management|Texture Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&lt;br /&gt;
|-&lt;br /&gt;
||[[Tic Tac Toe]]&lt;br /&gt;
||[[User:CG Linden|CG Linden]]&lt;br /&gt;
||Step by step demo on how to implement a larger scripting project&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Unix_time_code_to_list_format|Timestamp:&amp;lt;br&amp;gt;Unix time code to list format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts Unix timestamps to their [Y, M, D, h, m, s] equivalents (ex: 1234567890 to [2009, 2, 13, 3, 31, 30])&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#List_format_to_Unix_time_code.|Timestamp:&amp;lt;br&amp;gt;List format to Unix time code]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||converts [Y, M, D, h, m, s] timestamps to their Unix equivalents (ex: [2009, 2, 13, 3, 31, 30] to 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_Unix_timestamp|Timestamp:&amp;lt;br&amp;gt;Weekday from Unix timestamp]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from Unix timestamps (ex: &amp;quot;Friday&amp;quot; from 1234567890)&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Functions#Weekday_from_.28_Y.2C_M.2C_D_.29_format|Timestamp:&amp;lt;br&amp;gt;Weekday from (Y, M, D) format]]&lt;br /&gt;
||[[User:Void Singer|Void Singer]]&lt;br /&gt;
||Gets weekday from (Y, M, D) timestamps (ex: &amp;quot;Friday&amp;quot; from (2009, 2, 13))&lt;br /&gt;
|-&lt;br /&gt;
||[[TightList]]&lt;br /&gt;
||[[User:Strife Onizuka|Revolution Perenti]]&lt;br /&gt;
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists. &lt;br /&gt;
&lt;br /&gt;
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn&#039;t preserve type. &lt;br /&gt;
|-&lt;br /&gt;
||[[Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[[Touch A Quote]]&lt;br /&gt;
||[[User:CodeBastard Redgrave|CodeBastard Redgrave]]&lt;br /&gt;
||Touch an object to read quotes sequentially from a notecard&lt;br /&gt;
|-&lt;br /&gt;
||[[Touring Balloon]]&lt;br /&gt;
||[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Automated touring balloon with many options from long ago.  Always seems to work on one SL release, and not the other.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unix2DateTime]]&lt;br /&gt;
|[[User:Flennan Roffo|Flennan Roffo]]&lt;br /&gt;
||Conversion from Unix time ([[llGetUnixTime]]()) to date and time string and vice versa.&lt;br /&gt;
|-&lt;br /&gt;
||[[Under Age Boot]]&lt;br /&gt;
|[[User:Chance Unknown|Chance Unknown]]&lt;br /&gt;
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.&lt;br /&gt;
|-&lt;br /&gt;
||[[Universal Translator]]&lt;br /&gt;
|[[User:Hank Ramos|Hank Ramos]]&lt;br /&gt;
||Chat listener that handles seamless translation of public chat between 50+ written languages without the need for configuration.  Handles numerous avatars, auto-detects languages, and works together with multiple copies of translators to spread-workload using a sophisticated back-end communications sub-system.&lt;br /&gt;
|-&lt;br /&gt;
||[[Unmutable Descript Nagger]]&lt;br /&gt;
|[[User:Bobbyb30 Zohari|Bobbyb30 Zohari]]&lt;br /&gt;
||To nag avatars to take off their scripted attatchments.&lt;br /&gt;
|-&lt;br /&gt;
||[[UUID Song Generator]]&lt;br /&gt;
||{{User|Sendao Goodman}}&lt;br /&gt;
||Translates a UUID into a simple song and plays it.&lt;br /&gt;
|-&lt;br /&gt;
||[[VirtualID_URLMap|VirtualID URL Mapper for HTTP-in]]&lt;br /&gt;
|[[User:Cenji Neutra|Cenji Neutra]]&lt;br /&gt;
||A script showing how to setup a static URL of the form &amp;lt;your-alias&amp;gt;.obj.virtualid.info which maps to the dynamic HTTP-in URL LSL generates and keeps it up-to-date.&lt;br /&gt;
|-&lt;br /&gt;
||[[User:Void_Singer/Programs#v7-D_Advanced_Visitor_Greeter|Visitor Greeter]]&lt;br /&gt;
|[[User:Void_Singer|Void_Singer]]&lt;br /&gt;
||Reduced spam visitor greeter, highly configurable, easy to modify.&lt;br /&gt;
|-&lt;br /&gt;
||[[Visitor Logger (Web/Basic) ]]&lt;br /&gt;
|[[User:Buddy Sprocket|Buddy Sprocket]]&lt;br /&gt;
||A very basic visitor logger - log visitors in SL to a text file on your web-site.&lt;br /&gt;
|-&lt;br /&gt;
||[[Vote Simple]]&lt;br /&gt;
|[[User:JB_Kraft|JB Kraft]]&lt;br /&gt;
||Simple vote collector. One avi, one vote.&lt;br /&gt;
|-&lt;br /&gt;
||[[WarpPos]]&lt;br /&gt;
|[[User:Keknehv Psaltery|Keknehv Psaltery]]&lt;br /&gt;
||Non-physical movement without the 10m limit.&lt;br /&gt;
|-&lt;br /&gt;
||[[Window Control]]&lt;br /&gt;
||[[User:Emmas Seetan|Emmas Seetan]]&lt;br /&gt;
||For window opacity, helpful for buildings.&lt;br /&gt;
|-&lt;br /&gt;
||[[WHMcs SecondLife plugin]]&lt;br /&gt;
|[[User:Alicia Sautereau|Alicia Sautereau]]&lt;br /&gt;
||Linden Dollar payment plugin for the WHMcs hosting portal.&lt;br /&gt;
|-&lt;br /&gt;
||[[XTEA Strong Encryption Implementation]]&lt;br /&gt;
||[[User:Morse Dillon|Morse Dillon]]&lt;br /&gt;
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm).  This is the first known public release of a &#039;real&#039; strong encryption implementation in LSL and is released under the GNU General Public License (GPL).&lt;br /&gt;
|-&lt;br /&gt;
||[[XyText 1.5|XyText]]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[XyyyyzText|XyyyyzText]]&lt;br /&gt;
||[[User:Criz Collins|Criz Collins]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO&lt;br /&gt;
|-&lt;br /&gt;
||[[XyzzyText|XyzzyText]]&lt;br /&gt;
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.&lt;br /&gt;
|-&lt;br /&gt;
||[[Wiki3DBuilder]] [[Wiki3DBuilder1.0]]&lt;br /&gt;
||[[User:Salahzar Stenvaag|Salahzar Stenvaag]] &lt;br /&gt;
||Allows a group of people to collectively build up complex 3D mindmaps with connected concepts. Uses particles for connections and low prim usage. Nodes can be textured, colored, changed form size moved collectively by everybody and can distribute notecards, landmarks, URL, objects, textures. I provide two version 0.1 and 1.0 and probably next version will communicate with moodle and sloodle external websites.&lt;br /&gt;
|-&lt;br /&gt;
||[[Youtube TV]]&lt;br /&gt;
||[[User:Morgam Biedermann|Morgam Biedermann]]&lt;br /&gt;
||Watch your favorite Youtube videos / auto set the texture to the parcel media texture.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
||[[Zero Lag Poseball]]&lt;br /&gt;
||[[User:Jippen Faddoul|Jippen Faddoul]]&lt;br /&gt;
||A simple poseball with no lag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; {{Prettytable}}&lt;br /&gt;
|- {{Hl2}}&lt;br /&gt;
! &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[HTTP Post request to a PHP server]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to make simple POST requests to your website. The libraries allow you to get your request through the variable $_POST on the server. It also include a basic security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|-&lt;br /&gt;
|| [http://aubretec.com/products/sldb SLDB]&lt;br /&gt;
|| [[User:Luc Aubret|Luc Aubret]]&lt;br /&gt;
|| Flexible web database storage using PHP/MySQL.  Used to store per-user field/value pairs from in-world objects using [[llHTTPRequest]]. &lt;br /&gt;
* [http://aubretec.com/support/manuals/sldbkit/ Implementation Guide]&lt;br /&gt;
* [http://aubretec.com/wp-content/uploads/2009/05/sldb.zip Download] (.zip, 12kb)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you&#039;re using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]&lt;br /&gt;
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]&lt;br /&gt;
|| A basic OOP&#039;d PHP Class containing VeloxSeverine&#039;s $_POST fixer and Marv&#039;s own eccentric ideas for &amp;quot;fixing&amp;quot; things.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Jor3l Boa/PHP/n2k.php|Name2Key.php]]&lt;br /&gt;
|| [[User:Jor3l Boa|Jor3l Boa]]&lt;br /&gt;
|| Get Avatar&#039;s UUID using Second Life search service. (like in LSL Name2Key)&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/PHP/k2n.php|Key2Name.php]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| Get Avatar&#039;s Name using Second Life search service. (like in LSL Key2Name)&lt;br /&gt;
|-&lt;br /&gt;
|| [[Lame_Object_DNS_and_Cross_Sim_Messaging|Lame Object DNS and Cross Sim Messaging]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Simple, cheeseball method of doing cross-sim communications with http-in and an external object DNS service.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Public_Object_DNS|Public Object DNS]]&lt;br /&gt;
|| [[User:Liandra Ceawlin|Liandra Ceawlin]]&lt;br /&gt;
|| Public object DNS-like system running on GAE, for http-in. Hopefully scalable enough for wide-spread usage.&lt;br /&gt;
|-&lt;br /&gt;
|| [[User:Ina Centaur/UUID/calimg.api|Calendar Image UUID API]]&lt;br /&gt;
|| [[User:Ina Centaur|Ina Centaur]]&lt;br /&gt;
|| API that gives the UUID of an image of a calendar image give month and year arguments.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Articles&#039;&#039;&#039;&lt;br /&gt;
*[[:Category:LSL Examples| Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}&lt;/div&gt;</summary>
		<author><name>PixelProphet Lane</name></author>
	</entry>
</feed>