<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3AToy_Wylie%2FRLV_Documentation%2Fgetattach</id>
	<title>User:Toy Wylie/RLV Documentation/getattach - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3AToy_Wylie%2FRLV_Documentation%2Fgetattach"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Toy_Wylie/RLV_Documentation/getattach&amp;action=history"/>
	<updated>2026-07-02T08:53:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Toy_Wylie/RLV_Documentation/getattach&amp;diff=962892&amp;oldid=prev</id>
		<title>Toy Wylie: notes section</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Toy_Wylie/RLV_Documentation/getattach&amp;diff=962892&amp;oldid=prev"/>
		<updated>2010-07-09T12:14:33Z</updated>

		<summary type="html">&lt;p&gt;notes section&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:14, 9 July 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|usage=@getattach[:attachmentpoint]=&amp;lt;channel&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|usage=@getattach[:attachmentpoint]=&amp;lt;channel&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|purpose=Gets a list of attachments present on the avatar. The list will be sent as chat to the specified channel. The response is a string of &amp;quot;0&amp;quot; and &amp;quot;1&amp;quot;, &amp;quot;0&amp;quot; meaning, the attachment point is empty, &amp;quot;1&amp;quot; meaning, the attachment point is occupied. The index of the number in the string corresponds to the ATTACH_* constants used in LSL. This means that the first index in the response (index 0) will always be &amp;quot;0&amp;quot;, because there is no attachment point with the number 0. If an attachment point is specified it returns only the status of this single attachment point. No extra &amp;quot;0&amp;quot; will be present here.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|purpose=Gets a list of attachments present on the avatar. The list will be sent as chat to the specified channel. The response is a string of &amp;quot;0&amp;quot; and &amp;quot;1&amp;quot;, &amp;quot;0&amp;quot; meaning, the attachment point is empty, &amp;quot;1&amp;quot; meaning, the attachment point is occupied. The index of the number in the string corresponds to the ATTACH_* constants used in LSL. This means that the first index in the response (index 0) will always be &amp;quot;0&amp;quot;, because there is no attachment point with the number 0. If an attachment point is specified it returns only the status of this single attachment point. No extra &amp;quot;0&amp;quot; will be present here.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &lt;/del&gt;Make sure to have a timeout while waiting for the list to appear, because viewers without RLV won&#039;t answer this query at all.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|notes=* &lt;/ins&gt;Make sure to have a timeout while waiting for the list to appear, because viewers without RLV won&#039;t answer this query at all.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|version=1.10&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|version=1.10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|seealso=getoutfit&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|seealso=getoutfit&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Toy Wylie</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Toy_Wylie/RLV_Documentation/getattach&amp;diff=961872&amp;oldid=prev</id>
		<title>Toy Wylie: first draft</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Toy_Wylie/RLV_Documentation/getattach&amp;diff=961872&amp;oldid=prev"/>
		<updated>2010-07-08T14:47:57Z</updated>

		<summary type="html">&lt;p&gt;first draft&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Template:RLV_Documentation/Command&lt;br /&gt;
