<?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=Slik+Swindlehurst</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=Slik+Swindlehurst"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Slik_Swindlehurst"/>
	<updated>2026-07-28T10:06:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=21717</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=21717"/>
		<updated>2007-05-26T04:30:41Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: /* Script */ semicolon added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description/Information==&lt;br /&gt;
Rezzes (Spawns) up to ten objects upon [[Collision_start|collision]] with a user. Each object can be a maximum of 10 meters away from the rez point on any plane.&lt;br /&gt;
&lt;br /&gt;
To make the rezzings occur on something other than a collision, change collision_start on line 25 to touch_start or another acceptable command.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Make sure to not copy the &amp;lt;pre&amp;gt; tags into Second Life.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Multirezzer}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=System_regisrty&amp;diff=21658</id>
		<title>System regisrty</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=System_regisrty&amp;diff=21658"/>
		<updated>2007-05-25T20:47:29Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: #REDIRECT Registry values&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Registry values]]&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Registry_value&amp;diff=21657</id>
		<title>Registry value</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Registry_value&amp;diff=21657"/>
		<updated>2007-05-25T20:47:03Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: #REDIRECT Registry values&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Registry values]]&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Registry_values&amp;diff=21656</id>
		<title>Registry values</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Registry_values&amp;diff=21656"/>
		<updated>2007-05-25T20:46:36Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following are known registry values that Second Life installs onto a user&#039;s computer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HKEY_CLASSES_ROOT/secondlife&lt;br /&gt;
HKEY_LOCAL_MACHINE/SOFTWARE/Linden Research, Inc.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=21654</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=21654"/>
		<updated>2007-05-25T20:44:32Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: default following distance set at 0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3 m to .1 m.&lt;br /&gt;
&lt;br /&gt;
To set the following distance (distance between follower and followee), change the value denoted by # in &#039;&#039;&#039;llMoveToTarget(pos,#)&#039;&#039;&#039;. This script has it set at 0.0 m.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, 96.0, PI, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.0);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Follower}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Main_Page&amp;diff=21421</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Main_Page&amp;diff=21421"/>
		<updated>2007-05-23T06:17:39Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Main Page/Welcome}}&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;5px&amp;quot;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
{{Main Page/Open Source}}&lt;br /&gt;
{{Main Page/Volunteers}}&lt;br /&gt;
{{Main Page/Market_Data}}&lt;br /&gt;
{{Main Page/About this wiki}}&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
{{Main Page/News}}&lt;br /&gt;
{{Main Page/LSL}}&lt;br /&gt;
{{Main Page/QA}}&lt;br /&gt;
{{Main Page/Web Services}}&lt;br /&gt;
{{Main Page/Featured}}&lt;br /&gt;
{{Main Page/Tip of the week}}&lt;br /&gt;
[[Category:Articles with vital information missing]]&lt;br /&gt;
|}&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Template:Vital-info&amp;diff=21420</id>
		<title>Template:Vital-info</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Template:Vital-info&amp;diff=21420"/>
		<updated>2007-05-23T06:14:01Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: Category:Articles with vital information missing to second heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;messagebox&amp;quot; style=&amp;quot;min-width: 20em ; max-width: 46em ; background: #fdd; padding: 0.2em;&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| style=&amp;quot;border-width: 0px&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;This article or section is missing vital information&amp;lt;noinclude&amp;gt;.&amp;lt;/noinclude&amp;gt; You can help the SL Wiki by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} editing it].&#039;&#039;&#039;&amp;lt;includeonly&amp;gt;{{ #if: {{{1|}}}|&amp;lt;p style=&amp;quot;text-align:center;&amp;quot;&amp;gt;{{{1}}}|}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:Articles with vital information missing]]&lt;br /&gt;
