_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.
0xA6EF0C54A3443E70BlipAddForVolumeSignature
Blip _BLIP_ADD_FOR_VOLUME(Hash blipHash, Volume volume);Parameters
| Name | Type | Description |
|---|---|---|
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
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_MODIFIERVerified in game on the Borderline RP server, September 2026.
Usage
local retval = BlipAddForVolume(blipHash, volume)
-- always works, by hash
local retval = Citizen.InvokeNative(0xA6EF0C54A3443E70, blipHash, volume, Citizen.ResultAsInteger())JavaScript and C#
const retval = BlipAddForVolume(blipHash, volume);
// by hash
const retval = Citizen.invokeNative('0xA6EF0C54A3443E70', blipHash, volume, Citizen.returnResultAnyway(), Citizen.resultAsInteger());int retval = Function.Call<int>((Hash)0xA6EF0C54A3443E70, blipHash, volume);- Hash parameters: the named function also accepts a string and hashes it for you;
Citizen.InvokeNativeneeds the number — passjoaat("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
InvokeNativewith the hash — it always works.
See also
BLIP_ADD_MODIFIEROld name: _BLIP_SET_MODIFIERBLIP_ADD_FOR_RADIUSCreates a circular area blip. The first argument is the blip style, not a sprite._ADD_BOX_VOLUME_TO_VOLUME_AGGREGATEAdds a box (position, rotation, scale) to a volume aggregate. An aggregate holds at most 32 boxes.CREATE_VOLUME_AGGREGATE
Sources
alloc8or RDR3 NativeDB · RedM Natives (verified notes)
Something wrong or missing? Contribute a verified note — corrections ship through pull requests.