Difference between revisions of "LlGetParcelPrimCount"
Jump to navigation
Jump to search
(LI) |
m |
||
Line 1: | Line 1: | ||
{{LSL_Function | {{LSL_Function | ||
|inject-2= | |inject-2= | ||
{{LSL_Function/position|pos|region=noZ}} | {{LSL_Function/position|pos|region=noZ}} | ||
{{LSL_Function/boolean|sim_wide|non-zero=*|td=searches parcels in the region with the same owner as the targeted parcel|fd=searches only the targeted parcel|bool=*}} | {{LSL_Function/boolean|sim_wide|non-zero=*|td=searches parcels in the region with the same owner as the targeted parcel|fd=searches only the targeted parcel|bool=*}} | ||
Line 16: | Line 15: | ||
*{{#var:FALSE}} then the return is the object land impact used of the category requested on the parcel specified. | *{{#var:FALSE}} then the return is the object land impact used of the category requested on the parcel specified. | ||
|caveats | |caveats | ||
|constants | |constants={{LSL Constants/Parcel Prim Count}} | ||
|examples= | |examples= | ||
<lsl> | <lsl> |
Revision as of 20:38, 23 December 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llGetParcelPrimCount( vector pos, integer category, integer sim_wide );0.0 | Forced Delay |
10.0 | Energy |
Returns an integer that is the total land impact of objects on the parcel at pos of the given category
• vector | pos | – | position in region coordinates (z component is ignored) | |
• integer | category | – | a PARCEL_COUNT_* flag | |
• integer | sim_wide | – | boolean, TRUE[1] searches parcels in the region with the same owner as the targeted parcel, FALSE searches only the targeted parcel |
Specification
Category | Description | |
---|---|---|
PARCEL_COUNT_TOTAL | 0 | All objects on the parcel(s). Does not include temp on rez objects. |
PARCEL_COUNT_OWNER | 1 | Objects owned by the parcel owner. |
PARCEL_COUNT_GROUP | 2 | Objects not owned by the owner, but set to or owned by the group of the parcel. |
PARCEL_COUNT_OTHER | 3 | Objects not set to group or owned by the owner. |
PARCEL_COUNT_SELECTED | 4 | All objects selected or sat on. |
PARCEL_COUNT_TEMP | 5 | All temp on rez objects. |
Examples
<lsl> // gives prim usage information when touched
string primCountThisParcel(integer flag) {
vector currentPosition = llGetPos();
return (string)llGetParcelPrimCount(currentPosition, flag, FALSE);
}
default {
touch_start(integer total_number) { // PUBLIC_CHANNEL has the integer value 0
llSay(PUBLIC_CHANNEL, "The total land impact of objects on this parcel is " + primCountThisParcel(PARCEL_COUNT_TOTAL) + ".");
llSay(PUBLIC_CHANNEL, primCountThisParcel(PARCEL_COUNT_OWNER) + " LI for objects owned by the parcel owner.");
llSay(PUBLIC_CHANNEL, primCountThisParcel(PARCEL_COUNT_GROUP) + " LI for objects set to or owned by the parcel's group.");
llSay(PUBLIC_CHANNEL, primCountThisParcel(PARCEL_COUNT_OTHER) + " LI for objects not set to the parcel group or owned by the parcel owner.");
llSay(PUBLIC_CHANNEL, primCountThisParcel(PARCEL_COUNT_SELECTED) + " LI for selected objects.");
llSay(PUBLIC_CHANNEL, primCountThisParcel(PARCEL_COUNT_TEMP) + " LI for temp-on-rez objects."); }
} </lsl> <lsl> //Sim-wide scanner to count prim use in each parcel list gPrclID; integer gTotPrims; float gX; float gY; string gObjName; integer gNUM;
default {
state_entry() { gObjName = llGetObjectName(); gPrclID = []; gTotPrims = 0; // Begin scanning at the SW <0.0,0.0,0.0> corner of the sim gX = 4.0; gY = 4.0; } on_rez(integer start) { llSetPos(llGetPos() + <0.0,0.0,0.5>); llSetText("Touch to start scan",<1.0,1.0,0.0>,1.0); }
touch_start(integer total_number) { llSetText("Scanning ....",<1.0,1.0,0.0>,1.0); gNUM = 0; llRegionSayTo(llGetOwner(),0,"Scan started on " + llGetRegionName()); llSetTimerEvent(0.1); } timer() { //Grab the parcel's ID and name at position <gX, gY, 100.0> list parcel = llGetParcelDetails(<gX,gY,100.0>,[PARCEL_DETAILS_ID,PARCEL_DETAILS_NAME]); key temp = llList2Key(parcel,0); string parcel_name = llList2String(parcel,1); if (parcel_name == "") { parcel_name = "(no name)"; } if (!~llListFindList(gPrclID,[temp])) //Scan at this location if this parcel was not scanned earlier { ++gNUM; llSetObjectName((string)gNUM); integer Count = llGetParcelPrimCount(<gX,gY,100>,PARCEL_COUNT_TOTAL,FALSE); //Do not include other parcels owned by llGetOwner() gTotPrims += Count; llRegionSayTo(llGetOwner(),0, "/me "+ parcel_name + " @ <"+(string)gX+","+(string)gY+",Z> = " + (string)Count); gPrclID += [temp]; //Add this parcel to the "previously scanned" list } // Increment X and Y in successive scans to look at the entire sim in 8m square blocks if (gX < 256.0) { gX +=8.0; } if (gX > 256.0) { gY += 8.0; gX = 4.0; } if (gY > 256.0) // Reached NE corner { llSetObjectName(gObjName); llRegionSayTo(llGetOwner(),0,"Scan finished. Total land impact = " + (string)gTotPrims + " in " + (string)llGetListLength(gPrclID) + " parcels (not counting temp rez prims)."); llSetText("Touch to start scan",<1.0,1.0,0.0>,1.0); llResetScript(); } }
}
</lsl>See Also
Functions
• | llGetParcelMaxPrims |