Difference between revisions of "Template:LSL Constants Sensor"

From Second Life Wiki
Jump to navigation Jump to search
m
m
Line 73: Line 73:
     {
     {
         type = llDetectedType(0);
         type = llDetectedType(0);
         if (type == AGENT_BY_LEGACY_NAME)// = 1
         if (type == AGENT)// = 1
         {
         {
             llSay(0, "This is impossible. Since there is no avatar who doesn't require the physical calculation.");
             llSay(0, "This is impossible. Since there is no avatar who doesn't require the physical calculation.");
Line 89: Line 89:
             llSay(0, "This is impossible. Since there is no object which isn't physical nor non-physical.");
             llSay(0, "This is impossible. Since there is no object which isn't physical nor non-physical.");
         }
         }
         else if (type == (AGENT_BY_LEGACY_NAME | ACTIVE) ) // 1 + 2
         else if (type == (AGENT | ACTIVE) ) // 1 + 2
         {
         {
             llSay(0, "I have been struck by an avatar.");
             llSay(0, "I have been struck by an avatar.");
Line 110: Line 110:
     touch_start(integer numberDetected)
     touch_start(integer numberDetected)
     {
     {
         llSensor("", "", ACTIVE | PASSIVE | AGENT_BY_LEGACY_NAME, 20.0, PI); // activates the sensor.
         llSensor("", "", ACTIVE | PASSIVE | AGENT, 20.0, PI); // activates the sensor.
     }
     }


Line 122: Line 122:
             message += (string)i + ", " + llDetectedName(i) + ", ";
             message += (string)i + ", " + llDetectedName(i) + ", ";
             list typeList;
             list typeList;
             if (type & AGENT_BY_LEGACY_NAME)
             if (type & AGENT)
             {
             {
                 typeList += "AGENT_BY_LEGACY_NAME";
                 typeList += "AGENT";
             }
             }
             if (type & ACTIVE)
             if (type & ACTIVE)

Revision as of 00:05, 5 November 2013

Flag Mask Description (llDetectedType()) Description (llSensor() and llSensorRepeat() mask)
AGENT_BY_LEGACY_NAME 0x1 Agents This is used to find agents by legacy name.
AGENT 0x1 Agents This is also used to find agents by legacy name, and is functionally identical to AGENT_BY_LEGACY_NAME
AGENT_BY_USERNAME 0x10 Reserved This is used to find agents by username.
ACTIVE 0x2 Physical tasks. (Physical objects & agents) Physical objects that are moving or objects containing an active script. Thus, it is using SL server resources now.
PASSIVE 0x4 Non-physical objects. Non-scripted or script is inactive and non-physical or, if physical, not moving. Thus, it is not using SL server resources now.
SCRIPTED 0x8 Objects containing any active script. Objects that has any script, which is doing anything in simulator just now.
llDetectedType() Scripted Not Scripted
Physical 10 (ACTIVE|SCRIPTED) 2 (ACTIVE)
Non-Physical 12 (PASSIVE|SCRIPTED) 4 (PASSIVE)

Using llDetectedType in collision event:

<lsl> integer type;

default {

   state_entry()
   {
       llVolumeDetect(TRUE);
   }
   collision_start(integer detected)
   {
       type = llDetectedType(0);
       if (type == AGENT)// = 1
       {
           llSay(0, "This is impossible. Since there is no avatar who doesn't require the physical calculation.");
       }
       else if (type == ACTIVE)// = 2
       {
           llSay(0, "I have been struck by a physical object not containing any script.");
       }
       else if (type == PASSIVE)// = 4
       {
           llSay(0, "This is impossible. Non-physical objects cannot trigger this event.");
       }
       else if (type == SCRIPTED)// = 8
       {
           llSay(0, "This is impossible. Since there is no object which isn't physical nor non-physical.");
       }
       else if (type == (AGENT