# MAP::_BLIP_ADD_FOR_VOLUME

- **Hash:** `0xA6EF0C54A3443E70`
- **Namespace:** MAP
- **Runtime name (Lua/JS):** `BlipAddForVolume`
- **Side:** client (game native)
- **Name status:** community guess (may change)
- **Documentation:** described with examples
- **Since game build:** 1207
- **URL:** https://natives.borderlinerp.com/natives/MAP/_BLIP_ADD_FOR_VOLUME

## Signature

```c
Blip _BLIP_ADD_FOR_VOLUME(Hash blipHash, Volume volume);
```

## Parameters

- `blipHash` (`Hash`) — Blip style hash. Use BLIP_STYLE_AREA_NO_DIM (620596860) for zones.
- `volume` (`Volume`) — Volume or volume aggregate handle (CREATE_VOLUME_AGGREGATE).

## Returns

`Blip`

## Verified notes

### Polygons on the pause map

Fill a volume aggregate with boxes (scanline strips of the polygon) and add **one** blip for the whole aggregate. Position and size come out exact.

For clean edges:

| Setting | Value | Why |
| --- | --- | --- |
| Style | `BLIP_STYLE_AREA_NO_DIM` (620596860) | `BLIP_STYLE_AREA` darkens while you stand inside it |
| Modifier | `BLIP_MODIFIER_AREA_ACCURATE` (453264060) | without it every box is feathered: seams between strips, thin tips vanish |
| Strips | overlap them by ×1.3–1.6 | removes the remaining seams; the step size (~10 m) sets the staircase on slanted edges |

**An aggregate holds at most 32 boxes.** Extra boxes are dropped silently, which looks like clipped corners. Use one aggregate (and one blip) per 32 boxes.

`SET_BLIP_NAME` on an area blip shows no hover label. Put a point blip with `BLIP_STYLE_SHOP` (168093330, visible at every zoom) at the centre for the name. An `MP_COLOR_*` modifier added after the accurate modifier still works.

```lua
local agg = Citizen.InvokeNative(0x59F6F5C1D129F106, Citizen.ResultAsInteger()) -- CREATE_VOLUME_AGGREGATE
for _, b in ipairs(strips) do -- at most 32
    Citizen.InvokeNative(0x39816F6F94F385AD, agg, b.x + 0.0, b.y + 0.0, z + 0.0, 0.0, 0.0, b.heading + 0.0, b.w + 0.0, b.h + 0.0, 50.0)
end
local blip = Citizen.InvokeNative(0xA6EF0C54A3443E70, joaat('BLIP_STYLE_AREA_NO_DIM'), agg, Citizen.ResultAsInteger())
Citizen.InvokeNative(0x662D364ABF16DE2F, blip, joaat('BLIP_MODIFIER_AREA_ACCURATE')) -- BLIP_ADD_MODIFIER
```

Verified in game on the Borderline RP server, September 2026.

## Usage

### Lua

```lua
local retval = BlipAddForVolume(blipHash, volume)

-- always available, by hash
local retval = Citizen.InvokeNative(0xA6EF0C54A3443E70, blipHash, volume, Citizen.ResultAsInteger())
```

### JavaScript

```js
const retval = BlipAddForVolume(blipHash, volume);

// by hash
const retval = Citizen.invokeNative('0xA6EF0C54A3443E70', blipHash, volume, Citizen.returnResultAnyway(), Citizen.resultAsInteger());
```

### C#

```csharp
int retval = Function.Call<int>((Hash)0xA6EF0C54A3443E70, blipHash, volume);
```

- Hash parameters: the named function also accepts a string and hashes it for you; `Citizen.InvokeNative` needs the number — pass `joaat("name")` or a backtick literal like `` `name` ``.
- The name is a community guess and may change. If the named call is missing in your client build, use `InvokeNative` with the hash — it always works.

## See also

- [MAP::BLIP_ADD_MODIFIER](https://natives.borderlinerp.com/natives/MAP/BLIP_ADD_MODIFIER.md) — Old name: _BLIP_SET_MODIFIER
- [MAP::BLIP_ADD_FOR_RADIUS](https://natives.borderlinerp.com/natives/MAP/BLIP_ADD_FOR_RADIUS.md) — Creates a circular area blip. The first argument is the blip style, not a sprite.
- [VOLUME::_ADD_BOX_VOLUME_TO_VOLUME_AGGREGATE](https://natives.borderlinerp.com/natives/VOLUME/_ADD_BOX_VOLUME_TO_VOLUME_AGGREGATE.md) — Adds a box (position, rotation, scale) to a volume aggregate. An aggregate holds at most 32 boxes.
- [VOLUME::CREATE_VOLUME_AGGREGATE](https://natives.borderlinerp.com/natives/VOLUME/CREATE_VOLUME_AGGREGATE.md)

*Sources: alloc8or RDR3 NativeDB, RedM Natives (verified notes).*
