<?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=Chance+Unknown</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=Chance+Unknown"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Chance_Unknown"/>
	<updated>2026-07-27T15:02:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Chance_Unknown&amp;diff=357362</id>
		<title>User:Chance Unknown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Chance_Unknown&amp;diff=357362"/>
		<updated>2009-05-13T20:16:35Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jira Reporter}}&lt;br /&gt;
&lt;br /&gt;
A Corn Field Alumnus.&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Chance_Unknown&amp;diff=357352</id>
		<title>User:Chance Unknown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Chance_Unknown&amp;diff=357352"/>
		<updated>2009-05-13T20:15:25Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jira Reporter}}&lt;br /&gt;
&lt;br /&gt;
Internet celebrity.&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Under_Age_Boot&amp;diff=38605</id>
		<title>Under Age Boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Under_Age_Boot&amp;diff=38605"/>
		<updated>2007-10-30T19:58:15Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Place this script into a single prim and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
&lt;br /&gt;
# Deed to match the land group&lt;br /&gt;
# Place the prim reasonably close to the parcel landing point&lt;br /&gt;
# Set the prim description field to be the minmimum age accounts must be in days &lt;br /&gt;
&lt;br /&gt;
Operation:&lt;br /&gt;
&lt;br /&gt;
# No special instructions. It operates stand alone once installed.&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////  &lt;br /&gt;
 &lt;br /&gt;
 // Set the age in the description field of the prim to reflect the SL account age&lt;br /&gt;
 // of individuals to boot.&lt;br /&gt;
 &lt;br /&gt;
 integer AGE_LIMIT;&lt;br /&gt;
 &lt;br /&gt;
 list agent_list;&lt;br /&gt;
 &lt;br /&gt;
 integer date2days(string data)&lt;br /&gt;
 {&lt;br /&gt;
     integer result;&lt;br /&gt;
 &lt;br /&gt;
     list parse_date = llParseString2List(data, [&amp;quot;-&amp;quot;], []);&lt;br /&gt;
     &lt;br /&gt;
     integer year = llList2Integer(parse_date, 0);&lt;br /&gt;
             &lt;br /&gt;
     result = (year - 2000) * 365; // Bias Number to year 2000 (SL Avatars Born After Date)  &lt;br /&gt;
 &lt;br /&gt;
     list days = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];&lt;br /&gt;
     &lt;br /&gt;
     result += llList2Integer(days, (llList2Integer(parse_date, 1) - 1));&lt;br /&gt;
    &lt;br /&gt;
     if (year/4 == llRound(year/4)) result += 1;&lt;br /&gt;
             &lt;br /&gt;
     result += llList2Integer(parse_date, 2);&lt;br /&gt;
 &lt;br /&gt;
     return result;&lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     on_rez(integer param)&lt;br /&gt;
     {&lt;br /&gt;
         llResetScript();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         AGE_LIMIT = (integer)llGetObjectDesc();&lt;br /&gt;
        &lt;br /&gt;
         if (AGE_LIMIT &amp;lt; 2)&lt;br /&gt;
         {&lt;br /&gt;
             AGE_LIMIT = 2;&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         llSetObjectName(&amp;quot;Unknown Underage Boot - &amp;quot; + llGetRegionName());&lt;br /&gt;
        &lt;br /&gt;
         llVolumeDetect(TRUE);&lt;br /&gt;
        &lt;br /&gt;
         if (llOverMyLand(llGetKey()) == FALSE)&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Requires proper group deeds to work on this land.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, 100.0, PI, 1.0);&lt;br /&gt;
        &lt;br /&gt;
         llOwnerSay(&amp;quot;Set Avatar age in the description, currently it is set for &amp;quot; +&lt;br /&gt;
             (string)AGE_LIMIT + &amp;quot; days.&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llOverMyLand(llGetKey()) == FALSE)&lt;br /&gt;
         {&lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         integer i;&lt;br /&gt;
        &lt;br /&gt;
         for (i = 0; i &amp;lt; num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             key agent = llDetectedKey(i);&lt;br /&gt;
            &lt;br /&gt;
             if (llSameGroup(agent) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 if (llListFindList(agent_list, [ agent ]) &amp;lt; 0)&lt;br /&gt;
                 {&lt;br /&gt;
                     if (llGetListLength(agent_list) == 0)&lt;br /&gt;
                     {&lt;br /&gt;
                         agent_list += agent;&lt;br /&gt;
                        &lt;br /&gt;
                         llRequestAgentData(llList2Key(agent_list, 0), DATA_BORN);&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                         agent_list += agent;&lt;br /&gt;
                     }                        &lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     dataserver(key queryid, string data)&lt;br /&gt;
     {&lt;br /&gt;
         AGE_LIMIT = (integer)llGetObjectDesc();&lt;br /&gt;
        &lt;br /&gt;
         integer today = date2days(llGetDate());&lt;br /&gt;
                &lt;br /&gt;
         integer age = date2days(data);&lt;br /&gt;
        &lt;br /&gt;
         key agent = llList2Key(agent_list, 0);&lt;br /&gt;
        &lt;br /&gt;
         string name = llKey2Name(agent);&lt;br /&gt;
        &lt;br /&gt;
         if (AGE_LIMIT &amp;lt; 2)&lt;br /&gt;
         {&lt;br /&gt;
             AGE_LIMIT = 2;&lt;br /&gt;
            &lt;br /&gt;
             llSetObjectDesc((string)AGE_LIMIT + &amp;quot; : SET AGE LIMIT HERE&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         if (name != &amp;quot;&amp;quot;)&lt;br /&gt;
         {&lt;br /&gt;
             if ((today - age) &amp;lt; AGE_LIMIT)&lt;br /&gt;
             {&lt;br /&gt;
                 if (llOverMyLand(agent))&lt;br /&gt;
                 {&lt;br /&gt;
                     llSay(0, name + &amp;quot;, you are too young to be here.&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
                     llTeleportAgentHome(agent);&lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llTeleportAgentHome(agent);&lt;br /&gt;
         }&lt;br /&gt;
            &lt;br /&gt;
         agent_list = llDeleteSubList(agent_list, 0, 0);&lt;br /&gt;
        &lt;br /&gt;
         if (llGetListLength(agent_list) != 0)&lt;br /&gt;
         {&lt;br /&gt;
             llRequestAgentData(llList2Key(agent_list, 0), DATA_BORN);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Under_Age_Boot&amp;diff=38604</id>
		<title>Under Age Boot</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Under_Age_Boot&amp;diff=38604"/>
		<updated>2007-10-30T19:55:29Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: New page: Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.   Place this script into a single prim and decorate to taste....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Place this script into a single prim and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
&lt;br /&gt;
# Deed to match the land group&lt;br /&gt;
# Set the prim description field to be the minmimum age accounts must be in days &lt;br /&gt;
&lt;br /&gt;
Operation:&lt;br /&gt;
&lt;br /&gt;
# No special instructions. It operates stand alone once installed.&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////  &lt;br /&gt;
 &lt;br /&gt;
 // Set the age in the description field of the prim to reflect the SL account age&lt;br /&gt;
 // of individuals to boot.&lt;br /&gt;
 &lt;br /&gt;
 integer AGE_LIMIT;&lt;br /&gt;
 &lt;br /&gt;
 list agent_list;&lt;br /&gt;
 &lt;br /&gt;
 integer date2days(string data)&lt;br /&gt;
 {&lt;br /&gt;
     integer result;&lt;br /&gt;
 &lt;br /&gt;
     list parse_date = llParseString2List(data, [&amp;quot;-&amp;quot;], []);&lt;br /&gt;
     &lt;br /&gt;
     integer year = llList2Integer(parse_date, 0);&lt;br /&gt;
             &lt;br /&gt;
     result = (year - 2000) * 365; // Bias Number to year 2000 (SL Avatars Born After Date)  &lt;br /&gt;
 &lt;br /&gt;
     list days = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ];&lt;br /&gt;
     &lt;br /&gt;
     result += llList2Integer(days, (llList2Integer(parse_date, 1) - 1));&lt;br /&gt;
    &lt;br /&gt;
     if (year/4 == llRound(year/4)) result += 1;&lt;br /&gt;
             &lt;br /&gt;
     result += llList2Integer(parse_date, 2);&lt;br /&gt;
 &lt;br /&gt;
     return result;&lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     on_rez(integer param)&lt;br /&gt;
     {&lt;br /&gt;
         llResetScript();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         AGE_LIMIT = (integer)llGetObjectDesc();&lt;br /&gt;
        &lt;br /&gt;
         if (AGE_LIMIT &amp;lt; 2)&lt;br /&gt;
         {&lt;br /&gt;
             AGE_LIMIT = 2;&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         llSetObjectName(&amp;quot;Unknown Underage Boot - &amp;quot; + llGetRegionName());&lt;br /&gt;
        &lt;br /&gt;
         llVolumeDetect(TRUE);&lt;br /&gt;
        &lt;br /&gt;
         if (llOverMyLand(llGetKey()) == FALSE)&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Requires proper group deeds to work on this land.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, 100.0, PI, 1.0);&lt;br /&gt;
        &lt;br /&gt;
         llOwnerSay(&amp;quot;Set Avatar age in the description, currently it is set for &amp;quot; +&lt;br /&gt;
             (string)AGE_LIMIT + &amp;quot; days.&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llOverMyLand(llGetKey()) == FALSE)&lt;br /&gt;
         {&lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         integer i;&lt;br /&gt;
        &lt;br /&gt;
         for (i = 0; i &amp;lt; num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             key agent = llDetectedKey(i);&lt;br /&gt;
            &lt;br /&gt;
             if (llSameGroup(agent) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 if (llListFindList(agent_list, [ agent ]) &amp;lt; 0)&lt;br /&gt;
                 {&lt;br /&gt;
                     if (llGetListLength(agent_list) == 0)&lt;br /&gt;
                     {&lt;br /&gt;
                         agent_list += agent;&lt;br /&gt;
                        &lt;br /&gt;
                         llRequestAgentData(llList2Key(agent_list, 0), DATA_BORN);&lt;br /&gt;
                     }&lt;br /&gt;
                     else&lt;br /&gt;
                     {&lt;br /&gt;
                         agent_list += agent;&lt;br /&gt;
                     }                        &lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     dataserver(key queryid, string data)&lt;br /&gt;
     {&lt;br /&gt;
         AGE_LIMIT = (integer)llGetObjectDesc();&lt;br /&gt;
        &lt;br /&gt;
         integer today = date2days(llGetDate());&lt;br /&gt;
                &lt;br /&gt;
         integer age = date2days(data);&lt;br /&gt;
        &lt;br /&gt;
         key agent = llList2Key(agent_list, 0);&lt;br /&gt;
        &lt;br /&gt;
         string name = llKey2Name(agent);&lt;br /&gt;
        &lt;br /&gt;
         if (AGE_LIMIT &amp;lt; 2)&lt;br /&gt;
         {&lt;br /&gt;
             AGE_LIMIT = 2;&lt;br /&gt;
            &lt;br /&gt;
             llSetObjectDesc((string)AGE_LIMIT + &amp;quot; : SET AGE LIMIT HERE&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
        &lt;br /&gt;
         if (name != &amp;quot;&amp;quot;)&lt;br /&gt;
         {&lt;br /&gt;
             if ((today - age) &amp;lt; AGE_LIMIT)&lt;br /&gt;
             {&lt;br /&gt;
                 if (llOverMyLand(agent))&lt;br /&gt;
                 {&lt;br /&gt;
                     llSay(0, name + &amp;quot;, you are too young to be here.&amp;quot;);&lt;br /&gt;
            &lt;br /&gt;
                     llTeleportAgentHome(agent);&lt;br /&gt;
                 }&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llTeleportAgentHome(agent);&lt;br /&gt;
         }&lt;br /&gt;
            &lt;br /&gt;
         agent_list = llDeleteSubList(agent_list, 0, 0);&lt;br /&gt;
        &lt;br /&gt;
         if (llGetListLength(agent_list) != 0)&lt;br /&gt;
         {&lt;br /&gt;
             llRequestAgentData(llList2Key(agent_list, 0), DATA_BORN);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=38603</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=38603"/>
		<updated>2007-10-30T19:49:42Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: /* LSL Script Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}{{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;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[0-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;
||[[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;
||[[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;
||[[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;
|-&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;
||[[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 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;
||[[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;
||[[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;
||[[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;
||[[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 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;
||[[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;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&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;
||[[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;
||[[High Altitude Rezzer]]&lt;br /&gt;
||[[User:Jesse Barnett|Jesse Barnett]]&lt;br /&gt;
||Vehicle that goes straight up and then rezzes objects up to 4,096 meters.&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;
||[[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;
||[[Inventory Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&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;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is way slower than [[llListSort]]. Don&#039;t use this in a script!&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;
||[[SL_NTPoHTTP_v1.1_client|NTP over HTTP client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&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.&lt;br /&gt;
|-&lt;br /&gt;
||[[Object to Data v1.1|Object to Data]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Turns an object into text. Allows people to transfer objects through notecards.&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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
&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;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
||[[Secure HTTP Post]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allows you to send Secure requests to your website with a 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;
|| [[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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;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;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31430</id>
		<title>Group Privacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31430"/>
		<updated>2007-09-14T01:38:40Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off.&lt;br /&gt;
&lt;br /&gt;
Place this script into a single prim, and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
&lt;br /&gt;
# Edit script range and timer frequency to suit&lt;br /&gt;
# Deed to match the land group&lt;br /&gt;
&lt;br /&gt;
Operation:&lt;br /&gt;
&lt;br /&gt;
# Insure that group members have the group tag active&lt;br /&gt;
# Touch to activate; touch to deactivate&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 ////////////////////////////////////////////////////////////////////////////////////// &lt;br /&gt;
 &lt;br /&gt;
 float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)&lt;br /&gt;
 float RANGE = 40.0;             // Scan Range (40m)&lt;br /&gt;
 float RATE = 2.0;               // Scan Rate (2 Sec)&lt;br /&gt;
 &lt;br /&gt;
 integer status;&lt;br /&gt;
 &lt;br /&gt;
 off()&lt;br /&gt;
 {&lt;br /&gt;
     status = FALSE;&lt;br /&gt;
         &lt;br /&gt;
     llSensorRemove();&lt;br /&gt;
         &lt;br /&gt;
     llSetColor(&amp;lt;1,1,1&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Deactivated.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOff\n\nTouch to Turn On&amp;quot;, &amp;lt;1,1,1&amp;gt;, 1.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 on()&lt;br /&gt;
 {&lt;br /&gt;
     status = TRUE;&lt;br /&gt;
     &lt;br /&gt;
     llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, AGENT, RANGE, PI, RATE);&lt;br /&gt;
     &lt;br /&gt;
     llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Activated while group memebers are present.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOn\n\nTouch to Turn Off&amp;quot;, &amp;lt;1,1,1&amp;gt;, 0.5);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 boot(key id)&lt;br /&gt;
 {&lt;br /&gt;
     if (llOverMyLand(id) == TRUE)&lt;br /&gt;
     {&lt;br /&gt;
         llUnSit(id);&lt;br /&gt;
                 &lt;br /&gt;
         llEjectFromLand(id);&lt;br /&gt;
                 &lt;br /&gt;
         llAddToLandBanList(id, duration); // Hour of Ban&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         off();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     touch_start(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llGetLandOwnerAt(llGetPos()) != llGetOwner())&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Deed device to match land group.&amp;quot;);&lt;br /&gt;
             &lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (llSameGroup(llDetectedKey(0)) == TRUE)&lt;br /&gt;
         {&lt;br /&gt;
             if (status == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 on();&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 off();&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Authorized to group members only.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
             &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         integer i;&lt;br /&gt;
         &lt;br /&gt;
         integer group_members = 0;&lt;br /&gt;
         &lt;br /&gt;
         for (i = 0; i != num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             if (llSameGroup(llDetectedKey(i)) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 boot(llDetectedKey(i));&lt;br /&gt;
             }&lt;br /&gt;
             &lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 llRemoveFromLandBanList(llDetectedKey(i));&lt;br /&gt;
                 &lt;br /&gt;
                 group_members++;&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (group_members == 0)&lt;br /&gt;
         {&lt;br /&gt;
             off();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     no_sensor()&lt;br /&gt;
     {&lt;br /&gt;
        off();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31429</id>
		<title>Group Privacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31429"/>
		<updated>2007-09-14T01:34:34Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off.&lt;br /&gt;
&lt;br /&gt;
Place this script into a single prim, and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
&lt;br /&gt;
1. Deed to Match Land Group&lt;br /&gt;
2. Wear the Group Tag to Operate&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 ////////////////////////////////////////////////////////////////////////////////////// &lt;br /&gt;
 &lt;br /&gt;
 float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)&lt;br /&gt;
 float RANGE = 40.0;             // Scan Range (40m)&lt;br /&gt;
 float RATE = 2.0;               // Scan Rate (2 Sec)&lt;br /&gt;
 &lt;br /&gt;
 integer status;&lt;br /&gt;
 &lt;br /&gt;
 off()&lt;br /&gt;
 {&lt;br /&gt;
     status = FALSE;&lt;br /&gt;
         &lt;br /&gt;
     llSensorRemove();&lt;br /&gt;
         &lt;br /&gt;
     llSetColor(&amp;lt;1,1,1&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Deactivated.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOff\n\nTouch to Turn On&amp;quot;, &amp;lt;1,1,1&amp;gt;, 1.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 on()&lt;br /&gt;
 {&lt;br /&gt;
     status = TRUE;&lt;br /&gt;
     &lt;br /&gt;
     llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, AGENT, RANGE, PI, RATE);&lt;br /&gt;
     &lt;br /&gt;
     llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Activated while group memebers are present.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOn\n\nTouch to Turn Off&amp;quot;, &amp;lt;1,1,1&amp;gt;, 0.5);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 boot(key id)&lt;br /&gt;
 {&lt;br /&gt;
     if (llOverMyLand(id) == TRUE)&lt;br /&gt;
     {&lt;br /&gt;
         llUnSit(id);&lt;br /&gt;
                 &lt;br /&gt;
         llEjectFromLand(id);&lt;br /&gt;
                 &lt;br /&gt;
         llAddToLandBanList(id, duration); // Hour of Ban&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         off();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     touch_start(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llGetLandOwnerAt(llGetPos()) != llGetOwner())&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Deed device to match land group.&amp;quot;);&lt;br /&gt;
             &lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (llSameGroup(llDetectedKey(0)) == TRUE)&lt;br /&gt;
         {&lt;br /&gt;
             if (status == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 on();&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 off();&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Authorized to group members only.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
             &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         integer i;&lt;br /&gt;
         &lt;br /&gt;
         integer group_members = 0;&lt;br /&gt;
         &lt;br /&gt;
         for (i = 0; i != num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             if (llSameGroup(llDetectedKey(i)) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 boot(llDetectedKey(i));&lt;br /&gt;
             }&lt;br /&gt;
             &lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 llRemoveFromLandBanList(llDetectedKey(i));&lt;br /&gt;
                 &lt;br /&gt;
                 group_members++;&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (group_members == 0)&lt;br /&gt;
         {&lt;br /&gt;
             off();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     no_sensor()&lt;br /&gt;
     {&lt;br /&gt;
        off();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31428</id>
		<title>Group Privacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31428"/>
		<updated>2007-09-14T01:29:58Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off.&lt;br /&gt;
&lt;br /&gt;
Place this script into a single prim, and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 ////////////////////////////////////////////////////////////////////////////////////// &lt;br /&gt;
 &lt;br /&gt;
 float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)&lt;br /&gt;
 float RANGE = 40.0;             // Scan Range (40m)&lt;br /&gt;
 float RATE = 2.0;               // Scan Rate (2 Sec)&lt;br /&gt;
 &lt;br /&gt;
 integer status;&lt;br /&gt;
 &lt;br /&gt;
 off()&lt;br /&gt;
 {&lt;br /&gt;
     status = FALSE;&lt;br /&gt;
         &lt;br /&gt;
     llSensorRemove();&lt;br /&gt;
         &lt;br /&gt;
     llSetColor(&amp;lt;1,1,1&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Deactivated.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOff\n\nTouch to Turn On&amp;quot;, &amp;lt;1,1,1&amp;gt;, 1.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 on()&lt;br /&gt;
 {&lt;br /&gt;
     status = TRUE;&lt;br /&gt;
     &lt;br /&gt;
     llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, AGENT, RANGE, PI, RATE);&lt;br /&gt;
     &lt;br /&gt;
     llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Activated while group memebers are present.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOn\n\nTouch to Turn Off&amp;quot;, &amp;lt;1,1,1&amp;gt;, 0.5);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 boot(key id)&lt;br /&gt;
 {&lt;br /&gt;
     if (llOverMyLand(id) == TRUE)&lt;br /&gt;
     {&lt;br /&gt;
         llUnSit(id);&lt;br /&gt;
                 &lt;br /&gt;
         llEjectFromLand(id);&lt;br /&gt;
                 &lt;br /&gt;
         llAddToLandBanList(id, duration); // Hour of Ban&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         off();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     touch_start(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llGetLandOwnerAt(llGetPos()) != llGetOwner())&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Deed device to match land group.&amp;quot;);&lt;br /&gt;
             &lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (llSameGroup(llDetectedKey(0)) == TRUE)&lt;br /&gt;
         {&lt;br /&gt;
             if (status == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 on();&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 off();&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Authorized to group members only.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
             &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         integer i;&lt;br /&gt;
         &lt;br /&gt;
         integer group_members = 0;&lt;br /&gt;
         &lt;br /&gt;
         for (i = 0; i != num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             if (llSameGroup(llDetectedKey(i)) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 boot(llDetectedKey(i));&lt;br /&gt;
             }&lt;br /&gt;
             &lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 llRemoveFromLandBanList(llDetectedKey(i));&lt;br /&gt;
                 &lt;br /&gt;
                 group_members++;&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (group_members == 0)&lt;br /&gt;
         {&lt;br /&gt;
             off();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     no_sensor()&lt;br /&gt;
     {&lt;br /&gt;
        off();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31427</id>
		<title>Group Privacy</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Group_Privacy&amp;diff=31427"/>
		<updated>2007-09-14T01:28:34Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: New page: Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When av...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off.&lt;br /&gt;
&lt;br /&gt;
Place this script into a single prim, and decorate to taste.&lt;br /&gt;
&lt;br /&gt;
 //////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
 //&lt;br /&gt;
 //    Timer Module&lt;br /&gt;
 //    Version 1.0 Release&lt;br /&gt;
 //    Copyright (C) 2007, Chance Unknown&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is free software; you can redistribute it and/or&lt;br /&gt;
 //    modify it under the terms of the GNU Lesser General Public License&lt;br /&gt;
 //    as published by the Free Software Foundation; either&lt;br /&gt;
 //    version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 //    &lt;br /&gt;
 //    This library is distributed in the hope that it will be useful,&lt;br /&gt;
 //    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 //    GNU Lesser General Public License for more details.&lt;br /&gt;
 //    &lt;br /&gt;
 //    You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 //    along with this library; if not, write to the Free Software&lt;br /&gt;
 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 //&lt;br /&gt;
 ////////////////////////////////////////////////////////////////////////////////////// &lt;br /&gt;
 &lt;br /&gt;
 float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)&lt;br /&gt;
 float RANGE = 40.0;             // Scan Range (40m)&lt;br /&gt;
 float RATE = 2.0;               // Scan Rate (2 Sec)&lt;br /&gt;
 &lt;br /&gt;
 integer status;&lt;br /&gt;
 &lt;br /&gt;
 off()&lt;br /&gt;
 {&lt;br /&gt;
     status = FALSE;&lt;br /&gt;
         &lt;br /&gt;
     llSensorRemove();&lt;br /&gt;
         &lt;br /&gt;
     llSetColor(&amp;lt;1,1,1&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Deactivated.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOff\n\nTouch to Turn On&amp;quot;, &amp;lt;1,1,1&amp;gt;, 1.0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 on()&lt;br /&gt;
 {&lt;br /&gt;
     status = TRUE;&lt;br /&gt;
     &lt;br /&gt;
     llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, AGENT, RANGE, PI, RATE);&lt;br /&gt;
     &lt;br /&gt;
     llSetColor(&amp;lt;1,0,0&amp;gt;, ALL_SIDES);&lt;br /&gt;
     &lt;br /&gt;
     llSay(0, &amp;quot;Activated while group memebers are present.&amp;quot;);&lt;br /&gt;
     &lt;br /&gt;
     llSetText(&amp;quot;Group Privacy\nOn\n\nTouch to Turn Off&amp;quot;, &amp;lt;1,1,1&amp;gt;, 0.5);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 boot(key id)&lt;br /&gt;
 {&lt;br /&gt;
     if (llOverMyLand(id) == TRUE)&lt;br /&gt;
     {&lt;br /&gt;
         llUnSit(id);&lt;br /&gt;
                 &lt;br /&gt;
         llEjectFromLand(id);&lt;br /&gt;
                 &lt;br /&gt;
         llAddToLandBanList(id, duration); // Hour of Ban&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 default&lt;br /&gt;
 {&lt;br /&gt;
     state_entry()&lt;br /&gt;
     {&lt;br /&gt;
         off();&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     touch_start(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         if (llGetLandOwnerAt(llGetPos()) != llGetOwner())&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Deed device to match land group.&amp;quot;);&lt;br /&gt;
             &lt;br /&gt;
             return;&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (llSameGroup(llDetectedKey(0)) == TRUE)&lt;br /&gt;
         {&lt;br /&gt;
             if (status == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 on();&lt;br /&gt;
             }&lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 off();&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
             llSay(0, &amp;quot;Authorized to group members only.&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
             &lt;br /&gt;
     sensor(integer num_detected)&lt;br /&gt;
     {&lt;br /&gt;
         integer i;&lt;br /&gt;
         &lt;br /&gt;
         integer group_members = 0;&lt;br /&gt;
         &lt;br /&gt;
         for (i = 0; i != num_detected; i++)&lt;br /&gt;
         {&lt;br /&gt;
             if (llSameGroup(llDetectedKey(i)) == FALSE)&lt;br /&gt;
             {&lt;br /&gt;
                 boot(llDetectedKey(i));&lt;br /&gt;
             }&lt;br /&gt;
             &lt;br /&gt;
             else&lt;br /&gt;
             {&lt;br /&gt;
                 llRemoveFromLandBanList(llDetectedKey(i));&lt;br /&gt;
                 &lt;br /&gt;
                 group_members++;&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
         &lt;br /&gt;
         if (group_members == 0)&lt;br /&gt;
         {&lt;br /&gt;
             off();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     no_sensor()&lt;br /&gt;
     {&lt;br /&gt;
        off();&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=31423</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=31423"/>
		<updated>2007-09-14T01:19:20Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: /* LSL Script Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}{{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;
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 post simple scripts to the library. Simple scripts should be posted to the [[:Category:LSL Examples| Examples list]].&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;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&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;
||[[Builders Buddy|Builder&#039;s Buddy]]&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;
||[[Bullet (script)|Bullet]]&lt;br /&gt;
||[[User:Davida Gallant|Davida Gallant]]&lt;br /&gt;
||Self-explanatory. Works well with [[Self-Destruction|self-destruction]] script.&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;
||[[User:Ppaatt Lynagh|Ppaatt Lynagh]]&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;
||[[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;
||[[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;
|-&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;
||[[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 there attachments. (ToS compliant)&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;
||[[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]]&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;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&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;
||[[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;
||[[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 Menu]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Inventory Based Menu System.&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;
||[[Merge Sort]]&lt;br /&gt;
||[[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
||Implements a Merge Sort in LSL, however this code is slower llListSort(). (Don&#039;t use this in a script)&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;
||[[Nargus Dialog Control 1.5]]&lt;br /&gt;
||[[User:Nargus Asturias|Nargus Asturias]]&lt;br /&gt;
|| A (not-so) simple dialog control script. Call dialog and receive selected value via link_message(), with built-in timer and link_message() notification on time out. Support multi-pages dialog and numerical property dialog. Button text and dialog&#039;s returned value can be difference.&lt;br /&gt;
|-&lt;br /&gt;
||[[SL_NTPoHTTP_v1.1_client|NTP over HTTP v1.1 client]]&lt;br /&gt;
|[[User:SignpostMarv Martin|SignpostMarv Martin]]&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.&lt;br /&gt;
|-&lt;br /&gt;
|| [[Object to Data v1.1]]&lt;br /&gt;
|| [[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| Turns an object into text. Allows people to transfer objects through notecards.&lt;br /&gt;
|-&lt;br /&gt;
||[[Open Source Holodeck]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Open Source Home Rezzing System.&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. + 3 4 = 5. * + 1 2 + 3 4 = 14.&lt;br /&gt;
|-&lt;br /&gt;
||[[Say 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;
||[[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;
||[[Secure HTTP Post]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allow you to send Secure requests to your website with a security mechanism aimed to stop hacking.&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;
|| [[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;
||[[Texture Menu Management]]&lt;br /&gt;
||[[User:Revolution Perenti|Revolution Perenti]]&lt;br /&gt;
||Dialog Menu based Texture Selection.&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;
||[[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;
||[[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]]&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;
||[[XyzzyText|XyzzyText 2.1]]&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. A much more efficient alternative of XyText.&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;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&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;
|| [[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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;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;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Chance_Unknown&amp;diff=22102</id>
		<title>User talk:Chance Unknown</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Chance_Unknown&amp;diff=22102"/>
		<updated>2007-05-30T17:57:43Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Page Contents ==&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlRegionSay&amp;diff=22081</id>
		<title>LlRegionSay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlRegionSay&amp;diff=22081"/>
		<updated>2007-05-30T02:35:28Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: undo single line edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=331&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func_release=1.16.0.?&lt;br /&gt;
|func=llRegionSay&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=Any integer value other than zero.&lt;br /&gt;
|p2_type=string|p2_name=msg|p2_desc=Message to be transmitted.&lt;br /&gt;
|func_desc=Says the string &#039;&#039;&#039;msg&#039;&#039;&#039; on channel number &#039;&#039;&#039;channel&#039;&#039;&#039; that can be heard anywhere in the [[region]] by a script [[listen|listening]] on &#039;&#039;&#039;channel&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=Regardless of where the prim is, the message will not travel over region borders.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|constants={{LSL Constants/Chat|mode=no_public}}&lt;br /&gt;
|caveats=*This function cannot transmit on the {{LSL Const|PUBLIC_CHANNEL|integer|0|public channel}}, this is a design feature and not a bug.&lt;br /&gt;
*Text can only be a maximum of 1024 bytes.&lt;br /&gt;
*A prim can &#039;&#039;&#039;not&#039;&#039;&#039; hear itself, to prevent problems with recursion.&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
default {&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llRegionSay(25,&amp;quot;This is an incredibly useless program.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To avoid making your object spam its neighborhood, use llOwnerSay or llInstantMessage.&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[listen]]|}}&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=If one object &#039;says&#039; something to another object (e.g., a button that, when touched,&lt;br /&gt;
turns on a lamp), it is a good idea to use a very negative channel, e.g.,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    llRegionSay(-5243212,&amp;quot;turn on&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is impossible for an avatar to chat on a negative channel, and extremely unlikely that some&lt;br /&gt;
other object would accidentally say something on such a channel. (Of course, the intended target&lt;br /&gt;
of the message must be set to &#039;listen&#039; on this channel.)&lt;br /&gt;
&lt;br /&gt;
If DEBUG_CHANNEL is used as &#039;&#039;channel&#039;&#039;, the script will say &#039;&#039;msg&#039;&#039; to the Script Warning/Error window. (DEBUG_CHANNEL = 2147483647)&lt;br /&gt;
&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlRegionSay&amp;diff=22061</id>
		<title>LlRegionSay</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlRegionSay&amp;diff=22061"/>
		<updated>2007-05-29T21:51:38Z</updated>

		<summary type="html">&lt;p&gt;Chance Unknown: scripted attachment caveat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=331&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func_release=1.16.0.?&lt;br /&gt;
|func=llRegionSay&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=Any integer value other than zero.&lt;br /&gt;
|p2_type=string|p2_name=msg|p2_desc=Message to be transmitted.&lt;br /&gt;
|func_desc=Says the string &#039;&#039;&#039;msg&#039;&#039;&#039; on channel number &#039;&#039;&#039;channel&#039;&#039;&#039; that can be heard anywhere in the [[region]] by a script [[listen|listening]] on &#039;&#039;&#039;channel&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=Regardless of where the prim is, the message will not travel over region borders.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|constants={{LSL Constants/Chat|mode=no_public}}&lt;br /&gt;
|caveats=*This function cannot transmit on the {{LSL Const|PUBLIC_CHANNEL|integer|0|public channel}}, this is a design feature and not a bug.&lt;br /&gt;
*Text can only be a maximum of 1024 bytes.&lt;br /&gt;
*A prim can &#039;&#039;&#039;not&#039;&#039;&#039; hear itself, to prevent problems with recursion.&lt;br /&gt;
*A scripted attachment does not transmit to the region using this function.&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
default {&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llRegionSay(25,&amp;quot;This is an incredibly useless program.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To avoid making your object spam its neighborhood, use llOwnerSay or llInstantMessage.&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[listen]]|}}&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llInstantMessage]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=If one object &#039;says&#039; something to another object (e.g., a button that, when touched,&lt;br /&gt;
turns on a lamp), it is a good idea to use a very negative channel, e.g.,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    llRegionSay(-5243212,&amp;quot;turn on&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is impossible for an avatar to chat on a negative channel, and extremely unlikely that some&lt;br /&gt;
other object would accidentally say something on such a channel. (Of course, the intended target&lt;br /&gt;
of the message must be set to &#039;listen&#039; on this channel.)&lt;br /&gt;
&lt;br /&gt;
If DEBUG_CHANNEL is used as &#039;&#039;channel&#039;&#039;, the script will say &#039;&#039;msg&#039;&#039; to the Script Warning/Error window. (DEBUG_CHANNEL = 2147483647)&lt;br /&gt;
&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Chance Unknown</name></author>
	</entry>
</feed>