LlGetParcelFlags: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
mNo edit summary
m Replace Template:SourceLink/bitbucket with SourceLink:github
 
(4 intermediate revisions by 3 users not shown)
Line 4: Line 4:
|func=llGetParcelFlags
|func=llGetParcelFlags
|p1_type=vector|p1_name=pos
|p1_type=vector|p1_name=pos
|func_footnote=The {{LSLP|z}} component of {{LSLP|pos}} is ignored.
|func_footnote=Both {{LSLP|x}} and {{LSLP|y}} components of {{LSLP|pos}} are clamped to the range {{Interval|gte=0.0|lte=256.0|center=component}}, the {{LSLP|z}} component is ignored.
|func_desc
|func_desc
|return_type=integer
|return_type=integer
Line 13: Line 13:
|constants={{LSL_Constants/Parcel}}
|constants={{LSL_Constants/Parcel}}
|examples=
|examples=
<lsl>
<source lang="lsl2">
if (!(llGetParcelFlags(llGetPos()) & PARCEL_FLAG_ALLOW_FLY))
if (!(llGetParcelFlags(llGetPos()) & PARCEL_FLAG_ALLOW_FLY))
     llSay(0,"You are not allowed to fly here!, Sorry!.");
     llSay(0,"You are not allowed to fly here!, Sorry!.");
</lsl>
 
// Answers TRUE if rezzing is permitted, FALSE if not.
// Rezzing can fail even if this returns TRUE due to parcel full or server errors.
// Rezzing will always fail if this returns FALSE
integer canRezAt(vector pos) {
    integer parcelFlags = llGetParcelFlags(pos);
    list parcelDetails = llGetParcelDetails(pos, [PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]);
    key parcelOwner = llList2Key(parcelDetails, 0);
    key parcelGroup = llList2Key(parcelDetails, 1);
    if (parcelFlags & PARCEL_FLAG_ALLOW_CREATE_OBJECTS) return TRUE;
    if (parcelOwner == llGetOwner()) return TRUE;
    if (!llSameGroup(parcelGroup)) return FALSE;
    if (parcelFlags & PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS) return TRUE;
    return FALSE;
}
// Answers TRUE if running scripts is permitted, FALSE if not
integer canRunScriptsAt(vector pos) {
    integer parcelFlags = llGetParcelFlags(pos);
    list parcelDetails = llGetParcelDetails(pos, [PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]);
    key parcelOwner = llList2Key(parcelDetails, 0);
    key parcelGroup = llList2Key(parcelDetails, 1);
    if (parcelFlags & PARCEL_FLAG_ALLOW_SCRIPTS) return TRUE;
    if (parcelOwner == llGetOwner()) return TRUE;
    if (!llSameGroup(parcelGroup)) return FALSE;
    if (parcelFlags & PARCEL_FLAG_ALLOW_GROUP_SCRIPTS) return TRUE;
    return FALSE;
}
</source>
|helpers
|helpers
|also_tests=
|also_tests=
Line 26: Line 56:
|also_tests
|also_tests
|also_articles
|also_articles
|location={{SourceLink/bitbucket|viewer-release|indra/llinventory/llparcelflags.h|rev=default}}
|location={{SourceLink/github|viewer|indra/llinventory/llparcelflags.h}}
|notes
|notes
|cat1=Parcel
|cat1=Parcel

Latest revision as of 15:09, 17 November 2022

Summary

Function: integer llGetParcelFlags( vector pos );
0.0 Forced Delay
10.0 Energy

Returns a bit field (an integer) of parcel flags (PARCEL_FLAG_*) for the parcel that includes the point pos.

• vector pos position in region coordinates (z component is ignored)

Both x and y components of pos are clamped to the range [0.0, 256.0], the z component is ignored.

Flag Value Description
PARCEL_FLAG_ALLOW_FLY 0x00000001 find if a parcel allows flying
PARCEL_FLAG_ALLOW_SCRIPTS 0x00000002 find if a parcel allows outside scripts
PARCEL_FLAG_ALLOW_LANDMARK 0x00000008 find if a parcel allows landmarks to be created
PARCEL_FLAG_ALLOW_TERRAFORM 0x00000010 find if a parcel allows anyone to terraform the land
PARCEL_FLAG_ALLOW_DAMAGE 0x00000020 find if a parcel allows damage
PARCEL_FLAG_ALLOW_CREATE_OBJECTS 0x00000040 find if a parcel allows anyone to create objects
PARCEL_FLAG_USE_ACCESS_GROUP 0x00000100 find if a parcel limits access to a group
PARCEL_FLAG_USE_ACCESS_LIST 0x00000200 find if a parcel limits access to a list of residents
PARCEL_FLAG_USE_BAN_LIST 0x00000400 find if a parcel uses a ban list, including restricting access based on payment info
PARCEL_FLAG_USE_LAND_PASS_LIST 0x00000800 find if a parcel allows passes to be purchased
PARCEL_FLAG_LOCAL_SOUND_ONLY 0x00008000 find if a parcel restricts spatialized sound to the parcel
PARCEL_FLAG_RESTRICT_PUSHOBJECT 0x00200000 find if a parcel restricts llPushObject
PARCEL_FLAG_ALLOW_GROUP_SCRIPTS 0x02000000 find if a parcel allows scripts owned by group
PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS 0x04000000 find if a parcel allows object creation by group members or objects
PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY 0x08000000 find if a parcel allows all objects to enter a parcel
PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY 0x10000000 find if a parcel only allows group (and owner) objects to enter the parcel

Examples

if (!(llGetParcelFlags(llGetPos()) & PARCEL_FLAG_ALLOW_FLY))
    llSay(0,"You are not allowed to fly here!, Sorry!.");

// Answers TRUE if rezzing is permitted, FALSE if not.
// Rezzing can fail even if this returns TRUE due to parcel full or server errors.
// Rezzing will always fail if this returns FALSE
integer canRezAt(vector pos) {
    integer parcelFlags = llGetParcelFlags(pos);
    list parcelDetails = llGetParcelDetails(pos, [PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]);
    key parcelOwner = llList2Key(parcelDetails, 0);
    key parcelGroup = llList2Key(parcelDetails, 1);
 
    if (parcelFlags & PARCEL_FLAG_ALLOW_CREATE_OBJECTS) return TRUE;
    if (parcelOwner == llGetOwner()) return TRUE;
    if (!llSameGroup(parcelGroup)) return FALSE;
    if (parcelFlags & PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS) return TRUE;
    return FALSE;
}
 
// Answers TRUE if running scripts is permitted, FALSE if not
integer canRunScriptsAt(vector pos) {
    integer parcelFlags = llGetParcelFlags(pos);
    list parcelDetails = llGetParcelDetails(pos, [PARCEL_DETAILS_OWNER, PARCEL_DETAILS_GROUP]);
    key parcelOwner = llList2Key(parcelDetails, 0);
    key parcelGroup = llList2Key(parcelDetails, 1);
 
    if (parcelFlags & PARCEL_FLAG_ALLOW_SCRIPTS) return TRUE;
    if (parcelOwner == llGetOwner()) return TRUE;
    if (!llSameGroup(parcelGroup)) return FALSE;
    if (parcelFlags & PARCEL_FLAG_ALLOW_GROUP_SCRIPTS) return TRUE;
    return FALSE;
}

See Also

Functions

•  llGetParcelDetails
•  llGetRegionFlags

Deep Notes

Tests

•  llGetParcelFlags Test

Source

Footnotes

  1. ^ The ranges in this article are written in Interval Notation.

Signature

function integer llGetParcelFlags( vector pos );