Zone Types
F5 Safezones supports two zone types: Circle and Polygon. Both types share common protection features but differ in how their boundaries are defined.
Circle Zones
Circle zones are defined by a center point and a radius. They are simpler to set up and slightly more performant than polygon zones.
Example
{
name = "Legion Square",
type = "circle",
coords = vector3(195.17, -933.77, 29.7),
radius = 50.0,
minZ = -50,
maxZ = 150,
showBlip = true,
showMarker = true,
blipName = "Safe Zone - Legion Square",
enableInvincibility = true,
enableGhosting = true,
preventVehicleDamage = true,
disableVehicleWeapons = true,
collisionDisabled = false,
renderDistance = 50.0
}
Circle-Specific Fields
| Field | Type | Default | Description |
|---|---|---|---|
coords | vector3 | required | Center point of the circle zone |
radius | number | 50.0 | Radius in game units (meters) |
Polygon Zones
Polygon zones are defined by a set of 2D points forming an arbitrary shape. They support 3 or more points and can create complex boundaries.
Example
{
"name": "Custom Area",
"type": "polygon",
"points": [
{"x": 236.45, "y": -1064.96},
{"x": 204.24, "y": -1049.54},
{"x": 213.88, "y": -1023.30},
{"x": 241.63, "y": -1033.44}
],
"minZ": 26.1,
"maxZ": 30.3,
"showBlip": true,
"showMarker": true,
"showZoneOutline": true,
"enableInvincibility": true,
"enableGhosting": true
}
Polygon-Specific Fields
| Field | Type | Default | Description |
|---|---|---|---|
points | array | required | Array of {x, y} coordinates forming the polygon (minimum 3 points) |
showZoneOutline | boolean | true | Draw the polygon outline on the ground |
outlineStrokeEnabled | boolean | true | Enable stroke effect on outline |
outlineSpacing | number | 6 | Spacing between outline segments |
outlineAlpha | number | 160 | Outline opacity (0-255) |
outlineColor | string | "#F5A623" | Outline color in CSS hex |
outlineRadius | number | 1.2 | Outline thickness |
strokeColor | string | "#FFFFFF" | Stroke color in CSS hex |
strokeAlpha | number | 220 | Stroke opacity (0-255) |
strokeRadius | number | 1.5 | Stroke line thickness |
addRoof | boolean | false | Add a solid roof to the polygon zone |
circleCoverageType | string | "full" | Coverage type for circle blip approximation |
Common Fields
These fields apply to both circle and polygon zones.
Zone Identity
| Field | Type | Default | Description |
|---|---|---|---|
name | string | required | Unique zone name (3-50 characters) |
type | string | required | "circle" or "polygon" |
Height Bounds
| Field | Type | Default | Description |
|---|---|---|---|
minZ | number | see below | Minimum Z coordinate (height floor) |
maxZ | number | see below | Maximum Z coordinate (height ceiling) |
infiniteHeight | boolean | false | Ignore height bounds — zone extends infinitely vertically |
Default values for minZ and maxZ depend on the zone type:
| Zone Type | minZ Default | maxZ Default |
|---|---|---|
| Circle | coords.z - 50 (relative to center) | coords.z + 150 (relative to center) |
| Polygon | -200.0 (absolute) | 800.0 (absolute) |
For underground or multi-level safezones, adjust minZ and maxZ carefully. Use infiniteHeight = true if the zone should cover all vertical space.
Protection Options
| Field | Type | Default | Description |
|---|---|---|---|
enableInvincibility | boolean | true | Make players invincible inside the zone (legacy alias: enableImmortality) |
enableGhosting | boolean | true | Enable player/vehicle ghosting (no-clip through entities) |
preventVehicleDamage | boolean | true | Prevent vehicle damage to players |
disableVehicleWeapons | boolean | true | Disable vehicle-mounted weapons |
collisionDisabled | boolean | false | Enable full ghost mode — player passes through all entities in range |
When collisionDisabled = true, the player passes through all nearby entities — vehicles, NPCs, and world objects within range. This is the most aggressive ghosting mode. Players still have weapon restrictions and invincibility (if enabled). See Collision System — Full Ghost Mode for details.
Marker & Rendering
| Field | Type | Default | Description |
|---|---|---|---|
showMarker | boolean | false | Display the zone marker (must be explicitly set to true) |
renderDistance | number | 150.0 | Distance from zone center to start rendering the marker |
markerPreset | string | nil | Apply a named marker preset from Config.MarkerPresets (e.g., "safe", "danger", "special", "vip") |
markerConfig | table | nil | Per-zone marker configuration (overrides defaults and preset) |
You can use markerPreset to quickly apply a predefined style, or use markerConfig for full control. If both are set, the preset is applied first and then markerConfig values override it.
{
name = "Hospital",
type = "circle",
coords = vector3(300.0, -600.0, 43.0),
radius = 30.0,
markerPreset = "safe" -- Applies Config.MarkerPresets.safe
}
The markerConfig table accepts the same fields as Config.DefaultMarker:
markerConfig = {
type = 1,
color = {r = 0, g = 255, b = 0, a = 100},
pulsing = true,
pulseSpeed = 1.5,
height = 25.0
}
Blip Options
| Field | Type | Default | Description |
|---|---|---|---|
showBlip | boolean | false | Show a blip on the minimap/map (must be explicitly set to true) |
showCenterBlip | boolean | true | Show blip at zone center (polygon zones) |
blipCoords | vector3 | auto | Custom blip position for polygon zones. If not set, calculated from polygon centroid |
blipName | string | "Safe Zone - {name}" | Blip label on map |
blipSprite | number | 84 | GTA blip sprite ID |
blipColor | string | "0xF5A623FF" | Blip color in hex RGBA |
blipScale | number | 0.8 | Blip size on map |
blipAlpha | number | 180 | Blip opacity (0-255) |
blipShortRange | boolean | false | Only show blip when nearby |
blipHighDetail | boolean | true | Show high-detail blip |
blipHiddenOnLegend | boolean | false | Hide from map legend |
Metadata (Custom Zones Only)
These fields are set automatically for zones created or edited through the admin panel:
| Field | Type | Description |
|---|---|---|
createdBy | string | Admin who created the zone |
createdAt | number | Unix timestamp of creation |
updatedBy | string | Admin who last edited the zone (set on update) |
updatedAt | number | Unix timestamp of last edit (set on update) |
isCustom | boolean | true for zones saved in data/zones.json |
id | number | Auto-assigned unique zone ID |
Zone Activation States
Each zone has an activation state that persists across server restarts. Activation states are stored in data/zone_states.json.
- Active — Zone is fully functional with all protections enabled
- Inactive — Zone exists but provides no protections; players pass through normally
Toggle zone activation through the Admin Panel or via server events.
See Also
- Zone Creation — how to create zones in-game
- Configuration — global marker and collision settings
- Collision System — how ghosting and protection work