RedM Natives

_BLIP_ADD_FOR_VOLUME

Draws a blip shaped like a volume on the pause map — with a volume aggregate of boxes it draws arbitrary polygons.

Hash0xA6EF0C54A3443E70
Runtime nameBlipAddForVolume
NamespaceMAP
SideClient
NameCommunity guess
Docs
Since build1207

Signature

Blip _BLIP_ADD_FOR_VOLUME(Hash blipHash, Volume volume);

Parameters

NameTypeDescription
blipHashHash

Blip style hash. Use BLIP_STYLE_AREA_NO_DIM (620596860) for zones.

volumeVolume

Volume or volume aggregate handle (CREATE_VOLUME_AGGREGATE).

Returns Blip

Verified notes

Reviewed in this portal's repository · by borderline-rp

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.

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
local retval = BlipAddForVolume(blipHash, volume)

-- always works, by hash
local retval = Citizen.InvokeNative(0xA6EF0C54A3443E70, blipHash, volume, Citizen.ResultAsInteger())
JavaScript and C#
JavaScript
const retval = BlipAddForVolume(blipHash, volume);

// by hash
const retval = Citizen.invokeNative('0xA6EF0C54A3443E70', blipHash, volume, Citizen.returnResultAnyway(), Citizen.resultAsInteger());
C#
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

Sources

alloc8or RDR3 NativeDB · RedM Natives (verified notes)

Something wrong or missing? Contribute a verified note — corrections ship through pull requests.