|command=@getattach|type=General&lt;br /&gt;
|usage=@getattach[:attachmentpoint]=&amp;lt;channel&amp;gt;&lt;br /&gt;
|purpose=Gets a list of attachments present on the avatar. The list will be sent as chat to the specified channel. The response is a string of &amp;quot;0&amp;quot; and &amp;quot;1&amp;quot;, &amp;quot;0&amp;quot; meaning, the attachment point is empty, &amp;quot;1&amp;quot; meaning, the attachment point is occupied. The index of the number in the string corresponds to the ATTACH_* constants used in LSL. This means that the first index in the response (index 0) will always be &amp;quot;0&amp;quot;, because there is no attachment point with the number 0. If an attachment point is specified it returns only the status of this single attachment point. No extra &amp;quot;0&amp;quot; will be present here.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Make sure to have a timeout while waiting for the list to appear, because viewers without RLV won&amp;#039;t answer this query at all.&lt;br /&gt;
|version=1.10&lt;br /&gt;
|seealso=getoutfit&lt;br /&gt;
|seealsoalso=&lt;br /&gt;
|example=&amp;lt;lsl&amp;gt;integer channel;&lt;br /&gt;
integer listener;&lt;br /&gt;
&lt;br /&gt;
list attachmentPoints=&lt;br /&gt;
[&lt;br /&gt;
    &amp;quot;chest&amp;quot;,&amp;quot;skull&amp;quot;,&amp;quot;left shoulder&amp;quot;,&amp;quot;right shoulder&amp;quot;,&amp;quot;left hand&amp;quot;,&lt;br /&gt;
    &amp;quot;right hand&amp;quot;,&amp;quot;left foot&amp;quot;,&amp;quot;right foot&amp;quot;,&amp;quot;spine&amp;quot;,&amp;quot;pelvis&amp;quot;,&amp;quot;mouth&amp;quot;,&lt;br /&gt;
    &amp;quot;chin&amp;quot;,&amp;quot;left ear&amp;quot;,&amp;quot;right ear&amp;quot;,&amp;quot;left eyeball&amp;quot;,&amp;quot;right eyeball&amp;quot;,&amp;quot;nose&amp;quot;,&lt;br /&gt;
    &amp;quot;r upper arm&amp;quot;,&amp;quot;r forearm&amp;quot;,&amp;quot;l upper arm&amp;quot;,&amp;quot;l forearm&amp;quot;,&amp;quot;right hip&amp;quot;,&lt;br /&gt;
    &amp;quot;r upper leg&amp;quot;,&amp;quot;r lower leg&amp;quot;,&amp;quot;left hip&amp;quot;,&amp;quot;l upper leg&amp;quot;,&amp;quot;l lower leg&amp;quot;,&lt;br /&gt;
    &amp;quot;stomach&amp;quot;,&amp;quot;left pec&amp;quot;,&amp;quot;right pec&amp;quot;,&amp;quot;center 2&amp;quot;,&amp;quot;top right&amp;quot;,&amp;quot;top&amp;quot;,&lt;br /&gt;
    &amp;quot;top left&amp;quot;,&amp;quot;center&amp;quot;,&amp;quot;bottom left&amp;quot;,&amp;quot;bottom&amp;quot;,&amp;quot;bottom right&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
removeListener()&lt;br /&gt;
{&lt;br /&gt;
    if(listener!=0)&lt;br /&gt;
    {&lt;br /&gt;
        llListenRemove(listener);&lt;br /&gt;
        listener=0;&lt;br /&gt;
    }&lt;br /&gt;
    llSetTimerEvent(0.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;
        listener=0;&lt;br /&gt;
        llOwnerSay(&amp;quot;Touch me to find out which attachment points are occupied.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        if(listener!=0)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;We are already looking for attachments. Please wait for the scan to finish.&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        channel=(integer) (llFrand(100000)+100000);&lt;br /&gt;
        listener=llListen(channel,&amp;quot;&amp;quot;,llDetectedKey(0),&amp;quot;&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(5.0);&lt;br /&gt;
        llOwnerSay(&amp;quot;Scanning for attachments ...&amp;quot;);&lt;br /&gt;
        llOwnerSay(&amp;quot;@getattach=&amp;quot;+(string) channel);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    listen(integer channel,string name,key sender,string message)&lt;br /&gt;
    {&lt;br /&gt;
        removeListener();&lt;br /&gt;
        integer index;&lt;br /&gt;
        integer len=llGetListLength(attachmentPoints);&lt;br /&gt;
        // start with 1 because index 0 is not used&lt;br /&gt;
        for(index=1;index&amp;lt;len;index++)&lt;br /&gt;
        {&lt;br /&gt;
            if(llGetSubString(message,index,index)==&amp;quot;1&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                string name=llList2String(attachmentPoints,index-1);&lt;br /&gt;
                llOwnerSay(&amp;quot;Attachment point &amp;#039;&amp;quot;+name+&amp;quot;&amp;#039; is occupied.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        llOwnerSay(&amp;quot;Scan complete.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        removeListener();&lt;br /&gt;
        llOwnerSay(&amp;quot;Scan timeout. You are probably not using RLV.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Toy Wylie</name></author>
	</entry>
</feed>