<?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=Spoof+Kelberry</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=Spoof+Kelberry"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Spoof_Kelberry"/>
	<updated>2026-07-30T00:03:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetUsedMemory&amp;diff=1172772</id>
		<title>LlGetUsedMemory</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetUsedMemory&amp;diff=1172772"/>
		<updated>2012-09-20T19:58:58Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: llSetMemoryLimit wasn&amp;#039;t added.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=???|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetUsedMemory&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|func_desc&lt;br /&gt;
|Return_text=of the number of bytes of memory currently in use by the script.&lt;br /&gt;
|func_footer&lt;br /&gt;
|spec=&lt;br /&gt;
This function&#039;s behavior is dependent upon the VM the script is using. [[#Mono|Mono]] is the new VM, [[#LSO|LSO]] is the old VM. The big difference between between Mono and LSO is that Mono scripts run faster and can utilize four times more memory.&lt;br /&gt;
&lt;br /&gt;
===Mono===&lt;br /&gt;
&lt;br /&gt;
In Mono the value returned is the amount of memory currently in use by the script.&lt;br /&gt;
&lt;br /&gt;
===LSO===&lt;br /&gt;
&lt;br /&gt;
LSO scripts always use 16KiB of memory.&lt;br /&gt;
&lt;br /&gt;
|caveats=&lt;br /&gt;
*Scripts compiled to LSO always report 16KB memory used.&lt;br /&gt;
*This can be called at any time and does &#039;&#039;&#039;not&#039;&#039;&#039; require [[llScriptProfiler]]&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
Calling llGetUsedMemory can look like this:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer used_memory = llGetUsedMemory();&lt;br /&gt;
llOwnerSay((string)used_memory + &amp;quot; bytes of memory currently used.&amp;quot;);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetFreeMemory]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetMemoryLimit]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llScriptProfiler]]|}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|lso&lt;br /&gt;
|cat1=Script&lt;br /&gt;
|cat2=Memory&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168992</id>
		<title>LlTargetOmega</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168992"/>
		<updated>2012-06-13T08:36:55Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Oops, forgot a period.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function&lt;br /&gt;
|inject-2={{Issues/SVC-4897}}&lt;br /&gt;
|func_id=133&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llTargetOmega&lt;br /&gt;
|p1_type=vector|p1_name=axis|p1_desc=arbitrary axis to rotate the object around&lt;br /&gt;
|p2_type=float|p2_name=spinrate|p2_desc=rate of rotation in radians per second&lt;br /&gt;
|p3_type=float|p3_name=gain|p3_desc=also modulates the final spinrate and disables the rotation behavior if zero&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Rotates the object/prim around &#039;&#039;&#039;axis&#039;&#039;&#039; at &#039;&#039;&#039;spinrate&#039;&#039;&#039; * [[llVecMag]](&#039;&#039;&#039;axis&#039;&#039;&#039;) in radians per second with strength &#039;&#039;&#039;gain&#039;&#039;&#039;.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;//rotates the x axis once per second,&lt;br /&gt;
//  rotates the y axis 3 times per second, &lt;br /&gt;
//  rotates the z axis once every two seconds.&lt;br /&gt;
//  combined the rate is about 3.20156 revolutions per second&lt;br /&gt;
&lt;br /&gt;
llTargetOmega(&amp;lt;1.0,3.0,0.5&amp;gt;,TWO_PI,1.0);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a sphere&#039;s local X axis .... Good for making a globe that rotates around a tilted axis&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(&amp;lt;1.0,0.0,0.0&amp;gt;*llGetRot(),0.1,0.01);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a cylinder&#039;s local or global Z axis&lt;br /&gt;
 // .... Good for making a propeller that rotates regardless of initial orientation.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(llRot2Up(llGetLocalRot()), PI, 1.0);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|spec=&lt;br /&gt;
