> For the complete documentation index, see [llms.txt](https://docs.0resmon.org/0resmon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.0resmon.org/0resmon/0r-resources/0r-safezonecreator/configuration.md).

# Configuration

All server-side settings live in **`config/main.lua`**. Per-zone behaviour (weapons, vehicles, blips, job whitelist) is set in the admin UI and stored in `data/zones.json`.

Open the file in an editor and change only what you need — this page is the short version.

***

## Setup

```lua
setup = {
    debug = 1,           -- 1 = errors only; higher = more console output
    checkVersion = true,
    notify = 'auto',     -- or ox_lib, lt-ui, esx_notify, qb-notify, etc.
},
```

| Option         | What it does                                                            |
| -------------- | ----------------------------------------------------------------------- |
| `debug`        | Console noise. Use `1` on a live server unless you are troubleshooting. |
| `checkVersion` | Warns if a newer release exists on startup.                             |
| `notify`       | Notify backend when `customNotifications = false`. See values below.    |

Supported `setup.notify` values: `auto`, `ox_lib`, `lt-ui`, `esx_notify`, `okokNotify`, `pNotify`, `mythic_notify`, `brutal_notify`, `wasabi_notify`, `origen_notify`, `lation_ui`, `qb-notify`. With `auto`, the first running compatible resource is used.

***

## General

| Option    | Default              | Notes                                                                                                             |
| --------- | -------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `locale`  | `'en'`               | Also: `tr`, `de`, `fr`, `es`, `pt-br`, `pl`, `ru`, `it` — files in `locales/`                                     |
| `command` | `'safezonecreator'`  | Chat command for the admin menu                                                                                   |
| `ace`     | `'command.safezone'` | ACE permission for zone management (see [Installation](/0resmon/0r-resources/0r-safezonecreator/installation.md)) |

### Notifications

```lua
notifications = {
    enabled = true,
    customNotifications = true,
},
```

| Option                | What it does                                                                                      |
| --------------------- | ------------------------------------------------------------------------------------------------- |
| `enabled`             | Master switch for enter/leave feedback                                                            |
| `customNotifications` | `true` = on-screen NUI banner while inside a zone; `false` = standard notify toasts via LT.Notify |

Per-zone **Notification** in the editor still controls whether that zone triggers enter/leave messages at all.

{% hint style="info" %}
With `customNotifications = true`, players see the zone name in the UI overlay. With `false`, they get classic notify popups when `notification` is enabled on the zone.
{% endhint %}

***

## Safezone performance

These values tune how often the client scans entities near zones. Lower milliseconds = more responsive, slightly heavier.

```lua
safezone = {
    healIntervalMs = 5000,
    zoneScanMargin = 80.0,
    vehicleScanMs = 1000,
    pedCollisionMs = 50,
    vehicleCollisionMs = 50,
},
```

| Option               | What it does                                              |
| -------------------- | --------------------------------------------------------- |
| `healIntervalMs`     | Tick interval for **Heal Over Time**                      |
| `zoneScanMargin`     | Extra meters around the zone box before vehicle/ped scans |
| `vehicleScanMs`      | How often vehicles inside/near the zone get rule checks   |
| `pedCollisionMs`     | Ped collision disable loop interval                       |
| `vehicleCollisionMs` | Vehicle-vs-player collision disable interval              |

If you run many large zones and notice client load, raise the `*Ms` values slightly instead of lowering them.

***

## Ghost mode

| Option               | Default | Notes                                                 |
| -------------------- | ------- | ----------------------------------------------------- |
| `ghostedEntityAlpha` | `100.0` | Transparency for ghost mode (`SetGhostedEntityAlpha`) |

***

## UI — safezone warning

When `notifications.customNotifications = true`, players see this NUI banner while inside a zone (zone name on screen).

```lua
ui = {
    safezoneWarning = {
        position = 'bottom',       -- 'bottom' or 'top'
        shadowsAndGlows = true,
        shadow = 'rgba(87,166,255,0.5)',
        accent = '#57A6FF',
        logoGradient = { '#57A6FF', '#4c94e7' },
        logoBorder = '0.75px solid #57A6FF',
        textColor = 'rgba(255,255,255,0.85)',
    },
},
```

| Option                                                        | What it does                              |
| ------------------------------------------------------------- | ----------------------------------------- |
| `position`                                                    | Banner at top or bottom of the screen     |
| `shadowsAndGlows`                                             | Glow and shadow effects on logo and title |
| `shadow`, `accent`, `logoGradient`, `logoBorder`, `textColor` | Colours (hex, rgb, or rgba)               |

***

## Preview & zone borders

Freecam editor preview and in-game **Show Zone Borders** drawing use `preview` in config:

```lua
preview = {
    validColour = vec3(0, 255, 0),
    invalidColour = vec3(255, 0, 0),
    wallAlphaPreview = 50,
    lineAlphaPreview = 50,
    wallWidth = 0.3,
    maxDistance = 350.0,
    wallAlphaInGame = 15,
    lineAlphaInGame = 15,
},
```

| Option                                  | Default     | What it does                                                           |
| --------------------------------------- | ----------- | ---------------------------------------------------------------------- |
| `validColour` / `invalidColour`         | green / red | Polygon preview when points are valid vs crossing                      |
| `wallAlphaPreview` / `lineAlphaPreview` | 50          | Alpha while placing points in freecam                                  |
| `wallWidth`                             | 0.3         | Wall thickness inward (meters)                                         |
| `maxDistance`                           | 125.0       | Max distance (meters) to draw borders when **Show Zone Borders** is on |
| `wallAlphaInGame` / `lineAlphaInGame`   | 15          | Alpha for borders drawn in the world                                   |

Borders only show when the zone has **Show Zone Borders** enabled and you are within `preview.maxDistance`.

***

## Disarming players

When **Disable Firearms** is on, the script calls `disarmPlayer` from config:

```lua
disarmPlayer = function()
    local inventory = LT.Inventory.GetResource()
    if inventory == 'ox_inventory' then
        TriggerEvent('ox_inventory:disarm', PlayerId())
    else
        SetCurrentPedWeapon(cache.ped, `WEAPON_UNARMED`, true)
    end
end,
```

Extend this if you use another inventory — match the pattern in `config/main.lua` comments.

***

## Freecam (editor)

```lua
freecam = {
    speed = 1.15,
    fov = 50.0,
    lookSens = 5.0,
    raycastDist = 500.0,
    thicknessStep = 1.0,
    thicknessMin = 1.0,
    thicknessMax = 100.0,
    baseZStep = 0.5,
},
```

Controls how the point-placement camera feels. Most servers can leave defaults; see [Editor](/0resmon/0r-resources/0r-safezonecreator/editor.md) for in-game keys.

***

## Per-zone settings (admin UI)

Each zone stores its own rules. Whitelisted jobs (see below) skip restrictions for that zone.

### Combat & weapons

| Setting          | Effect                     |
| ---------------- | -------------------------- |
| Disable Shooting | Blocks firing              |
| Disable Melee    | Blocks melee               |
| Disable Firearms | Disarms via `disarmPlayer` |
| Disable Drive-By | No drive-by shooting       |

### Movement

| Setting         | Effect                |
| --------------- | --------------------- |
| Disable Jumping | Jump control disabled |
| Disable Running | Walk only             |

### Player

| Setting               | Effect                                       |
| --------------------- | -------------------------------------------- |
| Invincible Players    | Ped cannot take damage                       |
| Ghost Mode            | Local ghost, no collision with others        |
| Heal On Enter         | Full health once on entry                    |
| Heal Over Time        | Full health on interval (`healIntervalMs`)   |
| Disable Ragdoll       | No ragdoll                                   |
| Disable Ped Collision | No collision with other peds/vehicles nearby |
| Disable Idle Cam      | Idle camera off                              |
| Quiet Footsteps       | Reduced footstep volume                      |
| Notification          | Enter/leave messages for this zone           |

### Vehicles

| Setting                   | Effect                           |
| ------------------------- | -------------------------------- |
| Speed Limit (km/h)        | Caps vehicle speed in zone       |
| Invincible Vehicles       | Vehicles cannot be damaged       |
| Lock Vehicle Doors        | Doors locked while inside        |
| Disable Vehicle Collision | Vehicle-to-vehicle collision off |

Whitelisted players driving their own vehicle are exempt from vehicle limits.

### Map

| Setting           | Effect                                                      |
| ----------------- | ----------------------------------------------------------- |
| Show Zone Borders | Polygon outline in the world (within `preview.maxDistance`) |
| Blip              | Optional map blip (sprite, colour, scale, short range)      |

### Job whitelist

Enable **Job Whitelist**, add jobs with a **minimum grade**. Matching players are treated as whitelisted inside that zone — combat, movement, and vehicle rules do not apply to them (their own vehicle is also exempt from vehicle limits).

Job names must match your framework (`police`, `ambulance`, etc.).

***

## Locales

Set `locale = 'en'` (or another code). Edit strings in `locales/*.json`. UI labels for zone settings live under `ui.settings` in those files.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.0resmon.org/0resmon/0r-resources/0r-safezonecreator/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
