Difference between revisions of "LlGetNumberOfPrims"
(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> | ||
// 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
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llGetNumberOfPrims( );275 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
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.
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. |