<?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=KiraCodie+Resident</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=KiraCodie+Resident"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/KiraCodie_Resident"/>
	<updated>2026-07-27T08:07:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_ROT_LOCAL&amp;diff=1186736</id>
		<title>PRIM ROT LOCAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_ROT_LOCAL&amp;diff=1186736"/>
		<updated>2014-01-10T07:41:08Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added example using link set primitive params&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:rot_local_const|{{LSL Const|PRIM_ROT_LOCAL|integer|29|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the prim&#039;s local rotation}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_rot_desc|Any valid rotation}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{#ifeq:{{{1|set}}}|set|{{Issues/SVC-93}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats-get|{{#var:caveats-get}}&lt;br /&gt;
* &#039;&#039;&#039;{{LSL Param|rot}}&#039;&#039;&#039; is always the [[Viewer_coordinate_frames#global|global rotation]], even if the prim is a child or the root prim of an [[attachment]].&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{#switch:{{{1|}}}&lt;br /&gt;
|get={{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
{{#var:caveats-get}}}}&lt;br /&gt;
|set={{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
{{#var:caveats-set}}}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Prim}}&lt;br /&gt;
|name=PRIM_ROT_LOCAL&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=29&lt;br /&gt;
|desc=PRIM_ROT_LOCAL is used to get or set the prim&#039;s local rotation.&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[[llSetPrimitiveParams]]([&amp;amp;#32;{{#var:rot_local_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]);&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
{{LSL Generic/Caveats|caveats={{#var:caveats-set}}|title=*}}&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
|i1_type=rotation|i1_name=rot&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:rot_local_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={{LSL Generic/Caveats|caveats={{#var:caveats-get}}|title=*}}&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=rotation|r1_name=rot&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;integer isRotated = FALSE;&lt;br /&gt;
vector rotated = &amp;lt;25, 25, 0&amp;gt;;&lt;br /&gt;
rotation notRotated = ZERO_ROTATION;&lt;br /&gt;
rotation rot;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        rotated *= DEG_TO_RAD;&lt;br /&gt;
        rot = llEuler2Rot( rotated );&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        if( isRotated ) &lt;br /&gt;
        {&lt;br /&gt;
            llSetLinkPrimitiveParams( 2, [PRIM_ROT_LOCAL, notRotated] );&lt;br /&gt;
            isRotated = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        else if( !isRotated ) &lt;br /&gt;
        {&lt;br /&gt;
            isRotated = TRUE;&lt;br /&gt;
            llSetLinkPrimitiveParams( 2, [PRIM_ROT_LOCAL, rot] );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
&amp;lt;!--{{LSL ConstRow|CHANGED_SHAPE}}--&amp;gt;&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLocalRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLocalRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRootRotation]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
&amp;lt;!--{{LSL DefineRow||[[changed]]|}}--&amp;gt;&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Rotation&lt;br /&gt;
|cat3=Movement&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlDetectedTouchUV&amp;diff=1185066</id>
		<title>LlDetectedTouchUV</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlDetectedTouchUV&amp;diff=1185066"/>
		<updated>2013-12-14T06:41:29Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: The example wouldn&amp;#039;t run for the second example with 12 columns, because Columns was misspelled.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL_Function/detected|index|touchUV|simple=*}}&lt;br /&gt;
|func_id=337|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llDetectedTouchUV&lt;br /&gt;
|return_type=vector|return_text=that is the texture coordinates for where the prim was touched. The {{LSLP|x}} &amp;amp; {{LSLP|y}} vector positions contain the horizontal ({{LSLP|u}}) &amp;amp; vertical ({{LSLP|v}}) texture coordinates respectively (&amp;lt;code&amp;gt;{{NoWrap|{{LSL_VR|{{LSLPT|u}}|{{LSLPT|v}}|0.0}}}}&amp;lt;/code&amp;gt;). Like [[llDetectedTouchST]], the interval of each component will be {{Interval|gte=0.0|center=component|lte=1.0}} unless the texture repeats are set to a non-default value. Increasing or decreasing the texture repeats of the face will change this interval accordingly. Additionally,  unlike with [[llDetectedTouchST]], changing a texture&#039;s rotation will change the results of this function.&lt;br /&gt;
&lt;br /&gt;
{{LSL Const|TOUCH_INVALID_TEXCOORD|vector|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when the touch UV coordinates cannot be determined. See [[#Caveats|Caveats]] for further details.&lt;br /&gt;
|p1_type=integer|p1_name=index&lt;br /&gt;
|func_footnote=For the {{LSLGC|Touch|touch}} category of events only. The prim that was touched may not be the prim receiving the event, use [[llDetectedLinkNumber]] to check for this; likewise you can use [[llDetectedTouchFace]] to determine which face was touched.&lt;br /&gt;
|func_desc&lt;br /&gt;
|spec=&lt;br /&gt;
|caveats=&lt;br /&gt;
*{{LSL Const|TOUCH_INVALID_TEXCOORD|vector|{{LSL_VR|-1.0|-1.0|0.0}}}} is returned when...&lt;br /&gt;
** The avatar&#039;s viewer does not support face touch detection.&lt;br /&gt;
*** To check if face touch detection is supported check the return of [[llDetectedTouchFace]].&lt;br /&gt;
** The touch has moved off the surface of the prim.&lt;br /&gt;
** The touch happened too close to the edge of the face to determine a location.&lt;br /&gt;
** The event triggered is not a {{LSLGC|Touch|touch}} event.&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;
        integer face = llDetectedTouchFace(0);&lt;br /&gt;
        vector  touchUV   = llDetectedTouchUV(0);&lt;br /&gt;
&lt;br /&gt;
//      ZERO_VECTOR (&amp;lt;0.0, 0.0, 0.0&amp;gt; ... the origin) is in the bottom left corner of the texture&lt;br /&gt;
//      touchUV.x goes across the texture from the left to the right&lt;br /&gt;
//      touchUV.y goes across the texture from the bottom to the top&lt;br /&gt;
&lt;br /&gt;
        if (face == TOUCH_INVALID_FACE)&lt;br /&gt;
//      {&lt;br /&gt;
            llWhisper(PUBLIC_CHANNEL, &amp;quot;Sorry, your viewer doesn&#039;t support touched faces.&amp;quot;);&lt;br /&gt;
//      }&lt;br /&gt;
        else if (touchUV == TOUCH_INVALID_TEXCOORD)&lt;br /&gt;
//      {&lt;br /&gt;
            llWhisper(PUBLIC_CHANNEL, &amp;quot;Sorry, the touch position upon the texture could not be determined.&amp;quot;);&lt;br /&gt;
//      }&lt;br /&gt;
        else&lt;br /&gt;
//      {&lt;br /&gt;
            llSay(PUBLIC_CHANNEL, &amp;quot;llDetectedTouchUV(&amp;quot; + (string)touchUV + &amp;quot;)&amp;quot;&lt;br /&gt;
                    + &amp;quot;\ntouchUV.x = &amp;quot; + (string)touchUV.x&lt;br /&gt;
                    + &amp;quot;\ntouchUV.y = &amp;quot; + (string)touchUV.y);&lt;br /&gt;
//      }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer numberOfRows    = 12;&lt;br /&gt;
integer numberOfColumns = 12;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        vector touchUV = llDetectedTouchUV(0);&lt;br /&gt;
&lt;br /&gt;
//      ZERO_VECTOR (&amp;lt;0.0, 0.0, 0.0&amp;gt; ... the origin) is in the bottom left corner of the texture&lt;br /&gt;
//      touchUV.x goes across the texture from the left to the right&lt;br /&gt;
//      touchUV.y goes across the texture from the bottom to the top&lt;br /&gt;
&lt;br /&gt;
        integer columnIndex = llFloor(touchUV.x * numberOfColumns);&lt;br /&gt;
        integer rowIndex    = llFloor(touchUV.y * numberOfRows);&lt;br /&gt;
        integer cellIndex   = (rowIndex * numberOfColumns) + columnIndex;&lt;br /&gt;
&lt;br /&gt;
        llSay(PUBLIC_CHANNEL, &amp;quot;UV grid (&amp;quot; + (string)columnIndex + &amp;quot;, &amp;quot; + (string)rowIndex + &amp;quot;) --&amp;gt; cell &amp;quot; + (string)cellIndex);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|related&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llDetectedLinkNumber]]}}&lt;br /&gt;
{{LSL DefineRow||[[llDetectedTouchFace]]}}&lt;br /&gt;
{{LSL DefineRow||[[llDetectedTouchST]]}}&lt;br /&gt;
{{LSL DefineRow||[[llDetectedTouchPos]]}}&lt;br /&gt;
{{LSL DefineRow||[[llDetectedTouchNormal]]}}&lt;br /&gt;
{{LSL DefineRow||[[llDetectedTouchBinormal]]}}&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[touch_start]]|}}&lt;br /&gt;
{{LSL DefineRow||[[touch]]|}}&lt;br /&gt;
{{LSL DefineRow||[[touch_end]]|}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|history=*Introduced in {{SVN|870|rev=92872|trunk=*|anchor=file14|date=Wednesday, 23 July 2008}}.&lt;br /&gt;
*Server support available in Second Life Server 1.24.7.98039, client support in Release Candidate viewer 1.21.4 (98167).&lt;br /&gt;
|cat1=Touch&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHANTOM&amp;diff=1183904</id>
		<title>PRIM PHANTOM</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHANTOM&amp;diff=1183904"/>
		<updated>2013-11-25T09:12:21Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added an example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:phantom_const|{{LSL Const|PRIM_PHANTOM|integer|5|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the object&#039;s phantom status}}}}&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;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Object}}&lt;br /&gt;
|name=PRIM_PHANTOM&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=5&lt;br /&gt;
|desc=Used to get or set the object&#039;s [[STATUS_PHANTOM|phantom]] {{LSLGC|Status|status}}.&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:phantom_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
*NOTE: This sets the entire object (linkset) when used in either function.&lt;br /&gt;
|i1_type=integer|i1_name=boolean&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:phantom_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;
|r1_type=integer|r1_name=boolean&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_PHANTOM, TRUE]); // makes the prim phantom...&lt;br /&gt;
        &lt;br /&gt;
        integer isPhantom = llList2Integer(llGetPrimitiveParams([PRIM_PHANTOM]), 0);&lt;br /&gt;
        &lt;br /&gt;
        if( isPhantom == 1 )&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is Phantom&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is Solid&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL DefineRow||[[STATUS_PHANTOM]]|}}&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;
{{LSL DefineRow||[[llSetStatus]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetStatus]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
{{LSL DefineRow||[[changed]]|}}&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Status&lt;br /&gt;
|cat3=Phantom&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS&amp;diff=1183903</id>
		<title>PRIM PHYSICS</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS&amp;diff=1183903"/>
		<updated>2013-11-25T09:07:02Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: fixed error in scripted example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_const|{{LSL Const|PRIM_PHYSICS|integer|3|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the object&#039;s physical status}}}}&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;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Object}}&lt;br /&gt;
|name=PRIM_PHYSICS&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=3&lt;br /&gt;
|desc=Used to get or set the object&#039;s [[STATUS_PHYSICS|physics]] {{LSLGC|Status|status}}. When enabled the object responds to SL physics.&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[[llSetPrimitiveParams]]([&amp;amp;#32;{{#var:physics_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]);&lt;br /&gt;
|text={{LSL Constant/PrimParamText|set}}&lt;br /&gt;
|i1_type=integer|i1_name=boolean&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:physics_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={{LSL Constant/PrimParamText|get}}&lt;br /&gt;
|r1_type=integer|r1_name=boolean&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_PHYSICS, TRUE]); // makes the prim physical...&lt;br /&gt;
        &lt;br /&gt;
        integer isPhysical = llList2Integer(llGetPrimitiveParams([PRIM_PHYSICS]), 0);&lt;br /&gt;
        &lt;br /&gt;
        if( isPhysical == 1 )&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is Physical&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is non-Physical&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|caveats=&lt;br /&gt;
*calls to set PRIM_PHYSICS in attachments fail silently&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL DefineRow||[[STATUS_PHYSICS]]|}}&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;
{{LSL DefineRow||[[llSetStatus]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetStatus]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|cat1=Status&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS&amp;diff=1183902</id>
		<title>PRIM PHYSICS</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS&amp;diff=1183902"/>
		<updated>2013-11-25T09:00:03Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added example of setting and getting the Prim Physics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_const|{{LSL Const|PRIM_PHYSICS|integer|3|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the object&#039;s physical status}}}}&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;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Object}}&lt;br /&gt;
|name=PRIM_PHYSICS&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=3&lt;br /&gt;
|desc=Used to get or set the object&#039;s [[STATUS_PHYSICS|physics]] {{LSLGC|Status|status}}. When enabled the object responds to SL physics.&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[[llSetPrimitiveParams]]([&amp;amp;#32;{{#var:physics_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]);&lt;br /&gt;
|text={{LSL Constant/PrimParamText|set}}&lt;br /&gt;
|i1_type=integer|i1_name=boolean&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:physics_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={{LSL Constant/PrimParamText|get}}&lt;br /&gt;
|r1_type=integer|r1_name=boolean&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_PHYSICS, TRUE]); // makes the prim physical...&lt;br /&gt;
        &lt;br /&gt;
        if(llGetPrimitiveParams([PRIM_PHYSICS]) == TRUE) &lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is Physical&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;Object is non-Physical&amp;quot;, &amp;lt;1, 1, 1&amp;gt;, 1.0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|caveats=&lt;br /&gt;
*calls to set PRIM_PHYSICS in attachments fail silently&lt;br /&gt;
|constants=&lt;br /&gt;
{{LSL DefineRow||[[STATUS_PHYSICS]]|}}&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;
{{LSL DefineRow||[[llSetStatus]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetStatus]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|cat1=Status&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=OBJECT_STREAMING_COST&amp;diff=1183901</id>
		<title>OBJECT STREAMING COST</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=OBJECT_STREAMING_COST&amp;diff=1183901"/>
		<updated>2013-11-25T07:54:05Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|name={{PAGENAMEE}}&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=15&lt;br /&gt;
|desc=This is a flag used with [[llGetObjectDetails]] to get the [[Mesh/Mesh_Streaming_Cost|streaming/download cost]] of the object.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;getStreamingCost( key id )&lt;br /&gt;
{&lt;br /&gt;
    list downloadWeight = llGetObjectDetails( id, [OBJECT_STREAMING_COST] );&lt;br /&gt;
    &lt;br /&gt;
    llSetText( &amp;quot;Download (streaming) cost\n&amp;quot; + llList2String( downloadWeight, 0 ), &lt;br /&gt;
        &amp;lt;1, 0, 0&amp;gt;, 1.0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit( 6000 ); // set memory limit &lt;br /&gt;
        &lt;br /&gt;
        getStreamingCost( llGetOwner() ); // get the streaming cost of the owner&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        getStreamingCost( llDetectedKey(0) ); // the person that touched the box streaming weight&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|functions={{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|constants={{!}}{{LSL_Constants/Object_Details}}&lt;br /&gt;
|events&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=OBJECT_RUNNING_SCRIPT_COUNT&amp;diff=1183900</id>
		<title>OBJECT RUNNING SCRIPT COUNT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=OBJECT_RUNNING_SCRIPT_COUNT&amp;diff=1183900"/>
		<updated>2013-11-25T07:08:30Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|inject-1&lt;br /&gt;
|name={{PAGENAMEE}}&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=9&lt;br /&gt;
|desc=This is a flag used with [[llGetObjectDetails]] to get the number of [[LlGetScriptState|running]] scripts.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;// an example that demonstrates running scripts, total scripts, memory usage, and script time usage. &lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start( integer params )&lt;br /&gt;
    {&lt;br /&gt;
        key toucher = llDetectedKey(0);&lt;br /&gt;
        &lt;br /&gt;
        list scriptInfo = llGetObjectDetails( toucher, [OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_SCRIPT_TIME, OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
&lt;br /&gt;
        string displayMessage = llGetDisplayName( toucher ) + &amp;quot;, has &amp;quot; + llList2String( scriptInfo, 1 ) + &lt;br /&gt;
            &amp;quot; number of scripts running, with a total of &amp;quot; + llList2String( scriptInfo, 0 ) + &lt;br /&gt;
            &amp;quot; scripts.\nThese take up &amp;quot; + (string)(llList2Integer( scriptInfo, 3 ) * 1024) +&lt;br /&gt;
            &amp;quot; KiB of memory while using up &amp;quot; + (string)(llList2Float( scriptInfo, 2 ) * 1000) +&lt;br /&gt;
            &amp;quot;ms of script time.&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
        llSetPrimitiveParams([ PRIM_TEXT, displayMessage, &amp;lt;0, 1, 1&amp;gt;, 1.0 ]);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|functions={{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|constants={{!}}{{LSL_Constants/Object_Details}}&lt;br /&gt;
|events&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=OBJECT_TOTAL_SCRIPT_COUNT&amp;diff=1183899</id>
		<title>OBJECT TOTAL SCRIPT COUNT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=OBJECT_TOTAL_SCRIPT_COUNT&amp;diff=1183899"/>
		<updated>2013-11-25T07:07:33Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: Added an example to the OBJECT_TOTAL_SCRIPT_COUNT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|inject-1&lt;br /&gt;
|name={{PAGENAMEE}}&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=10&lt;br /&gt;
|desc=This is a flag used with [[llGetObjectDetails]] to get the total number of scripts, running or not.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;// an example that demonstrates running scripts, total scripts, memory usage, and script time usage. &lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start( integer params )&lt;br /&gt;
    {&lt;br /&gt;
        key toucher = llDetectedKey(0);&lt;br /&gt;
        &lt;br /&gt;
        list scriptInfo = llGetObjectDetails( toucher, [OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_SCRIPT_TIME, OBJECT_SCRIPT_MEMORY]);&lt;br /&gt;
&lt;br /&gt;
        string displayMessage = llGetDisplayName( toucher ) + &amp;quot;, has &amp;quot; + llList2String( scriptInfo, 1 ) + &lt;br /&gt;
            &amp;quot; number of scripts running, with a total of &amp;quot; + llList2String( scriptInfo, 0 ) + &lt;br /&gt;
            &amp;quot; scripts.\nThese take up &amp;quot; + (string)(llList2Integer( scriptInfo, 3 ) * 1024) +&lt;br /&gt;
            &amp;quot; KiB of memory while using up &amp;quot; + (string)(llList2Float( scriptInfo, 2 ) * 1000) +&lt;br /&gt;
            &amp;quot;ms of script time.&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
        llSetPrimitiveParams([ PRIM_TEXT, displayMessage, &amp;lt;0, 1, 1&amp;gt;, 1.0 ]);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|functions={{LSL DefineRow||[[llGetObjectDetails]]}}&lt;br /&gt;
|constants={{!}}{{LSL_Constants/Object_Details}}&lt;br /&gt;
|events&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_OMEGA&amp;diff=1183765</id>
		<title>PRIM OMEGA</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_OMEGA&amp;diff=1183765"/>
		<updated>2013-11-22T03:27:10Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: added an additional example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:omega_const|{{LSL Const|PRIM_OMEGA|integer|18|c=Used to {{GetSet|{{{1|}}}|get the object&#039;s llTargetOmega settings|rotate the object at on the given axis at the given rate|/}} }}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
*[[PRIM_OMEGA]] on nonphysical objects, and child prims of physical objects, is only a client side effect; the object or prim will collide as non-moving geometry.&lt;br /&gt;
*[[PRIM_OMEGA]] cannot be used on avatars sitting on the object. It will emit the error message &amp;quot;PRIM_OMEGA disallowed on agent&amp;quot;.&lt;br /&gt;
*If [[PRIM_OMEGA]] does not appear to be working, make sure that that Develop &amp;gt; Network &amp;gt; Velocity Interpolate Objects is enabled on the viewer.}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_axis_desc|arbitrary axis to rotate the object around}}&lt;br /&gt;
{{#vardefine:p_spinrate_desc|rate of rotation in radians per second}}&lt;br /&gt;
{{#vardefine:p_gain_desc|also modulates the final spinrate and disables the rotation behavior if zero}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Prim}}&lt;br /&gt;
|name=PRIM_OMEGA&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=32&lt;br /&gt;
|desc=Used to make the object spin at the specified axis and rate, or retrieve spin settings. See [[llTargetOmega]] for specification.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Set this prim rotating&lt;br /&gt;
llTargetOmega(&amp;lt;1.0,3.0,0.5&amp;gt;, TWO_PI, 1.0);&lt;br /&gt;
&lt;br /&gt;
// Read back this prim&#039;s current target omega&lt;br /&gt;
list current_omega = llListToList( llGetPrimitiveParams([PRIM_OMEGA]); // should be [PRIM_OMEGA, axis, spinrate, gain]&lt;br /&gt;
vector axis = llList2Vector(current_omega, 1); // Should be &amp;lt;1.0,3.0,0.5&amp;gt;&lt;br /&gt;
float spinrate = llList2Float(current_omega, 2); // Should be TWO_PI&lt;br /&gt;
float gain = llList2Float(current_omega, 3); // Should be 1.0&lt;br /&gt;
&lt;br /&gt;
// Set all child prims rotating&lt;br /&gt;
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, &amp;lt;1.0,3.0,0.5&amp;gt;, TWO_PI, 1.0]);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Also, can use llSetPrimitiveParams for the root prim.&lt;br /&gt;
&amp;lt;lsl&amp;gt;// will need two prims linked together for this script.&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // make some sort of rotation angle for the omega...&lt;br /&gt;
        vector rotationAngle = &amp;lt;2.3, 5.5, 9.7&amp;gt; * llTan(85); &lt;br /&gt;
        &lt;br /&gt;
        // rotate the main prim slowly using the same rotataion angle, rate, and gain...&lt;br /&gt;
        llSetPrimitiveParams([ PRIM_OMEGA, rotationAngle * 0.3, 1.0, 1.0 ]);&lt;br /&gt;
        &lt;br /&gt;
        // rotate the link satellite prim separately around its own axis &lt;br /&gt;
        // it will rotate also around the main prim because the main prim is rotating.&lt;br /&gt;
        llSetLinkPrimitiveParams(2, [ PRIM_OMEGA, rotationAngle, 1.0, 1.0 ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:omega_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
|i1_type=vector|i1_name=axis&lt;br /&gt;
|i2_type=float|i2_name=spinrate&lt;br /&gt;
|i3_type=float|i3_name=gain&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:omega_const}}&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=vector|r1_name=axis&lt;br /&gt;
|r2_type=float|r2_name=spinrate&lt;br /&gt;
|r3_type=float|r3_name=gain&lt;br /&gt;
}}&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;
{{LSL DefineRow||[[llTargetOmega]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=*Introduced in [[Release Notes/Second Life RC BlueSteel/11#11.06.20.233291|Second Life RC BlueSteel 11.06.20.233291]], June 22, 2011&lt;br /&gt;
*Rolled to main server channel the week of 7/11/2011&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Effects&lt;br /&gt;
|cat3=Physics&lt;br /&gt;
|cat4=Rotation&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_ROTATION&amp;diff=1183764</id>
		<title>PRIM ROTATION</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_ROTATION&amp;diff=1183764"/>
		<updated>2013-11-22T03:18:09Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: Giving an example of Prim Rotation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:rotation_const|{{LSL Const|PRIM_ROTATION|integer|8|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the prim&#039;s rotation. See also PRIM_ROT_LOCAL which has a more consistent behavior.}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_rot_desc|Any valid rotation}}&lt;br /&gt;
&lt;br /&gt;
{{#ifeq:{{{1|set}}}|set|{{Issues/SVC-93}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats-get|{{#var:caveats-get}}&lt;br /&gt;
* {{LSLP|rot}} is always the [[Viewer_coordinate_frames#global|global rotation]], even if the prim is a child or the root prim of an [[attachment]].&lt;br /&gt;
* [[PRIM_ROTATION]] incorrectly reports the avatars rotation when called on the root of an attached object. Use [[PRIM_ROT_LOCAL]] for the root prim instead.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#switch:{{{1|}}}&lt;br /&gt;
|get={{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
{{#var:caveats-get}}{{#vardefine:caveats-get}}}}&lt;br /&gt;
|set={{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
{{#var:caveats-set}}{{#vardefine:caveats-set}}}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Prim}}&lt;br /&gt;
|name=PRIM_ROTATION&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=8&lt;br /&gt;
|desc=PRIM_ROTATION is used to get or set the prim&#039;s rotation.&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[[llSetPrimitiveParams]]([&amp;amp;#32;{{#var:rotation_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]);&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
{{LSL Generic/Caveats|caveats={{#var:caveats-set}}|title=*}}&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
|i1_type=rotation|i1_name=rot&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:rotation_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={{LSL Generic/Caveats|caveats={{#var:caveats-get}}|title=*}}&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=rotation|r1_name=rot&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        /* This is rotates only once and just gradually that once */&lt;br /&gt;
        vector rotationAngle = &amp;lt;2.3, 5.5, 9.7&amp;gt;; &lt;br /&gt;
        rotation rot = llEuler2Rot( rotationAngle );&lt;br /&gt;
        llSetLinkPrimitiveParams(2, [ PRIM_ROTATION, rot ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
&amp;lt;!--{{LSL ConstRow|CHANGED_SHAPE}}--&amp;gt;&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLocalRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLocalRot]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetRootRotation]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
&amp;lt;!--{{LSL DefineRow||[[changed]]|}}--&amp;gt;&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Rotation&lt;br /&gt;
|cat3=Movement&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_TEXT&amp;diff=1183763</id>
		<title>PRIM TEXT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_TEXT&amp;diff=1183763"/>
		<updated>2013-11-22T03:08:53Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: add an example of setting PRIM_TEXT and getting it...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{LSL Function/limits}}&lt;br /&gt;
{{LSL Function/color|color}}&lt;br /&gt;
{{LSL Function/alpha|alpha}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_text_set_hover|floating text to display}}&lt;br /&gt;
{{#vardefine:p_text_get_hover|floating text displayed}}&lt;br /&gt;
{{#vardefine:p_text_hover|{{#switch:{{{1|}}}|get={{#var:p_text_get_hover}}|set={{#var:p_text_set_hover}}|floating text}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_text_set_desc|[[:Category:LSL Floating Text|floating text]] to display}}&lt;br /&gt;
{{#vardefine:p_text_get_desc|[[:Category:LSL Floating Text|floating text]] displayed}}&lt;br /&gt;
{{#vardefine:p_text_desc|{{#switch:{{{1|}}}|get={{#var:p_text_get_desc}}|set={{#var:p_text_set_desc}}|[[:Category:LSL Floating Text|floating text]]}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:text_const|{{LSL Const|PRIM_TEXT|integer|26|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the object&#039;s floating text}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
* Do not rely on [[:Category:LSL Floating Text|Floating Text]] as a storage medium; it is neither secure nor finalized.&lt;br /&gt;
** Floating text has been altered in past server updates, breaking existing content; future changes may occur.&lt;br /&gt;
** Even &amp;quot;invisible&amp;quot;{{Footnote|1=Floating text with an {{LSLP|alpha}} set to 0.0 is rendered &amp;quot;invisible&amp;quot;|2=Floating text with an alpha set to 0.0 is rendered {{String|invisible}}}} floating text is transmitted to the client.&lt;br /&gt;
*** It can be viewed by anyone with a client that is capable of rendering text that is supposed to be invisible.&lt;br /&gt;
*** The network packets that contain the text can be sniffed and the text read.}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Prim}}&lt;br /&gt;
|name=PRIM_TEXT&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=26&lt;br /&gt;
|desc=Used to get or set the object&#039;s [[:Category:LSL Floating Text|floating text]].&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[[llSetPrimitiveParams]]([ {{#var:text_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]);|&lt;br /&gt;
|text=Syntax for: [[llSetPrimitiveParams]], [[llSetLinkPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParamsFast]]&lt;br /&gt;
|i1_type=string|i1_name=text_set|i1_disp=text&lt;br /&gt;
|i2_type=vector|i2_name=color&lt;br /&gt;
|i3_type=float|i3_name=alpha&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([ {{#var:text_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=Syntax for: [[llGetPrimitiveParams]], [[llGetLinkPrimitiveParams]]&lt;br /&gt;
|r1_type=string|r1_name=text_get|r1_disp=text&lt;br /&gt;
|r2_type=vector|r2_name=color&lt;br /&gt;
|r3_type=float|r3_name=alpha&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // a string to display&lt;br /&gt;
        string displayMessage = llGetDisplayName( llGetOwner() ) + &amp;quot;, test number &amp;quot;; &lt;br /&gt;
        &lt;br /&gt;
        // just so could test changing the displayMessage&lt;br /&gt;
        integer loopControl;&lt;br /&gt;
        for( loopControl = 1; loopControl &amp;lt; 3; ++loopControl )&lt;br /&gt;
        {&lt;br /&gt;
            // on first iteration set the text &lt;br /&gt;
            if( loopControl == 1 )&lt;br /&gt;
            {&lt;br /&gt;
                llSetPrimitiveParams([PRIM_TEXT, displayMessage + (string)loopControl + &amp;quot;.&amp;quot;, &amp;lt;1, 0, 0&amp;gt;, 1.0]);&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // on second iteration get the text and say it. &lt;br /&gt;
            else if( loopControl == 2 )&lt;br /&gt;
            {&lt;br /&gt;
                llSay(0, llDumpList2String(llGetPrimitiveParams([PRIM_TEXT]), &amp;quot; &amp;quot;));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&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;
{{LSL DefineRow||[[llSetText]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Floating Text&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlScriptProfiler&amp;diff=1183668</id>
		<title>LlScriptProfiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlScriptProfiler&amp;diff=1183668"/>
		<updated>2013-11-19T13:09:32Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: &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=llScriptProfiler&lt;br /&gt;
|return_type&lt;br /&gt;
|p1_type=integer|p1_name=flags|p1_desc=[[#Constants|PROFILE_*]] flags&lt;br /&gt;
|func_desc=Enables or disables the scripts profiling state.&lt;br /&gt;
|Return_text&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;
Use this function with [[PROFILE_SCRIPT_MEMORY]] to enable memory profiling at a severe script performance penalty. Use it with [[PROFILE_NONE]] to disable profiling. During and after a profiling run [[llGetSPMaxMemory]] will return the most memory used at any one time.&lt;br /&gt;
&lt;br /&gt;
===LSO===&lt;br /&gt;
&lt;br /&gt;
This function has no effect for scripts not compiled to Mono.&lt;br /&gt;
&lt;br /&gt;
|caveats=&lt;br /&gt;
*Scripts compiled to LSO can not be profiled for memory use.&lt;br /&gt;
*The profile state will reset to [[PROFILE_NONE]] if:&lt;br /&gt;
** the object the script is in is de-rezed, rezed or changes regions (via region cross or teleport)&lt;br /&gt;
** the region that object with the script is in shuts down or restarts&lt;br /&gt;
** if the script is reset or taken to or from inventory&lt;br /&gt;
* There is up to 100x performance penalty to the script being profiled (but not the region).&lt;br /&gt;
|constants={{{!}} class=&#039;sortable&#039; id=&#039;Constants&#039; {{prettytable}}&lt;br /&gt;
{{!}}- {{hl2}}&lt;br /&gt;
! Constant&lt;br /&gt;
! Val&lt;br /&gt;
! Description&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} [[PROFILE_NONE]]&lt;br /&gt;
{{!}} 0&lt;br /&gt;
{{!}} Disables profiling&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} [[PROFILE_SCRIPT_MEMORY]]&lt;br /&gt;
{{!}} 1&lt;br /&gt;
{{!}} Enables memory profiling&lt;br /&gt;
{{!}}}&lt;br /&gt;
|examples=&lt;br /&gt;
Calling llScriptProfiler can look like this:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llScriptProfiler(PROFILE_SCRIPT_MEMORY);&lt;br /&gt;
my_func();&lt;br /&gt;
llScriptProfiler(PROFILE_NONE);&lt;br /&gt;
llOwnerSay(&amp;quot;This script used at most &amp;quot; + (string)llGetSPMaxMemory() + &amp;quot; bytes of memory during my_func.&amp;quot;);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is how it looks in a script as an example:&lt;br /&gt;
&amp;lt;lsl&amp;gt;// need to run something for the profile to register... &lt;br /&gt;
workerMethod()&lt;br /&gt;
{&lt;br /&gt;
    float mathNumber = 3 * PI + 3 * llSin( PI );&lt;br /&gt;
    llSetText( &amp;quot;Answer: &amp;quot; + (string)mathNumber, &amp;lt;1, 0, 0&amp;gt;, 1.0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit( 5000 ); // set the memory limit&lt;br /&gt;
        &lt;br /&gt;
        // call up the profiler, execute a method, stop profiler&lt;br /&gt;
        llScriptProfiler( PROFILE_SCRIPT_MEMORY );&lt;br /&gt;
        workerMethod(); &lt;br /&gt;
        llScriptProfiler( PROFILE_NONE );&lt;br /&gt;
        &lt;br /&gt;
        // display memory usage...&lt;br /&gt;
        llSay(0, &amp;quot;Memory used: &amp;quot; + (string)llGetSPMaxMemory() + &amp;quot; bytes, total memory: &amp;quot; + &lt;br /&gt;
            (string)llGetMemoryLimit() + &amp;quot; bytes.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// outputs &lt;br /&gt;
// Object: Memory used: 4968 bytes, total memory: 5000 bytes.&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetSPMaxMemory]]}}&lt;br /&gt;
{{LSL DefineRow||[[llGetMemoryLimit]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetMemoryLimit]]|}}&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=Script Profiler&lt;br /&gt;
|cat4&lt;br /&gt;
|history = Date of Release  [[ Release_Notes/Second_Life_Server/11#11.06.17.233176 | 17/06/2011 ]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlScriptProfiler&amp;diff=1183667</id>
		<title>LlScriptProfiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlScriptProfiler&amp;diff=1183667"/>
		<updated>2013-11-19T13:09:06Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: Added another script to help explain how ScriptProfiler works as people may not be sure where the method being profiled comes from.&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=llScriptProfiler&lt;br /&gt;
|return_type&lt;br /&gt;
|p1_type=integer|p1_name=flags|p1_desc=[[#Constants|PROFILE_*]] flags&lt;br /&gt;
|func_desc=Enables or disables the scripts profiling state.&lt;br /&gt;
|Return_text&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;
Use this function with [[PROFILE_SCRIPT_MEMORY]] to enable memory profiling at a severe script performance penalty. Use it with [[PROFILE_NONE]] to disable profiling. During and after a profiling run [[llGetSPMaxMemory]] will return the most memory used at any one time.&lt;br /&gt;
&lt;br /&gt;
===LSO===&lt;br /&gt;
&lt;br /&gt;
This function has no effect for scripts not compiled to Mono.&lt;br /&gt;
&lt;br /&gt;
|caveats=&lt;br /&gt;
*Scripts compiled to LSO can not be profiled for memory use.&lt;br /&gt;
*The profile state will reset to [[PROFILE_NONE]] if:&lt;br /&gt;
** the object the script is in is de-rezed, rezed or changes regions (via region cross or teleport)&lt;br /&gt;
** the region that object with the script is in shuts down or restarts&lt;br /&gt;
** if the script is reset or taken to or from inventory&lt;br /&gt;
* There is up to 100x performance penalty to the script being profiled (but not the region).&lt;br /&gt;
|constants={{{!}} class=&#039;sortable&#039; id=&#039;Constants&#039; {{prettytable}}&lt;br /&gt;
{{!}}- {{hl2}}&lt;br /&gt;
! Constant&lt;br /&gt;
! Val&lt;br /&gt;
! Description&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} [[PROFILE_NONE]]&lt;br /&gt;
{{!}} 0&lt;br /&gt;
{{!}} Disables profiling&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} [[PROFILE_SCRIPT_MEMORY]]&lt;br /&gt;
{{!}} 1&lt;br /&gt;
{{!}} Enables memory profiling&lt;br /&gt;
{{!}}}&lt;br /&gt;
|examples=&lt;br /&gt;
Calling llScriptProfiler can look like this:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
llScriptProfiler(PROFILE_SCRIPT_MEMORY);&lt;br /&gt;
my_func();&lt;br /&gt;
llScriptProfiler(PROFILE_NONE);&lt;br /&gt;
llOwnerSay(&amp;quot;This script used at most &amp;quot; + (string)llGetSPMaxMemory() + &amp;quot; bytes of memory during my_func.&amp;quot;);&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be how it looks in a script as an example:&lt;br /&gt;
&amp;lt;lsl&amp;gt;// need to run something for the profile to register... &lt;br /&gt;
workerMethod()&lt;br /&gt;
{&lt;br /&gt;
    float mathNumber = 3 * PI + 3 * llSin( PI );&lt;br /&gt;
    llSetText( &amp;quot;Answer: &amp;quot; + (string)mathNumber, &amp;lt;1, 0, 0&amp;gt;, 1.0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit( 5000 ); // set the memory limit&lt;br /&gt;
        &lt;br /&gt;
        // call up the profiler, execute a method, stop profiler&lt;br /&gt;
        llScriptProfiler( PROFILE_SCRIPT_MEMORY );&lt;br /&gt;
        workerMethod(); &lt;br /&gt;
        llScriptProfiler( PROFILE_NONE );&lt;br /&gt;
        &lt;br /&gt;
        // display memory usage...&lt;br /&gt;
        llSay(0, &amp;quot;Memory used: &amp;quot; + (string)llGetSPMaxMemory() + &amp;quot; bytes, total memory: &amp;quot; + &lt;br /&gt;
            (string)llGetMemoryLimit() + &amp;quot; bytes.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// outputs &lt;br /&gt;
// Object: Memory used: 4968 bytes, total memory: 5000 bytes.&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetSPMaxMemory]]}}&lt;br /&gt;
{{LSL DefineRow||[[llGetMemoryLimit]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetMemoryLimit]]|}}&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=Script Profiler&lt;br /&gt;
|cat4&lt;br /&gt;
|history = Date of Release  [[ Release_Notes/Second_Life_Server/11#11.06.17.233176 | 17/06/2011 ]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetMemoryLimit&amp;diff=1183666</id>
		<title>LlGetMemoryLimit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetMemoryLimit&amp;diff=1183666"/>
		<updated>2013-11-19T12:56:19Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: Just added a small example based on code I submitted to the LSL Get SP Max Memory Limit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=???|func_sleep=0.0|func_energy=???&lt;br /&gt;
|func=llGetMemoryLimit&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|func_desc=Get the maximum memory a script can use. &lt;br /&gt;
|Return_text=amount of memory the script can use in bytes.&lt;br /&gt;
|func_footer&lt;br /&gt;
|spec=&lt;br /&gt;
&lt;br /&gt;
;Mono:Gets the memory limit for the script.&lt;br /&gt;
* The memory limit can be up to 64k.&lt;br /&gt;
* The default memory limit is 64k{{Footnote|Prior to scripts being able to set their own limit, the limit was set to 64k}}.&lt;br /&gt;
* The memory limit is not the amount of real memory actually used by the script, just the upper limit on how much it could use.&lt;br /&gt;
&lt;br /&gt;
;LSO:LSO scripts will always use exactly 16k&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit( 4000 ); // set the memory limit&lt;br /&gt;
        &lt;br /&gt;
        // display memory usage...&lt;br /&gt;
        llSay(0, &amp;quot;Memory used: &amp;quot; + (string)llGetFreeMemory() + &amp;quot; bytes, total memory: &amp;quot; + &lt;br /&gt;
            (string)llGetMemoryLimit() + &amp;quot; bytes.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// outputs &lt;br /&gt;
// Object: Memory used: 124 bytes, total memory: 4000 bytes.&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetMemoryLimit]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetFreeMemory]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetUsedMemory]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetObjectDetails]]|}}&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=Script Profiler&lt;br /&gt;
|cat4&lt;br /&gt;
|history = Date of Release  [[ Release_Notes/Second_Life_Server/11#11.08.10.238207 | 10/08/2011 ]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetSPMaxMemory&amp;diff=1183665</id>
		<title>LlGetSPMaxMemory</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetSPMaxMemory&amp;diff=1183665"/>
		<updated>2013-11-19T12:49:32Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: Added an example that was a simple rotation script.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=???|func_sleep=0.0|func_energy=???&lt;br /&gt;
|func=llGetSPMaxMemory&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|func_desc&lt;br /&gt;
|Return_text=of the most bytes used while [[LlScriptProfiler]] was last active.&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;
During and after a [[LlScriptProfiler]] profiling run, llGetSPMaxMemory will return the most memory used during profiling.&lt;br /&gt;
&lt;br /&gt;
=== LSO ===&lt;br /&gt;
&lt;br /&gt;
This function has no effect for scripts not compiled to Mono. It will always return 16384, the fixed LSO memory size.&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;// need to run something for the profile to register... &lt;br /&gt;
ScriptRotate()&lt;br /&gt;
{&lt;br /&gt;
    llTargetOmega(&amp;lt;0.5, 0.7, 0.2&amp;gt;, 0.75, 0.75);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetMemoryLimit( 5000 ); // set the memory limit&lt;br /&gt;
        &lt;br /&gt;
        // call up the profiler, execute a method, stop profiler&lt;br /&gt;
        llScriptProfiler( PROFILE_SCRIPT_MEMORY );&lt;br /&gt;
        ScriptRotate(); &lt;br /&gt;
        llScriptProfiler( PROFILE_NONE );&lt;br /&gt;
        &lt;br /&gt;
        // display memory usage...&lt;br /&gt;
        llSay(0, &amp;quot;Memory used: &amp;quot; + (string)llGetSPMaxMemory() + &amp;quot; bytes, total memory: &amp;quot; + &lt;br /&gt;
            (string)llGetMemoryLimit() + &amp;quot; bytes.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// outputs &lt;br /&gt;
// Object: Memory used: 4448 bytes, total memory: 5000 bytes.&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||[[llGetUsedMemory]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetMemoryLimit]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetMemoryLimit]]|}}&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=Script Profiler&lt;br /&gt;
|cat4&lt;br /&gt;
|history = Date of Release  [[ Release_Notes/Second_Life_Server/11#11.06.17.233176 | 17/06/2011 ]]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PARCEL_DETAILS_SEE_AVATARS&amp;diff=1183306</id>
		<title>PARCEL DETAILS SEE AVATARS</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PARCEL_DETAILS_SEE_AVATARS&amp;diff=1183306"/>
		<updated>2013-11-03T02:00:29Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|name={{PAGENAMEE}}&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=6&lt;br /&gt;
|desc=This is a flag used with [[llGetParcelDetails]] to get the &amp;quot;See and chat with residents on this parcel&amp;quot; setting.&lt;br /&gt;
|examples=&amp;lt;LSL&amp;gt;// returns parcel data. &lt;br /&gt;
string getParcelDataRequest() &lt;br /&gt;
{&lt;br /&gt;
    string message; //stores a temp message.&lt;br /&gt;
    &lt;br /&gt;
    // get parcel name and details on if others can see avatars on the parcel from other parcels&lt;br /&gt;
    list parcelData = llGetParcelDetails( llGetPos(), [PARCEL_DETAILS_NAME, PARCEL_DETAILS_SEE_AVATARS] );&lt;br /&gt;
    &lt;br /&gt;
    // name the parcel and prepare the message. &lt;br /&gt;
    message = &amp;quot;Parcel name is: &amp;quot; + llList2String( parcelData, 0 );&lt;br /&gt;
    &lt;br /&gt;
    // determine if people can see avatars (1 = can see, 0 = can&#039;t see)&lt;br /&gt;
    if( llList2String( parcelData, 1 ) == &amp;quot;0&amp;quot; )&lt;br /&gt;
    {&lt;br /&gt;
        message += &amp;quot;, avatars on other parcels can&#039;t see avatars on this parcel.&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // else they can see&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        message +=&amp;quot;, avatars on other parcels can see avatars on this parcel.&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return message;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // calls the method for getting parcel data.&lt;br /&gt;
        llOwnerSay( getParcelDataRequest() );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/LSL&amp;gt;&lt;br /&gt;
|functions={{LSL DefineRow||[[llGetParcelDetails]]}}&lt;br /&gt;
|constants={{!}}{{LSL_Constants/Parcel_Details}}&lt;br /&gt;
|events&lt;br /&gt;
|cat1=Parcel/Details&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=DATA_ONLINE&amp;diff=1183302</id>
		<title>DATA ONLINE</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=DATA_ONLINE&amp;diff=1183302"/>
		<updated>2013-11-02T19:35:15Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|inject-1={{Issues/SVC-6831}}&lt;br /&gt;
|name=DATA_ONLINE&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=1&lt;br /&gt;
|desc=Used with [[llRequestAgentData]] to return a string that contains the integer boolean for if the user is online (or not). [[TRUE]] if online, [[FALSE]] if offline.&lt;br /&gt;
|pa=&lt;br /&gt;
|text=&lt;br /&gt;
|pb=&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;key queryID; // the id key &lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        key id = llGetOwner(); // get the owner key&lt;br /&gt;
        queryID = llRequestAgentData( id, DATA_ONLINE ); // returns if the owner is online or not&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    dataserver( key query, string info )&lt;br /&gt;
    {&lt;br /&gt;
        // find the correct query id&lt;br /&gt;
        if( query == queryID )&lt;br /&gt;
        {&lt;br /&gt;
            string message;&lt;br /&gt;
            &lt;br /&gt;
            // convert the info to an actual message&lt;br /&gt;
            if( info == &amp;quot;1&amp;quot; ) &lt;br /&gt;
            {&lt;br /&gt;
                message = &amp;quot;Online&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            else if( info == &amp;quot;0&amp;quot; )&lt;br /&gt;
            {&lt;br /&gt;
                message = &amp;quot;Offline&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            // display that they are online or offline in owner say.&lt;br /&gt;
            llOwnerSay( &amp;quot;The owner of this object is: &amp;quot; + message );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
{{!}}&lt;br /&gt;
{{{!}} {{Prettytable|style=margin-top:0;margin-right:0;}}&lt;br /&gt;
{{LSL_Constants/llRequestAgentData}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llRequestAgentData]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
{{LSL DefineRow||[[dataserver]]|}}&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=DATA_SIM_STATUS&amp;diff=1183166</id>
		<title>DATA SIM STATUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=DATA_SIM_STATUS&amp;diff=1183166"/>
		<updated>2013-10-30T18:31:21Z</updated>

		<summary type="html">&lt;p&gt;KiraCodie Resident: This is to provide an example of DATA_SIM_STATUS for people to see how to use it.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|name=DATA_SIM_STATUS&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=6&lt;br /&gt;
|desc=Returns one of these strings.&lt;br /&gt;
* &amp;quot;up&amp;quot;: simulator currently up and running&lt;br /&gt;
* &amp;quot;down&amp;quot;: simulator currently down&lt;br /&gt;
* &amp;quot;starting&amp;quot;: simulator currently starting&lt;br /&gt;
* &amp;quot;stopping&amp;quot;: simulator currently stopping&lt;br /&gt;
* &amp;quot;crashed&amp;quot;: simulator has crashed&lt;br /&gt;
* &amp;quot;unknown&amp;quot;: simulator status unknown or unknown simulator&lt;br /&gt;
|pa=&lt;br /&gt;
|text=&lt;br /&gt;
|pb=&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;key queryData;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    // querry immediately for simulator data on current status of sim.&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        queryData = llRequestSimulatorData( llGetRegionName(), DATA_SIM_STATUS );&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // if another owner or the region changes where the script operates in reset script&lt;br /&gt;
    changed( integer isChanged )&lt;br /&gt;
    {&lt;br /&gt;
        if( isChanged &amp;amp; CHANGED_REGION )&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if( isChanged &amp;amp; CHANGED_OWNER )&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // how to handle the query information.&lt;br /&gt;
    dataserver( key queryID, string info )&lt;br /&gt;
    {&lt;br /&gt;
        if( queryID == queryData )&lt;br /&gt;
        {&lt;br /&gt;
            // output to upper case characters the current state of the sim. &lt;br /&gt;
            llOwnerSay( &amp;quot;This region is currently: &amp;quot; + llToUpper(info) );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|constants=&lt;br /&gt;
&amp;lt;!--{{LSL ConstRow|PAYMENT_INFO_ON_FILE}}--&amp;gt;&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llRequestSimulatorData]]|}}&lt;br /&gt;
|events=&lt;br /&gt;
&amp;lt;!--{{LSL DefineRow||[[changed]]|}}--&amp;gt;&lt;br /&gt;
|location&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>KiraCodie Resident</name></author>
	</entry>
</feed>