Difference between revisions of "LlGetNumberOfPrims"

From Second Life Wiki
Jump to: navigation, search
m
(Removed buggy example script; see BUG-7492 for details)
Line 19: Line 19:
 
|helpers=<lsl>
 
|helpers=<lsl>
 
// 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(){
{
+
  if (llGetObjectPrimCount(llGetKey()) == 0 ) return llGetNumberOfPrims(); // attachment
    if (llGetAttached())
+
  return llGetObjectPrimCount(llGetKey());   // non-attachment
    {
+
        // 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. This only works if the object is not attached, but fortunately, in that situation you can use llGetNumberOfPrims since avatars cannot sit on attachments (the feature was removed during beta).
 
<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 14:56, 12 November 2014

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 (llGetObjectPrimCount(llGetKey()) == 0 ) return llGetNumberOfPrims(); // attachment
 return llGetObjectPrimCount(llGetKey());   // non-attachment

} </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();