ZoneManager
A standalone, framework-agnostic FiveM resource for drawing, saving, and querying 3D polygon and circle zones. Ships with an in-game free-cam viewer and a 2D Leaflet map editor.
Preview
-
2D map editor:
-
In-game 3D viewer:
Features
- Polygon + circle zones - draw a ring of points or a center + radius, each with a per-zone height.
- 2D map editor - place, drag, insert, and delete points on a Leaflet GTA map; live distance + grid overlays.
- In-game viewer - free-cam over the zone with walls drawn in world space; nudge the height live.
- Framework-agnostic - standalone (cfx ace), ESX, QBCore, Qbox, or your own. One setting.
- Simple API -
Enable/Disable/IsEnabled,AttachZoneToEntity, andOnEnter/OnExitsubscriptions. - Server-authoritative - the editor command and every save are gated server-side, so the editor can’t be reached by forging an event.
Installation
# drop into your resources folder
cd resources
git clone https://github.com/itsxScrubz/fivem-zonemanager zonemanager
# server.cfg - after your framework, if any
ensure zonemanager
# standalone admin grant (skip if using a framework adapter)
add_ace group.admin zonemanager.editor allow
Then /zonemanager in-game (as an admin) opens the editor.
Configuration
Two settings in config.lua:
| Key | Default | Options |
|---|---|---|
config.framework |
'standalone' |
standalone | esx | qbcore | qbox | custom |
config.callbacks |
'internal' |
internal | framework |
config.framework picks the admin check. config.callbacks picks how the editor talks to the server - internal works everywhere.
framework uses the framework’s native callbacks.
API
From any other resource:
local ZoneManager = exports.zonemanager:FetchModule()
ZoneManager:OnEnter(function(name) print('entered', name) end)
ZoneManager:OnExit(function(name) print('left', name) end)
ZoneManager:Enable('legion_square')
print(ZoneManager:IsEnabled('legion_square'))
Also: Disable(name), AttachZoneToEntity(name, entity, opts?) / DetachZone(name), SetZoneDebug(name, on), and GetZones() server-side.
AttachZoneToEntity opts: useZ (full 3D box vs flat footprint), padding (grow the box by N meters on every side), debug (draw the box in-world for testing - toggle live with SetZoneDebug).
FAQ
Do I need a framework?
No. `config.framework = 'standalone'` uses cfx ace and needs no framework at all.Can players open the editor?
Only admins. Both the `/zonemanager` command and the save path are gated server-side.Are the framework adapters tested?
The standalone path is. ESX / QBCore / Qbox adapters ship but are untested - framework-integration fixes come via PRs.Download Link - GitHub
Credits
Full credits to the resources below. I came across ZoneCreator which gave me the original idea to actually fold in the polyzone resource into the creation tool to stand as a singular complete system. Please check them out below! <3
ZoneCreator for the original idea.
PolyZone for the engine behind this resource.

