<?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=Placid+Kidd</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=Placid+Kidd"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Placid_Kidd"/>
	<updated>2026-05-25T02:07:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24967</id>
		<title>LlListenRemove</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24967"/>
		<updated>2007-07-06T02:48:03Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=27|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llListenRemove|p1_type=integer|p1_name=number&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Removes listen event callback &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are removed.&lt;br /&gt;
**A state change can be used as a shortcut to releasing all listens in the script.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
integer olf;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    //Repeats one line of text then stops listening&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        olf=llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(message);&lt;br /&gt;
        llListenRemove(olf);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llListen]]}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]}}&lt;br /&gt;
|also_events={{LSL DefineRow|[[listen]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=ListenRemove&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24966</id>
		<title>LlListenRemove</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24966"/>
		<updated>2007-07-06T02:47:26Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: less spammy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=27|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llListenRemove|p1_type=integer|p1_name=number&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Removes listen event callback &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are removed.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
integer olf;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    //Repeats one line of text then stops listening&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        olf=llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(message);&lt;br /&gt;
        llListenRemove(olf);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llListen]]}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]}}&lt;br /&gt;
|also_events={{LSL DefineRow|[[listen]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=ListenRemove&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetLinkPrimitiveParams&amp;diff=24965</id>
		<title>LlSetLinkPrimitiveParams</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetLinkPrimitiveParams&amp;diff=24965"/>
		<updated>2007-07-06T02:44:32Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: comment on lack of llGetLinkPrimitiveParams&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function/link|linknumber}}{{LSL Function&lt;br /&gt;
|func_id=328|func_sleep=0.2|func_energy=10.0&lt;br /&gt;
|func=llSetLinkPrimitiveParams|sort=SetLinkPrimitiveParams&lt;br /&gt;
|p1_type=integer|p1_name=linknumber&lt;br /&gt;
|p2_type=list|p2_name=rules&lt;br /&gt;
|func_desc=Set primitive parameters for &#039;&#039;&#039;linknumber&#039;&#039;&#039; based on &#039;&#039;&#039;rules&#039;&#039;&#039;.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=* Applying an operation to [[LINK_SET]] is applied first to the root prim, then to each child prim.&lt;br /&gt;
*There is currently no corresponding [[llGetLinkPrimitiveParams]].&lt;br /&gt;
**The only way to get many parameters from linked prims is to put a separate script in each child and use [[llMessageLinked|linked messages]].&lt;br /&gt;
|constants={{LSL Constants/PrimitiveParams|set|remote=true}}&lt;br /&gt;
|examples&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|Set many primitive parameters}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|Get many primitive parameters}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkAlpha]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkColor]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkTexture]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=Movement&lt;br /&gt;
|cat3=Status&lt;br /&gt;
|cat4=Texture&lt;br /&gt;
|cat5=Object&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24964</id>
		<title>LlMoveToTarget</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24964"/>
		<updated>2007-07-06T02:38:47Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function/damping|tau}}{{LSL_Function&lt;br /&gt;
|func_id=70|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMoveToTarget&lt;br /&gt;
|p1_type=vector|p1_name=target|p1_desc=[[Viewer coordinate frames#Region|region]] position&lt;br /&gt;
|p2_type=float|p2_name=tau&lt;br /&gt;
|func_footnote=To stop the object from maintaining the &#039;&#039;&#039;target&#039;&#039;&#039; positions use {{LSLG|llStopMoveToTarget}}&amp;lt;br/&amp;gt;&lt;br /&gt;
To change the rotation in the same manner use {{LSLG|llLookAt}} or {{LSLG|llRotLookAt}}.&lt;br /&gt;
|func_desc=Critically damp to &#039;&#039;&#039;target&#039;&#039;&#039; in &#039;&#039;&#039;tau&#039;&#039;&#039; seconds (if the script is physical)&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=Drop this script in a prim to have it follow the prim owner.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        // Little pause to allow server to make potentially large linked object physical.&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.4);&lt;br /&gt;
        // Look for owner within 20 metres in 360 degree arc every 1 seconds.&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, llGetOwner(), AGENT, 20.0, PI,1.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        // Get position of detected owner&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        // Offset back one metre in X and up one metre in Z based on world coordinates.&lt;br /&gt;
        // Offset relative to owner is possible but beyond the scope of this example.&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.4);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=*{{LSLG|llStopMoveToTarget}}&lt;br /&gt;
*{{LSLG|llLookAt}}&lt;br /&gt;
*{{LSLG|llRotLookAt}}&lt;br /&gt;
*{{LSLG|llTarget}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3=Movement&lt;br /&gt;
|cat4=Target&lt;br /&gt;
|cat5&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24963</id>
		<title>LlMoveToTarget</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24963"/>
		<updated>2007-07-06T02:38:25Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: add intro for example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function/damping|tau}}{{LSL_Function&lt;br /&gt;
|func_id=70|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMoveToTarget&lt;br /&gt;
|p1_type=vector|p1_name=target|p1_desc=[[Viewer coordinate frames#Region|region]] position&lt;br /&gt;
|p2_type=float|p2_name=tau&lt;br /&gt;
|func_footnote=To stop the object from maintaining the &#039;&#039;&#039;target&#039;&#039;&#039; positions use {{LSLG|llStopMoveToTarget}}&amp;lt;br/&amp;gt;&lt;br /&gt;
To change the rotation in the same manner use {{LSLG|llLookAt}} or {{LSLG|llRotLookAt}}.&lt;br /&gt;
|func_desc=Critically damp to &#039;&#039;&#039;target&#039;&#039;&#039; in &#039;&#039;&#039;tau&#039;&#039;&#039; seconds (if the script is physical)&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=Drop this script in a prim to have to it follow the prim owner.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        // Little pause to allow server to make potentially large linked object physical.&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.4);&lt;br /&gt;
        // Look for owner within 20 metres in 360 degree arc every 1 seconds.&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, llGetOwner(), AGENT, 20.0, PI,1.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        // Get position of detected owner&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        // Offset back one metre in X and up one metre in Z based on world coordinates.&lt;br /&gt;
        // Offset relative to owner is possible but beyond the scope of this example.&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.4);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=*{{LSLG|llStopMoveToTarget}}&lt;br /&gt;
*{{LSLG|llLookAt}}&lt;br /&gt;
*{{LSLG|llRotLookAt}}&lt;br /&gt;
*{{LSLG|llTarget}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3=Movement&lt;br /&gt;
|cat4=Target&lt;br /&gt;
|cat5&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24962</id>
		<title>LlMoveToTarget</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlMoveToTarget&amp;diff=24962"/>
		<updated>2007-07-06T02:35:52Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: replace fairly useless example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Function/damping|tau}}{{LSL_Function&lt;br /&gt;
|func_id=70|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llMoveToTarget&lt;br /&gt;
|p1_type=vector|p1_name=target|p1_desc=[[Viewer coordinate frames#Region|region]] position&lt;br /&gt;
|p2_type=float|p2_name=tau&lt;br /&gt;
|func_footnote=To stop the object from maintaining the &#039;&#039;&#039;target&#039;&#039;&#039; positions use {{LSLG|llStopMoveToTarget}}&amp;lt;br/&amp;gt;&lt;br /&gt;
To change the rotation in the same manner use {{LSLG|llLookAt}} or {{LSLG|llRotLookAt}}.&lt;br /&gt;
|func_desc=Critically damp to &#039;&#039;&#039;target&#039;&#039;&#039; in &#039;&#039;&#039;tau&#039;&#039;&#039; seconds (if the script is physical)&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        // Little pause to allow server to make potentially large linked object physical.&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.4);&lt;br /&gt;
        // Look for owner within 20 metres in 360 degree arc every 1 seconds.&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, llGetOwner(), AGENT, 20.0, PI,1.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        // Get position of detected owner&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        // Offset back one metre in X and up one metre in Z based on world coordinates.&lt;br /&gt;
        // Offset relative to owner is possible but beyond the scope of this example.&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.4);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=*{{LSLG|llStopMoveToTarget}}&lt;br /&gt;
*{{LSLG|llLookAt}}&lt;br /&gt;
*{{LSLG|llRotLookAt}}&lt;br /&gt;
*{{LSLG|llTarget}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3=Movement&lt;br /&gt;
|cat4=Target&lt;br /&gt;
|cat5&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24961</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24961"/>
		<updated>2007-07-06T02:32:11Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: remove junk about follow distance because it is entirely incorrect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script is based on an extract from the Batman Follower v1.2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        // Little pause to allow server to make potentially large linked object physical.&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.4);&lt;br /&gt;
        // Look for owner within 20 metres in 360 degree arc every 1 seconds.&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, llGetOwner(), AGENT, 20.0, PI,1.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        // Get position of detected owner&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        // Offset back one metre in X and up one metre in Z based on world coordinates.&lt;br /&gt;
        // Offset relative to owner is possible but beyond the scope of this example.&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.4);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Follower}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24960</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24960"/>
		<updated>2007-07-06T02:27:23Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: spell out llSensorRepeat parameters and more comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3 m to .1 m.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        // Little pause to allow server to make potentially large linked object physical.&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.2);&lt;br /&gt;
        // Look for owner within 20 metres in 360 degree arc every 1 seconds.&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, llGetOwner(), AGENT, 20.0, PI,1.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        // Get position of detected owner&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        // Offset back one metre in X and up one metre in Z based on world coordinates.&lt;br /&gt;
        // Offset relative to owner is possible but beyond the scope of this example.&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.2);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Follower}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24959</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=24959"/>
		<updated>2007-07-06T02:17:41Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: remove entirely incorrect description of llMoveToTarget parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This script was extracted from the Batman Follower v1.2, but the following distance was changed from .3 m to .1 m.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llGetPos();&lt;br /&gt;
        llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
        llSleep(0.1);&lt;br /&gt;
        llMoveToTarget(pos,0.1);&lt;br /&gt;
        key id = llGetOwner();&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, id, AGENT, 96.0, PI, 0.4);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        vector pos = llDetectedPos(0);&lt;br /&gt;
        vector offset =&amp;lt;-1,0,1&amp;gt;;&lt;br /&gt;
        pos+=offset;&lt;br /&gt;
        llMoveToTarget(pos,0.0);     &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library|Follower}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24958</id>
		<title>LlListen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24958"/>
		<updated>2007-07-06T02:00:54Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: note limitation of negative channel number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llListen&lt;br /&gt;
|sort=Listen&lt;br /&gt;
|func_id=25|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=that can be used to deactivate or remove the listen.&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=any valid integer, positive or negative.&lt;br /&gt;
|p2_type=string|p2_name=name&lt;br /&gt;
|p3_type=key|p3_name=id&lt;br /&gt;
|p4_type=string|p4_name=msg&lt;br /&gt;
|func_desc=Sets a callback for &#039;&#039;&#039;msg&#039;&#039;&#039; on &#039;&#039;&#039;channel&#039;&#039;&#039; from &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;msg&#039;&#039;&#039;, &#039;&#039;&#039;name&#039;&#039;&#039; or &#039;&#039;&#039;id&#039;&#039;&#039; are blank they are not used to filter incoming messages.&amp;lt;br/&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or a {{LSLG|NULL_KEY|null key}}, it is considered blank.&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG|llListenRemove}}|Removes a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llListenControl}}|Enables/Disables a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llWhisper}}|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llSay}}|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llShout}}|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_events={{LSL DefineRow||{{LSLG|listen}}|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are released.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
*Only 64 listens can simultaneously be open in any single script.&lt;br /&gt;
**If this number is exceeded an error is shouted.&lt;br /&gt;
*Avoid channel 0 and set name or id where possible to avoid lag. ([http://rpgstats.com/wiki/index.php?title=Lag Lag])&lt;br /&gt;
**llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;) is extremely laggy as it listens to all chat from everyone in chat range and should be avoided at all cost.&lt;br /&gt;
*Negative channel numbers can only be used for inter object communication (and are preferable in that case).&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message )&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|specs&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24957</id>
		<title>LlListen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24957"/>
		<updated>2007-07-06T01:58:25Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llListen&lt;br /&gt;
|sort=Listen&lt;br /&gt;
|func_id=25|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=that can be used to deactivate or remove the listen.&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=any valid integer, positive or negative.&lt;br /&gt;
|p2_type=string|p2_name=name&lt;br /&gt;
|p3_type=key|p3_name=id&lt;br /&gt;
|p4_type=string|p4_name=msg&lt;br /&gt;
|func_desc=Sets a callback for &#039;&#039;&#039;msg&#039;&#039;&#039; on &#039;&#039;&#039;channel&#039;&#039;&#039; from &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;msg&#039;&#039;&#039;, &#039;&#039;&#039;name&#039;&#039;&#039; or &#039;&#039;&#039;id&#039;&#039;&#039; are blank they are not used to filter incoming messages.&amp;lt;br/&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or a {{LSLG|NULL_KEY|null key}}, it is considered blank.&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG|llListenRemove}}|Removes a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llListenControl}}|Enables/Disables a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llWhisper}}|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llSay}}|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llShout}}|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_events={{LSL DefineRow||{{LSLG|listen}}|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are released.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
*Only 64 listens can simultaneously be open in any single script.&lt;br /&gt;
**If this number is exceeded an error is shouted.&lt;br /&gt;
*Avoid channel 0 and set name or id where possible to avoid lag. ([http://rpgstats.com/wiki/index.php?title=Lag Lag])&lt;br /&gt;
**llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;) is extremely laggy as it listens to all chat from everyone in chat range and should be avoided at all cost.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message )&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|specs&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24956</id>
		<title>LlListen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24956"/>
		<updated>2007-07-06T01:56:54Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: move anti lag suggestion to caveats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llListen&lt;br /&gt;
|sort=Listen&lt;br /&gt;
|func_id=25|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=that can be used to deactivate or remove the listen.&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=any valid integer, positive or negative.&lt;br /&gt;
|p2_type=string|p2_name=name&lt;br /&gt;
|p3_type=key|p3_name=id&lt;br /&gt;
|p4_type=string|p4_name=msg&lt;br /&gt;
|func_desc=Sets a callback for &#039;&#039;&#039;msg&#039;&#039;&#039; on &#039;&#039;&#039;channel&#039;&#039;&#039; from &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;msg&#039;&#039;&#039;, &#039;&#039;&#039;name&#039;&#039;&#039; or &#039;&#039;&#039;id&#039;&#039;&#039; are blank there are not used to filter incoming messages.&amp;lt;br/&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or a {{LSLG|NULL_KEY|null key}}, it is considered blank.&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG|llListenRemove}}|Removes a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llListenControl}}|Enables/Disables a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llWhisper}}|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llSay}}|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llShout}}|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_events={{LSL DefineRow||{{LSLG|listen}}|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are released.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
*Only 64 listens can simultaneously be open in any single script.&lt;br /&gt;
**If this number is exceeded an error is shouted.&lt;br /&gt;
*Avoid channel 0 and set name or id where possible to avoid lag. ([http://rpgstats.com/wiki/index.php?title=Lag Lag])&lt;br /&gt;
**llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;) is extremely laggy as it listens to all chat from everyone in chat range and should be avoided at all cost.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message )&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|specs&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24955</id>
		<title>LlListen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24955"/>
		<updated>2007-07-06T01:53:54Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: add example from listen for completeness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llListen&lt;br /&gt;
|sort=Listen&lt;br /&gt;
|func_id=25|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=that can be used to deactivate or remove the listen.&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=any valid integer, positive or negative.&lt;br /&gt;
|p2_type=string|p2_name=name&lt;br /&gt;
|p3_type=key|p3_name=id&lt;br /&gt;
|p4_type=string|p4_name=msg&lt;br /&gt;
|func_desc=Sets a callback for &#039;&#039;&#039;msg&#039;&#039;&#039; on &#039;&#039;&#039;channel&#039;&#039;&#039; from &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;msg&#039;&#039;&#039;, &#039;&#039;&#039;name&#039;&#039;&#039; or &#039;&#039;&#039;id&#039;&#039;&#039; are blank there are not used to filter incoming messages.&amp;lt;br/&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or a {{LSLG|NULL_KEY|null key}}, it is considered blank.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://rpgstats.com/wiki/index.php?title=Lag Lag] tip: Avoid channel 0 and set name or id where possible. llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;) is extremely laggy and should be avoided at all cost.&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG|llListenRemove}}|Removes a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llListenControl}}|Enables/Disables a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llWhisper}}|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llSay}}|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llShout}}|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_events={{LSL DefineRow||{{LSLG|listen}}|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are released.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
*Only 64 listens can simultaneously be open in any single script.&lt;br /&gt;
**If this number is exceeded an error is shouted.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message )&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|specs&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:Articles_in_need_of_example&amp;diff=24954</id>
		<title>Category:Articles in need of example</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:Articles_in_need_of_example&amp;diff=24954"/>
		<updated>2007-07-06T01:49:23Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Category:Articles_in_need_of_example&amp;diff=24953</id>
		<title>Category:Articles in need of example</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Category:Articles_in_need_of_example&amp;diff=24953"/>
		<updated>2007-07-06T01:47:17Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: New category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following articles need an example to make them more useful to your fellow Residents.&lt;br /&gt;
&lt;br /&gt;
Please read through them and improve them if you can lend a hand.&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Placid_Kidd&amp;diff=24952</id>
		<title>User:Placid Kidd</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Placid_Kidd&amp;diff=24952"/>
		<updated>2007-07-06T01:43:20Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: New page: Proficient scripter specialising in low lag, low spam scripting solutions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proficient scripter specialising in low lag, low spam scripting solutions.&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:LlListenControl&amp;diff=24951</id>
		<title>Talk:LlListenControl</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:LlListenControl&amp;diff=24951"/>
		<updated>2007-07-06T01:42:30Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: why?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Why does this function exist? Can it be saving much on doing a llListenRemove then new llListen? [[User:Placid Kidd|Placid Kidd]] 18:42, 5 July 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24950</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24950"/>
		<updated>2007-07-06T01:39:21Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change or [[llResetScript|script reset]] all listens are [[llListenRemove|removed]].&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself until the script is reset. The scripter can catch this scenario per the example below.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message )&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24949</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24949"/>
		<updated>2007-07-06T01:37:36Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: link some references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change or [[llResetScript|script reset]] all listens are [[llListenRemove|removed]].&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself until the script is reset. The scripter can catch this scenario per the example below.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24948</id>
		<title>LlListenRemove</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListenRemove&amp;diff=24948"/>
		<updated>2007-07-06T01:36:24Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=27|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llListenRemove|p1_type=integer|p1_name=number&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Removes listen event callback &#039;&#039;&#039;number&#039;&#039;&#039;&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are removed.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
integer olf;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    //Repeats one line of text then stops listening&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        olf=llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer channel, string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, message);&lt;br /&gt;
        llListenRemove(olf);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llListen]]}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]}}&lt;br /&gt;
|also_events={{LSL DefineRow|[[listen]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|sort=ListenRemove&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24947</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24947"/>
		<updated>2007-07-06T01:32:00Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: clarify owner change effect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change all listens are released (on script reset as well).&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself until the script is reset. The scripter can catch this scenario per the example below.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object containing this script changes owner.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24946</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24946"/>
		<updated>2007-07-06T01:29:49Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: streamline caveats and example leadin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change all listens are released (on script reset as well).&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself until the script is reset. The scripter can catch this scenario per the example below.&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond once. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by chatting on an alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object has been sold as &amp;quot;original&amp;quot; from in world.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24945</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24945"/>
		<updated>2007-07-06T01:27:27Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: improve example to be more resource friendly and less spammy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change all listens are released (on script reset as well).&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself. The scripter needs to capture this event ([[on_rez]] and [[CHANGED_OWNER]]).&lt;br /&gt;
|examples=&lt;br /&gt;
Trivial example to listen to any chat from the object owner and respond. To reduce lag and avoid spamming surrounding users, it is vastly preferable to listen on channels other than 0 and to trigger the listen event by talking on the alternative channel such as &#039;/5 hello&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep to owner the first time owner says something in main chat;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {   //Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        // Change 0 to another positive number to listen for &#039;/5 hello&#039; style of chat.&lt;br /&gt;
        listen_handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
        // Stop listening until script is reset&lt;br /&gt;
        llListenRemove(listen_handle);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {   //Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {   //Triggered when the object has been sold as &amp;quot;original&amp;quot; from in world.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24942</id>
		<title>Listen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Listen&amp;diff=24942"/>
		<updated>2007-07-06T01:16:34Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: replace llSay(0,... with llOwnerSay(&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event|event_id=12|event_delay&lt;br /&gt;
|event=listen&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=name|p2_desc&lt;br /&gt;
|p3_type=key|p3_name=id|p3_desc&lt;br /&gt;
|p4_type=string|p4_name=message|p4_desc&lt;br /&gt;
|event_desc=Trigged by chat, use {{LSLG|llListen}} to enable and filter&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*On [[state]] change all listens are released (on script reset as well).&lt;br /&gt;
*When an object changes owner any listen registered with [[llGetOwner]] will not automatically update itself. The scripter needs to capture this event ([[on_rez]] and [[CHANGED_OWNER]]).&lt;br /&gt;
|examples=&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep whenever owner says something in main chat;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {//Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {//Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        llResetScript();//By resetting the script on rez it forces the listen to re-register.&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {//Triggered when the object has been sold as &amp;quot;original&amp;quot; from in world.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// says beep whenever owner says something in main chat;&lt;br /&gt;
&lt;br /&gt;
//Does not use a hard reset to re-register it&#039;s listen.&lt;br /&gt;
integer handle;&lt;br /&gt;
&lt;br /&gt;
reset()&lt;br /&gt;
{&lt;br /&gt;
    llListenRemove(handle);&lt;br /&gt;
    handle = llListen(0, &amp;quot;&amp;quot;, llGetOwner(), &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {//Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.&lt;br /&gt;
        reset();&lt;br /&gt;
    }&lt;br /&gt;
    listen( integer channel, string name, key id, string message ){&lt;br /&gt;
        llOwnerSay(&amp;quot;beep&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {//Triggered when the object is rezed, like after the object had been sold from a vendor&lt;br /&gt;
        reset();&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer mask)&lt;br /&gt;
    {//Triggered when the object has been sold as &amp;quot;original&amp;quot; from in world.&lt;br /&gt;
        if(mask &amp;amp; CHANGED_OWNER)&lt;br /&gt;
        {&lt;br /&gt;
            reset();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llListen]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenControl]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llListenRemove]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llDialog]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlInstantMessage&amp;diff=24941</id>
		<title>LlInstantMessage</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlInstantMessage&amp;diff=24941"/>
		<updated>2007-07-06T01:11:20Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: more specific regarding avoiding script delay&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=118|func_sleep=2.0|func_energy=10.0&lt;br /&gt;
|func=llInstantMessage&lt;br /&gt;
|p1_type=key|p1_name=user|p1_desc&lt;br /&gt;
|p2_type=string|p2_name=message|p2_desc&lt;br /&gt;
|func_desc=Sends an Instant Message specified in the string &#039;&#039;&#039;message&#039;&#039;&#039; to the user specified by &#039;&#039;&#039;key&#039;&#039;&#039;.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=**For applications where this is problematic, it&#039;s possible to place the call to llInstantMessage in a child script and pass the information to that script via [[llMessageLinked]].&lt;br /&gt;
*The message sent can not be longer than 1024 bytes.&lt;br /&gt;
|examples=&lt;br /&gt;
Tell the owner somebody touched the object:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
key owner;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        owner=llGetOwner();  // get the key of the objects owner.&lt;br /&gt;
    }&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(owner,llKey2Name(owner)+&amp;quot;, &amp;quot; + (string)total_num +&amp;quot; Avatar(s) touched me!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Send a confirmation to the Avatar that touches an object without spamming other Avatars:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_num)&lt;br /&gt;
    {        &lt;br /&gt;
        llInstantMessage(llDetectedKey(0),&amp;quot;You have been registered!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llOwnerSay]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRegionSay]]|Sends chat region wide}}&lt;br /&gt;
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_events&lt;br /&gt;
|notes=Instant Messaging has the benefit of allowing communication from an object to an avatar anywhere in the Grid. The downside is that an object cannot receive an Instant Message, therefore an avatar cannot send an Instant Message to an object. It&#039;s a one-way communication avenue. Also, the two-second script delay can be considered a downside in some applications.&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Instant Message&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24940</id>
		<title>LlListen</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlListen&amp;diff=24940"/>
		<updated>2007-07-06T00:59:50Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: add anti lag tip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llListen&lt;br /&gt;
|sort=Listen&lt;br /&gt;
|func_id=25|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=that can be used to deactivate or remove the listen.&lt;br /&gt;
|p1_type=integer|p1_name=channel|p1_desc=any valid integer, positive or negative.&lt;br /&gt;
|p2_type=string|p2_name=name&lt;br /&gt;
|p3_type=key|p3_name=id&lt;br /&gt;
|p4_type=string|p4_name=msg&lt;br /&gt;
|func_desc=Sets a callback for &#039;&#039;&#039;msg&#039;&#039;&#039; on &#039;&#039;&#039;channel&#039;&#039;&#039; from &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;msg&#039;&#039;&#039;, &#039;&#039;&#039;name&#039;&#039;&#039; or &#039;&#039;&#039;id&#039;&#039;&#039; are blank there are not used to filter incoming messages.&amp;lt;br/&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or a {{LSLG|NULL_KEY|null key}}, it is considered blank.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://rpgstats.com/wiki/index.php?title=Lag Lag] tip: Avoid channel 0 and set name or id where possible. llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;) is extremely laggy and should be avoided at all cost.&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG|llListenRemove}}|Removes a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llListenControl}}|Enables/Disables a listen}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llWhisper}}|Sends chat limited to 10 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llSay}}|Sends chat limited to 20 meters}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG|llShout}}|Sends chat limited to 100 meters}}&lt;br /&gt;
|also_events={{LSL DefineRow||{{LSLG|listen}}|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|constants={{LSL Constants/Chat}}&lt;br /&gt;
|caveats=*On [[state]] change or script reset all listens are released.&lt;br /&gt;
**A state change can be used as a shortcut to releasing listens.&lt;br /&gt;
*Only 64 listens can simultaneously be open in any single script.&lt;br /&gt;
**If this number is exceeded an error is shouted.&lt;br /&gt;
|specs&lt;br /&gt;
|cat1=Communications&lt;br /&gt;
|cat2=Chat&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSensorRepeat&amp;diff=24939</id>
		<title>LlSensorRepeat</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSensorRepeat&amp;diff=24939"/>
		<updated>2007-07-06T00:55:25Z</updated>

		<summary type="html">&lt;p&gt;Placid Kidd: add suggestion re llVolumeDetect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llSensorRepeat&lt;br /&gt;
|sort=SensorRepeat&lt;br /&gt;
|func_id=29|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|p1_type=string|p1_name=name&lt;br /&gt;
|p2_type=key|p2_name=id&lt;br /&gt;
|p3_type=integer|p3_name=type|p3_desc=mask&lt;br /&gt;
|p4_type=float|p4_name=range&lt;br /&gt;
|p5_type=float|p5_name=arc&lt;br /&gt;
|p6_type=float|p6_name=rate&lt;br /&gt;
|func_footnote=If &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;id&#039;&#039;&#039;, and/or &#039;&#039;&#039;type&#039;&#039;&#039; are empty or 0, they are ignored.&amp;lt;br/&amp;gt;If &#039;&#039;&#039;id&#039;&#039;&#039; is an invalid key or [[NULL_KEY]] it is treated as empty.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
See: [http://www.lslwiki.net/lslwiki/wakka.php?wakka=llSensor llSensor] for an excellent explanation of &#039;&#039;&#039;arc&#039;&#039;&#039;.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://rpgstats.com/wiki/index.php?title=Lag Lag] tip: Consider [[llVolumeDetect]] as a less resource intensive alternative to llSensorRepeat in many cases.&lt;br /&gt;
|func_desc=Performs a single scan for &#039;&#039;&#039;name&#039;&#039;&#039; and &#039;&#039;&#039;id&#039;&#039;&#039; with &#039;&#039;&#039;type&#039;&#039;&#039; within &#039;&#039;&#039;range&#039;&#039;&#039; meters and &#039;&#039;&#039;arc&#039;&#039;&#039; radians of forward vector and repeats every &#039;&#039;&#039;rate&#039;&#039;&#039; seconds.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*The repeat of the sensor event is adversely effected by [[llGetRegionTimeDilation|time dilation]] (lag).&lt;br /&gt;
|constants={{LSL Constants Sensor|type}}&lt;br /&gt;
|examples&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llSensor]]| Runs a sensor once}}&lt;br /&gt;
{{LSL DefineRow||[[llSensorRemove]]| Stops the llSensorRepeat timer}}&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[sensor]]|Triggered when a sensor detects something}}&lt;br /&gt;
{{LSL DefineRow||[[no_sensor]]|Triggered when a sensor detects nothing}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|cat1=Sensor&lt;br /&gt;
|cat2=Detected&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=21711</id>
		<title>Follower script</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Follower_script&amp;diff=21711"/>
		<updated>2007-05-26T03:19:02Z</updated>

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

		<summary type="html">&lt;p&gt;Placid Kidd: add avatar category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=218|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetAgentSize|return_type=vector|p1_type=key|p1_name=id&lt;br /&gt;
|func_footnote=The agent &#039;&#039;&#039;id&#039;&#039;&#039; must be in the same sim as the requesting object.&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=that is the size of the requested avatar by &#039;&#039;&#039;id&#039;&#039;&#039;.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants&lt;br /&gt;
|examples&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetBoundingBox]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetAgentInfo]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llRequestAgentData]]|}}&lt;br /&gt;
|also_events&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|permission&lt;br /&gt;
|negative_index&lt;br /&gt;
|cat1=Agent&lt;br /&gt;
|cat2=Avatar&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Placid Kidd</name></author>
	</entry>
</feed>