Difference between revisions of "LlSameGroup"

From Second Life Wiki
Jump to navigation Jump to search
m (some readability improvements and removed unnecessary loop)
Line 13: Line 13:
|caveats=*Also returns [[TRUE]] if the object is not set to a group (i.e. "(none)") and either the AV with the given key has no group active or the function is called with a [[NULL_KEY]]
|caveats=*Also returns [[TRUE]] if the object is not set to a group (i.e. "(none)") and either the AV with the given key has no group active or the function is called with a [[NULL_KEY]]
|constants
|constants
|examples=<lsl>// Gives inventory object only to agents with the same active group
|examples=
<lsl>
// Gives inventory object only to agents with the same active group
 
default
default
{
{
     touch_start(integer total_number)
     touch_start(integer total_number)
     {
     {
         integer i;
         key id = llDetectedKey(0);


         for (i = 0; i < total_number; i++)
         integer sameGroup = llSameGroup(id);
//      same as llDetectedGroup(i) (with llDetectedGroup, detected does not need to be in the sim)
 
        if (sameGroup)
        {
            integer numberOfObjectsInPrim = llGetInventoryNumber(INVENTORY_OBJECT);
 
            if (numberOfObjectsInPrim)
                llGiveInventory(id, llGetInventoryName(INVENTORY_OBJECT, 0));
        }
        else
         {
         {
            if (llSameGroup(llDetectedKey(i))) // same as llDetectedGroup(i) (with llDetectedGroup, detected does not need to be in the sim)
//         PUBLIC_CHANNEL has the integer value 0
              llGiveInventory(llDetectedKey(i), llGetInventoryName(INVENTORY_OBJECT, 0));
            llSay(PUBLIC_CHANNEL, "Wrong active group!");
          else
              llSay(0, "Wrong active group!");
         }
         }
     }
     }
}</lsl>
}
</lsl>
|helpers=To determine if an avatar is an object's owner when deeded to group, you should use a function similar to that provided for [[LlGetOwner#Useful_Snippets|llGetOwner]]().
|helpers=To determine if an avatar is an object's owner when deeded to group, you should use a function similar to that provided for [[LlGetOwner#Useful_Snippets|llGetOwner]]().
|also_functions={{LSL DefineRow||[[llDetectedGroup]]|Used in conjunction with {{LSLGC|Detected|detection}} events}}
|also_functions={{LSL DefineRow||[[llDetectedGroup]]|Used in conjunction with {{LSLGC|Detected|detection}} events}}

Revision as of 09:59, 3 October 2012

Summary

Function: integer llSameGroup( key uuid );
0.0 Forced Delay
10.0 Energy

Returns an integer boolean, that is TRUE if uuid has the same active group, otherwise FALSE

• key uuid group, avatar or prim UUID that is in the same region

Also returns TRUE if the object is deeded to the same active group as uuid Also returns TRUE if the object is "set to" or deeded to the same group as group UUID (i.e. key OBJECT_GROUP)

Caveats

  • Also returns TRUE if the object is not set to a group (i.e. "(none)") and either the AV with the given key has no group active or the function is called with a NULL_KEY

Examples

<lsl> // Gives inventory object only to agents with the same active group

default {

   touch_start(integer total_number)
   {
       key id = llDetectedKey(0);
       integer sameGroup = llSameGroup(id);

// same as llDetectedGroup(i) (with llDetectedGroup, detected does not need to be in the sim)

       if (sameGroup)
       {
           integer numberOfObjectsInPrim = llGetInventoryNumber(INVENTORY_OBJECT);
           if (numberOfObjectsInPrim)
               llGiveInventory(id, llGetInventoryName(INVENTORY_OBJECT, 0));
       }
       else
       {

// PUBLIC_CHANNEL has the integer value 0

           llSay(PUBLIC_CHANNEL, "Wrong active group!");
       }
   }

}

</lsl>

Useful Snippets

To determine if an avatar is an object's owner when deeded to group, you should use a function similar to that provided for llGetOwner().

Notes

Child Prims

It is possible for the group of a child prim to differ from that of the root prim. To build such an object it must first be unlinked, the groups set, and then relinked. Rezzing an object resets the group of the object to that of the group that the user currently has activated. Changing the group of an object changes the group for the entire object. This may only be an artifact or manifestation of VWR-5044.

See Also

Functions

•  llDetectedGroup Used in conjunction with detection events

Deep Notes

Tests

•  llSameGroup Test

Signature

function integer llSameGroup( key uuid );