<?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=CharlieA+Nightfire</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=CharlieA+Nightfire"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/CharlieA_Nightfire"/>
	<updated>2026-07-28T03:56:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Phantom_Child&amp;diff=1185684</id>
		<title>Phantom Child</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Phantom_Child&amp;diff=1185684"/>
		<updated>2013-12-25T12:20:45Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|Phantom Child}}&lt;br /&gt;
{{LSL Header}}&lt;br /&gt;
{{LSL Tip|The examples listed below are &#039;&#039;&#039;NOT NEEDED&#039;&#039;&#039; anymore. This page is being kept for archiving purposes. Instead please set the [[PRIM_PHYSICS_SHAPE_TYPE]] to [[PRIM_PHYSICS_SHAPE_NONE]] for all child prims you want to set a phantom effect for.}}&lt;br /&gt;
= Phantom Child =&lt;br /&gt;
&lt;br /&gt;
This easy to use code when put into a child prim of a linkset will make that child and only that child phantom, even when taken into inventory and re-rezzed. You can use multiple copies of this script to make multiple children of a linkset phantom.&lt;br /&gt;
 &lt;br /&gt;
This code relies on a bug in Second Life and may not function in later versions (Currently working in server 1.36). This script was created in part by [[User:Aeron Kohime|Aeron Kohime]] and documents this useful bug (which like invis-prims, has countless applications).&lt;br /&gt;
&lt;br /&gt;
You may use the following script in any manner you like, excluding claiming you made it and individually reselling it without change in function (its on the Wiki silly). Otherwise you can sell it as part of a product, modify it, remove my comments, etc etc.&lt;br /&gt;
&lt;br /&gt;
It needs to be reset on sim restarts. A reliable solution is included in all these scripts. Checking [[llGetTime]] and a timer could be used but, is a more &amp;quot;expensive&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;//Phantom Child Script by Aeron Kohime&lt;br /&gt;
//WARNING: When used on the root prim it makes the entire object phantom, it&lt;br /&gt;
//         also does not function correctly on tortured prims. (Sorry.)&lt;br /&gt;
//Reset on Sim restart added by Void Singer&lt;br /&gt;
//Strife Onizuka was here doing simplification&lt;br /&gt;
//Reset on collision added by Taff Nouvelle (my stairs kept reverting)&lt;br /&gt;
//Psi Merlin updated CHANGED_REGION_START (live as of Server 1.27)&lt;br /&gt;
//New function code added by Taff Nouvelle December 15th.&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX,&lt;br /&gt;
            0, &amp;lt;0,1,0&amp;gt;, 0, &amp;lt;0,0,0&amp;gt;, &amp;lt;1,1,0&amp;gt;, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
            PRIM_FLEXIBLE, TRUE, 0, 0, 0, 0, 0, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
            PRIM_TYPE] + llGetPrimitiveParams([PRIM_TYPE]));&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    on_rez(integer s) {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    //-- This event/test will reset the script on sim restart.&lt;br /&gt;
    changed (integer vBitChanges){&lt;br /&gt;
        if (CHANGED_REGION_START &amp;amp; vBitChanges){&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    collision_start(integer num_detected){&lt;br /&gt;
        llResetScript();&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Switchable ==&lt;br /&gt;
&lt;br /&gt;
Addition to the above script, a switchable version that could be useful for a phantom door.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;//Phantom Child Script by Aeron Kohime&lt;br /&gt;
//WARNING: When used on the root prim it makes the entire object phantom, it&lt;br /&gt;
//         also does not function correctly on tortured prims. (Sorry.)&lt;br /&gt;
//Reset on Sim restart added by Void Singer&lt;br /&gt;
//Strife Onizuka was here doing simplification&lt;br /&gt;
//Phantom door idea added by Taff Nouvelle&lt;br /&gt;
//Psi Merlin updated CHANGED_REGION_START (live as of Server 1.27)&lt;br /&gt;
&lt;br /&gt;
integer a = 1;&lt;br /&gt;
  &lt;br /&gt;
default&lt;br /&gt;
 {&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
    a*=-1;&lt;br /&gt;
    if(a == 1)&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX,&lt;br /&gt;
            0, &amp;lt;0,1,0&amp;gt;, 0, &amp;lt;0,0,0&amp;gt;, &amp;lt;1,1,0&amp;gt;, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
            PRIM_FLEXIBLE, TRUE, 0, 0, 0, 0, 0, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
            PRIM_TYPE] + llGetPrimitiveParams([PRIM_TYPE])); &lt;br /&gt;
            llOwnerSay (&amp;quot;Phantom&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_PHANTOM, FALSE]);&lt;br /&gt;
        llOwnerSay (&amp;quot;Solid&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
    on_rez(integer s) {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    changed (integer vBitChanges){&lt;br /&gt;
        if (CHANGED_REGION_START &amp;amp; vBitChanges){&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Functions ==&lt;br /&gt;
&lt;br /&gt;
New functions brought in with MESH now make setting a child prim to phantom very simple.&lt;br /&gt;
This can be applied to any number of prims in the linkset, but not the root prim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(LINK_THIS,[ PRIM_PHYSICS_SHAPE_TYPE,PRIM_PHYSICS_SHAPE_NONE]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
Unlike the versions above, this version will work with ANY prim type (torus, tube, box, sculpt etc.) with ANY shaping parameters (twist, hollow, taper, slice, dimple etc.) and ANY texturing applied (glow, texture, fullbright, color etc.) without changing those parameters. In other words... This version works in ALL cases without error (At least I&#039;m pretty sure it does ). The downside being a greater memory use and slower run time (Although this is negligible) for complex (tortured) prims. Should only be used on child prims.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;list PRIM_PHANTOM_HACK = [&lt;br /&gt;
    PRIM_FLEXIBLE, 1, 0, 0.0, 0.0, 0.0, 0.0, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
    PRIM_FLEXIBLE, 0, 0, 0.0, 0.0, 0.0, 0.0, &amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
&lt;br /&gt;
list Params()&lt;br /&gt;
{&lt;br /&gt;
    list result = [];&lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    integer face = 0;&lt;br /&gt;
    list src = llGetPrimitiveParams([PRIM_TEXTURE, ALL_SIDES]);&lt;br /&gt;
    integer len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_TEXTURE, face] + llList2List(src, i, (i + 3));&lt;br /&gt;
        face++;&lt;br /&gt;
        i += 4;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
    &lt;br /&gt;
    i = 0;&lt;br /&gt;
    face = 0;&lt;br /&gt;
    src = llGetPrimitiveParams([PRIM_COLOR, ALL_SIDES]);&lt;br /&gt;
    len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_COLOR, face] + llList2List(src, i, (i + 1));&lt;br /&gt;
        face++;&lt;br /&gt;
        i += 2;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
    &lt;br /&gt;
    i = 0;&lt;br /&gt;
    face = 0;&lt;br /&gt;
    src = llGetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES]);&lt;br /&gt;
    len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_BUMP_SHINY, face] + llList2List(src, i, (i + 1));&lt;br /&gt;
        face++;&lt;br /&gt;
        i += 2;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
    &lt;br /&gt;
    i = 0;&lt;br /&gt;
    face = 0;&lt;br /&gt;
    src = llGetPrimitiveParams([PRIM_FULLBRIGHT, ALL_SIDES]);&lt;br /&gt;
    len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_FULLBRIGHT, face] + llList2List(src, i, i);&lt;br /&gt;
        face++;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
    i = 0;&lt;br /&gt;
    face = 0;&lt;br /&gt;
    src = llGetPrimitiveParams([PRIM_TEXGEN, ALL_SIDES]);&lt;br /&gt;
    len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_TEXGEN, face] + llList2List(src, i, i);&lt;br /&gt;
        face++;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
    &lt;br /&gt;
    i = 0;&lt;br /&gt;
    face = 0;&lt;br /&gt;
    src = llGetPrimitiveParams([PRIM_GLOW, ALL_SIDES]);&lt;br /&gt;
    len = llGetListLength(src);&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        result += [PRIM_GLOW, face] + llList2List(src, i, i);&lt;br /&gt;
        face++;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    while(i &amp;lt; len);&lt;br /&gt;
&lt;br /&gt;
    return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        list type_params = llGetPrimitiveParams([PRIM_TYPE]);&lt;br /&gt;
        integer type = llList2Integer(type_params, 0);&lt;br /&gt;
        if(type &amp;gt; PRIM_TYPE_PRISM)&lt;br /&gt;
        {&lt;br /&gt;
            // After prism comes sphere, torus, tube, ring and sculpt.&lt;br /&gt;
            if(type != PRIM_TYPE_SCULPT)&lt;br /&gt;
                type_params += Params();&lt;br /&gt;
            &lt;br /&gt;
            llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, &amp;lt;0,1,0&amp;gt;, 0, &amp;lt;0,0,0&amp;gt;, &amp;lt;1,1,0&amp;gt;, &amp;lt;0,0,0&amp;gt;]&lt;br /&gt;
                                  + PRIM_PHANTOM_HACK&lt;br /&gt;
                                  + [PRIM_TYPE] + type_params);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSetPrimitiveParams(PRIM_PHANTOM_HACK);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if(change &amp;amp; CHANGED_REGION_START)&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    collision_start(integer nd)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sculpted Children==&lt;br /&gt;
A modified version of above that will go through all the prims in a linkset and turn only the sculpts phantom. [[User:ninjafoo Ng|ninjafoo Ng]]&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// Makes all child sculpted prims phantom, leaves all regular prims alone.&lt;br /&gt;
&lt;br /&gt;
list PRIM_PHANTOM_HACK = [&lt;br /&gt;
    PRIM_FLEXIBLE, 1, 0, 0.0, 0.0, 0.0, 0.0, &amp;lt;0,0,0&amp;gt;,&lt;br /&gt;
    PRIM_FLEXIBLE, 0, 0, 0.0, 0.0, 0.0, 0.0, &amp;lt;0,0,0&amp;gt;];&lt;br /&gt;
    &lt;br /&gt;
integer get_number_of_prims()&lt;br /&gt;
{//ignores avatars.&lt;br /&gt;
    integer a = llGetNumberOfPrims();&lt;br /&gt;
    //Mono tweak&lt;br /&gt;
    vector size = llGetAgentSize(llGetLinkKey(a));&lt;br /&gt;
    while(size.z &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        --a;&lt;br /&gt;
        size = llGetAgentSize(llGetLinkKey(a));&lt;br /&gt;
    }&lt;br /&gt;
    return a;&lt;br /&gt;
}&lt;br /&gt;
         &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        integer num_prims = get_number_of_prims();&lt;br /&gt;
        integer x;&lt;br /&gt;
        list prim_params;&lt;br /&gt;
        integer prim_type;&lt;br /&gt;
&lt;br /&gt;
        for(x=2;x&amp;lt;=num_prims;++x)&lt;br /&gt;
        {&lt;br /&gt;
            prim_params = llGetLinkPrimitiveParams(x,[PRIM_TYPE]);&lt;br /&gt;
            prim_type = llList2Integer(prim_params, 0);&lt;br /&gt;
            if(prim_type == PRIM_TYPE_SCULPT)    {&lt;br /&gt;
                llSetLinkPrimitiveParamsFast(x,&lt;br /&gt;
                    [PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, &amp;lt;0,1,0&amp;gt;, 0, &amp;lt;0,0,0&amp;gt;, &amp;lt;1,1,0&amp;gt;, &amp;lt;0,0,0&amp;gt;]&lt;br /&gt;
                    + PRIM_PHANTOM_HACK&lt;br /&gt;
                    + [PRIM_TYPE] + prim_params&lt;br /&gt;
                    );&lt;br /&gt;
            }  &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    changed (integer vBitChanges){&lt;br /&gt;
        if (CHANGED_REGION_START &amp;amp; vBitChanges){&lt;br /&gt;
            llResetScript();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Library}}&lt;br /&gt;
{{LSLC|Examples}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Phantom_Child/ja&amp;diff=1185683</id>
		<title>Phantom Child/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Phantom_Child/ja&amp;diff=1185683"/>
		<updated>2013-12-25T12:18:34Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|Phantom Child}}&lt;br /&gt;
{{LSL Header}}&lt;br /&gt;
{{LSL Tip|下のスクリプトはもう&#039;&#039;&#039;必要ありません&#039;&#039;&#039;。このページは記録のために残しています。代わりに、ファントム効果をつけたい子プリム全部の {{LSLG/ja|PRIM_PHYSICS_SHAPE_TYPE}} を {{LSLG/ja|PRIM_PHYSICS_SHAPE_NONE}} に設定してください。}}&lt;br /&gt;
&lt;br /&gt;
= Phantom Child (子プリムのファントム化)抜粋 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_FLEXIBLE, TRUE, 0,0,0,0,0,&amp;lt;0,0,0&amp;gt;]);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer s) {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    changed (integer change){&lt;br /&gt;
        if (CHANGED_REGION_START &amp;amp; change)&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    collision_start(integer n){&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Phantom_Child/ja&amp;diff=1185682</id>
		<title>Phantom Child/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Phantom_Child/ja&amp;diff=1185682"/>
		<updated>2013-12-25T12:08:46Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: Created page with &amp;quot;{{LSL Header}} {{LSL Tip|下のスクリプトはもう&amp;#039;&amp;#039;&amp;#039;必要ありません&amp;#039;&amp;#039;&amp;#039;。このページは記録のために残しています。代わりに、ファントム効果…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
{{LSL Tip|下のスクリプトはもう&#039;&#039;&#039;必要ありません&#039;&#039;&#039;。このページは記録のために残しています。代わりに、ファントム効果をつけたい子プリム全部の {{LSLG/ja|PRIM_PHYSICS_SHAPE_TYPE}} を {{LSLG/ja|PRIM_PHYSICS_SHAPE_NONE}} に設定してください。}}&lt;br /&gt;
&lt;br /&gt;
= Phantom Child (子プリムのファントム化)抜粋 =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llSetPrimitiveParams([PRIM_FLEXIBLE, TRUE, 0,0,0,0,0,&amp;lt;0,0,0&amp;gt;]);&lt;br /&gt;
    }&lt;br /&gt;
    on_rez(integer s) {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    changed (integer change){&lt;br /&gt;
        if (CHANGED_REGION_START &amp;amp; change)&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    collision_start(integer n){&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE/ja&amp;diff=1185678</id>
		<title>PRIM PHYSICS SHAPE TYPE/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE/ja&amp;diff=1185678"/>
		<updated>2013-12-25T10:30:44Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_const|{{LSL Const/ja|PRIM_PHYSICS_SHAPE_TYPE|integer|30|c=プリムの物理形状タイプを{{GetSet|{{{1|}}}|取得|設定|/}}するのに用いられます。}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_pstype_desc|PRIM_PHYSICS_SHAPE_* flag}}&lt;br /&gt;
{{#vardefine:p_pstype_hover|PRIM_PHYSICS_SHAPE_* flag (もちろんPRIM_PHYSICS_SHAPE_TYPEではありません!)}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_rows|&lt;br /&gt;
!{{!}} {{LSL Param/ja|pstype|type}}フラグ&lt;br /&gt;
! title=&amp;quot;value&amp;quot; {{!}} 値&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} 説明&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} ノート&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_PRIM|integer|0|c=ノーマルプリム形状の物理に使います}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} メッシュでないオブジェクトのデフォルト値です&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_CONVEX|integer|2|c=プリムの凸包形状の物理に使います}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} メッシュオブジェクトのデフォルト値です&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_NONE|integer|1|c=プリムの物理形状を無視します}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} これをルートプリム、アバターに適用することはできません&lt;br /&gt;
このプリムは、他のオブジェクトやアバターが衝突せずに通り抜けます(&amp;quot;ファントム&amp;quot;のように)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant/ja&lt;br /&gt;
|name=PRIM_PHYSICS_SHAPE_TYPE&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=30&lt;br /&gt;
|desc=物理エンジンで使われるオブジェクトの形状タイプを設定するために使われます。&lt;br /&gt;
|examples&lt;br /&gt;
|constants&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:physics_shape_type_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text={{LSLG/ja|llSetPrimitiveParams}}と{{LSLG/ja|llSetLinkPrimitiveParams}}で使われます&lt;br /&gt;
|i1_type=integer|i1_name=pstype|i1_disp=type&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:physics_shape_type_const}}&amp;amp;nbsp;]);|&lt;br /&gt;
|r_front=[[list]] [&amp;amp;nbsp;|r_end=&amp;amp;nbsp;]を返します&lt;br /&gt;
|text&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=integer|r1_name=pstype|r1_disp=type&lt;br /&gt;
}}&lt;br /&gt;
|pc=&lt;br /&gt;
{{{!}} class=&amp;quot;sortable&amp;quot; {{Prettytable|style=margin-top:0;}}&lt;br /&gt;
{{!}}- {{Hl2}}&lt;br /&gt;
{{#var:physics_shape_type_rows}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetLinkPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetLinkPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetLinkPrimitiveParamsFast}}|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
*Introduced in [[Release Notes/Second Life RC LeTigre/11#11.09.09.240509|Second Life RC LeTigre 11.09.09.240509]], September 9, 2011&lt;br /&gt;
*[http://www.sluniverse.com/php/vb/scripting/61203-future-physics-functions-tease.html#post1305775 SLUniverse:Future physics functions tease]&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE&amp;diff=1185677</id>
		<title>PRIM PHYSICS SHAPE TYPE</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE&amp;diff=1185677"/>
		<updated>2013-12-25T10:29:02Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_const|{{LSL Const|PRIM_PHYSICS_SHAPE_TYPE|integer|30|c=Used to {{GetSet|{{{1|}}}|get|set|/}} the prim&#039;s physics shape type}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_pstype_desc|PRIM_PHYSICS_SHAPE_* flag}}&lt;br /&gt;
{{#vardefine:p_pstype_hover|PRIM_PHYSICS_SHAPE_* flag (not PRIM_PHYSICS_SHAPE_TYPE of course!)}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_rows|&lt;br /&gt;
!{{!}} {{LSLPT|pstype|type}} Flags&lt;br /&gt;
! title=&amp;quot;value&amp;quot; {{!}} V&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} Description&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} Notes&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const|PRIM_PHYSICS_SHAPE_PRIM|integer|0|c=Use the normal prim shape for physics}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} default for all non-mesh objects&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const|PRIM_PHYSICS_SHAPE_CONVEX|integer|2|c=Use the convex hull of the prim shape for physics}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} default for all mesh objects&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const|PRIM_PHYSICS_SHAPE_NONE|integer|1|c=Ignore this prim in the physics shape. }}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} &#039;&#039;This cannot be applied to the root prim or avatars.&#039;&#039;&lt;br /&gt;
This prim lets other objects and avatars pass through without colliding. (Like &amp;quot;Phantom&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{LSL Signature/Add|{{LSL Const/Signature|PRIM_PHYSICS_SHAPE_PRIM|integer|0|c=Use the normal prim shape for physics}}&lt;br /&gt;
{{LSL Const/Signature|PRIM_PHYSICS_SHAPE_CONVEX|integer|2|c=Use the convex hull of the prim shape for physics}}}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|name=PRIM_PHYSICS_SHAPE_TYPE&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=30&lt;br /&gt;
|desc=Used to set the type of shape the physics engine should use for the object.&lt;br /&gt;
|examples&lt;br /&gt;
|constants&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:physics_shape_type_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
|i1_type=integer|i1_name=pstype|i1_disp=type&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:physics_shape_type_const}}&amp;amp;nbsp;]);|&lt;br /&gt;
|r_front=Returns the [[list]] [&amp;amp;nbsp;|r_end=&amp;amp;nbsp;]&lt;br /&gt;
|text&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=integer|r1_name=pstype|r1_disp=type&lt;br /&gt;
}}&lt;br /&gt;
|pc=&lt;br /&gt;
{{{!}} class=&amp;quot;sortable&amp;quot; {{Prettytable|style=margin-top:0;}}&lt;br /&gt;
{{!}}- {{Hl2}}&lt;br /&gt;
{{#var:physics_shape_type_rows}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParamsFast]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
*Introduced in [[Release Notes/Second Life RC LeTigre/11#11.09.09.240509|Second Life RC LeTigre 11.09.09.240509]], September 9, 2011&lt;br /&gt;
*[http://www.sluniverse.com/php/vb/scripting/61203-future-physics-functions-tease.html#post1305775 SLUniverse:Future physics functions tease]&lt;br /&gt;
|cat1=Physics&lt;br /&gt;
|cat2&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE/ja&amp;diff=1185676</id>
		<title>PRIM PHYSICS SHAPE TYPE/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_TYPE/ja&amp;diff=1185676"/>
		<updated>2013-12-25T10:24:51Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_const|{{LSL Const/ja|PRIM_PHYSICS_SHAPE_TYPE|integer|30|c=プリムの物理形状タイプを{{GetSet|{{{1|}}}|取得|設定|/}}するのに用いられます。}}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_pstype_desc|PRIM_PHYSICS_SHAPE_* flag}}&lt;br /&gt;
{{#vardefine:p_pstype_hover|PRIM_PHYSICS_SHAPE_* flag (もちろんPRIM_PHYSICS_SHAPE_TYPEではありません!)}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:physics_shape_type_rows|&lt;br /&gt;
!{{!}} {{LSL Param/ja|pstype|type}}フラグ&lt;br /&gt;
! title=&amp;quot;value&amp;quot; {{!}} 値&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} 説明&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; {{!}} ノート&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_PRIM|integer|0|c=ノーマルプリム形状の物理に使います}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} メッシュでないオブジェクトのデフォルト値です&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_CONVEX|integer|2|c=プリムの凸包形状の物理に使います}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} メッシュオブジェクトのデフォルト値です&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{!}} {{LSL Const/ja|PRIM_PHYSICS_SHAPE_NONE|integer|1|c=プリムの物理形状を無視します}}&lt;br /&gt;
{{!}} {{#var:value}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} {{#var:comment}}&lt;br /&gt;
{{!}} colspan=&amp;quot;3&amp;quot; {{!}} これをルートプリム、アバターに適用することはできません&lt;br /&gt;
このプリムは、他のオブジェクトやアバターが衝突せずに通り抜けます&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant/ja&lt;br /&gt;
|name=PRIM_PHYSICS_SHAPE_TYPE&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=30&lt;br /&gt;
|desc=物理エンジンで使われるオブジェクトの形状タイプを設定するために使われます。&lt;br /&gt;
|examples&lt;br /&gt;
|constants&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:physics_shape_type_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text={{LSLG/ja|llSetPrimitiveParams}}と{{LSLG/ja|llSetLinkPrimitiveParams}}で使われます&lt;br /&gt;
|i1_type=integer|i1_name=pstype|i1_disp=type&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:physics_shape_type_const}}&amp;amp;nbsp;]);|&lt;br /&gt;
|r_front=[[list]] [&amp;amp;nbsp;|r_end=&amp;amp;nbsp;]を返します&lt;br /&gt;
|text&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=integer|r1_name=pstype|r1_disp=type&lt;br /&gt;
}}&lt;br /&gt;
|pc=&lt;br /&gt;
{{{!}} class=&amp;quot;sortable&amp;quot; {{Prettytable|style=margin-top:0;}}&lt;br /&gt;
{{!}}- {{Hl2}}&lt;br /&gt;
{{#var:physics_shape_type_rows}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetLinkPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetLinkPrimitiveParams}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llSetLinkPrimitiveParamsFast}}|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
*Introduced in [[Release Notes/Second Life RC LeTigre/11#11.09.09.240509|Second Life RC LeTigre 11.09.09.240509]], September 9, 2011&lt;br /&gt;
*[http://www.sluniverse.com/php/vb/scripting/61203-future-physics-functions-tease.html#post1305775 SLUniverse:Future physics functions tease]&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetRegionAgentCount/ja&amp;diff=1177584</id>
		<title>LlGetRegionAgentCount/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetRegionAgentCount/ja&amp;diff=1177584"/>
		<updated>2013-04-01T09:14:54Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/ja&lt;br /&gt;
|func_id=334|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llGetRegionAgentCount&lt;br /&gt;
|return_type=integer&lt;br /&gt;
|return_text=リージョン内のアバターの数&lt;br /&gt;
|caveats&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;//タッチするとオーナーに地域にいるアバターの数をお知らせします&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer count)&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay((string)llGetRegionAgentCount());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
* この関数が返す値は、技術的にその地域にいたアバターの過去1秒間の平均を整数でまるめたもの。したがって、アバターの地域への出入りがあるときは、アバターを数えた結果に少し遅れ(1秒未満)があります。&lt;br /&gt;
|constants&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetAgentList}}}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetRegionFPS}}}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|llGetRegionTimeDilation}}}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|history={{SVN|568|rev=88085|branch=Release|anchor=file33|date=Wednesday, 21 May 2008}}で導入。&lt;br /&gt;
|cat1=Region&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetAgentList/ja&amp;diff=1177583</id>
		<title>LlGetAgentList/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetAgentList/ja&amp;diff=1177583"/>
		<updated>2013-04-01T08:40:53Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/ja&lt;br /&gt;
