llGetParcelPrimCount
function
Function syntax
integer llGetParcelPrimCount(vector pos,// Position vector in region coordinates (the Z component is ignored).integer category,// PARCEL_COUNT_* category flag. Values: ParcelPrimCountCategoryinteger sim_wide// Boolean. IfTRUE, searches all parcels in the region owned by the targeted parcel's owner; ifFALSE, searches only the specified parcel.
);- Returns
integer- Energy
- 10
Returns an integer representing the total land impact of objects on the parcel at pos in the specified category. If sim_wide is TRUE, returns combined usage for all regional parcels owned by the parcel owner; if FALSE, returns usage for only the specified parcel.
Returns an integer that is the total land impact of objects on the parcel at pos of the given category
integer result = llGetParcelPrimCount(ZERO_VECTOR, 0, 0);Specification
Section titled “Specification”If sim_wide is…
- then the return is the object land impact used of the category requested on the parcel specified.
| 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. |
Caveats
Section titled “Caveats”- Temp mesh is not included in totals for
PARCEL_COUNT_TEMP
Examples
Section titled “Examples”Example 1
5 collapsed lines
// gives prim usage information when touched
string primCountThisParcel(integer flag){ vector currentPosition = llGetPos();
return (string)llGetParcelPrimCount(currentPosition, flag, FALSE);}
23 collapsed lines
default{ touch_start(integer total_number) { 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."); }}Example 2
46 collapsed lines
//Sim-wide scanner to count prim use in each parcellist 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);21 collapsed lines
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(); } }}See also
Section titled “See also”Functions
Section titled “Functions”Articles
Section titled “Articles”For a detailed explanation on how the land impact is calculated, see also Jenni Darkwatch’s post from late 2011.
Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.