===Physics===&lt;br /&gt;
*If the object is not physical or the script is attached to a child prim, then the effect is entirely client side. The rotation experienced by the user &#039;&#039;&#039;cannot&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
*If the object is physical and the script is attached to the root prim, then the physical representation is updated regularly. The rotation experienced by the user &#039;&#039;&#039;can&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
===Link Sets===&lt;br /&gt;
*If the script is attached to the root prim, the entire object rotates around the [[Viewer coordinate frames#Region|region]] &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
**If the object is attached then it rotates around the attachment &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
*If the script is attached to a child prim, the prim rotates around the [[Viewer coordinate frames#Local|local]] &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
**A child prim can rotate around its own &#039;&#039;&#039;axis&#039;&#039;&#039; while the entire object rotates around another &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
|caveats=*If the object is not physical then the rotation is only a client side effect and it will collide as non-moving geometry.&lt;br /&gt;
*If the function does not appear to be working, make sure that that Advanced &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 1.x) or Develop &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 2.x) is enabled.&lt;br /&gt;
|constants&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llRot2Fwd]]|Gets the orientation of the {{HoverText|local x-axis|front-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Left]]|Gets the orientation of the {{HoverText|local y-axis|left-direction of prim}} relative to {{HoverLink|Viewer coordinate frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Up]]|Gets the orientation of the {{HoverText|local z-axis|up-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_tests={{LSL DefineRow||[[llTargetOmega test]]|}}&lt;br /&gt;
|notes=* Use [[llVecNorm]] on &#039;&#039;&#039;axis&#039;&#039;&#039; so that &#039;&#039;&#039;spinrate&#039;&#039;&#039; actually represents the rate of rotation.&lt;br /&gt;
* Set the gain to zero to disable and remove the rotation behavior, eg &amp;lt;code&amp;gt;llTargetOmega([[ZERO_VECTOR]], 0, 0)&amp;lt;/code&amp;gt;;&lt;br /&gt;
** A spinrate of 0 with a nonzero gain causes the object to try to stop all spin, rather than simply clearing a previous llTargetOmega() call.  &lt;br /&gt;
* If there are other forces applied to a prim together with llTargetOmega(), (like using llSetForce to make the object float), use &amp;lt;code&amp;gt;llTargetOmega(-[[llGetOmega]](), 0., 1.)&amp;lt;/code&amp;gt; to cancel spin. Note that the gain must be non-zero, but not necessarily 1.&lt;br /&gt;
&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Effects&lt;br /&gt;
|cat3=Rotation&lt;br /&gt;
|cat4=Prim&lt;br /&gt;
|cat5=Stop&lt;br /&gt;
|cat6&lt;br /&gt;
|cat7&lt;br /&gt;
|cat8&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168991</id>
		<title>LlTargetOmega</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168991"/>
		<updated>2012-06-13T08:35:56Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Added a few periods where some were missing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function&lt;br /&gt;
|inject-2={{Issues/SVC-4897}}&lt;br /&gt;
|func_id=133&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llTargetOmega&lt;br /&gt;
|p1_type=vector|p1_name=axis|p1_desc=arbitrary axis to rotate the object around&lt;br /&gt;
|p2_type=float|p2_name=spinrate|p2_desc=rate of rotation in radians per second&lt;br /&gt;
|p3_type=float|p3_name=gain|p3_desc=also modulates the final spinrate and disables the rotation behavior if zero&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Rotates the object/prim around &#039;&#039;&#039;axis&#039;&#039;&#039; at &#039;&#039;&#039;spinrate&#039;&#039;&#039; * [[llVecMag]](&#039;&#039;&#039;axis&#039;&#039;&#039;) in radians per second with strength &#039;&#039;&#039;gain&#039;&#039;&#039;.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;//rotates the x axis once per second,&lt;br /&gt;
//  rotates the y axis 3 times per second, &lt;br /&gt;
//  rotates the z axis once every two seconds.&lt;br /&gt;
//  combined the rate is about 3.20156 revolutions per second&lt;br /&gt;
&lt;br /&gt;
llTargetOmega(&amp;lt;1.0,3.0,0.5&amp;gt;,TWO_PI,1.0);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a sphere&#039;s local X axis .... Good for making a globe that rotates around a tilted axis&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(&amp;lt;1.0,0.0,0.0&amp;gt;*llGetRot(),0.1,0.01);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a cylinder&#039;s local or global Z axis&lt;br /&gt;
 // .... Good for making a propeller that rotates regardless of initial orientation.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(llRot2Up(llGetLocalRot()), PI, 1.0);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|spec=&lt;br /&gt;
===Physics===&lt;br /&gt;
*If the object is not physical or the script is attached to a child prim, then the effect is entirely client side. The rotation experienced by the user &#039;&#039;&#039;cannot&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
*If the object is physical and the script is attached to the root prim, then the physical representation is updated regularly. The rotation experienced by the user &#039;&#039;&#039;can&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
===Link Sets===&lt;br /&gt;
*If the script is attached to the root prim, the entire object rotates around the [[Viewer coordinate frames#Region|region]] &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
**If the object is attached then it rotates around the attachment &#039;&#039;&#039;axis&#039;&#039;&#039;&lt;br /&gt;
*If the script is attached to a child prim, the prim rotates around the [[Viewer coordinate frames#Local|local]] &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
**A child prim can rotate around its own &#039;&#039;&#039;axis&#039;&#039;&#039; while the entire object rotates around another &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
|caveats=*If the object is not physical then the rotation is only a client side effect and it will collide as non-moving geometry.&lt;br /&gt;
*If the function does not appear to be working, make sure that that Advanced &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 1.x) or Develop &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 2.x) is enabled.&lt;br /&gt;
|constants&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llRot2Fwd]]|Gets the orientation of the {{HoverText|local x-axis|front-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Left]]|Gets the orientation of the {{HoverText|local y-axis|left-direction of prim}} relative to {{HoverLink|Viewer coordinate frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Up]]|Gets the orientation of the {{HoverText|local z-axis|up-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_tests={{LSL DefineRow||[[llTargetOmega test]]|}}&lt;br /&gt;
|notes=* Use [[llVecNorm]] on &#039;&#039;&#039;axis&#039;&#039;&#039; so that &#039;&#039;&#039;spinrate&#039;&#039;&#039; actually represents the rate of rotation.&lt;br /&gt;
* Set the gain to zero to disable and remove the rotation behavior, eg &amp;lt;code&amp;gt;llTargetOmega([[ZERO_VECTOR]], 0, 0)&amp;lt;/code&amp;gt;;&lt;br /&gt;
** A spinrate of 0 with a nonzero gain causes the object to try to stop all spin, rather than simply clearing a previous llTargetOmega() call.  &lt;br /&gt;
* If there are other forces applied to a prim together with llTargetOmega(), (like using llSetForce to make the object float), use &amp;lt;code&amp;gt;llTargetOmega(-[[llGetOmega]](), 0., 1.)&amp;lt;/code&amp;gt; to cancel spin. Note that the gain must be non-zero, but not necessarily 1.&lt;br /&gt;
&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Effects&lt;br /&gt;
|cat3=Rotation&lt;br /&gt;
|cat4=Prim&lt;br /&gt;
|cat5=Stop&lt;br /&gt;
|cat6&lt;br /&gt;
|cat7&lt;br /&gt;
|cat8&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168990</id>
		<title>LlTargetOmega</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlTargetOmega&amp;diff=1168990"/>
		<updated>2012-06-13T08:35:20Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Fixed a punctuation error.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function&lt;br /&gt;
|inject-2={{Issues/SVC-4897}}&lt;br /&gt;
|func_id=133&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llTargetOmega&lt;br /&gt;
|p1_type=vector|p1_name=axis|p1_desc=arbitrary axis to rotate the object around&lt;br /&gt;
|p2_type=float|p2_name=spinrate|p2_desc=rate of rotation in radians per second&lt;br /&gt;
|p3_type=float|p3_name=gain|p3_desc=also modulates the final spinrate and disables the rotation behavior if zero&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Rotates the object/prim around &#039;&#039;&#039;axis&#039;&#039;&#039; at &#039;&#039;&#039;spinrate&#039;&#039;&#039; * [[llVecMag]](&#039;&#039;&#039;axis&#039;&#039;&#039;) in radians per second with strength &#039;&#039;&#039;gain&#039;&#039;&#039;.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;//rotates the x axis once per second,&lt;br /&gt;
//  rotates the y axis 3 times per second, &lt;br /&gt;
//  rotates the z axis once every two seconds.&lt;br /&gt;
//  combined the rate is about 3.20156 revolutions per second&lt;br /&gt;
&lt;br /&gt;
llTargetOmega(&amp;lt;1.0,3.0,0.5&amp;gt;,TWO_PI,1.0);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a sphere&#039;s local X axis .... Good for making a globe that rotates around a tilted axis&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(&amp;lt;1.0,0.0,0.0&amp;gt;*llGetRot(),0.1,0.01);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt; //Rotates very slowly around a cylinder&#039;s local or global Z axis&lt;br /&gt;
 // .... Good for making a propeller that rotates regardless of initial orientation.&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
       llTargetOmega(llRot2Up(llGetLocalRot()), PI, 1.0);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|spec=&lt;br /&gt;
===Physics===&lt;br /&gt;
*If the object is not physical or the script is attached to a child prim, then the effect is entirely client side. The rotation experienced by the user &#039;&#039;&#039;cannot&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
*If the object is physical and the script is attached to the root prim, then the physical representation is updated regularly. The rotation experienced by the user &#039;&#039;&#039;can&#039;&#039;&#039; be detected or queried by script.&lt;br /&gt;
===Link Sets===&lt;br /&gt;
*If the script is attached to the root prim, the entire object rotates around the [[Viewer coordinate frames#Region|region]] &#039;&#039;&#039;axis&#039;&#039;&#039;&lt;br /&gt;
**If the object is attached then it rotates around the attachment &#039;&#039;&#039;axis&#039;&#039;&#039;&lt;br /&gt;
*If the script is attached to a child prim, the prim rotates around the [[Viewer coordinate frames#Local|local]] &#039;&#039;&#039;axis&#039;&#039;&#039;&lt;br /&gt;
**A child prim can rotate around its own &#039;&#039;&#039;axis&#039;&#039;&#039; while the entire object rotates around another &#039;&#039;&#039;axis&#039;&#039;&#039;.&lt;br /&gt;
|caveats=*If the object is not physical then the rotation is only a client side effect and it will collide as non-moving geometry.&lt;br /&gt;
*If the function does not appear to be working, make sure that that Advanced &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 1.x) or Develop &amp;gt; Network &amp;gt; Velocity Interpolate Objects (viewer 2.x) is enabled.&lt;br /&gt;
|constants&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llRot2Fwd]]|Gets the orientation of the {{HoverText|local x-axis|front-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Left]]|Gets the orientation of the {{HoverText|local y-axis|left-direction of prim}} relative to {{HoverLink|Viewer coordinate frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
{{LSL DefineRow||[[llRot2Up]]|Gets the orientation of the {{HoverText|local z-axis|up-direction of prim}} relative to {{HoverLink|Viewer_coordinate_frames#Global|global coordinate system|the earth}}}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_tests={{LSL DefineRow||[[llTargetOmega test]]|}}&lt;br /&gt;
|notes=* Use [[llVecNorm]] on &#039;&#039;&#039;axis&#039;&#039;&#039; so that &#039;&#039;&#039;spinrate&#039;&#039;&#039; actually represents the rate of rotation.&lt;br /&gt;
* Set the gain to zero to disable and remove the rotation behavior, eg &amp;lt;code&amp;gt;llTargetOmega([[ZERO_VECTOR]], 0, 0)&amp;lt;/code&amp;gt;;&lt;br /&gt;
** A spinrate of 0 with a nonzero gain causes the object to try to stop all spin, rather than simply clearing a previous llTargetOmega() call.  &lt;br /&gt;
* If there are other forces applied to a prim together with llTargetOmega(), (like using llSetForce to make the object float), use &amp;lt;code&amp;gt;llTargetOmega(-[[llGetOmega]](), 0., 1.)&amp;lt;/code&amp;gt; to cancel spin. Note that the gain must be non-zero, but not necessarily 1.&lt;br /&gt;
&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Effects&lt;br /&gt;
|cat3=Rotation&lt;br /&gt;
|cat4=Prim&lt;br /&gt;
|cat5=Stop&lt;br /&gt;
|cat6&lt;br /&gt;
|cat7&lt;br /&gt;
|cat8&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Downloads&amp;diff=1158093</id>
		<title>Downloads</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Downloads&amp;diff=1158093"/>
		<updated>2011-11-18T19:40:16Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: /* Other Third Party Viewers */ Ajaxlife is now inactive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Viewer=*}}{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
= Linden Lab Viewers =&lt;br /&gt;
&lt;br /&gt;
The following viewers are available on the official &#039;&#039;&#039;[https://secondlife.com/support/downloads/index.php Downloads]&#039;&#039;&#039; page:&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;Second Life Viewer&#039;&#039;&#039; (a.k.a. the official Viewer, regular Viewer etc.)&lt;br /&gt;
; &#039;&#039;&#039;Second Life Beta Viewer&#039;&#039;&#039;&lt;br /&gt;
: Available approximately weekly, possibly slightly less stable than the Second Life Viewer, but with the  features and fixes that will be in the next Second Life Viewer.&lt;br /&gt;
&lt;br /&gt;
== Development Releases ==&lt;br /&gt;
&lt;br /&gt;
These viewers are released from time to time by viewer development teams within Linden Lab; they contain features and fixes that are not yet even in the Beta version:&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;[[Linden Lab Official:Alternate Viewers#Second Life Project Viewers|Project Viewers]]&#039;&#039;&#039;&lt;br /&gt;
: Provide an early look at new features under development before those are ready to get into the main development stream.&lt;br /&gt;
; &#039;&#039;&#039;[[Downloading test builds|Development Viewer]]&#039;&#039;&#039;&lt;br /&gt;
: Features and fixes that are still warm from the creative fires of development.&lt;br /&gt;
&lt;br /&gt;
== Old Releases ==&lt;br /&gt;
The [[Release Notes]] pages for many past versions contain links to the corresponding downloads.&lt;br /&gt;
{{KBwarning|Past Viewer versions might have &#039;&#039;&#039;known security issues&#039;&#039;&#039;, can be partially or fully &#039;&#039;&#039;incompatible to current server versions&#039;&#039;&#039; and obviously will be &#039;&#039;&#039;lacking newer features&#039;&#039;&#039;. Use them at your own risk.}}&lt;br /&gt;
&lt;br /&gt;
{{anchor|non-linden}} &amp;lt;!-- target for [[Alternate viewers]] redirect --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Third Party Directory Viewers =&lt;br /&gt;
&lt;br /&gt;
{{:Third Party Viewer Directory}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Other Third Party Viewers =&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|The following viewers have either not applied for or have been denied listings in the Third Party Viewer Directory.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Whether or not a viewer developer chooses to self-certify by applying for listing in the directory, all viewers connecting to Second Life must comply with the [https://secondlife.com/corporate/tpv.php Policy on Third-Party Viewers]; listing in the directory is not a requirement.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note to authors: If you make a viewer available make sure to include platform, version numbers and dates.&#039;&#039;&lt;br /&gt;
{{Anchor|Viewers}}&lt;br /&gt;
{|class=&amp;quot;wikitable sortable collapsible&amp;quot; {{prettytable}}&lt;br /&gt;
|+ &#039;&#039;click the boxed arrows to sort on columns&#039;&#039;&lt;br /&gt;
|- {{KBtablehead}}&lt;br /&gt;
! Name !! {{HoverText|Type|Graphic/Text}} !! {{HoverText|First release|Specified in YYYY-MM-DD}} !! {{HoverText|Latest Release|Specified in YYYY-MM-DD}} !! {{HoverText|Status|Active/Inactive/Discontinued}} !! {{HoverText|W|For Windows}} &amp;lt;ref name=&amp;quot;available&amp;quot;&amp;gt;&amp;quot;X&amp;quot;: Available with binary distribution&amp;lt;/ref&amp;gt;!! {{HoverText|M|For Macintosh}} &amp;lt;ref name=&amp;quot;available&amp;quot;/&amp;gt; !! {{HoverText|L|For Linux(Ubuntu, Debian or so)}} &amp;lt;ref name=&amp;quot;available&amp;quot;/&amp;gt; !! {{HoverText|i|For iPhone/iPod Touch}} &amp;lt;ref name=&amp;quot;available&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[#AjaxLife]] || Text || || 2008-09-15 || Inactive ||X||X||X||X&lt;br /&gt;
|-&lt;br /&gt;
| [[#Cool VL Viewer]] || Graphic || 2007-11-16 || 2011-11-12 || Active ||X||X||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#Combat Cubed]] || Graphic || || 2010-06-16 || Active ||X|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[#Exodus Viewer]] || Graphic || 2011-09-28 || 2011-10-31 || Active ||X||X||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hippo OpenSim Viewer]] || Graphic || || 2010-04-24 || Active ||X|| ||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaPay for iPhone and iPod Touch]] || Text || ||  || || || || ||X&lt;br /&gt;
|-&lt;br /&gt;
| [[#Milk Release Client]] || Graphic || || 2010-01-20 || Inactive || ||X||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#omvviewer-light]] || Text || || 2009-08-25 || Active ||X|| ||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#Rainbow Viewer / Cool Viewer]] || Graphic || || 2011-07-10 || Active ||X||X||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#RealXtend Edition]] || Graphic || || 2008-07-28 || Active ||X|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[#SLiteChat]] || Text || || || Active ||X||X||X||&lt;br /&gt;
|-&lt;br /&gt;
| [[#TEKSTUFF Viewers]] || Graphic || || 2010-04-20 || Active ||X|| || ||&lt;br /&gt;
|-&lt;br /&gt;
| [[#Whisper (SlXSLChat)]] || Text || || 2010-05-09 || Active ||X||X||X||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graphical Viewers ==&lt;br /&gt;
&lt;br /&gt;
=== Cool VL Viewer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This viewer was created and is maintained by {{User|Henri Beauchamp}} (This viewer was formerly known as the &amp;quot;Cool SL Viewer&amp;quot; and its first public release was v1.18.4.3, released on 2007-11-16). It combines elements of several of the other viewers, as well as extra features, bug fixes and extra patches, all very carefully tested.&lt;br /&gt;
&lt;br /&gt;
It puts emphasis on high UI coherency from one version to the other (meaning no bad surprise for &amp;quot;old timers&amp;quot;) while staying in sync with Linden Lab&#039;s official viewer features, high stability and reliability, and a high reactivity to new patches and bug fixes provided by the Open Source community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Cool VL Viewer is TPV policy compliant.&#039;&#039;&#039; Please see [http://sldev.free.fr/CoolVLViewerReadme.html its TPV TOS].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Extra Features &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Reverses many of the unpopular interface changes, restoring separate friends and groups floaters and reinstating the packet loss and bandwidth indicators, the old toolbar and buttons layouts, the old/normal commands layout in the pie menus, the &amp;quot;All(old)&amp;quot; search tab, the old style (name-sortable) &amp;quot;Groups&amp;quot; search tab, the &amp;quot;Fly&amp;quot; button in the movement controls floater, and &#039;&#039;&#039;optionally&#039;&#039;&#039; reinstating the old, more visible, status bar icons and/or tracking dots in the mini-map, and the old chat history floater (without chat input line). Also fixes some UI regressions (missing buttons in some floaters, or visited landmarks tracking in inventory for example).&lt;br /&gt;
* Implements the &amp;quot;RestrainedLove&amp;quot; API (formerly known as &amp;quot;RestrainedLife&amp;quot;), based on Marine Kelley&#039;s reference patch (switchable and disabled by default).&lt;br /&gt;
* Allows to configure the date and time formats to match your locale or personal preferences (including with optional seconds for chat and IM timestamps).&lt;br /&gt;
* Allows to wear/remove attachments and clothing items on double-click in inventory.&lt;br /&gt;
* Allows to optionally prevent notifications to show and be logged in the main chat.&lt;br /&gt;
* Allows to disable typing sounds.&lt;br /&gt;
* MUD/MUSH/MUCK/MUX style &amp;quot;poses&amp;quot; (i.e. you can type &amp;quot;:&amp;quot; instead of &amp;quot;/me &amp;quot; to emote), and OOC double parenthesis auto-close (i.e. you can type: &amp;quot;((phone, BRB&amp;quot; and it will show as &amp;quot;((phone, BRB))&amp;quot;).&lt;br /&gt;
* Allows to hide the &amp;quot;Master volume&amp;quot; when not needed in the panel overlay.&lt;br /&gt;
* Allows to build large prims (up to 256m in any or all dimensions) on OpenSim (not on SL, because of server-side limitations).&lt;br /&gt;
* Improved friends list floater (with info about what your friends allow you to see: tehri online status and/or their position on the map).&lt;br /&gt;
* Improved build tools floater (smaller increments in several parameters, extra &amp;quot;slice&amp;quot; parameter for some prims, transparency up to 100%, check box toggle for drag distance limit, adjustable number of decimals in Object tab for the position/size/rotation parameters, &amp;quot;Align&amp;quot; tool). Also allows to set the &amp;quot;invisible&amp;quot; texture from the texture picker (for invisi-prims).&lt;br /&gt;
* Improved texture preview floater (with aspect ratio combo).&lt;br /&gt;
* Improved notecard floater (with Edit menu and Search/replace feature).&lt;br /&gt;
* Improved mini-map with panning, larger zooming range, specific symbol for avatars above 1024m (work around for a limitation of current server and viewer versions), etc...&lt;br /&gt;
* Improved beacons: can filter beacons based on owner (you, others or anyone), can highlight attachments, can dissociate non-object sound sources, can keep beacons &amp;quot;always on&amp;quot; even when the beacons floater is closed.&lt;br /&gt;
* Allows to export and import objects you own and created as XML files (for backup and restore purpose, or to transfer objects from one grid to another).&lt;br /&gt;
* Allows to connect to all existing grids (and not only LL&#039;s) from the login screen.&lt;br /&gt;
* Allows network bandwidth up to 10000Kbps.&lt;br /&gt;
* Allows to save/compile scripts present in the inventory as Mono scripts.&lt;br /&gt;
* Allows to teleport to double-clicked locations on screen.&lt;br /&gt;
* Allows to sit anywhere &amp;quot;on the ground&amp;quot;.&lt;br /&gt;
* Allows to adjust the Z offset (height above the floor) for playing animations.&lt;br /&gt;
* Allows to cache the inventory in the background after login (for faster inventory operations).&lt;br /&gt;
* Allows to preview animations on your avatar prior to uploading them.&lt;br /&gt;
* Implements a group titles floater.&lt;br /&gt;
* Implements a radar floater.&lt;br /&gt;
* Implements a teleports history floater.&lt;br /&gt;
* Implements a &amp;quot;Worn&amp;quot; tab in the inventory floater, and a search/filter by item name, description or creator.&lt;br /&gt;
* Implements &amp;quot;speed rezzing&amp;quot; on login and TPs.&lt;br /&gt;
* Implements an object &amp;quot;area search&amp;quot; floater.&lt;br /&gt;
* Implements the newest LSL functions, highlighting them properly (with tooltips) in the script editor and allowing to compile them. Also implements fully llTextBox() and the AGENT_AUTOPILOT flag with llGetAgentInfo().&lt;br /&gt;
* Allows to ignore (and not only decline) friendship and calling card offers.&lt;br /&gt;
* Allows to change how minimized floaters are stacked (top/bottom, bottom/top, left/right, right/left, fraction of the screen width to use for the stack).&lt;br /&gt;
* Shows avatar keys in profile (in &amp;quot;My notes&amp;quot; tab).&lt;br /&gt;
* Shows the avatar true height in the appearance floater.&lt;br /&gt;
* Renders properly objects worn on the illegal attachment points defined in some hacked third parties viewers.&lt;br /&gt;
* &#039;&#039;&#039;NEW: Provides Mesh rendering support ! (v1.26.2 branch only). NEW: Mesh upload support (Linux release only for now).&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Provides full support for the new Alpha and Tattoo wearables !&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Provides inventory item links support !&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Provides multiple attachments per point support !&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Provides display names support !&#039;&#039;&#039;&lt;br /&gt;
* Provides Avatar Physics support.&lt;br /&gt;
* Provides the new SL web search engine as an option.&lt;br /&gt;
* Provides access to web profiles.&lt;br /&gt;
* Provides support for setting the new parcel flags (avatar visibility, sounds playing restrictions).&lt;br /&gt;
* Allows to filter (Allow/Deny/BlackList/Whitelist) media and audio streams URLs to protect your privacy against IP snatchers.&lt;br /&gt;
* Many bugfixes by Henri Beauchamp, Nicholaz Beresford, Gigs Taggart, McCabe Maxsted and others.&lt;br /&gt;
* More minor features and improvements, to be discovered on the [http://sldev.free.fr/ website]...&lt;br /&gt;
* All switchable extra features easily configurable via a &amp;quot;Cool features&amp;quot; tab in the preferences floater.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://sldev.free.fr/ The Cool VL Viewer homepage]&lt;br /&gt;
* Message board: [http://sldev.free.fr/forum/ Cool VL Viewer forum]&lt;br /&gt;
* Linux viewer: see the [http://sldev.free.fr/index.php?page=download download section on the Cool VL Viewer homepage] for files and installation instructions.&lt;br /&gt;
* Windows viewer: see the [http://sldev.free.fr/index.php?page=download download section on the Cool VL Viewer homepage] for files and installation instructions.&lt;br /&gt;
* MacOS X viewer: see the [http://sldev.free.fr/forum/viewtopic.php?f=3&amp;amp;t=14 MacOS-X Announcement forum] for files and instructions.&lt;br /&gt;
* Source code: see the [http://sldev.free.fr/index.php?page=download download section on the Cool VL Viewer homepage].&lt;br /&gt;
* Screen shots: [http://sldev.free.fr/index.php?page=features Key features and screen shots]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Version (non-mesh, legacy Windlight renderer branch): 1.26.0.27 Date: 12 November 2011&lt;br /&gt;
* Version (mesh-enabled, Shadow renderer branch): 1.26.2.5 Date: 12 November 2011&lt;br /&gt;
* Status: Active.&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Exodus Viewer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Exodus Viewer is a new flavour of the Second Life Viewer 3 series, packed with useful features to enhance the experience of competitive play in Second Life. Roleplayers, fighters and virtual sport stars will benefit from a viewer designed for maximum performance! Exodus Viewer also packs some cool visual effects that are perfect for photographers and machinema film makers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Major Features &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Based on Secondlife 3.1.1, keeping upto date with the latest features and fixes!&lt;br /&gt;
* Various built in HUDs, such as a range finder, and situational awareness HUD.&lt;br /&gt;
* A bunch of friend-foe identification features.&lt;br /&gt;
* Huge enhancements and changes made to the minimap.&lt;br /&gt;
* Allows you to adjust minimap colors, even in mass, by right-clicking a selection on the minimap.&lt;br /&gt;
* Various adjustments on how the minimap appears, to make it more useful for combat.&lt;br /&gt;
* Highly customizable settings related to minimap, default colors and even script windows.&lt;br /&gt;
* The usual, various chat commands seen in various TPV viewers.&lt;br /&gt;
* Options to automatically disable various rendering types such as clouds, water, foot shadows, etc.&lt;br /&gt;
* Request teleport feature, allowing your friends to request a teleport from you!&lt;br /&gt;
* And much more, go check out the feature page [http://exodusviewer.com/features.html here!]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Website: http://exodusviewer.com/&lt;br /&gt;
* Download page: http://exodusviewer.com/downloads.html&lt;br /&gt;
* Source code: http://hg.exodusviewer.com/viewer/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Version: 11.10.31.1&lt;br /&gt;
* Date: October 31, 2011&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Hippo OpenSim Viewer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Hippo OpenSim Viewer is a modified Second Life viewer, targeted at OpenSim users. It allows building up to a height of 10,000 meters, scaling prims up to 256 x 256 x 256 meters and other exciting features. More specific OpenSim features are under development.&lt;br /&gt;
The last developer blog commented: Releasing Hippo OpenSim Viewer Version 0.6.3. This release adds a Windows uninstaller and small changes to comply to the Linden Lab Policy on Third-Party Viewers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Availability &#039;&#039;&#039;&lt;br /&gt;
Is currently available for Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: http://mjm-labs.com/viewer/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Version: 0.6.3&lt;br /&gt;
* Platforms:&lt;br /&gt;
** Binary available for Windows and Linux&lt;br /&gt;
** Source available (unspecified)&lt;br /&gt;
* Date: April 24, 2010&lt;br /&gt;
* Status: Active + updated&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Meerkat ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Goals &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* To create a fully GPL viewer (no proprietary dependencies)&lt;br /&gt;
* To encourage a community of developers that will submit patches for prompt integration&lt;br /&gt;
* To have the freedom to make the sort of changes that Linden Lab has traditionally been unable to integrate (translation patches, refactoring, fixing intentionally crippled features, changes that touch many files)&lt;br /&gt;
* To retain compatibility with Linden Lab&#039;s grid and protocols, present and future&lt;br /&gt;
* To implement a loosely coupled cross-grid functionality that requires no central authentication authority.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Extra Features &#039;&#039;&#039;&lt;br /&gt;
* Log out and back in without quitting&lt;br /&gt;
* Loosely coupled intergrid teleport -- In Process&lt;br /&gt;
* Most of the other changes common to third party viewers&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;del&amp;gt;Website: [http://www.meerkatviewer.org/ Meerkat Viewer]&amp;lt;/del&amp;gt; (note: the Meerkat site is down)&lt;br /&gt;
* Direct download link: [http://code.google.com/p/meerkat-viewer/downloads/list Download versions of this viewer]&lt;br /&gt;
* Source code: svn checkout http://meerkat-viewer.googlecode.com/svn/trunk/ meerkat&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Version : 0.2.x&lt;br /&gt;
* Date : September 6, 2009&lt;br /&gt;
* Status : Discontinued, website offline. Source and binary downloads still available on google code (see above).&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Nicholaz Edition ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are Windows viewer based on SL builds with a focus on stability, usability and performance (see [http://www.blueflash.cc/users/nicholaz/EyeCandy/!!Installation.txt Installation.txt] for homebrew disclaimer). Mac and Linux variants are available through other open sourcers (links on the website).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Extra Features &#039;&#039;&#039;&lt;br /&gt;
* Improved stability.&lt;br /&gt;
* Lower memory footprint.&lt;br /&gt;
* GUI redesigns.&lt;br /&gt;
* Workarounds for common annoyances. (Group IM Filtering, &amp;quot;Release Key&amp;quot; button, etc.)&lt;br /&gt;
* see [http://nicholaz-beresford.blogspot.com/2008/05/version-overview.html this entry] for an overview of different versions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://nicholaz-beresford.blogspot.com/ Nicholaz Beresford on Blogspot]&lt;br /&gt;
* Direct download link: [http://www.blueflash.cc/users/nicholaz Download versions of this viewer]&lt;br /&gt;
* Source code: Look at the [http://www.blueflash.cc/users/nicholaz download site] for the source-xxx-zip files in the respective folders and see the readme.txt inside the archives&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Date: September 7, 2009&lt;br /&gt;
* Status: Discontinued&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Onrez Viewer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Onrez viewer was made by the Onrez company in connection with a Second Life themed story on the high tech forensics based TV show &amp;quot;CSI: New York&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Extra Features &#039;&#039;&#039;&lt;br /&gt;
* A back and history button for teleports&lt;br /&gt;
* In-viewer web browsing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Comment &#039;&#039;&#039;&lt;br /&gt;
The source code for this viewer is closed source.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Status : Discontinued, download no longer available.&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Rainbow Viewer / Cool Viewer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Based on the offical SecondLife sourcecode licensed under GPL2, this speedy Metaverse Client can connect you to a huge variety of exciting Virtual Worlds! It incorporates a lot of improved, new, up- and backported features and fixes that make the fast and rock stable RV/CV the client of choice for many users.&lt;br /&gt;
&lt;br /&gt;
This viewer includes many patches and changes from a lot of different people and sources which I am very grateful to be able to use. Credits are given to everyone I know, in case I missed someone I sincerely apologize.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rainbow / Cool are TPV compliant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to Henri Beauchamp who laid the foundation for this viewer with his Cool SL Viewer. Special thanks to Winter Ventura for the Cool Viewer logo and Jacek Antonelli and Peter Stindberg for the Rainbow Viewer logo :). And to all the others who helped and supported me, especially the people involved and behind Imprudence!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Some incomprehensive list of features &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A major improvement is an up-to-date OpenGL implementation that especially helps users plagued by ATI&#039;s Catalyst drivers but also leads to measurable improvements of overall graphics performance by 30...100% compared to the official viewer; depending on your system. Rainbow Viewer features the current user interface whereas Cool Viewer spots the leaner cleaner and more configurable legacy UI. It&#039;s all about choice :).&lt;br /&gt;
&lt;br /&gt;
* New 1.22.12.0 code baseline&lt;br /&gt;
* CV&#039;s legacy User interface with a clean, simple and userfriendly layout or Rainbow Viewers current official UI, you choose!&lt;br /&gt;
* Improved Graphics rendering, especially for ATI users (measured &amp;gt; 1/3 faster than the official viewer)&lt;br /&gt;
* Alpha and Tattoo Layer support from Second Life Viewer 2.x&lt;br /&gt;
* Updated tested list of Virtual World grids&lt;br /&gt;
* Marine Kelley&#039;s RestrainedLove (off per default)&lt;br /&gt;
* Full Adult Compliance&lt;br /&gt;
* Redesigned and &amp;quot;up-ported&amp;quot; search functionality, probably the best search in any viewer nowadays&lt;br /&gt;
* Enhanced Breast Physics&lt;br /&gt;
* Temporary texture and animation upload&lt;br /&gt;
* Better inventory search for content, description and creator&lt;br /&gt;
* Low lag radar and AV management tools&lt;br /&gt;
* Viewer skinning&lt;br /&gt;
* Object and Shape export/import, limited to creator&lt;br /&gt;
* Bulk permission editing&lt;br /&gt;
* Last owner display to track content theft&lt;br /&gt;
* &amp;quot;Worn&amp;quot; tab in inventory&lt;br /&gt;
* Double click to wear attachments&lt;br /&gt;
* Enhanced building tools&lt;br /&gt;
* Flexible Sculpties&lt;br /&gt;
* Large Prims (currently only for Opensim grids due to SL limitations)&lt;br /&gt;
* Maximized Network Bandwidth&lt;br /&gt;
* Flexible Grid selection at login for SL and all OpenSims&lt;br /&gt;
* Teleport History and speedy doubleclick teleport&lt;br /&gt;
* Avatar UUID in profiles&lt;br /&gt;
* Features tab in Preferences for easy switching of features&lt;br /&gt;
* Optimized latest OpenJPEG 1.3&lt;br /&gt;
* A large number of other goodies and stability fixes that improve your overall experience. Please check the [http://code.google.com/p/coolviewer/wiki/ReleaseNotes Release Notes] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://my.opera.com/boylane Rainbow Viewers for  Virtual Worlds]&lt;br /&gt;
* Direct download link: [http://coolviewer.googlecode.com Binary versions on Google Code]&lt;br /&gt;
* Source code: [http://github.com/boy Sources on Github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Rainbow Viewer 1.22.12 R7&lt;br /&gt;
* Rainbow Viewer Cool Edition (Cool Viewer) 1.22.12 R13&lt;br /&gt;
* Rainbow Viewer Netbook Edition Version 1.2 (speedy pre-Windlight 1.19.0.5)&lt;br /&gt;
* Date: July 10, 2011&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== RealXtend Edition ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The realXtend viewer is a heavily modified version of the Linden Lab&#039;s Second Life client by a partnership of two Finnish companies, ADMINO technologies and LudoCraft.&lt;br /&gt;
&lt;br /&gt;
The successor to the realXtend viewer is Naali (release 0.4.0 on 21st January 2011, download from http://code.google.com/p/realxtend-naali/downloads/list).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Extra Features &#039;&#039;&#039;&lt;br /&gt;
    * Second life compatibility mode for use in SL and Opensim worlds&lt;br /&gt;
    * Teleports between realXtend and Secondlife&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: http://www.realxtend.org/&lt;br /&gt;
* Direct download link: http://www.realxtend.org/downloads.html&lt;br /&gt;
* Source code: http://sourceforge.net/projects/realxtendviewer/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Version: 0.4.2&lt;br /&gt;
* Date: September 24, 2009&lt;br /&gt;
* Status: Discontinued, replaced by Naali.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Combat Cubed ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This client is aimed mostly at the SL Military, but sports quite a few interesting improvements that make it worth taking a look at.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Originally known as Vertical Life.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Major Features &#039;&#039;&#039;&lt;br /&gt;
* Enhanced Look &amp;amp; Feel, for example flexible camera movement&lt;br /&gt;
* Prototype Script API, secure and parallel&lt;br /&gt;
* Slimmed down for FPS combat&lt;br /&gt;
* Identification, Friend versus Foe, mostly under the hood now but soon exposed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Splash: http://bit.ly/cXOcDX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Version: 1.0&lt;br /&gt;
* Date: June 16, 2010&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== TEKSTUFF Viewers ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The TEKSTUFF viewers are created to enable Youtube movies on TEKSTUFF media screens inside Second Life. The TEKSTUFF viewers are slight modifications of already available viewers like the regular SL 1.23.5 viewer and the Emerald 1634 viewer. Apart from that, the Emerald based viewer is fixed so it can be used in Opensim grids as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Web presence: http://www.tekstuff.net/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; TODO &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Make a Linux viewer&lt;br /&gt;
* Make a Mac OS viewer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Major Features &#039;&#039;&#039;&lt;br /&gt;
* All the functionality of the viewer it was based upon (Linden Lab 1.23.5 or Emerald 1634)&lt;br /&gt;
* Will allow you to view Youtube movies on TEKSTUFF media screens&lt;br /&gt;
* The Emerald based viewer can also be used in OpenSim grids (texture loading is fixed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Version: 1.23.5 (Linden Lab &amp;amp; Emerald)&lt;br /&gt;
* Date: April 20, 2010&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Milk Release Client ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This client is aimed at development of all kinds, brought together by Project Neox. Focusing on advanced non-profit development of Second Life and various features which content creators would find suitable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; TODO &#039;&#039;&#039;&lt;br /&gt;
* XStreetSL shopping UI client-kiosk&lt;br /&gt;
* Compile Linux and Mac OS X builds&lt;br /&gt;
* Multiple link object texturing, via name&lt;br /&gt;
* Completion of 3-Dimensional Mini Map&lt;br /&gt;
* Region Statistics notifications before teleports&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Major Features &#039;&#039;&#039;&lt;br /&gt;
* Rendering options for individual avatars&lt;br /&gt;
* Secure Voice-chat usage&lt;br /&gt;
* Extensions in avatar editing&lt;br /&gt;
* Additional Attachment points&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Version: 1.23.5&lt;br /&gt;
* Date: January 20, 2010&lt;br /&gt;
* Status: Discontinued and will not be available for download.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
==Text-Only Viewers==&lt;br /&gt;
&lt;br /&gt;
===AjaxLife ===&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
Browser based Second Life client, created by Katharine Berry. The only web-browser client which made it a lifeline for residents who could not use a full graphical viewer, or who could not download other text-only clients because of limitations such as corporate firewalls.&lt;br /&gt;
&lt;br /&gt;
(No longer working)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: http://ajaxlife.net/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Version: 0.6.1.2&lt;br /&gt;
* Date: May 21, 2010&lt;br /&gt;
* Platform: Platform-Independant&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== omvviewer-light ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; A Text client for the 3D Metaverse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
omvviewer-light is a text client for the 3D Metaverse including SecondLife, written from Scratch (but using the libomv library for protocol handling). It&#039;s GUI is created in Gtk# which is cross-platform making this the only current Text client that is still active and cross platform. Tested on Linux (32/64 bit) and Windows (not 64-bit windows).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Features &#039;&#039;&#039;&lt;br /&gt;
To many to list here in detail please see the project page below but in summary, Full inventory control, Full Chat/IM/Group IM&#039;s. Object search and interaction. Realtime local maps. Parcel displays. Read and Edit NoteCards and Scripts. View profiles. Friends Lists etc .....&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://omvviewer-light.byteme.org.uk/ Project page]&lt;br /&gt;
* Source code: [http://omvviewer-light.byteme.org.uk/source.shtml Source details]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Date: August 25, 2009&lt;br /&gt;
* Version: 0.48.0.6&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== Whisper (SlXSLChat) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; A light-weight yet feature rich text-only Second Life client &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
Whisper is a text-only Second Life client that comes in two parts. The client is written in Java (so it can run on many platforms). The client connects to a &amp;quot;transport&amp;quot;, which is written in C# and uses LibOpenMetaVerse. The idea behind this architecture is that if you don&#039;t like the client, you can write your own and not have to worry about implementing the Second Life protocol yourself. The entire project is open source and published under the GPLv3 licence.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Features &#039;&#039;&#039;&lt;br /&gt;
* Public chat&lt;br /&gt;
* Instant messaging&lt;br /&gt;
* Group chat&lt;br /&gt;
* Search/join/leave groups&lt;br /&gt;
* Search for avatars&lt;br /&gt;
* Image retrieval&lt;br /&gt;
* Profile retrieval&lt;br /&gt;
* Notifications / popups as you would get in Second Life (e.g. group notices, balance changes, inventory offers)&lt;br /&gt;
* Teleportation (home, to area within current sim, to nearby avatar)&lt;br /&gt;
* Nearby avatar tracking on map of Sim&lt;br /&gt;
* Autopilot navigation to nearby avatars&lt;br /&gt;
* URL highlighting&lt;br /&gt;
* Encrypted traffic between client and transport&lt;br /&gt;
* Transport can be run anywhere, the client connects via TCP/IP&lt;br /&gt;
* Client only sends MD5 hashed password to transport&lt;br /&gt;
* On April 20, 2010, SlXSLChat has rebranded to “Whisper”.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://whisper.slx.cc/ Whisper]&lt;br /&gt;
* SourceForce Project Page: [https://sourceforge.net/projects/slxslchat/ Project Page]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Version and timestamp &#039;&#039;&#039;&lt;br /&gt;
* Date: May 9, 2010&lt;br /&gt;
* Version: 1.3&lt;br /&gt;
* Status: Active&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== SLeek ===&lt;br /&gt;
First text only viewer ever, mentioned for completeness, not actively maintained anymore. MetaBolt is based on SLeek.&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SLiteChat ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; A Lite IM/Chat Text-only Client for Second Life &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
SLiteChat (pronounced &amp;quot;slight-chat&amp;quot;) is a completely open source text-only IM/chat client for use with Second Life. Use it to talk to your friends without having to load up all of those heavy graphic goodies. Useful for those at work times.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Features &#039;&#039;&#039;&lt;br /&gt;
* Communicate in-world with people on your friends list. Full adding/removing and search for Residents supported.&lt;br /&gt;
* Group chat is supported (however at this writing you cannot leave a group or search for to join).&lt;br /&gt;
* Local chat and IM history is supported.&lt;br /&gt;
* Can log into other grids.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Website: [http://www.slitechat.org/ Project page]&lt;br /&gt;
* Source code: [http://www.slitechat.org/download/ Source details]&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;br /&gt;
&lt;br /&gt;
=== MetaPay for iPhone and iPod Touch ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Send L$ with a simple to use and free iPhone App. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Description &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MetaPay is a simple and fun way to send Linden Dollars from your iPhone and iPod touch for FREE! Out with friends and want to pay your part of the tab but have no cash? Use MetaPay to send L$ to your friends in Second Life® instead. Or use it to send L$ for any in-world use without firing up the full Second Life® client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Links &#039;&#039;&#039;&lt;br /&gt;
* Free in the AppStore: [http://bit.ly/metapay Open in iTunes]&lt;br /&gt;
&lt;br /&gt;
[[#Other Third Party Viewers|[Back to the list]]]&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Alpha&amp;diff=1158091</id>
		<title>Category:LSL Alpha</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Alpha&amp;diff=1158091"/>
		<updated>2011-11-18T19:28:22Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
The term &amp;quot;Alpha&amp;quot; refers to how translucent an object (or, in this case, a prim) is. In Second Life, the alpha property is set by the scripting functions [[llSetAlpha]], [[llSetLinkAlpha]], [[llSetPrimitiveParams]], and [[llSetLinkPrimitiveParams]]. These functions use a [[float]] value. When set to &#039;&#039;&#039;0.0&#039;&#039;&#039;, the object/prim is fully invisible. When set to &#039;&#039;&#039;1.0&#039;&#039;&#039;, the object is opaque.&lt;br /&gt;
Sometimes, [[Resident]]s refer to a transparent [[texture]] as &#039;&#039;alpha texture&#039;&#039;. This is a texture with an alpha map, not to be confused with this prim property. See [[llSetTexture]] and [[TEXTURE_TRANSPARENT]] instead.&lt;br /&gt;
&lt;br /&gt;
==Build Mode== &lt;br /&gt;
In Build Mode, the alpha is represented by a percentage, ranging from &#039;&#039;&#039;0%&#039;&#039;&#039; to &#039;&#039;&#039;90%&#039;&#039;&#039; (&#039;&#039;&#039;Note&#039;&#039;&#039;: The &#039;&#039;&#039;90%&#039;&#039;&#039; cap is for viewers that have been officially released by Linden Lab). Take extra care when moving viewer transparency settings to scripts and back. In the editor a higher number is more transparent, while in scripts a higher number is more visible.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Below are examples on how one may set the alpha of an object. &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;6&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #aaaaaa; margin: 1em 1em 1em 0pt; background-color: #F8F8FF; border-collapse: collapse&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color: #D2D3FF&amp;quot; | Function&lt;br /&gt;
!style=&amp;quot;background-color: #D2D3FF&amp;quot; | LSL Example &amp;amp; Description&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetAlpha]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetAlpha(1.0, ALL_SIDES);&amp;lt;/lsl&amp;gt; This will set the object&#039;s sides&#039; alpha to opaque, or &#039;&#039;&#039;0%&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetLinkAlpha]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
This will set link-set&#039;s alpha to transparent, or &#039;&#039;&#039;100%&#039;&#039;&#039;. (&#039;&#039;&#039;Note&#039;&#039;&#039;: The Viewers released by Linden Labs are unable to set the alpha of an object to fully transparent without a script; the limit is caped at &#039;&#039;&#039;90%&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetPrimitiveParams]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), 0.5]);&lt;br /&gt;
// Using llGetColor this way may not give the desired result (it returns the average color)&amp;lt;/lsl&amp;gt;&lt;br /&gt;
This will set the object&#039;s alpha to translucent, or &#039;&#039;&#039;50%&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetLinkPrimitiveParams]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetLinkPrimitiveParams(LINK_SET, [PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), 0.5]);&lt;br /&gt;
// Using llGetColor this way may not give the desired result (it returns the average color).&amp;lt;/lsl&amp;gt;&lt;br /&gt;
This will set the link-set&#039;s alpha to translucent, or &#039;&#039;&#039;50%&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetLinkPrimitiveParamsFast]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetLinkPrimitiveParamsFast(LINK_SET, [PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), 0.5]);&lt;br /&gt;
// Using llGetColor this way may not give the desired result (it returns the average color).&amp;lt;/lsl&amp;gt;&lt;br /&gt;
This will set the link-set&#039;s alpha to translucent, or &#039;&#039;&#039;50%&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}{{LSLC|Face|*Alpha}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_BUMP_BARK&amp;diff=1112292</id>
		<title>PRIM BUMP BARK</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_BUMP_BARK&amp;diff=1112292"/>
		<updated>2010-11-22T01:44:18Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: added llGetLinkPrimitiveParams&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|name=PRIM_BUMP_BARK&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=4&lt;br /&gt;
|desc=&lt;br /&gt;
|examples=&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL ConstRow|PRIM_BUMP_SHINY}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParamsFast]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLinkPrimitiveParams]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
{{LSL DefineRow||[[changed]]|}}&lt;br /&gt;
|location&lt;br /&gt;
|cat1=Bump Mapping&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_BUMP_BARK&amp;diff=1112282</id>
		<title>PRIM BUMP BARK</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_BUMP_BARK&amp;diff=1112282"/>
		<updated>2010-11-22T01:43:06Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: added llSetLinkPrimitiveParamsFast&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|name=PRIM_BUMP_BARK&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=4&lt;br /&gt;
|desc=&lt;br /&gt;
|examples=&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL ConstRow|PRIM_BUMP_SHINY}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParamsFast]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
{{LSL DefineRow||[[changed]]|}}&lt;br /&gt;
|location&lt;br /&gt;
|cat1=Bump Mapping&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency&amp;diff=1112132</id>
		<title>LSL Script Efficiency</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency&amp;diff=1112132"/>
		<updated>2010-11-21T18:43:31Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Added llSetLinkPrimitiveParamsFast to this instead list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&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;
== What is Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Efficiency is how much resource a particular script uses to accomplish a goal.  This often goes hand-in-hand with speed of execution, but not always.&lt;br /&gt;
&lt;br /&gt;
Things to watch out for, in rough order of importance:&lt;br /&gt;
&lt;br /&gt;
* Using a lot of scripts to accomplish something.  See Efficient Design.&lt;br /&gt;
* [[llSleep]] - This function uses up 0.2 to 0.3 ms per frame while the script sleeps, timers are much better. &#039;&#039;This is really an accounting error that should be fixed in SL Server 1.27 (see [[User:Andrew Linden/Office_Hours/2009 05 07|transcript]]  at 17:44)&#039;&#039;&lt;br /&gt;
* Short frequency timers (&amp;lt;5 sec)&lt;br /&gt;
* Listen - especially to the 0 channel&lt;br /&gt;
* Changing textures often (Others have to download them)&lt;br /&gt;
* Inappropriate use of server/physical rotations instead of omega&lt;br /&gt;
* Event handlers which are not needed (touch, collision, ...)&lt;br /&gt;
* Large amount of email or IM&lt;br /&gt;
* Inefficient algorithms (like linear search)&lt;br /&gt;
* Busy ([[HTTP_Polling|polling]]) loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficient Design ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each idle script in an object adds 0.001 to 0.003 milliseconds per frame of script time usage.  Fewer scripts is better.&lt;br /&gt;
&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], [[llSetLinkPrimitiveParams]] or [[llSetLinkPrimitiveParamsFast]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with fewer scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Re-tested under Mono as of 04/02/09. Channel 1 for regionsay, listener set up nearby):&lt;br /&gt;
&lt;br /&gt;
   llOwnerSay():   3.607200 millis&lt;br /&gt;
   llWhisper():    4.871200 millis&lt;br /&gt;
   llSay():        3.975200 millis&lt;br /&gt;
   llShout():     10.931200 millis&lt;br /&gt;
   llRegionSay():  0.312000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_POINT_LIGHT&amp;diff=1112122</id>
		<title>PRIM POINT LIGHT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_POINT_LIGHT&amp;diff=1112122"/>
		<updated>2010-11-21T17:59:34Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: added llSetLinkPrimitiveParamsFast to the when to use list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:light_const|{{LSL Const|PRIM_POINT_LIGHT|integer|23|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the prim&#039;s point light configuration}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_radius_desc|ranges from 0.1 to 20.0}}&lt;br /&gt;
{{#vardefine:p_falloff_desc|ranges from 0.01 to 2.0}}&lt;br /&gt;
{{#vardefine:p_intensity_desc|ranges from 0.0 to 1.0}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{LSL_Function/boolean|boolean}}&lt;br /&gt;
{{LSL_Function/color|color}}&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|name=PRIM_POINT_LIGHT&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=23&lt;br /&gt;
|desc=PRIM_POINT_LIGHT is used to configure the point light configuration of the prim&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:light_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParamsFast]]&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
|i1_type=integer|i1_name=boolean&lt;br /&gt;
|i2_type=vector|i2_name=color&lt;br /&gt;
|i3_type=float|i3_name=intensity&lt;br /&gt;
|i4_type=float|i4_name=radius&lt;br /&gt;
|i5_type=float|i5_name=falloff}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:light_const}}|i_end=&amp;amp;nbsp;]);|&lt;br /&gt;
|r_front=Returns the list [&amp;amp;nbsp;|r_end=&amp;amp;nbsp;]&lt;br /&gt;
|text&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=integer|r1_name=boolean&lt;br /&gt;
|r2_type=vector|r2_name=color&lt;br /&gt;
|r3_type=float|r3_name=intensity&lt;br /&gt;
|r4_type=float|r4_name=radius&lt;br /&gt;
|r5_type=float|r5_name=falloff &lt;br /&gt;
}}&lt;br /&gt;
|caveats=&lt;br /&gt;
Be extremely frugal with LIGHTS!  The Second Life viewer is limited to rendering no more than 6 at one time, and each contributes to rendering lag.  (OpenGL limitations allow for 8 light sources, SL appears to reserve one each for the Sun and Moon.)&lt;br /&gt;
&lt;br /&gt;
If you need to simulate the effect of several light sources, consider using [[PRIM_GLOW]] and [[PRIM_FULLBRIGHT]] instead.&lt;br /&gt;
&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// simple light source demonstrator&lt;br /&gt;
// 8feb07 &amp;quot;tetsumo kuri&amp;quot;&lt;br /&gt;
// thanks to squee janitor for line to dissect&lt;br /&gt;
&lt;br /&gt;
integer light_s = TRUE;     //  &amp;quot;_s&amp;quot; for status&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
      //  llSetText(&amp;quot;click me&amp;quot;,&amp;lt;1,0,0.6&amp;gt;,.5);  // in case you like labels&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        if ( light_s )&lt;br /&gt;
        { &lt;br /&gt;
            light_s = FALSE;&lt;br /&gt;
&lt;br /&gt;
            // fullbright doesn&#039;t have anything to do with light in NEW(2006?) lighting model &lt;br /&gt;
            // setting fullbright does look good though&lt;br /&gt;
            llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE]);&lt;br /&gt;
              &lt;br /&gt;
            llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE,   // if this is false, light is off,&lt;br /&gt;
                                     &amp;lt;0.0,1.0,0.0&amp;gt;,1.0, 10.0, 0.5]); // rest of params don&#039;t matter&lt;br /&gt;
        }            &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            light_s = TRUE;&lt;br /&gt;
            //llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,TRUE]);   //leave fullbright commented for now&lt;br /&gt;
            llSetPrimitiveParams([PRIM_POINT_LIGHT,TRUE,&lt;br /&gt;
                                    &amp;lt;1.0,0.7,1.0&amp;gt;,  // light color vector range: 0.0-1.0 *3&lt;br /&gt;
                                    1.0,            // intensity    (0.0-1.0)&lt;br /&gt;
                                    10.0,           // radius       (.1-20.0)&lt;br /&gt;
                                    0.6 ]);         // falloff      (.01-2.0)&lt;br /&gt;
                &lt;br /&gt;
            // this could have been done in one line, like this     &lt;br /&gt;
            //llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE,PRIM_POINT_LIGHT,TRUE,&amp;lt;1.0,1.0,0.5&amp;gt;,20,1.0,0.5]);&lt;br /&gt;
            //      ... but thats kinda hard to take in...       &lt;br /&gt;
        }&lt;br /&gt;
        //llSay(0, &amp;quot; Click!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL ConstRow|CHANGED_SHAPE}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
{{LSL DefineRow||[[changed]]|}}&lt;br /&gt;
|location&lt;br /&gt;
|cat1=Light&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=RecursiveDialog&amp;diff=1094872</id>
		<title>RecursiveDialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=RecursiveDialog&amp;diff=1094872"/>
		<updated>2010-11-06T19:02:53Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Created page with &amp;#039;{{LSL_Function |func=recursiveDialog |mode=user |p1_type=key|p1_name=agent|p1_desc=key of the agent |p2_type=string|p2_name=message|p2_desc=message to be displayed |p3_type=list|...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=recursiveDialog&lt;br /&gt;
|mode=user&lt;br /&gt;
|p1_type=key|p1_name=agent|p1_desc=key of the agent&lt;br /&gt;
|p2_type=string|p2_name=message|p2_desc=message to be displayed&lt;br /&gt;
|p3_type=list|p3_name=buttons|p3_desc=button labels&lt;br /&gt;
|p4_type=integer|p4_name=channel|p4_desc=channel the dialog&#039;s response will be handled on&lt;br /&gt;
|func_desc=Allows for a list longer than 12 elements to be displayed. &lt;br /&gt;
|func_footnote=The elements are reversed when put into the dialog.&lt;br /&gt;
|spec=&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Created by Spoof Kelberry&lt;br /&gt;
recursiveDialog(key avatar, string message, list buttons, integer channel){ &lt;br /&gt;
    integer a = llGetListLength(buttons)%12; integer i;&lt;br /&gt;
    integer c = llFloor(llGetListLength(buttons)/12)+1; integer q; integer j; &lt;br /&gt;
    for(i = 0; i &amp;lt; c-1; i++){ list w; &lt;br /&gt;
        w = llList2List(buttons,j,j+11); j += 12; llDialog(avatar,message,w,channel); &lt;br /&gt;
    } if(a) llDialog(avatar,message,llList2List(buttons,j,j+a),channel);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;&lt;br /&gt;
//Created by Spoof Kelberry&lt;br /&gt;
recursiveDialog(key avatar, string message, list buttons, integer channel){ &lt;br /&gt;
    integer a = llGetListLength(buttons)%12; integer i;&lt;br /&gt;
    integer c = llFloor(llGetListLength(buttons)/12)+1; integer q; integer j; &lt;br /&gt;
    for(i = 0; i &amp;lt; c-1; i++){ list w; &lt;br /&gt;
        w = llList2List(buttons,j,j+11); j += 12; llDialog(avatar,message,w,channel); &lt;br /&gt;
    } if(a) llDialog(avatar,message,llList2List(buttons,j,j+a),channel);&lt;br /&gt;
}&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        recursiveDialog(llGetOwner(),&amp;quot;Hello!&amp;quot;,[&amp;quot;This&amp;quot;,&amp;quot;list&amp;quot;,&amp;quot;is&amp;quot;,&amp;quot;greater&amp;quot;,&amp;quot;than&amp;quot;,&amp;quot;12&amp;quot;,&amp;quot;elements&amp;quot;,&amp;quot;but&amp;quot;,&amp;quot;it&amp;quot;,&amp;quot;will&amp;quot;,&amp;quot;create&amp;quot;,&amp;quot;another&amp;quot;,&amp;quot;dialog.&amp;quot;],-1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|notes&lt;br /&gt;
|also&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_articles&lt;br /&gt;
|cat1=Examples&lt;br /&gt;
|cat2=User-Defined_Functions&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Spoof_Kelberry&amp;diff=1094802</id>
		<title>User:Spoof Kelberry</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Spoof_Kelberry&amp;diff=1094802"/>
		<updated>2010-11-06T18:36:50Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Adding some various attributes to my profile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{visl&lt;br /&gt;
|name=Aeri Hax&lt;br /&gt;
|Greeters=&lt;br /&gt;
|Helpers=*&lt;br /&gt;
|Instructors=&lt;br /&gt;
|Mentors=*&lt;br /&gt;
|LSL=*&lt;br /&gt;
|i18n=&lt;br /&gt;
|l10n=&lt;br /&gt;
|SL4B=&lt;br /&gt;
|}}&lt;br /&gt;
{{skills&lt;br /&gt;
|Builder=&lt;br /&gt;
|Scripter=*&lt;br /&gt;
|}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetForceAndTorque&amp;diff=988332</id>
		<title>LlSetForceAndTorque</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetForceAndTorque&amp;diff=988332"/>
		<updated>2010-07-26T23:24:47Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Added an example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function&lt;br /&gt;
|func_id=76&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llSetForceAndTorque&lt;br /&gt;
|p1_type=vector|p1_name=force|p1_desc=directional force&lt;br /&gt;
|p2_type=vector|p2_name=torque|p2_desc=torque force&lt;br /&gt;
|p3_type=integer|p3_name=local|p3_desc=boolean, if {{LSLG|TRUE}} uses [[Viewer coordinate frames#Local|local]] axis, if {{LSLG|FALSE}} uses [[Viewer coordinate frames#Region|region]] axis.&lt;br /&gt;
|func_desc=Sets the force and torque of object (if the script is physical)&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSetForceAndTorque( &amp;lt;0.0,0.0,5.0&amp;gt;, &amp;lt;1.0,0.0,0.0&amp;gt;, FALSE );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llSetForce]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetTorque]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2=Movement&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_To-do&amp;diff=987452</id>
		<title>LSL Portal To-do</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_To-do&amp;diff=987452"/>
		<updated>2010-07-25T23:49:43Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: I removed the category Alpha, for I have improved it. Feel free to add it back if it needs more work!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot; style=&amp;quot;background:#ffdead;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
Work in Progress&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;
== To-Do ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
Use this page to keep track of what is still needed. Format as required.&lt;br /&gt;
&lt;br /&gt;
# Add articles to pertinent categories.&lt;br /&gt;
# Add articles to categories to mark what work needs to be done to them.&lt;br /&gt;
#* Embellish articles so they no longer fall under those categories (and remove them from the category)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Box|1=Tasks|2=&lt;br /&gt;
* Document forced rounding of {{LSLGC|Alpha}} as described in [http://jira.secondlife.com/browse/SVC-4524?focusedCommentId=122794&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_122794 SVC-4524~Comment 3] ~ integrate into [[Template:LSL Function/alpha]]? or maybe just something on {{LSLGC|Alpha}}? Feels like a Caveat.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Work Categories ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
These categories are used to indicate that an article needs work done to it.&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!Category&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[[:Category:LSL Needs Example]]&lt;br /&gt;
|Needs an example written, to do this set the &#039;example&#039; variable equal to a multi-line block of lsl text. Once an example is supplied the page is automatically removed from this category.&lt;br /&gt;
|-&lt;br /&gt;
|[[:Category:LSL FixMe]]&lt;br /&gt;
|These pages have something wrong or seriously missing from them.&lt;br /&gt;
|-&lt;br /&gt;
|[[:Category:LSL Stub]]&lt;br /&gt;
|These articles are just too short and should be expanded upon.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL Categories in Need of Work ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
These categories are missing functions or need content.&lt;br /&gt;
:Using templates is currently optional on Category pages. There are a lot more LSL categories but these are the ones that come to mind as needing the most work. -- [[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
{|{{Prettytable}}&lt;br /&gt;
|-{{Hl2}}&lt;br /&gt;
!Category&lt;br /&gt;
!Stub&lt;br /&gt;
!Pages&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|{{LSLGC|Sound}}&lt;br /&gt;
|Yes&lt;br /&gt;
|No&lt;br /&gt;
|Needs descriptions written.&lt;br /&gt;
|-&lt;br /&gt;
|{{LSLGC|Movement}}&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Missing functions and needs description written.&lt;br /&gt;
|-&lt;br /&gt;
|{{LSLGC|Prim}}&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Needs functions that are prim attributes (not Object attributes)&lt;br /&gt;
|-&lt;br /&gt;
|{{LSLGC|Object}}&lt;br /&gt;
|Yes&lt;br /&gt;
|Yes&lt;br /&gt;
|Needs functions that are object attributes (not Prim attributes)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:LSL_Alpha&amp;diff=987442</id>
		<title>Category:LSL Alpha</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:LSL_Alpha&amp;diff=987442"/>
		<updated>2010-07-25T23:31:49Z</updated>

		<summary type="html">&lt;p&gt;Spoof Kelberry: Added examples pertaining to setting Alpha, as well as descriptions on how it relates to the build tool.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
The term &amp;quot;Alpha&amp;quot; refers to how opaque or transparent an object (or, in this case, a prim) is. In Second Life, the alpha property is set by the scripting functions [[llSetAlpha]], [[llSetLinkAlpha]], [[llSetPrimitiveParams]], and [[llSetLinkPrimitiveParams]]. These functions use a [[float]] value. When set to &#039;&#039;&#039;0.0&#039;&#039;&#039;, the object/prim is fully invisible. When set to &#039;&#039;&#039;1.0&#039;&#039;&#039;, the object is non-transparent.&lt;br /&gt;
Sometimes, [[Resident]]s refer to a transparent [[texture]] as &#039;&#039;alpha texture&#039;&#039;. This is not to be confused with this prim property. See [[llSetTexture]] and [[TEXTURE_TRANSPARENT]] instead.&lt;br /&gt;
&lt;br /&gt;
==Build Mode== &lt;br /&gt;
In Build Mode, the alpha is represented by a percentage, ranging from &#039;&#039;&#039;0%&#039;&#039;&#039; to &#039;&#039;&#039;90%&#039;&#039;&#039;. &lt;br /&gt;
(&#039;&#039;&#039;Note&#039;&#039;&#039;: The &#039;&#039;&#039;90%&#039;&#039;&#039; cap is for viewers that have been officially released by Linden Labs)&lt;br /&gt;
==Examples==&lt;br /&gt;
Below are examples on how one may set the alpha of an object. &lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;6&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #aaaaaa; margin: 1em 1em 1em 0pt; background-color: #F8F8FF; border-collapse: collapse&amp;quot;&lt;br /&gt;
!style=&amp;quot;background-color: #D2D3FF&amp;quot; | Function&lt;br /&gt;
!style=&amp;quot;background-color: #D2D3FF&amp;quot; | LSL Example&lt;br /&gt;
!style=&amp;quot;background-color: #D2D3FF&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetAlpha]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetAlpha(1.0, ALL_SIDES);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
| This will set the object&#039;s sides&#039; alpha to non-transparent ; &#039;&#039;&#039;0%&#039;&#039;&#039; using the build tool.&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetLinkAlpha]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
| This will set link-set&#039;s alpha to fully transparent, or &#039;&#039;&#039;100%&#039;&#039;&#039; using the build tool. (&#039;&#039;&#039;Note&#039;&#039;&#039;: The Viewers released by Linden Labs are unable to set the alpha of an object to fully transparent without a script; the limit is caped at &#039;&#039;&#039;90%&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetPrimitiveParams]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), 0.5]);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
| This will set the object&#039;s alpha to opaque; &#039;&#039;&#039;50%&#039;&#039;&#039; using the build tool.&lt;br /&gt;
|-&lt;br /&gt;
| [[llSetLinkPrimitiveParams]]&lt;br /&gt;
| &amp;lt;lsl&amp;gt;llSetLinkPrimitiveParams(LINK_SET, [PRIM_COLOR, ALL_SIDES, llGetColor(ALL_SIDES), 0.5]);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
| This will set the link-set&#039;s alpha to opaque; &#039;&#039;&#039;50%&#039;&#039;&#039; using the build tool.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{LSLC|}}{{LSLC|Face|*Alpha}}&lt;/div&gt;</summary>
		<author><name>Spoof Kelberry</name></author>
	</entry>
</feed>