|inject-2={{Issues/SCR-311}}{{Issues/SVC-5488}}{{Issues/MISC-243}}{{Issues/SCR-370}}{{Issues/SCR-371}}&lt;br /&gt;
|func=llGetAgentList&lt;br /&gt;
|sort=GetAgentList&lt;br /&gt;
|func_id&lt;br /&gt;
|func_sleep=0&lt;br /&gt;
|func_energy=0&lt;br /&gt;
|func_desc=現在その地域にいるアバターのリストを問合せます、scopeパラメタで制限&lt;br /&gt;
|func_footnote=&lt;br /&gt;
|return_type=list&lt;br /&gt;
|return_text=&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;{{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|id0|First agent key}}, {{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|id1|Second agent key}}, ..., {{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|idn|nᵗʰ agent key}}]&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;{{LSLG/ja|string}}&amp;amp;nbsp;{{HoverText|error_msg|An error message}}]&amp;lt;/code&amp;gt; - その地域内の、scopeで指定された区画にいる全アバターのキー&lt;br /&gt;
|spec=&lt;br /&gt;
|p1_type=integer|p1_name=scope|p1_hover=AGENT_LIST_* 選択する範囲を指定するフラグ|p1_desc=&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Collapsible_Table/Simple|title=AGENT_LIST_* 選択する範囲を指定するフラグ&lt;br /&gt;
|content={{!}}&lt;br /&gt;
* [[AGENT_LIST_PARCEL]] - スクリプトが走っている同じ区画にいるアバターだけを返します&lt;br /&gt;
* [[AGENT_LIST_PARCEL_OWNER]] - その地域にある区画で、スクリプトの入ってるオブジェクトがある区画と同じ所有者の区画全部にいるアバターだけを返します&lt;br /&gt;
* [[AGENT_LIST_REGION]] - その地域にいる全部のアバターを返します&lt;br /&gt;
}}&lt;br /&gt;
|p2_type=list|p2_name=options|p2_desc=未使用&lt;br /&gt;
|p2_hover=selection flags&lt;br /&gt;
|constants=&lt;br /&gt;
|caveats=&lt;br /&gt;
* 戻りリストの順番は意味を持ちません&lt;br /&gt;
* 100以下のアバターしか戻りません&lt;br /&gt;
|examples=&lt;br /&gt;
{{LSL Tip|アバターが同じSIMにいるかどうかチェックするには、 {{LSLG/ja|llGetAgentSize}} が {{LSLG/ja|ZERO_VECTOR}}を返さないことでチェックしてください。こちらのほうが [[llGetAgentList]] を呼び出してリスト内のキーと比較するよりずっと速くて簡単です。}}&lt;br /&gt;
{{LSL Tip|今のところ、この関数はoptionで制限できません。したがって、この関数は最大100のアバターのキーを返すかもしれません。これらのキーを保存するには大きなメモリー容量が必要で、STACK_HEAP_COLLISION_ERRORを起こすかもしれないことに注意してください。}}&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//地域内で検出した最大100のアバターのキーと名前を表示&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list avatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []);&lt;br /&gt;
        integer numOfAvatars = llGetListLength(avatarsInRegion);&lt;br /&gt;
