Difference between revisions of "LlGetNumberOfPrims"

From Second Life Wiki
Jump to navigation Jump to search
(zusätzliches Beispiel zugefügt)
m (Duplicates my GetNumberOfPrims from Febuary 2006 posted on the LSL Wiki, removing the "if" updated it to the August 2007 revision that was posted here.)
Line 18: Line 18:
}</lsl>
}</lsl>
|helpers=<lsl>
|helpers=<lsl>
// determine the number of prims in linkset (by Fin's Corp.)
getNumberOfPrims()
{
  maxLinkNumber = llGetNumberOfPrims();
  // subtract seated avatars
  if(1 < maxLinkNumber) {
      while( llGetAgentSize( llGetLinkKey(maxLinkNumber) ) ) {
        --maxLinkNumber;
      }
  }
} // END getNumberOfPrims()
// Returns the number of prims in the object, ignoring seated avatars
// Returns the number of prims in the object, ignoring seated avatars
integer GetNumberOfPrims()
integer GetNumberOfPrims()
Line 53: Line 40:
//-- inline version of the previous
//-- inline version of the previous
((llGetNumberOfPrims() - llGetObjectPrimCount( llGetKey() )) * !llGetAttached())
((llGetNumberOfPrims() - llGetObjectPrimCount( llGetKey() )) * !llGetAttached())
</lsl>
This method uses a loop, it is less efficient and only included for completeness. It's more efficient to ask the physics engine (via [[llGetObjectPrimCount]]) how many prims are in the object.
<lsl>
// determine the number of prims in linkset
integer getNumberOfPrims()
{
    integer maxLinkNumber = llGetNumberOfPrims();
    // subtract seated avatars
    while( llGetAgentSize( llGetLinkKey(maxLinkNumber) ) ) {
        --maxLinkNumber;
    }
    return maxLinkNumber;
} // END getNumberOfPrims()
</lsl>
</lsl>
|also_functions=
|also_functions=

Revision as of 19:53, 10 September 2013

Summary

Function: integer llGetNumberOfPrims( );

Returns an integer that is the number of prims in a link set the script is attached to.

Caveats

  • The number of prims returned also includes the number of avatars sitting on the object.
All Issues ~ Search JIRA for related Bugs

Examples

<lsl>default {

   state_entry()
   {
       llOwnerSay((string)llGetLinkNumber());
       llOwnerSay((string)llGetNumberOfPrims());
   }
}</lsl>

Useful Snippets

<lsl> // Returns the number of prims in the object, ignoring seated avatars integer GetNumberOfPrims() {

   if (llGetAttached())
   {
       // llGetObjectPrimCount fails on attachments, but you can't sit on an attachment
       return llGetNumberOfPrims();
   }
   return llGetObjectPrimCount(llGetKey());

}

//-- inline version of the above (llGetObjectPrimCount( llGetKey() ) + llGetNumberOfPrims() * !!llGetAttached())

// Returns the number of agents on the object integer GetNumberOfAgents() {

   return llGetNumberOfPrims() - GetNumberOfPrims();

}

//-- inline version of the previous ((llGetNumberOfPrims() - llGetObjectPrimCount( llGetKey() )) * !llGetAttached()) </lsl> This method uses a loop, it is less efficient and only included for completeness. It's more efficient to ask the physics engine (via llGetObjectPrimCount) how many prims are in the object. <lsl> // determine the number of prims in linkset integer getNumberOfPrims() {

   integer maxLinkNumber = llGetNumberOfPrims();
   // subtract seated avatars
   while( llGetAgentSize( llGetLinkKey(maxLinkNumber) ) ) {
       --maxLinkNumber;
   }
   return maxLinkNumber;

} // END getNumberOfPrims() </lsl>

See Also

Functions

•  llGetObjectPrimCount Returns the number of prims in any object.
•  llGetLinkNumber Returns the link number of the prim the script is in.

Deep Notes

Search JIRA for related Issues

Signature

function integer llGetNumberOfPrims();