# llGetParcelFlags

*LSL function*

```lsl
integer integer llGetParcelFlags(vector pos);
```

- `vector pos`: Position vector in region coordinates (the Z component is ignored).

- Returns: `integer`
- Energy: 10

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

Returns an [integer](https://wiki.secondlife.com/wiki/integer) of parcel flags (PARCEL_FLAG\_\*) for the parcel that includes the point **pos**.

```lsl title="How to use" frame="terminal"
integer result = llGetParcelFlags(ZERO_VECTOR);
```

## Specification

| Flag | Value | Description |
| --- | --- | --- |
| [PARCEL_FLAG_ALLOW_FLY](/constants/PARCEL_FLAG_ALLOW_FLY/) | 0x00000001 | find if a parcel allows flying |
| [PARCEL_FLAG_ALLOW_SCRIPTS](/constants/PARCEL_FLAG_ALLOW_SCRIPTS/) | 0x00000002 | find if a parcel allows outside scripts |
| [PARCEL_FLAG_ALLOW_LANDMARK](/constants/PARCEL_FLAG_ALLOW_LANDMARK/) | 0x00000008 | find if a parcel allows landmarks to be created |
| [PARCEL_FLAG_ALLOW_TERRAFORM](/constants/PARCEL_FLAG_ALLOW_TERRAFORM/) | 0x00000010 | find if a parcel allows anyone to terraform the land |
| [PARCEL_FLAG_ALLOW_DAMAGE](/constants/PARCEL_FLAG_ALLOW_DAMAGE/) | 0x00000020 | find if a parcel allows damage |
| [PARCEL_FLAG_ALLOW_CREATE_OBJECTS](/constants/PARCEL_FLAG_ALLOW_CREATE_OBJECTS/) | 0x00000040 | find if a parcel allows anyone to create objects |
| [PARCEL_FLAG_USE_ACCESS_GROUP](/constants/PARCEL_FLAG_USE_ACCESS_GROUP/) | 0x00000100 | find if a parcel limits access to a group |
| [PARCEL_FLAG_USE_ACCESS_LIST](/constants/PARCEL_FLAG_USE_ACCESS_LIST/) | 0x00000200 | find if a parcel limits access to a list of residents |
| [PARCEL_FLAG_USE_BAN_LIST](/constants/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](/constants/PARCEL_FLAG_USE_LAND_PASS_LIST/) | 0x00000800 | find if a parcel allows passes to be purchased |
| [PARCEL_FLAG_LOCAL_SOUND_ONLY](/constants/PARCEL_FLAG_LOCAL_SOUND_ONLY/) | 0x00008000 | find if a parcel restricts spatialized sound to the parcel |
| [PARCEL_FLAG_RESTRICT_PUSHOBJECT](/constants/PARCEL_FLAG_RESTRICT_PUSHOBJECT/) | 0x00200000 | find if a parcel restricts [llPushObject](/functions/llPushObject/) |
| [PARCEL_FLAG_ALLOW_GROUP_SCRIPTS](/constants/PARCEL_FLAG_ALLOW_GROUP_SCRIPTS/) | 0x02000000 | find if a parcel allows scripts owned by group |
| [PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS](/constants/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](/constants/PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY/) | 0x08000000 | find if a parcel allows all objects to enter a parcel |
| [PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY](/constants/PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY/) | 0x10000000 | find if a parcel only allows group (and owner) objects to enter the parcel |

## Examples

<details open>
<summary>Example 1</summary>

```lsl collapse={11-19, 25-32}
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;
}
```

</details>

## See also

### Functions

- [llGetParcelDetails](/functions/llGetParcelDetails/)
- [llGetRegionFlags](/functions/llGetRegionFlags/)

---

*Source: [LlGetParcelFlags](https://wiki.secondlife.com/wiki/LlGetParcelFlags) on the Second Life Wiki. Content from the Second Life Wiki articles LlGetParcelFlags (revision 1212793, 2022-11-17), Template:LSL Constants/Parcel (revision 1218447, 2025-09-02) and Template:LSL Function/position (revision 1169387, 2012-06-18), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llGetParcelFlags/