[[Category:Articles in need of expansion]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- notes on this article go here, nowhere else --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding more information ==&lt;br /&gt;
&lt;br /&gt;
{{vital-info|This article doesn&#039;t contain info on sub-topic X}}&lt;br /&gt;
[[Category:Articles with vital information missing]]&lt;br /&gt;
[[Category:Templates in need of documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Linux&amp;diff=21419</id>
		<title>Build the Viewer on Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Linux&amp;diff=21419"/>
		<updated>2007-05-23T06:11:56Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: sp. error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
The following are instructions for building the Second Life viewer on linux. This process has only been used on [http://www.debian.org/ debian] and debian based systems like [http://www.ubuntu.com/ ubuntu]. For other platforms, see [[Get source and compile]].&lt;br /&gt;
&lt;br /&gt;
== Installing the required dependencies ==&lt;br /&gt;
&lt;br /&gt;
The Second Life Viewer has a number of compile/link dependencies on external libraries which need to be put in place first - to help you, the source download page contains a link to a &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; package which you unpack over the source tree to fill most of the dependencies (and thus avoid most of the fiddly work described on this page).  The Second Life Viewer is not a trivial build, and experience with building large software packages will help you greatly - but don&#039;t be daunted, it should be simple once the dependencies are in the right place the first time.&lt;br /&gt;
&lt;br /&gt;
Paths and package names given here are based on Ubuntu 6.06 and may vary according to your Linux distribution.&lt;br /&gt;
&lt;br /&gt;
*If you download the art and libs to the top folder, where the &amp;lt;i&amp;gt;linden&amp;lt;/i&amp;gt; folder is after getting the veiwer source code, the following commands should unpack everything to the right spot. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 unzip slviewer-artwork-&amp;lt;version&amp;gt;.zip&lt;br /&gt;
 tar xvfz slviewer-linux-libs-&amp;lt;version&amp;gt;.tar.gz&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
{{vital-info|How to compile [[Source_archive#2007-Feb-20|FL-1.13.3.58185]] and [[Source_archive#2007-Feb-24|FL-1.13.3.58390]] &#039;&#039;&#039;with&#039;&#039;&#039; llmozlib (see [[Talk:Compiling_the_viewer_%28Linux%29#llmozlib|discussion]])}}&lt;br /&gt;
&lt;br /&gt;
* You will need the &amp;lt;b&amp;gt;SCons&amp;lt;/b&amp;gt; build tool [package: scons]&lt;br /&gt;
* You should use the &amp;lt;b&amp;gt;GCC 3.4&amp;lt;/b&amp;gt; C/C++ compiler [package: g++-3.4]; other GCC versions are not well-tested; GCC 4.x will NOT currently build the viewer without some code adjustments.&lt;br /&gt;
&lt;br /&gt;
* fetch and unpack &amp;lt;b&amp;gt;FMOD 3.75&amp;lt;/b&amp;gt; &amp;lt;http://www.fmod.org/&amp;gt;&lt;br /&gt;
** FMOD provides audio output, but (although &#039;free&#039; in some senses) is not itself open-source.  &amp;lt;b&amp;gt;If&amp;lt;/b&amp;gt; you wish to avoid FMOD, thus disabling audio, you may make these changes:&lt;br /&gt;
*** Remove the reference to &#039;&amp;lt;b&amp;gt;fmod-3.75&amp;lt;/b&amp;gt;&#039; in indra/SConstruct&lt;br /&gt;
*** Replace &#039;&amp;lt;b&amp;gt;-DLL_SDL=1&amp;lt;/b&amp;gt;&#039; with &#039;&amp;lt;b&amp;gt;-DLL_SDL=1 -DLL_FMOD=0&amp;lt;/b&amp;gt;&#039; in indra/SConstruct&lt;br /&gt;
*** Comment-out the libfmod line in indra/newview/viewer_manifest.py&lt;br /&gt;
&lt;br /&gt;
**If you want to use FMOD:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 wget http://www.fmod.org/files/fmodapi375linux.tar.gz&lt;br /&gt;
 tar -xzvf fmodapi375linux.tar.gz&lt;br /&gt;
 cd fmodapi375linux/&lt;br /&gt;
 cp api/inc/* ../linden/libraries/i686-linux/include/&lt;br /&gt;
 cp api/libfmod-3.75.so ../linden/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You will need the &amp;lt;b&amp;gt;Curl&amp;lt;/b&amp;gt; library [package: libcurl-dev] - at least version 7.15.4 is recommended, 7.16.x is ideal.&lt;br /&gt;
** If you are compiling your own version of &amp;lt;b&amp;gt;Curl&amp;lt;/b&amp;gt;, then you should consider configuring it to use the &amp;lt;b&amp;gt;c-ares&amp;lt;/b&amp;gt; library so that DNS lookups will be asynchronous.&lt;br /&gt;
&lt;br /&gt;
* You will need some development headers for OpenGL and X11: gl.h, glext.h, glu.h, Xlib.h, and Xutil.h [packages: mesa-common-dev, libglu1-mesa-dev, libx11-dev]&lt;br /&gt;
&lt;br /&gt;
* You will need &amp;lt;b&amp;gt;GTK 2.x development headers&amp;lt;/b&amp;gt; [libgtk2.0-dev]&lt;br /&gt;
&lt;br /&gt;
* You will need &amp;lt;b&amp;gt;yacc&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;lex&amp;lt;/b&amp;gt; [suggest packages: bison, flex]&lt;br /&gt;
&lt;br /&gt;
* You may &amp;lt;b&amp;gt;either&amp;lt;/b&amp;gt; use our easy &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle of pre-built libraries and headers unpacked into the Second Life Viewer source tree, &amp;lt;b&amp;gt;or&amp;lt;/b&amp;gt; (for example if you are porting to a new architecture or wish to make a package tailored to your Linux distribution&#039;s own libraries) you will have to install the following additional dependencies:&lt;br /&gt;
** &amp;lt;b&amp;gt;boost&amp;lt;/b&amp;gt; [libboost-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;boost-regex&amp;lt;/b&amp;gt; [libboost-regex-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;apr-1&amp;lt;/b&amp;gt; [libapr1.0-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;aprutil-1&amp;lt;/b&amp;gt; [libaprutil1.0-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;xmlrpc-epi 0.51&amp;lt;/b&amp;gt; &amp;lt;http://xmlrpc-epi.sourceforge.net/&amp;gt;&lt;br /&gt;
*** note: not xmlrpc-c (xmlrpc-c has a library and headers with the same name but is not compatible)&lt;br /&gt;
*** Apply patches from the instructions in [[patch xmlrpc-epi]].&lt;br /&gt;
** &amp;lt;b&amp;gt;jpeglib&amp;lt;/b&amp;gt; [libjpeg62-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;SDL&amp;lt;/b&amp;gt; [libsdl1.2-dev]&lt;br /&gt;
** &amp;lt;b&amp;gt;Vorbis&amp;lt;/b&amp;gt; [libvorbis-dev]&lt;br /&gt;
** build &amp;lt;b&amp;gt;ELFIO&amp;lt;/b&amp;gt; &amp;lt;http://sourceforge.net/projects/elfio/&amp;gt;&lt;br /&gt;
*** This wants to build a static library by default.  Afterwards, to create a dynamic libelfio.so: &amp;lt;code&amp;gt;cd ELFIO &amp;amp;&amp;amp; g++-3.4 -shared *.o -o libelfio.so&amp;lt;/code&amp;gt;&lt;br /&gt;
** build &amp;lt;b&amp;gt;OpenJPEG&amp;lt;/b&amp;gt; &amp;lt;http://www.openjpeg.org/&amp;gt;&lt;br /&gt;
*** note: OpenJPEG 1.1.1 or greater is required which has the macro OPJ_PATH_LEN, if the header has MAX_PATH, then upgrade or it will crash with a divide by zero error as the structures would be two different sizes.&lt;br /&gt;
*** 02-26-2007, another set of patches is required to Second Life to make it usable, that is fix a crash, make it look good, and speed it up.  See https://jira.secondlife.com:443/browse/VWR-123&lt;br /&gt;
** &amp;lt;b&amp;gt;expat&amp;lt;/b&amp;gt; [libexpat1-dev]&lt;br /&gt;
&lt;br /&gt;
=== Copy headers and libraries into the source tree ===&lt;br /&gt;
&lt;br /&gt;
Here is a guide to the sequence of shell commands needed to copy the required headers and libraries into the Second Life Viewer source tree for building.  Actual paths to system headers may vary according to Linux distribution.&lt;br /&gt;
* ${SLSRC} refers to the top-level directory of the Second Life Viewer source tree.&lt;br /&gt;
* ${FMOD} refers to the top-level directory into which you unpacked FMOD 3.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp ${FMOD}/api/inc/* ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp ${FMOD}/api/libfmod-3.75.so ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
You only need to copy the following if you&#039;re not using the handy &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; package:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp -a /usr/include/atk-1.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/include/gtk-2.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/lib/gtk-2.0/include/* ${SLSRC}/libraries/i686-linux/include/gtk-2.0/&lt;br /&gt;
 cp -a /usr/include/glib-2.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
 cp -a /usr/lib/glib-2.0/include/* ${SLSRC}/libraries/i686-linux/include/glib-2.0/&lt;br /&gt;
 cp -a /usr/include/pango-1.0 ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
&lt;br /&gt;
if your GTK is fairly recent and thus needs Cairo:&lt;br /&gt;
 cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fix Shell Scripts ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This has been fixed in [http://blog.secondlife.com/2007/05/04/preview-of-second-life-116-on-the-beta-test-grid-sculpties/ 1.16.0]. Looks it was fixed in 1.15.0.2 too&#039;&#039;--[[User:Signore Iredell|Signore Iredell]] 14:56, 6 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
Some systems don&#039;t use bash for /bin/sh.  Ubuntu is one example.  If this is the case on your system, you must do the following, since these scripts are actually bash scripts, but call /bin/sh.&lt;br /&gt;
&lt;br /&gt;
Edit the first line of these scripts, changing &#039;&#039;#!/bin/sh&#039;&#039; to &#039;&#039;#!/bin/bash&#039;&#039;&lt;br /&gt;
* linden/indra/newview/linux_tools/launch_url.sh&lt;br /&gt;
* linden/indra/newview/linux_tools/wrapper.sh&lt;br /&gt;
* linden/libraries/include/boost/pool/detail/pool_construct_simple.sh&lt;br /&gt;
* linden/libraries/include/boost/pool/detail/pool_construct.sh&lt;br /&gt;
* linden/libraries/i686-linux/include/apr-1/arch/unix/apr_arch_threadproc.h&lt;br /&gt;
** &#039;&#039;(it&#039;s at line 47 - 1.15.0.2 release)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Disable llMozLib ===&lt;br /&gt;
&lt;br /&gt;
Add MOZLIB=no to your Scons build command when compiling the source.&lt;br /&gt;
&lt;br /&gt;
=== Libs ===&lt;br /&gt;
&lt;br /&gt;
If you are using our easy &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle then you can skip the rest of this section, &amp;lt;b&amp;gt;otherwise&amp;lt;/b&amp;gt; you will also need to perform the following:&lt;br /&gt;
* ${OPENJPEG} refers to the top-level directory of your completed OpenJPEG build.&lt;br /&gt;
* ${ELFIO} refers to the top-level directory of your completed ELFIO build.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp -a /usr/include/apr-1.0/ ${SLSRC}/libraries/i686-linux/include/apr-1&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/expat&lt;br /&gt;
 cp -a /usr/include/expat*.h ${SLSRC}/libraries/i686-linux/include/expat/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/zlib&lt;br /&gt;
 cp -a /usr/include/zlib*.h ${SLSRC}/libraries/i686-linux/include/zlib/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/openjpeg&lt;br /&gt;
 cp ${OPENJPEG}/libopenjpeg/openjpeg.h ${SLSRC}/libraries/i686-linux/include/openjpeg/&lt;br /&gt;
 cp ${OPENJPEG}/libopenjpeg.a ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/ELFIO&lt;br /&gt;
 cp ${ELFIO}/ELFIO/*.h ${SLSRC}/libraries/i686-linux/include/ELFIO/&lt;br /&gt;
 cp ${ELFIO}/ELFIO/libelfio.so ${SLSRC}/libraries/i686-linux/lib_release_client/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/jpeglib&lt;br /&gt;
 cp -a /usr/include/j*.h ${SLSRC}/libraries/i686-linux/include/jpeglib/&lt;br /&gt;
 touch ${SLSRC}/libraries/i686-linux/include/jpeglib/jinclude.h&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/llfreetype2&lt;br /&gt;
 cp -a /usr/include/freetype2/freetype/ ${SLSRC}/libraries/i686-linux/include/llfreetype2/&lt;br /&gt;
 cp -a /usr/include/ft2build.h ${SLSRC}/libraries/i686-linux/include/llfreetype2/freetype/&lt;br /&gt;
&lt;br /&gt;
 mkdir ${SLSRC}/libraries/i686-linux/include/xmlrpc-epi&lt;br /&gt;
 cp -a /usr/include/xmlrpc*.h ${SLSRC}/libraries/i686-linux/include/xmlrpc-epi/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cd indra&lt;br /&gt;
 $ scons DISTCC=no BTARGET=client BUILD=release MOZLIB=no&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Expect a build time of a couple of hours.  The resulting unstripped Second Life Viewer binary is &amp;lt;b&amp;gt;newview/secondlife-i686-bin&amp;lt;/b&amp;gt;. Note that temporary object code is compiled into &amp;lt;b&amp;gt;/tmp/$USER&amp;lt;/b&amp;gt; by default (where $USER is your username) - this can be changed by prefixing the &amp;lt;b&amp;gt;scons&amp;lt;/b&amp;gt; command above with &amp;lt;b&amp;gt;TEMP_BUILD_DIR=&amp;quot;&amp;lt;i&amp;gt;[full directory path]&amp;lt;/i&amp;gt;&amp;quot;&amp;lt;/b&amp;gt;. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ TEMP_BUILD_DIR=&amp;quot;/home/fred/secondlife/temp-build&amp;quot; scons DISTCC=no BTARGET=client BUILD=release&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build a release that has all of the shaders and optimizations enabled and resembles the official shipped Linux alpha client, use BUILD=releasefordownload&lt;br /&gt;
&lt;br /&gt;
Be sure to read the [[Common compilation problems]] page if you have problems - we&#039;ll try to keep the page up to date with known problems and solutions.&lt;br /&gt;
&lt;br /&gt;
== Testing and packaging the client ==&lt;br /&gt;
&lt;br /&gt;
=== Testing the result from inside the tree ===&lt;br /&gt;
&lt;br /&gt;
You may find it simpler and less error-prone to follow the instructions in the &#039;Packaging the client&#039; section below to run the client under the same conditions as an end-user would.  Otherwise:&lt;br /&gt;
&lt;br /&gt;
* Preparing to run &#039;in-tree&#039;&lt;br /&gt;
** &amp;lt;i&amp;gt;ensure that you have indra/newview/app_settings/static_*.db2&amp;lt;/i&amp;gt; - if not, you&#039;ll find it in the &#039;slviewer-artwork&#039; download (a zip file).&lt;br /&gt;
** now, from the indra directory:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cp ../scripts/messages/message_template.msg newview/app_settings/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Running it: The LD_LIBRARY_PATH stuff ensures that the binary looks for its libraries in the right places.  From the indra directory:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ ( cd newview &amp;amp;&amp;amp; LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** For version &#039;&#039;&#039;20070117a&#039;&#039;&#039; the binary name seems to have changed to &#039;&#039;&#039;secondlife-i686-bin-globalsyms&#039;&#039;&#039;, so the command would be (&amp;lt;i&amp;gt;Tofu Linden says - this was an oversight after a build process change, and future releases will generate a &#039;&#039;&#039;secondlife-i686&#039;&#039;&#039; again, whereupon this instruction can be removed. :)&amp;lt;/i&amp;gt;)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ ( cd newview &amp;amp;&amp;amp; LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:${LD_LIBRARY_PATH}:/usr/local/lib  ./secondlife-i686-bin-globalsyms )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Augh!!  The client seems REALLY slow!! ====&lt;br /&gt;
&lt;br /&gt;
By default, the open-source Second Life Viewer uses the open-source OpenJPEG library to decode the (many) JPEG-2000 texture images it receives from the servers.  Unfortunately this isn&#039;t quite of comparable speed to the proprietary third-party library which the Linden Lab viewer builds have traditionally used, for which we are not permitted to redistribute the source.&lt;br /&gt;
&lt;br /&gt;
However, the &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; package includes two pre-built libraries which facilitate the use of this smoother image decoding method: &amp;lt;b&amp;gt;libkdu_v42R.so&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;libllkdu.so&amp;lt;/b&amp;gt;.  These are provided for your testing; again, we are not permitted to grant you the right to re-distribute these libraries to downstream users, but the viewer will still work (albeit slower) without them.&lt;br /&gt;
&lt;br /&gt;
To &amp;lt;b&amp;gt;use these faster image-decoding libraries&amp;lt;/b&amp;gt;, they simply need to be put into the right places relative to the viewer runtime directory - nothing needs to be reconfigured or recompiled.  If you&#039;re running the client from the source tree, the following will make the KDU libraries available:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 cp &amp;quot;$SLSRC/libraries/i686-linux/lib_release_client/libllkdu.so&amp;quot; &amp;quot;$SLSRC/indra/newview/libllkdu.so&amp;quot;&lt;br /&gt;
 mkdir &amp;quot;$SLSRC/indra/lib&amp;quot;&lt;br /&gt;
 cp &amp;quot;$SLSRC/libraries/i686-linux/lib_release_client/libkdu_v42R.so&amp;quot; &amp;quot;$SLSRC/indra/lib/libkdu_v42R.so&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;b&amp;gt;indra/newview/viewer_manifest.py&amp;lt;/b&amp;gt; contains some commented-out entries describing where these libraries belong; if you uncomment the two lines corresponding to libllkdu and libkdu then they will be automatically copied into the right place in the runtime directory when you follow the &#039;Packaging the client&#039; instructions below.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;Unable to initialize communications&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
If the viewer just displays the error message &amp;quot; Unable to initialize communications&amp;quot; and exits, it can&#039;t find message_template.msg. You did remember to copy it over, right?&lt;br /&gt;
&lt;br /&gt;
=== Packaging the client ===&lt;br /&gt;
&lt;br /&gt;
If you substitute &#039;BUILD=release&#039; with &#039;&amp;lt;b&amp;gt;BUILD=releasefordownload&amp;lt;/b&amp;gt;&#039; in the &#039;Compiling&#039; section above, then packaging the resulting code, libraries, data and documentation into a tarball for the end-user will be done automatically as the final stage of the build process; the pristine end-user client distribution has been assembled into the directory &amp;lt;b&amp;gt;indra/newview/SecondLife_i686_1_X_Y_Z/&amp;lt;/b&amp;gt; and has also been tarred into &amp;lt;b&amp;gt;indra/newview/SecondLife_i686_1_X_Y_Z.tar.bz2&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file which controls what (and where) files go into the end-user runtime viewer directory is &amp;lt;b&amp;gt;indra/newview/viewer_manifest.py&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Packaging errors ====&lt;br /&gt;
&lt;br /&gt;
The final packaging step may fail with errors about the manifest if you are not using the &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle; in this case, if you still wish to end up with an end-user viewer package incorporating your own libraries, you can edit the manifest file found at &amp;lt;b&amp;gt;indra/newview/viewer_manifest.py&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automated libraries and headers adjustments, compilation and packaging ====&lt;br /&gt;
&lt;br /&gt;
Here is a bash script that could save you a lot of time... It basically does all what is described above, and more, and entitles you to compile a SL client very easily:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# make-SL v1.00 (c)2007 Henri Beauchamp. Released under GPL license v2:&lt;br /&gt;
# http://www.gnu.org/licenses/gpl.txt&lt;br /&gt;
&lt;br /&gt;
###############################################################################&lt;br /&gt;
######## THIS IS QUICK&#039;N DIRTY ALPHA SOFTWARE. USE AT YOUR OWN RISKS ! ########&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
# This bash script is aimed at easying up the build process of a SL client.&lt;br /&gt;
# It does not cover building it with custom/system openjpeg, elfio or fmodapi&lt;br /&gt;
# (we use the provided libraries).&lt;br /&gt;
# You may enable or disable the use of your system&#039;s library by editing&lt;br /&gt;
# the USE_SYSTEM_* variable (&amp;quot;yes&amp;quot; --&amp;gt; use the system library, &amp;quot;no&amp;quot; --&amp;gt; use&lt;br /&gt;
# LL&#039;s provided ones).&lt;br /&gt;
# The script also takes care of updating properly the viewer_manifest.py script&lt;br /&gt;
# accordingly, so that you (should) end up with a properly packaged client.&lt;br /&gt;
&lt;br /&gt;
# To use this script, simply make it executable (chmod +x make-SL) and&lt;br /&gt;
# put it into /usr/local/bin (or any other directory in your PATH).&lt;br /&gt;
# Then, download the slviewer-src-*.tar.gz, slviewer-linux-libs-*.tar.gz,&lt;br /&gt;
# slviewer-artwork-*.zip and fmodapi*.tar.gz archives, and finally, invoke&lt;br /&gt;
# make-SL as follow:&lt;br /&gt;
#   make-SL path_to_archives  (example: make-SL ~/downloads)&lt;br /&gt;
# or simply:&lt;br /&gt;
#   make-SL&lt;br /&gt;
# when invoking from the directory where the archives are.&lt;br /&gt;
# The sources will be installed into the PATH_TO_SOURCES directory,&lt;br /&gt;
# and the client will be built into the TEMP_BUILD_DIR directory.&lt;br /&gt;
# If you want to retry a compilation after fixing something manually and&lt;br /&gt;
# don&#039;t want make-SL to start all over again, overwriting everything,&lt;br /&gt;
# you may invoke it with the --retry option, like this:&lt;br /&gt;
#   make-SL --retry&lt;br /&gt;
# This script has been tested by the author, on a (very customized)&lt;br /&gt;
# Mandrake 10.2 distro.&lt;br /&gt;
&lt;br /&gt;
# Where the sources of the client will be held (defaults to &amp;quot;linden&amp;quot;):&lt;br /&gt;
PATH_TO_SOURCES=&amp;quot;/usr/src/SL&amp;quot;&lt;br /&gt;
# Where to build the client:&lt;br /&gt;
export TEMP_BUILD_DIR=&amp;quot;$HOME/secondlife&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE_SYSTEM_GTK=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_SDL=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_SSL=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_DB4=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_OGG=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_APR=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_ZLIB=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_UUID=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_CURL=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_EXPAT=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_VORBIS=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_XMLRPC=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_JPEGLIB=&amp;quot;yes&amp;quot;&lt;br /&gt;
USE_SYSTEM_FREETYPE2=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# You may add tune flags here, to optimize the code for your processor.&lt;br /&gt;
# Example, for an Athlon XP:&lt;br /&gt;
# TUNE_FLAGS=&amp;quot;-march=athlon-xp -mtune=athlon-xp&amp;quot;&lt;br /&gt;
TUNE_FLAGS=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Whether to build with the browser login screen or not:&lt;br /&gt;
WITH_MOZILLA=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
function update_manifest() {&lt;br /&gt;
    grep -v $1 $PATH_TO_SOURCES/indra/newview/viewer_manifest.py &amp;gt;$TEMP_BUILD_DIR/viewer_manifest.py&lt;br /&gt;
    mv -f $TEMP_BUILD_DIR/viewer_manifest.py $PATH_TO_SOURCES/indra/newview/viewer_manifest.py&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function compile() {&lt;br /&gt;
    cd $PATH_TO_SOURCES/indra&lt;br /&gt;
    echo &amp;quot;Compiling the client into $TEMP_BUILD_DIR...&amp;quot;&lt;br /&gt;
    scons DISTCC=no BTARGET=client BUILD=releasefordownload MOZLIB=$WITH_MOZILLA&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$TEMP_BUILD_DIR&amp;quot; == &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    export TEMP_BUILD_DIR=/tmp/$USER/SL&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Check to see if we simply want to retry a compilation:&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;--retry&amp;quot; ] ; then&lt;br /&gt;
    compile&lt;br /&gt;
    exit $?&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Make sure we don&#039;t unpack over an old source tree:&lt;br /&gt;
if [ -d linden ] ; then&lt;br /&gt;
    rm -rf linden/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -d $PATH_TO_SOURCES ] &amp;amp;&amp;amp; [ &amp;quot;$PATH_TO_SOURCES&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    rm -rf $PATH_TO_SOURCES/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Use the parameter (if any) as the path to the archives:&lt;br /&gt;
&lt;br /&gt;
PATH_TO_ARCHIVES=&amp;quot;.&amp;quot;&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; != &amp;quot;&amp;quot; ]; then&lt;br /&gt;
    if [ -d $1 ] ; then&lt;br /&gt;
        PATH_TO_ARCHIVES=$1&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s first unpack everything:&lt;br /&gt;
if ! [ -f $PATH_TO_ARCHIVES/slviewer-src-*.tar.gz ] ; then&lt;br /&gt;
    echo &amp;quot;You need slviewer-src !&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
if ! [ -f $PATH_TO_ARCHIVES/slviewer-linux-libs-*.tar.gz ] ; then&lt;br /&gt;
    echo &amp;quot;You need slviewer-linux-libs !&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
if ! [ -f $PATH_TO_ARCHIVES/slviewer-artwork-*.zip ] ; then&lt;br /&gt;
    echo &amp;quot;You need slviewer-artwork !&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
if ! [ -f $PATH_TO_ARCHIVES/fmodapi*.tar.gz ] ; then&lt;br /&gt;
    echo &amp;quot;You need fmodapi !&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Extracting the files from the archives...&amp;quot;&lt;br /&gt;
tar xzf $PATH_TO_ARCHIVES/slviewer-src-*.tar.gz&lt;br /&gt;
tar xzf $PATH_TO_ARCHIVES/slviewer-linux-libs-*.tar.gz&lt;br /&gt;
unzip $PATH_TO_ARCHIVES/slviewer-artwork-*.zip &amp;gt;/dev/null&lt;br /&gt;
tar xzf $PATH_TO_ARCHIVES/fmodapi*.tar.gz&lt;br /&gt;
&lt;br /&gt;
# fmodapi:&lt;br /&gt;
echo &amp;quot;Copying fmodapi files...&amp;quot;&lt;br /&gt;
cp -a fmodapi*/api/inc/* linden/libraries/i686-linux/include/&lt;br /&gt;
cp fmodapi*/api/libfmod-*.so linden/libraries/i686-linux/lib_release_client/&lt;br /&gt;
rm -rf fmodapi*/&lt;br /&gt;
&lt;br /&gt;
# Move the sources to where we want to hold them:&lt;br /&gt;
if [ &amp;quot;$PATH_TO_SOURCES&amp;quot; != &amp;quot;linden&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$PATH_TO_SOURCES&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Moving the sources to $PATH_TO_SOURCES...&amp;quot;&lt;br /&gt;
    mv -f linden $PATH_TO_SOURCES&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s own the files:&lt;br /&gt;
chown -R $USER: $PATH_TO_SOURCES/&lt;br /&gt;
&lt;br /&gt;
# Make a clean build:&lt;br /&gt;
if [ -d $TEMP_BUILD_DIR ] ; then&lt;br /&gt;
    rm -rf $TEMP_BUILD_DIR/&lt;br /&gt;
fi&lt;br /&gt;
mkdir -p $TEMP_BUILD_DIR&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system GTK+ if available:&lt;br /&gt;
if [ -d /usr/include/atk-1.0 ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_GTK&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system GTK+...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries/i686-linux/include&lt;br /&gt;
    rm -rf atk-1.0/ gtk-2.0/ glib-2.0/ pango-1.0/&lt;br /&gt;
    rm -f ../lib_release_client/libgtk*&lt;br /&gt;
    cp -a /usr/include/atk-1.0 .&lt;br /&gt;
    cp -a /usr/include/gtk-2.0 .&lt;br /&gt;
    cp -a /usr/lib/gtk-2.0/include/* gtk-2.0/&lt;br /&gt;
    cp -a /usr/include/glib-2.0 .&lt;br /&gt;
    cp -a /usr/lib/glib-2.0/include/* glib-2.0/&lt;br /&gt;
    cp -a /usr/include/pango-1.0 .&lt;br /&gt;
    if [ -d /usr/include/cairo ] ; then&lt;br /&gt;
        cp -a /usr/include/cairo/* .&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system freetype2 if available:&lt;br /&gt;
if [ -f /usr/include/ft2build.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_FREETYPE2&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system freetype2...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/freetype/ i686-linux/include/llfreetype2/*&lt;br /&gt;
    rm -f include/ft2build.h i686-linux/lib_release_client/libfreetype.a&lt;br /&gt;
    cp -a /usr/include/freetype2/freetype/ i686-linux/include/llfreetype2/&lt;br /&gt;
    cp -a /usr/include/ft2build.h i686-linux/include/llfreetype2/freetype/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system zlib if available:&lt;br /&gt;
if [ -f /usr/include/zlib.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_ZLIB&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system zlib...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/zlib/&lt;br /&gt;
    mkdir -p i686-linux/include/zlib&lt;br /&gt;
    cp -a /usr/include/zlib*.h i686-linux/include/zlib/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system jpeglib if available:&lt;br /&gt;
if [ -f /usr/include/jpeglib.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_JPEGLIB&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system jpeglib...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/jpeglib/ i686-linux/lib_release_client/libjpeg.a&lt;br /&gt;
    mkdir -p i686-linux/include/jpeglib&lt;br /&gt;
    cp -a /usr/include/j*.h i686-linux/include/jpeglib/&lt;br /&gt;
    touch i686-linux/include/jpeglib/jinclude.h&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system xmlrpc-epi if available:&lt;br /&gt;
if [ -f /usr/include/xmlrpc.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_XMLRPC&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system xmlrpc-epi...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/xmlrpc-epi/ i686-linux/lib_release_client/libxmlrpc.a&lt;br /&gt;
    mkdir -p i686-linux/include/xmlrpc-epi&lt;br /&gt;
    cp -a /usr/include/xmlrpc*.h i686-linux/include/xmlrpc-epi/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system ogg if available:&lt;br /&gt;
if [ -f /usr/include/ogg/ogg.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_OGG&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system ogg...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/ogg/ i686-linux/lib_release_client/libogg*&lt;br /&gt;
    update_manifest libogg&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system vorbis if available:&lt;br /&gt;
if [ -f /usr/include/vorbis/vorbisenc.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_VORBIS&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system vorbis...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/vorbis/ i686-linux/lib_release_client/libvorbis*&lt;br /&gt;
    update_manifest libvorbis&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system SDL if available:&lt;br /&gt;
if [ -f /usr/include/SDL/SDL.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_SDL&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system SDL...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries/i686-linux&lt;br /&gt;
    rm -rf include/SDL/ lib_release_client/libSDL*&lt;br /&gt;
    update_manifest libSDL&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system openssl if available:&lt;br /&gt;
if [ -f /usr/lib/libssl.so.0.9.7 ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_SSL&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system openssl...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries/i686-linux/lib_release_client&lt;br /&gt;
    rm -f libssl.* libcrypto.*&lt;br /&gt;
    update_manifest libssl&lt;br /&gt;
    update_manifest libcrypto&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system apr if available:&lt;br /&gt;
if [ -f /usr/include/apr*/apr.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_APR&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system apr...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries/i686-linux&lt;br /&gt;
    rm -rf include/apr-1/*&lt;br /&gt;
    rm -f lib_release_client/libapr*&lt;br /&gt;
    cp -a /usr/include/apr*/* include/apr-1/&lt;br /&gt;
    update_manifest libapr&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system expat if available:&lt;br /&gt;
if [ -f /usr/include/expat.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_EXPAT&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system expat...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/expat/&lt;br /&gt;
    rm -f i686-linux/lib_release_client/libexpat*&lt;br /&gt;
    mkdir -p i686-linux/include/expat&lt;br /&gt;
    cp -a /usr/include/expat*.h i686-linux/include/expat/&lt;br /&gt;
    update_manifest libexpat&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system curl if available:&lt;br /&gt;
if [ -f /usr/include/curl/curl.h ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_CURL&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system curl...&amp;quot;&lt;br /&gt;
    cd $PATH_TO_SOURCES/libraries&lt;br /&gt;
    rm -rf include/curl/&lt;br /&gt;
    rm -f i686-linux/lib_release_client/libcurl.*&lt;br /&gt;
    update_manifest libcurl&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system db4 if available:&lt;br /&gt;
if [ -f /usr/lib/libdb-4.2.so ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_DB4&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system db4...&amp;quot;&lt;br /&gt;
    rm -f $PATH_TO_SOURCES/libraries/i686-linux/lib_release_client/libdb*.so&lt;br /&gt;
    update_manifest libdb&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Let&#039;s use the system uuid if available:&lt;br /&gt;
if [ -f /lib/libuuid.so.1 ] &amp;amp;&amp;amp; [ &amp;quot;$USE_SYSTEM_UUID&amp;quot; == &amp;quot;yes&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Using the system libuuid...&amp;quot;&lt;br /&gt;
    rm -f $PATH_TO_SOURCES/libraries/i686-linux/lib_release_client/libuuid.*&lt;br /&gt;
    update_manifest libuuid&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Update the manifest file and enable libkdu packaging. I&#039;m too lazy to use&lt;br /&gt;
# awk or perl, here, but that&#039;s indeed what should be done...&lt;br /&gt;
# The following (very dirty) code may break at some point, depending on what&lt;br /&gt;
# LL will put in comments in the manifest file...&lt;br /&gt;
# First, remove the lines with libstdc++.so.6 and the crash logger:&lt;br /&gt;
update_manifest libstdc&lt;br /&gt;
update_manifest crash_logger&lt;br /&gt;
# Now, any line with a &#039;#&#039; followed with several spaces _should_ be dealing&lt;br /&gt;
# with the libkdu stuff... So, we simply remove the &#039;#&amp;quot;...&lt;br /&gt;
sed -e &amp;quot;s/#   /   /&amp;quot; $PATH_TO_SOURCES/indra/newview/viewer_manifest.py &amp;gt;$TEMP_BUILD_DIR/viewer_manifest.py&lt;br /&gt;
mv -f $TEMP_BUILD_DIR/viewer_manifest.py $PATH_TO_SOURCES/indra/newview/viewer_manifest.py&lt;br /&gt;
&lt;br /&gt;
# Add tune flags, if any:&lt;br /&gt;
if [ &amp;quot;$TUNE_FLAGS&amp;quot; != &amp;quot;&amp;quot; ] ; then&lt;br /&gt;
    sed -e &amp;quot;s/-O2/-O2 $TUNE_FLAGS/&amp;quot; $PATH_TO_SOURCES/indra/SConstruct &amp;gt;$TEMP_BUILD_DIR/SConstruct&lt;br /&gt;
    mv -f $TEMP_BUILD_DIR/SConstruct $PATH_TO_SOURCES/indra/SConstruct&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
compile&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
&lt;br /&gt;
A list of patches is given for [[Compiling the viewer (FreeBSD)]].&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=21417</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=21417"/>
		<updated>2007-05-23T06:07:18Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: To make the rezzings occur on something other than collision, change collision_start on line 25 to touch_start or another acceptable command.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description/Information==&lt;br /&gt;
Rezzes (Spawns) up to ten objects upon [[Collision_start|collision]] with a user. Each object can be a maximum of 10 meters away from the rez point on any plane.&lt;br /&gt;
&lt;br /&gt;
To make the rezzings occur on something other than a collision, change collision_start on line 25 to touch_start or another acceptable command.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Make sure to not copy the &amp;lt;pre&amp;gt; tags into Second Life.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Multirezzer}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Script_Library&amp;diff=21411</id>
		<title>Script Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Script_Library&amp;diff=21411"/>
		<updated>2007-05-23T05:59:31Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: #REDIRECT Category:LSL Library&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Category:LSL Library]]&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20994</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20994"/>
		<updated>2007-05-21T21:22:27Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description/Information==&lt;br /&gt;
Rezzes (Spawns) up to ten objects upon [[start_collision|collision]] with a user. Each object can be a maximum of 10 meters away from the rez point on any plane.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Make sure to not copy the &amp;lt;pre&amp;gt; tags into Second Life.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Multirezzer}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20993</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20993"/>
		<updated>2007-05-21T21:21:10Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &amp;lt;pre&amp;gt; tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SL wiki does not format the &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/nowiki&amp;gt; tag properly; therefore, I recommend you click &amp;quot;Edit&amp;quot; and copy-and-paste this code from the edit box (make sure you don&#039;t copy the nowiki tags).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description/Information==&lt;br /&gt;
Rezzes up to ten objects upon [[start_collision|collision]] with a user.&lt;br /&gt;
&lt;br /&gt;
Rezzed (Spawned) objects can be a maximum of 10 meters away on any plane from the rez point.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Make sure to not copy the &amp;lt;pre&amp;gt; tags into Second Life.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Multirezzer}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20992</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20992"/>
		<updated>2007-05-21T21:19:40Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: {{LSLC|Library|Follower}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3 m to .1 m.&lt;br /&gt;
&lt;br /&gt;
To set the following distance (distance between follower and followee), change the value denoted by # in &#039;&#039;&#039;llMoveToTarget(pos,#)&#039;&#039;&#039;. This script has it set at .1 m.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT, 96.0, PI, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.1);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Follower}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20991</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20991"/>
		<updated>2007-05-21T21:19:06Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: {{LSLC|Library|Multirezzer}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SL wiki does not format the &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/nowiki&amp;gt; tag properly; therefore, I recommend you click &amp;quot;Edit&amp;quot; and copy-and-paste this code from the edit box (make sure you don&#039;t copy the nowiki tags).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description/Information==&lt;br /&gt;
Rezzes up to ten objects upon [[start_collision|collision]] with a user.&lt;br /&gt;
&lt;br /&gt;
Rezzed (Spawned) objects can be a maximum of 10 meters away on any plane from the rez point.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!--The code starts here but does not include this text.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;!--The code ends here but does not include this text.--&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Multirezzer}}&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20959</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20959"/>
		<updated>2007-05-21T00:09:38Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &amp;lt;!--The code starts below here but does not include this text.--&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SL wiki does not format the &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/nowiki&amp;gt; tag properly; therefore, I recommend you click &amp;quot;Edit&amp;quot; and copy-and-paste this code from the edit box (make sure you don&#039;t copy the nowiki tags).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezzed (Spawned) objects can be a maximum of 10 meters away on any plane from the rez point.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Rezzes up to ten objects upon [[start_collision|collision]] with a user.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!--The code starts here but does not include this text.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;!--The code ends here but does not include this text.--&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20958</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20958"/>
		<updated>2007-05-21T00:05:58Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3 m to .1 m.&lt;br /&gt;
&lt;br /&gt;
To set the following distance (distance between follower and followee), change the value denoted by # in &#039;&#039;&#039;llMoveToTarget(pos,#)&#039;&#039;&#039;. This script has it set at .1 m.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,AGENT,200000,7000*PI,.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.1);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The wiki code on this wiki is not working properly. Include the default { and the last } when copying and pasting this script into SL.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20955</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20955"/>
		<updated>2007-05-20T21:35:41Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3m to .1m.&lt;br /&gt;
&lt;br /&gt;
To set the following distance (distance between follower and followee), change the value denoted by # in &#039;&#039;&#039;llMoveToTarget(pos,#)&#039;&#039;&#039;. This script has it set at 10 centimeters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,AGENT,200000,7000*PI,.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.1);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The wiki code on this wiki is not working properly. Include the default { and the last } when copying and pasting this script into SL.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=20954</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=20954"/>
		<updated>2007-05-20T21:33:06Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: /* Rules for posting: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&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;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&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;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script&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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
|| [[Object to Data v1.0]]&lt;br /&gt;
|| [[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| Turns an object into text. Allows people to post their objects to websites.&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;
||[[User:SignpostMarv_Martin/LSL/SLNTPoHTTP_v1.1_client|SLNTPoHTTP 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;
||[[Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&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;
----&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;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=20953</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=20953"/>
		<updated>2007-05-20T21:32:29Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: /* Rules for posting: */ Multirezzer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&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;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&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;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script&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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
|| [[Object to Data v1.0]]&lt;br /&gt;
|| [[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| Turns an object into text. Allows people to post their objects to websites.&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;
||[[User:SignpostMarv_Martin/LSL/SLNTPoHTTP_v1.1_client|SLNTPoHTTP 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;
||[[Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&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;
----&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;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20951</id>
		<title>Multirezzer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Multirezzer&amp;diff=20951"/>
		<updated>2007-05-20T21:29:45Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SL wiki does not format the &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/nowiki&amp;gt; tag properly; therefore, I recommend you click &amp;quot;Edit&amp;quot; and copy-and-paste this code from the edit box (make sure you don&#039;t copy the nowiki tags).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezzed (Spawned) objects can be a maximum of 10 meters away on any plane from the rez point.&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
vector velocity;&lt;br /&gt;
integer shot = FALSE; &lt;br /&gt;
integer fade = FALSE;&lt;br /&gt;
float alpha = 1.0;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_DIE_AT_EDGE, TRUE);&lt;br /&gt;
        llSetBuoyancy(1.0);&lt;br /&gt;
        llCollisionSound(&amp;quot;&amp;quot;, 1.0);          //  Disable collision sounds&lt;br /&gt;
        velocity = llGetVel();&lt;br /&gt;
        float vmag;&lt;br /&gt;
        vmag = llVecMag(velocity);&lt;br /&gt;
        if (vmag &amp;gt; 0.1) shot = TRUE;&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    collision_start(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        if (llDetectedType(0) &amp;amp; AGENT)&lt;br /&gt;
        {&lt;br /&gt;
           // llTriggerSound(&amp;quot;frozen&amp;quot;, 1.0);&lt;br /&gt;
            llRezObject(&amp;quot;&amp;gt;:) invisible&amp;quot;, llDetectedPos(0), ZERO_VECTOR, llGetRot(), 0);&lt;br /&gt;
                {&lt;br /&gt;
           integer i;&lt;br /&gt;
           for ( i=0; i&amp;lt;num; i++ ) {&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-3,3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;3,-3,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
                      &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;-8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;8,0,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,-8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,8,2&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               &lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i );&lt;br /&gt;
               llRezObject( &amp;quot;Object&amp;quot;, llGetPos()+&amp;lt;0,0,-9&amp;gt;, &amp;lt;0,0,0&amp;gt;, &amp;lt;0,0,0,1&amp;gt;, i )&lt;br /&gt;
               integer i;&lt;br /&gt;
           }}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        if (!fade)&lt;br /&gt;
        {&lt;br /&gt;
            if (shot)&lt;br /&gt;
            {&lt;br /&gt;
                llDie();       &lt;br /&gt;
            }&lt;br /&gt;
        }   &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetAlpha(alpha, -1);&lt;br /&gt;
            alpha = alpha * 0.95;  &lt;br /&gt;
            if (alpha &amp;lt; 0.1) &lt;br /&gt;
            {&lt;br /&gt;
                llDie();&lt;br /&gt;
            }     &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=20950</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=20950"/>
		<updated>2007-05-20T21:22:49Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: /* Rules for posting: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&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;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&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;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script&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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
|| [[Object to Data v1.0]]&lt;br /&gt;
|| [[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| Turns an object into text. Allows people to post their objects to websites.&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;
||[[User:SignpostMarv_Martin/LSL/SLNTPoHTTP_v1.1_client|SLNTPoHTTP 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;
||[[Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&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;
----&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;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&amp;diff=20949</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=20949"/>
		<updated>2007-05-20T21:20:58Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: /* Rules for posting: */ Follower script added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&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 { { LSL Header } } (Without the spaces between the braces).&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;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&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;
||[[Hello Avatar]]&lt;br /&gt;
||Linden Lab&lt;br /&gt;
||SL&#039;s default script&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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[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;
||[[Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| [[Follower (script)|Follower]]&lt;br /&gt;
|{{Hl2}}| Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]&lt;br /&gt;
|{{Hl2}}| Makes an object follow the nearest person. Do not use for [[grief|griefing]].&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;
||[[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;
|| [[Object to Data v1.0]]&lt;br /&gt;
|| [[User:Xaviar Czervik|Xaviar Czervik]]&lt;br /&gt;
|| Turns an object into text. Allows people to post their objects to websites.&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;
||[[User:SignpostMarv_Martin/LSL/SLNTPoHTTP_v1.1_client|SLNTPoHTTP 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;
||[[Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&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;
----&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;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20948</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=20948"/>
		<updated>2007-05-20T21:17:43Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2.&lt;br /&gt;
&lt;br /&gt;
To set the distance between the follower and the followee, change the value denoted by # in &#039;&#039;&#039;llMoveToTarget(pos,#)&#039;&#039;&#039;. This script has it set at 10 centimeters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,AGENT,200000,7000*PI,.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.1);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The wiki code on this wiki is not working properly. Include the default { and the last } when copying and pasting this script into SL.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Slik_Swindlehurst&amp;diff=19045</id>
		<title>User:Slik Swindlehurst</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Slik_Swindlehurst&amp;diff=19045"/>
		<updated>2007-04-28T19:33:13Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi. I edit Wikipedia too, and Uncyclopedia. The SL wiki needs to have the same formatting code as them.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Nerve_Monster&amp;diff=19044</id>
		<title>Nerve Monster</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Nerve_Monster&amp;diff=19044"/>
		<updated>2007-04-28T19:31:49Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Nerve monsters&#039;&#039;&#039; are a common type of [[follower|followers]]. They are most frequently encountered in the [[sandbox|sandboxes]], the [[combat|combat zones]], and sometimes Mohrr.&lt;br /&gt;
&lt;br /&gt;
==Variations==&lt;br /&gt;
[[Image:Nerve Monster 2.png|100px|left|A nerve monster of standard size an coloration compared to a large man.]]Most often, nerve monsters are red in color, but occasionally are green, purple, white, or transparent white (usually called &amp;quot;ghost nerve monsters&amp;quot;. Their size varies but, including tentacles, they usually have the width of a broad-shouldered man. The nerve monster imaged at left has standard coloration and size.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[Batman Follower]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Follower]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Follower Escaper]]&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Nerve_Monster_2.png&amp;diff=19043</id>
		<title>File:Nerve Monster 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Nerve_Monster_2.png&amp;diff=19043"/>
		<updated>2007-04-28T19:29:29Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: A nerve monster of standard size and coloration.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[nerve monster]] of standard size and coloration.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Nerve_Monster_Slik.png&amp;diff=19042</id>
		<title>File:Nerve Monster Slik.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Nerve_Monster_Slik.png&amp;diff=19042"/>
		<updated>2007-04-28T19:26:26Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: A nerve monster of standard size an coloration compared to a large man.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A nerve monster of standard size an coloration compared to a large man.&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Nerve_Monster&amp;diff=19041</id>
		<title>Nerve Monster</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Nerve_Monster&amp;diff=19041"/>
		<updated>2007-04-28T19:18:35Z</updated>

		<summary type="html">&lt;p&gt;Slik Swindlehurst: &amp;#039;&amp;#039;&amp;#039;Nerve monsters&amp;#039;&amp;#039;&amp;#039; are a common type of followers. They are most frequently encountered in the sandboxes, the combat zones, and sometimes Mohrr.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Nerve monsters&#039;&#039;&#039; are a common type of [[follower|followers]]. They are most frequently encountered in the [[sandbox|sandboxes]], the [[combat|combat zones]], and sometimes Mohrr.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[Batman Follower]]&lt;br /&gt;
[[Follower]]&lt;br /&gt;
[[Follower Escaper]]&lt;/div&gt;</summary>
		<author><name>Slik Swindlehurst</name></author>
	</entry>
</feed>