Difference between revisions of "Template:LSL Constants Sensor/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(4 intermediate revisions by 2 users not shown)
Line 2: Line 2:
{{!}}- valign="top"
{{!}}- valign="top"
{{!}}
{{!}}
{{{!}} {{Prettytable}}
{{{!}} {{Prettytable|style={{{tstyle|}}}}}
{{!}}-{{Hl2}}
{{!}}-{{Hl2}}
! colspan="2" {{!}} '''{{#if:{{{2|}}}|{{{2|}}}|{{{1|}}}}}フラグ'''
! colspan="2" {{!}} '''{{{1|}}} マスクフラグ'''
! '''解説'''
! '''説明 ({{LSLG/ja|llDetectedType}}())'''
! '''説明 ({{LSLG/ja|llSensor}}() と {{LSLG/ja|llSensorRepeat}}() のマスク)'''
{{!}}-
{{!}} {{#vardefine:AGENT|{{LSL Const/ja|AGENT|integer|1|hex=0x1|c=エージェント}}}}{{#var:AGENT}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} 廃止: AGENT_BY_LEGACY_NAME を使ってください。
{{!}}-
{{!}} {{#vardefine:AGENT_BY_LEGACY_NAME|{{LSL Const/ja|AGENT_BY_LEGACY_NAME|integer|1|hex=0x1|c=エージェント}}}}{{#var:AGENT_BY_LEGACY_NAME}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} {{LSLGC/ja|Avatar/Name|Legacy Name(レガシー名)}}でエージェントを検索します。
{{!}}-
{{!}}-
{{!}} {{LSL Const/ja|AGENT|integer|1|hex=0x1|c=}}
{{!}} {{#vardefine:AGENT_BY_USERNAME|{{LSL Const/ja|AGENT_BY_USERNAME|integer|16|hex=0x10|c=エージェント}}}}{{#var:AGENT_BY_USERNAME}}
{{!}} {{#var:value}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} {{#var:comment}}
{{!}} {{LSLGC/ja|Avatar/Name|Username(ユーザ名)}}でエージェントを検索します。
{{!}}-
{{!}}-
{{!}} {{LSL Const/ja|ACTIVE|integer|2|hex=0x2|c=移動しているオブジェクトを発見するセンサに用いられます。}}
{{!}} {{#vardefine:ACTIVE|{{LSL Const/ja|ACTIVE|integer|2|hex=0x2|c=物理タスク(物理オブジェクトとエージェント) }}}}{{#var:ACTIVE}}
{{!}} {{#var:value}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} {{#var:comment}}
{{!}}}
{{!}} 移動している物理オブジェクト、または動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費しているものを検索します。
{{!}}
{{{!}} {{Prettytable}}
{{!}}-{{Hl2}}
! colspan="2" {{!}} '''{{{1|}}} フラグ'''
! '''解説'''
{{!}}-
{{!}}-
{{!}} {{LSL Const/ja|PASSIVE|integer|4|hex=0x4|c=移動していないオブジェクトを発見するセンサに用いられます。}}
{{!}} {{#vardefine:PASSIVE|{{LSL Const/ja|PASSIVE|integer|4|hex=0x4|c=非物理オブジェクト}}}}{{#var:PASSIVE}}
{{!}} {{#var:value}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} {{#var:comment}}
{{!}} 移動していない物理オブジェクト、または動作中でないスクリプトが入っている非物理オブジェクト、またはスクリプトの入っていないオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費していないものを検索します。
{{!}}-
{{!}}-
{{!}} {{LSL Const/ja|SCRIPTED|integer|8|hex=0x8|c=スクリプトが付与されたオブジェクトを発見するセンサに用いられます。}}
{{!}} {{#vardefine:SCRIPTED|{{LSL Const/ja|SCRIPTED|integer|8|hex=0x8|c=動作中のスクリプトが入っているオブジェクト}}}}{{#var:SCRIPTED}}
{{!}} {{#var:value}}
{{!}} {{#var:value}}
{{!}} {{#var:comment}}
{{!}} {{#var:comment}}
{{!}} 動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SIM に何かしているものを検索します。
{{!}}}
{{{!}} {{Prettytable}}
{{!}}-{{Hl2}}
!llDetectedType()
!スクリプトあり
!スクリプトなし
{{!}}-
! 物理
{{!}} 10 ({{#var:ACTIVE}}|{{#var:SCRIPTED}})
{{!}} 2 ({{#var:ACTIVE}})
{{!}}-
! 非物理
{{!}} 12 ({{#var:PASSIVE}}|{{#var:SCRIPTED}})
{{!}} 4 ({{#var:PASSIVE}})
{{!}}}
{{!}}}
{{#if:{{{no_wrapper|}}}||{{!}}} }}
{{#if:{{{no_wrapper|}}}||{{!}}} }}{{#if:
 
{{#vardefine:also_articles|{{#var:also_articles}}
{{LSL DefineRow|2=[http://lslwiki.net/lslwiki/wakka.php?wakka=ObjectType Object Type]}}}}
 
{{#if:{{{examples|}}}<noinclude>*</noinclude>|
{{#vardefine:examples|{{#var:examples}}
'''{{LSLG/ja|collision}} イベントで {{LSLG/ja|llDetectedType}} を使う例 :'''
<lsl>
integer type;
 
default
{
    state_entry()
    {
        llVolumeDetect(TRUE);
    }
    collision_start(integer detected)
    {
        type = llDetectedType(0);
        if(type == AGENT)// = 1
        {
            llSay(0, "ここは通りません。物理計算を必要としないアバターはいないからです。");
        }
        else if(type == ACTIVE)// = 2
        {
            llSay(0, "スクリプトが入っていない物理オブジェクトがぶつかってきました。");
        }
        else if(type == PASSIVE)// = 4
        {
            llSay(0, "ここは通りません。物理オブジェクトでないオブジェクトでこのイベントは起きません。");
        }
        else if(type == SCRIPTED)// = 8
        {
            llSay(0, "ここは通りません。物理でも非物理でもないオブジェクトは存在しません。");
        }
        else if(type == 3)// AGENT & ACTIVE
        {
            llSay(0, "アバターがぶつかってきました。");
        }
        else if(type == 10)// SCRIPTED & ACTIVE
        {
            llSay(0, "スクリプトの入っている物理オブジェクトがぶつかってきました。");
        }
        else if(type == 12)// SCRIPTED & PASSIVE
        {
            llSay(0, "ここは通りません。物理オブジェクトでないオブジェクトでこのイベントは起きません。");
        }
    }
}
</lsl>
'''{{LSLG/ja|sensor}} イベントで {{LSLG/ja|llDetectedType}} を使う例 :'''
<lsl>
default
{
    touch_start(integer numberDetected)
    {
        llSensor("", "", ACTIVE | PASSIVE | AGENT, 20.0, PI); // センサーをオンにします。
    }
 
    sensor (integer numberDetected)
    {
        integer i = 0;
        while(i < numberDetected)
        {
            integer type = llDetectedType(i);
            string message;
            message += (string)i + ", " + llDetectedName(i) + ", ";
            list typeList;
            if(AGENT & type)
            {
                typeList += "AGENT";
            }
            if(ACTIVE & type)
            {
                typeList += "ACTIVE";
            }
            if(PASSIVE & type)
            {
                typeList += "PASSIVE";
            }
            if(SCRIPTED & type)
            {
                typeList += "SCRIPTED";
            }
            message += llDumpList2String(typeList, "|");
            llWhisper(0, message);
            i++;
        }
    }
    no_sensor()
    {
        // range = 20.0 で、自分のアバターが 10m 以内に立っている場合、ここは通りません!
        llWhisper(0, "現在近くには何もありません。");
    }
}
</lsl>
'''{{LSLGC/ja|Sensor|llSensor*}} でフィルタを使う例 :'''
<lsl>
integer done;
 
tellit(integer detected)
{
    integer i = 0;
    while(i < detected)
    {
        integer type = llDetectedType(i);
        string message;
        llWhisper(0, (string)i + ", " + llDetectedName(i));
        i++;
    }
}
default
{
    touch_start(integer detected)
    {
        llWhisper(0, "AGENT");
        llSensor("", "", AGENT, 20.0, PI);
    }
    sensor(integer detected)
    {
        if(done == 0)
        {   
            tellit(detected);
            llWhisper(0, "ACTIVE");
            llSensor("", "", ACTIVE, 20.0, PI);
            ++done;
        }
        else if(done == 1)
        {
            tellit(detected);
            llWhisper(0, "AGENT|ACTIVE");
            llSensor("", "", AGENT | ACTIVE, 20.0, PI);
            ++done;
        }
        else if(done == 2)
        {
            tellit(detected);
            llWhisper(0, "PASSIVE");
            llSensor("", "", PASSIVE, 20.0, PI);
            ++done;
        }
        else if(done == 3)
        {   
            tellit(detected);
            llWhisper(0, "AGENT|PASSIVE");
            llSensor("", "", AGENT | PASSIVE, 20.0, PI);
            ++done;
        }
        else if(done == 4)
        {   
            tellit(detected);
            llWhisper(0, "ACTIVE|PASSIVE");
            llSensor("", "", ACTIVE | PASSIVE, 20.0, PI);
            ++done;
        }
        else if(done == 5)
        {   
            tellit(detected);
            llWhisper(0, "AGENT|ACTIVE|PASSIVE");
            llSensor("", "", AGENT | ACTIVE | PASSIVE, 20.0, PI);
            ++done;
        }
        else if(done == 6)
        {   
            tellit(detected);
            llWhisper(0, "SCRIPTED");
            llSensor("", "", SCRIPTED, 20.0, PI);
            ++done;
        }
        else if(done == 7)
        {   
            tellit(detected);
            llWhisper(0, "AGENT|SCRIPTED");
            llSensor("", "", AGENT | SCRIPTED, 20.0, PI);
            ++done;
        }
        else if(done == 8)
        {   
            tellit(detected);
            llWhisper(0, "ACTIVE|SCRIPTED");
            llSensor("", "", ACTIVE | SCRIPTED, 20.0, PI);
            ++done;
        }
        else if(done == 9)
        {   
            tellit(detected);
            llWhisper(0, "AGENT|ACTIVE|SCRIPTED");
            llSensor("", "", AGENT | ACTIVE | SCRIPTED, 20.0, PI);
            ++done;
        }
        else if(done == 10)
        {   
            tellit(detected);
            llWhisper(0, "PASSIVE|SCRIPTED");
            llSensor("", "", PASSIVE | SCRIPTED, 20.0, PI);
            ++done;
        }
        else if(done == 11)
        {   
            tellit(detected);
            llSay(0, "完了!");
        }
    }
   
    no_sensor()
    {
        llWhisper(0, "ありません。");
        if(done == 11)
        {
            llSay(0, "完了!");
        }
        else
        {
            ++done;
        }
    }
}
</lsl>
詳細は [http://lslwiki.net/lslwiki/wakka.php?wakka=ObjectType Object Type] を参照してください。
}}}}
 
}}<noinclude>{{#var:examples}}</noinclude>

Latest revision as of 18:49, 7 January 2011

マスクフラグ 説明 (llDetectedType()) 説明 (llSensor() と llSensorRepeat() のマスク)
AGENT 0x1 エージェント 廃止: AGENT_BY_LEGACY_NAME を使ってください。
AGENT_BY_LEGACY_NAME 0x1 エージェント Legacy Name(レガシー名)でエージェントを検索します。
AGENT_BY_USERNAME 0x10 エージェント Username(ユーザ名)でエージェントを検索します。
ACTIVE 0x2 物理タスク(物理オブジェクトとエージェント) 移動している物理オブジェクト、または動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費しているものを検索します。
PASSIVE 0x4 非物理オブジェクト 移動していない物理オブジェクト、または動作中でないスクリプトが入っている非物理オブジェクト、またはスクリプトの入っていないオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費していないものを検索します。
SCRIPTED 0x8 動作中のスクリプトが入っているオブジェクト 動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SIM に何かしているものを検索します。
llDetectedType() スクリプトあり スクリプトなし
物理 10 (ACTIVE|SCRIPTED) 2 (ACTIVE)
非物理 12 (PASSIVE|SCRIPTED) 4 (PASSIVE)

collision イベントで llDetectedType を使う例 :

<lsl> integer type;

default {

   state_entry()
   {
       llVolumeDetect(TRUE);
   }
   collision_start(integer detected)
   {
       type = llDetectedType(0);
       if(type == AGENT)// = 1
       {
           llSay(0, "ここは通りません。物理計算を必要としないアバターはいないからです。");
       }
       else if(type == ACTIVE)// = 2
       {
           llSay(0, "スクリプトが入っていない物理オブジェクトがぶつかってきました。");
       }
       else if(type == PASSIVE)// = 4
       {
           llSay(0, "ここは通りません。物理オブジェクトでないオブジェクトでこのイベントは起きません。");
       }
       else if(type == SCRIPTED)// = 8
       {
           llSay(0, "ここは通りません。物理でも非物理でもないオブジェクトは存在しません。");
       }
       else if(type == 3)// AGENT & ACTIVE
       {
           llSay(0, "アバターがぶつかってきました。");
       }
       else if(type == 10)// SCRIPTED & ACTIVE
       {
           llSay(0, "スクリプトの入っている物理オブジェクトがぶつかってきました。");
       }
       else if(type == 12)// SCRIPTED & PASSIVE
       {
           llSay(0, "ここは通りません。物理オブジェクトでないオブジェクトでこのイベントは起きません。");
       }
   }

} </lsl> sensor イベントで llDetectedType を使う例 : <lsl> default {

   touch_start(integer numberDetected)
   {
        llSensor("", "", ACTIVE