&lt;br /&gt;
        // アバターがいないときは、リストアップはせずにお知らせ&lt;br /&gt;
        if (!numOfAvatars)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;この地域にアバターはみつかりません!&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        integer index;&lt;br /&gt;
        while (index &amp;lt; numOfAvatars)&lt;br /&gt;
        {&lt;br /&gt;
            key id = llList2Key(avatarsInRegion, index);&lt;br /&gt;
            string name = llKey2Name(id);&lt;br /&gt;
&lt;br /&gt;
            llOwnerSay(name + &amp;quot; [ &amp;quot; + (string)id + &amp;quot; ]&amp;quot;);&lt;br /&gt;
            ++index;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//  タッチで距離で並び替えた名前と距離を答える&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        list keys = llGetAgentList(AGENT_LIST_REGION, []);&lt;br /&gt;
        integer numberOfKeys = llGetListLength(keys);&lt;br /&gt;
&lt;br /&gt;
        vector currentPos = llGetPos();&lt;br /&gt;
        list newkeys;&lt;br /&gt;
        key thisAvKey;&lt;br /&gt;
&lt;br /&gt;
        integer i;&lt;br /&gt;
        for (i = 0; i &amp;lt; numberOfKeys; ++i) {&lt;br /&gt;
            thisAvKey = llList2Key(keys,i);&lt;br /&gt;
            newkeys += [llRound(llVecDist(currentPos,&lt;br /&gt;
                            llList2Vector(llGetObjectDetails(thisAvKey, [OBJECT_POS]), 0))),&lt;br /&gt;
                        thisAvKey];&lt;br /&gt;
        }&lt;br /&gt;
  &lt;br /&gt;
        newkeys = llListSort(newkeys, 2, FALSE);     //  距離の降順でストライドソート&lt;br /&gt;
&lt;br /&gt;
        for (i = 0; i &amp;lt; (numberOfKeys * 2); i += 2) {&lt;br /&gt;
            llOwnerSay(llGetDisplayName(llList2Key(newkeys, i+1))&lt;br /&gt;
                +&amp;quot; [&amp;quot;+ (string) llList2Integer(newkeys, i) + &amp;quot;m]&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_functions=*{{LSLG/ja|llGetRegionAgentCount}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|deprecated&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
* LLによる新しい関数、 {{Jira|SVC-805}}, {{Jira|SVC-6427}}, {{Jira|MISC-243}}, {{Jira|SVC-5488}}によって提議された機能に対応。&lt;br /&gt;
* プレリリース [[Release_Notes/Second_Life_RC_Magnum/12]] - もとのJIRAの要望は「llGetRegionAgents()」でしたが、リリースされた関数はそれ以上の機能があるので名前は変更されました。&lt;br /&gt;
|cat1=Functions&lt;br /&gt;
|cat2=Avatar&lt;br /&gt;
|cat3=Owner&lt;br /&gt;
|cat4=Parcel&lt;br /&gt;
|cat5=Region&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetAgentList/ja&amp;diff=1177582</id>
		<title>LlGetAgentList/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetAgentList/ja&amp;diff=1177582"/>
		<updated>2013-04-01T08:32:28Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: Created page with &amp;quot;{{LSL_Function/ja |inject-2={{Issues/SCR-311}}{{Issues/SVC-5488}}{{Issues/MISC-243}}{{Issues/SCR-370}}{{Issues/SCR-371}} |func=llGetAgentList |sort=GetAgentList |func_id |func_sl…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/ja&lt;br /&gt;
|inject-2={{Issues/SCR-311}}{{Issues/SVC-5488}}{{Issues/MISC-243}}{{Issues/SCR-370}}{{Issues/SCR-371}}&lt;br /&gt;
|func=llGetAgentList&lt;br /&gt;
|sort=GetAgentList&lt;br /&gt;
|func_id&lt;br /&gt;
|func_sleep=0&lt;br /&gt;
|func_energy=0&lt;br /&gt;
|func_desc=現在その地域にいるアバターのリストを問合せます、scopeパラメタで制限&lt;br /&gt;
|func_footnote=&lt;br /&gt;
|return_type=list&lt;br /&gt;
|return_text=&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;{{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|id0|First agent key}}, {{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|id1|Second agent key}}, ..., {{LSLG/ja|key}}&amp;amp;nbsp;{{HoverText|idn|nᵗʰ agent key}}]&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;{{LSLG/ja|string}}&amp;amp;nbsp;{{HoverText|error_msg|An error message}}]&amp;lt;/code&amp;gt; -  その地域にいる全アバターのキー、scopeで指定された区画で制限して&lt;br /&gt;
|spec=&lt;br /&gt;
|p1_type=integer|p1_name=scope|p1_hover=AGENT_LIST_* 選択する範囲を指定するフラグ|p1_desc=&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Collapsible_Table/Simple|title=AGENT_LIST_* 選択する範囲を指定するフラグ&lt;br /&gt;
|content={{!}}&lt;br /&gt;
* [[AGENT_LIST_PARCEL]] - スクリプトが走っている同じ区画にいるアバターだけを返します&lt;br /&gt;
* [[AGENT_LIST_PARCEL_OWNER]] - その地域にある区画で、スクリプトの入ってるオブジェクトがある区画と同じ所有者の区画全部にいるアバターだけを返します&lt;br /&gt;
* [[AGENT_LIST_REGION]] - その地域にいる全部のアバターを返します&lt;br /&gt;
}}&lt;br /&gt;
|p2_type=list|p2_name=options|p2_desc=未使用&lt;br /&gt;
|p2_hover=selection flags&lt;br /&gt;
|constants=&lt;br /&gt;
|caveats=&lt;br /&gt;
* 戻りリストの順番は意味を持ちません&lt;br /&gt;
* 100以下のアバターしか戻りません&lt;br /&gt;
|examples=&lt;br /&gt;
{{LSL Tip|アバターが同じSIMにいるかどうかチェックするには、 {{LSLG/ja|llGetAgentSize}} が {{LSLG/ja|ZERO_VECTOR}}を返さないことでチェックしてください。こちらのほうが [[llGetAgentList]] を呼び出してリスト内のキーと比較するよりずっと速くて簡単です。}}&lt;br /&gt;
{{LSL Tip|今のところ、この関数はoptionで制限できません。したがって、この関数は最大100のアバターのキーを返すかもしれません。これらのキーを保存するには大きなメモリー容量が必要で、STACK_HEAP_COLLISION_ERRORを起こすかもしれないことに注意してください。}}&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//地域内で検出した最大100のアバターのキーと名前を表示&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        list avatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []);&lt;br /&gt;
        integer numOfAvatars = llGetListLength(avatarsInRegion);&lt;br /&gt;
&lt;br /&gt;
        // アバターがいないときは、リストアップはせずにお知らせ&lt;br /&gt;
        if (!numOfAvatars)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;この地域にアバターはみつかりません!&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        integer index;&lt;br /&gt;
        while (index &amp;lt; numOfAvatars)&lt;br /&gt;
        {&lt;br /&gt;
            key id = llList2Key(avatarsInRegion, index);&lt;br /&gt;
            string name = llKey2Name(id);&lt;br /&gt;
&lt;br /&gt;
            llOwnerSay(name + &amp;quot; [ &amp;quot; + (string)id + &amp;quot; ]&amp;quot;);&lt;br /&gt;
            ++index;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//  タッチで距離で並び替えた名前と距離を答える&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        list keys = llGetAgentList(AGENT_LIST_REGION, []);&lt;br /&gt;
        integer numberOfKeys = llGetListLength(keys);&lt;br /&gt;
&lt;br /&gt;
        vector currentPos = llGetPos();&lt;br /&gt;
        list newkeys;&lt;br /&gt;
        key thisAvKey;&lt;br /&gt;
&lt;br /&gt;
        integer i;&lt;br /&gt;
        for (i = 0; i &amp;lt; numberOfKeys; ++i) {&lt;br /&gt;
            thisAvKey = llList2Key(keys,i);&lt;br /&gt;
            newkeys += [llRound(llVecDist(currentPos,&lt;br /&gt;
                            llList2Vector(llGetObjectDetails(thisAvKey, [OBJECT_POS]), 0))),&lt;br /&gt;
                        thisAvKey];&lt;br /&gt;
        }&lt;br /&gt;
  &lt;br /&gt;
        newkeys = llListSort(newkeys, 2, FALSE);     //  距離の降順でストライドソート&lt;br /&gt;
&lt;br /&gt;
        for (i = 0; i &amp;lt; (numberOfKeys * 2); i += 2) {&lt;br /&gt;
            llOwnerSay(llGetDisplayName(llList2Key(newkeys, i+1))&lt;br /&gt;
                +&amp;quot; [&amp;quot;+ (string) llList2Integer(newkeys, i) + &amp;quot;m]&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_functions=*{{LSLG/ja|llGetRegionAgentCount}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes&lt;br /&gt;
|deprecated&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
* LLによる新しい関数、 {{Jira|SVC-805}}, {{Jira|SVC-6427}}, {{Jira|MISC-243}}, {{Jira|SVC-5488}}によって提議された機能に対応。&lt;br /&gt;
* プレリリース [[Release_Notes/Second_Life_RC_Magnum/12]] - もとのJIRAの要望は「llGetRegionAgents()」でしたが、リリースされた関数はそれ以上の機能があるので名前は変更されました。&lt;br /&gt;
|cat1=Functions&lt;br /&gt;
|cat2=Avatar&lt;br /&gt;
|cat3=Owner&lt;br /&gt;
|cat4=Parcel&lt;br /&gt;
|cat5=Region&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlStringLength/ja&amp;diff=1172703</id>
		<title>LlStringLength/ja</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlStringLength/ja&amp;diff=1172703"/>
		<updated>2012-09-16T16:18:27Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/ja&lt;br /&gt;
|func_id=128|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llStringLength|return_type=integer|p1_type=string|p1_name=str&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=&#039;&#039;&#039;str&#039;&#039;&#039; にある文字の数 (NULL文字をカウントしない)&amp;amp;nbsp;&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
*末尾の文字のインデックス番号は文字列長と一致しません。&lt;br /&gt;
**文字のインデックスは 0 から始まります (先頭の文字のインデックスが 0 になります) 。&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// 前提: &lt;br /&gt;
//    オブジェクト名: LSLWiki&lt;br /&gt;
//    スクリプト名: _lslwiki&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        string HowLongAmI = &amp;quot;123&amp;quot;;&lt;br /&gt;
        integer strlen = llStringLength(HowLongAmI);&lt;br /&gt;
        llOwnerSay( &amp;quot;&#039;&amp;quot; + HowLongAmI + &amp;quot;&#039; は &amp;quot; +(string) strlen + &amp;quot; 文字です。&amp;quot;);&lt;br /&gt;
        // オブジェクト LSLWiki のオーナーには以下のように表示されます。&lt;br /&gt;
        // LSLWiki: &#039;123&#039; は 3 文字です。&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer getStringBytes(string msg){&lt;br /&gt;
    string s = llEscapeURL(msg);&lt;br /&gt;
    string t = (string)llParseString2List(s,[&amp;quot;%&amp;quot;],[]);&lt;br /&gt;
    return llStringLength(t) * 2 - llStringLength(s);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
*複数バイト文字を含む文字列のバイト数を得る&lt;br /&gt;
:msg と s のバイト数を次のように書くと：&lt;br /&gt;
::mb(msgのバイト数) = nb(置き換わらないバイト数) + bb(置き換わる前のバイト数)&lt;br /&gt;
::sb(sのバイト数) = nb + ab(置き換わった後のバイト数)&lt;br /&gt;
:ここで、&lt;br /&gt;
::ab = bb * 3 (各1バイト例えば &#039;#&#039; は、置き換わって 3 バイトの &amp;quot;%23&amp;quot; に)&lt;br /&gt;
:なので、&lt;br /&gt;
::mb = sb - bb * 2&lt;br /&gt;
:s 中の置き換わった全部が &amp;quot;%xx&amp;quot;(x:0-9またはA-F) の形になっているので、bb = s の中の &#039;%&#039;の数&lt;br /&gt;
:&#039;%&#039; を数えるため、s から &#039;%&#039; を除いた文字列 t を作れば：&lt;br /&gt;
::bb = sb - tb(tのバイト数)&lt;br /&gt;
:(s を llParseString2List()で&#039;%&#039;を除きながらリストに分解して、型キャストでまた文字列に戻して t とします。)&lt;br /&gt;
:これで求める答は：&lt;br /&gt;
::mb = sb - (sb - tb) * 2 = tb * 2 - sb&lt;br /&gt;
*参考ブログ：&lt;br /&gt;
:http://snumaw.blogspot.jp/2009/01/lsl-lldialog.html&lt;br /&gt;
:http://jinko.slmame.com/e602732.html&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetListLength}}|}}&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;
|sort=StringLength&lt;br /&gt;
|cat1=String&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlStringLength&amp;diff=1172702</id>
		<title>LlStringLength</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlStringLength&amp;diff=1172702"/>
		<updated>2012-09-16T16:06:07Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func_id=128|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llStringLength|return_type=integer|p1_type=string|p1_name=str&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc&lt;br /&gt;
|return_text=that is the number of characters in &#039;&#039;&#039;str&#039;&#039;&#039; (not counting the null).&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
*The index of the last character is not equal to the string length.&lt;br /&gt;
**Character indexs start at zero (the index of the first character is zero).&lt;br /&gt;
|constants&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
// assumptions: &lt;br /&gt;
//    object name: LSLWiki&lt;br /&gt;
//    script name: _lslwiki&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        string HowLongAmI = &amp;quot;123&amp;quot;;&lt;br /&gt;
        integer strlen = llStringLength(HowLongAmI);&lt;br /&gt;
        llOwnerSay( &amp;quot;&#039;&amp;quot; + HowLongAmI + &amp;quot;&#039; has &amp;quot; +(string) strlen + &amp;quot; characters.&amp;quot;);&lt;br /&gt;
        // The owner of object LSLWiki will hear &lt;br /&gt;
        // LSLWiki: &#039;123&#039; has 3 characters.&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
*LSL-2 sees all strings as UTF8&lt;br /&gt;
*LSL-Mono sees all string as UTF16&lt;br /&gt;
*llStringLength gets the number of characters&lt;br /&gt;
*Both UTF8 and UTF16 use multibyte characters&lt;br /&gt;
*Some communication functions (i.e. llHTTPResponse) are limited by number of Bytes, and work with UTF8 strings&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer UTF8Length(string msg)&lt;br /&gt;
{&lt;br /&gt;
//Returns the number of BYTES a string will have when converted to UTF8 by communication functions&lt;br /&gt;
//Simple and efficient!&lt;br /&gt;
//Released to the public domain by kimmie Loveless&lt;br /&gt;
    integer rNum = llStringLength(msg);&lt;br /&gt;
    return rNum + ((llStringLength(llEscapeURL(msg)) - rNum)/4);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer getStringBytes(string msg) {&lt;br /&gt;
    string s = llEscapeURL(msg);&lt;br /&gt;
    string t = (string)llParseString2List(s,[&amp;quot;%&amp;quot;],[]);&lt;br /&gt;
    return llStringLength(t) * 2 - llStringLength(s);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
*Getting string bytes including multibyte characters&lt;br /&gt;
:If we write bytes of msg and s as:&lt;br /&gt;
::mb(msg bytes) = nb(no escaped bytes) + bb(before escaped bytes)&lt;br /&gt;
::sb(s bytes) = nb + ab(after escaped bytes)&lt;br /&gt;
:And,&lt;br /&gt;
::ab = bb * 3 (each 1 byte like &#039;#&#039; becomes escaped to 3 bytes &amp;quot;%23&amp;quot;):&lt;br /&gt;
:Then,&lt;br /&gt;
::mb = sb - bb * 2&lt;br /&gt;
:All escaped in s are now &amp;quot;%xx&amp;quot;(x:0-9 or A-F) forms, so, bb = number of &#039;%&#039;s in s.&lt;br /&gt;
:To count &#039;%&#039;s, we make string t removing &#039;%&#039;s from s, and:&lt;br /&gt;
::bb = sb - tb(t bytes)&lt;br /&gt;
:(We separate s to a list removing &#039;%&#039;s by llParseString2List(), and again join to one string t by typecast.)&lt;br /&gt;
:Now we got answer:&lt;br /&gt;
::mb = sb - (sb - tb) * 2 = tb * 2 - sb&lt;br /&gt;
*Refer Blog(Japanese)&lt;br /&gt;
:http://snumaw.blogspot.jp/2009/01/lsl-lldialog.html&lt;br /&gt;
:http://jinko.slmame.com/e602732.html&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetListLength]]|}}&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;
|sort=StringLength&lt;br /&gt;
|cat1=String&lt;br /&gt;
|cat2&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=%E7%8A%B6%E6%85%8B&amp;diff=1172523</id>
		<title>状態</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=%E7%8A%B6%E6%85%8B&amp;diff=1172523"/>
		<updated>2012-09-08T08:53:29Z</updated>

		<summary type="html">&lt;p&gt;CharlieA Nightfire: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|State|/ja}}{{Template:Issues/SVC-3017}}{{LSL Header/ja|ml=*}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
LSLでは、ほとんどのスクリプトは何らかの入力を受け取るか、環境で何らかの変化を検出するまで、アイドル状態にあります。どの瞬間も、スクリプトは何らかのstateにあり、プログラマーによって定義された多くのスキームと一致したイベント、あるいはインプットに反応するでしょう。しかしながら、スクリプトは二つ以上の異なるstateを包含することができ、状態によってイベントやインプットに対して異なる反応を定義できます。&lt;br /&gt;
&lt;br /&gt;
中心的なstateはdefault stateです。スクリプトはコンパイルされた時、リセットもしくはリロードされた時、まずdefaultのstateが実行されます。default stateの定義の後に続けて、スクリプトで処理されるイベントがどのような入力、変更によって発生するのかを定義する、新たなstateを追加することができます。&lt;br /&gt;
{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:name|state}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_jump_state_desc|実行するstate名です。}}&lt;br /&gt;
{{#vardefine:p_label_state_desc|state名です。}}&lt;br /&gt;
{{#vardefine:p_events_desc|一つ以上の {{LSLGC|Events/ja|イベント}}です。}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:header_title|default { {{LSL Param|events}} } }}&lt;br /&gt;
{{#vardefine:header_text|{{{!}}&lt;br /&gt;
{{LSL DefineRow|event|events|{{#var:p_events_desc}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
default state の定義です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:constants_nb|&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;state {{LSL Param|label_state|target}} { {{LSL Param|events}} }&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{LSL DefineRow|label|target|{{#var:p_label_state_desc}}}}&lt;br /&gt;
{{LSL DefineRow|event|events|{{#var:p_events_desc}}}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&#039;&#039;&#039;target&#039;&#039;&#039; state の定義です。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;state {{LSL Param|jump_state|target}};&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{LSL DefineRow|label|target|{{#var:p_jump_state_desc}}}}&lt;br /&gt;
{{!}}}&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;state target;&#039;&#039;が実行時に発生し、&#039;&#039;現在&#039;&#039; のstate と &#039;&#039;target&#039;&#039; state が異なる場合、以下の順に動作します。&lt;br /&gt;
#現在のstate内に[[state_exit]]が&#039;&#039;&#039;存在する場合は実行され、&#039;&#039;&#039;イベントキューは消去されます。&lt;br /&gt;
#&#039;&#039;target&#039;&#039;にstateが変わると、&#039;&#039;&#039;全ての&#039;&#039;&#039;[[llListen/ja|listen]]は解除されます。&lt;br /&gt;
#&#039;&#039;target&#039;&#039; stateに[[state_entry]]が&#039;&#039;&#039;存在する場合は実行されます。&#039;&#039;&#039;&lt;br /&gt;
もし&#039;&#039;target&#039;&#039; state が &#039;&#039;現在&#039;&#039; の state と同じ場合、&#039;&#039;&#039;state は変わらず、またどんな副作用もありません。&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:examples|&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    touch_end(integer a)&lt;br /&gt;
    {&lt;br /&gt;
        state hello;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
state hello&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
        state default;&lt;br /&gt;
    }&lt;br /&gt;
    state_exit()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Goodbye&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:notes|{{#var:notes}}&lt;br /&gt;
* これまで溜っていたイベントを破棄するのを防ぐために、{{LSLG/ja|state}} &#039;&#039;target&#039;&#039; コマンドを {{LSLG/ja|timer}} イベントに移動して、{{LSLG/ja|llSetTimerEvent}}( 0.01 ) で呼び出します。それから新しい {{LSLG/ja|state}} の {{LSLG/ja|state_entry}} でタイマーを止めます。これが心配な場合に {{LSLG/ja|state_exit}} を使用しないでください。}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|*stateを変える上で&lt;br /&gt;
**全ての[[llListen/ja|listen]]はリリースされます。&lt;br /&gt;
**イベントキューは消去されます。&lt;br /&gt;
**[[llSensorRepeat/ja|Repeating sensors]] はリリースされます。&lt;br /&gt;
**[[llSetTimerEvent/ja|timer event clock]] はクリア&#039;&#039;&#039;されません。&#039;&#039;&#039;&lt;br /&gt;
**つまり、次の state に timer イベントがあり、前の state でタイマーが設定されていると、以前の state で設定された遅延時間で新しい state の timer イベントが発生することになります。&lt;br /&gt;
*&#039;&#039;default&#039;&#039; stateはほかのstateに行く前に定義すべきです。 &lt;br /&gt;
*state範囲内にユーザ関数、あるいはユーザ変数を設定することはできず、 イベントだけがstate範囲内で定義できます。&lt;br /&gt;
*ユーザ定義(グローバル)関数は state を変えることができません。コンパイラは &#039;ERROR: Global functions can&#039;t change state&#039; というエラーを出すでしょう。&#039;&#039;&#039;注意&#039;&#039;&#039;: 以前はグローバル関数でも &#039;if&#039; 文の中なら state を変えることができましたが、この&amp;quot;裏技&amp;quot;はもう使えません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:helpers|}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_header|&amp;lt;h3&amp;gt;キーワード&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{!}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|jump}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|return}}|}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_footer|}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_functions|}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_events|&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|state_entry}}|}}&lt;br /&gt;
{{LSL DefineRow||{{LSLG/ja|state_exit}}|}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_articles|}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:also_tests|}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:location|}}&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Generic/ja}}{{LSLC/ja|Flow Control}}{{LSLC/ja|Script}}{{LSLC/ja|State}}&lt;/div&gt;</summary>
		<author><name>CharlieA Nightfire</name></author>
	</entry>
</feed>