> ## Documentation Index
> Fetch the complete documentation index at: https://docs.virusstudio.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrations

> How vrs_newspaper fits alongside your inventory, target script, and framework via vrs_bridge.

`vrs_newspaper` leans on [vrs\_bridge](/getting-started/submitting-a-request) for every framework-specific touchpoint, so it does not need to be patched per framework itself.

<CardGroup cols={2}>
  <Card title="Framework detection" icon="layers">
    Auto-detects QBox, QBCore, or ESX on boot, no config needed.
  </Card>

  <Card title="Target script fallback" icon="crosshair">
    Uses `ox_target` or `qb-target` if present, falls back to markers otherwise.
  </Card>

  <Card title="Route builder" icon="map">
    Capture new depots and delivery points in-game with `/npbuilder`.
  </Card>

  <Card title="Escrow-safe" icon="shield-check">
    `config/`, `locales/`, and `sql/` ship readable, only gameplay Lua is encrypted.
  </Card>
</CardGroup>

## Framework, inventory, and target detection

On boot, `vrs_bridge` detects the running framework, inventory, target script, and vehicle-key system and reports what it found:

```bash theme={null}
[vrs_bridge:SERVER] exports registered, framework = qbox
```

A target script is optional. If `ox_target` or `qb-target` is present it is used automatically; if neither is running, the depot and district interactions fall back to a marker/keybind flow. To pin any of these instead of auto-detecting, edit `vrs_bridge`'s own `config.lua`.

## Registering the newspaper item

The job throws a real weapon under the hood (aliased onto `WEAPON_ACIDPACKAGE`), so it has to be registered with your inventory the same way any throwable weapon would be. For ox\_inventory this means an entry in `data/weapons.lua`, not `items.lua`, see [Installation](/newspaper/installation) for the exact snippet.

<Warning>
  New items are usually cached at inventory boot. After registering `WEAPON_NEWSPAPER`, restart the inventory resource (or the whole server) rather than just the newspaper job.
</Warning>

## Depending on the resource

If another resource needs `vrs_newspaper` running, add it to that resource's `fxmanifest.lua`:

```lua fxmanifest.lua theme={null}
dependency 'vrs_newspaper'
```

`vrs_newspaper` itself depends on [vrs\_bridge](/getting-started/submitting-a-request) v1.3.0+, ensured before it in `server.cfg`.

## Extending delivery points

The depot and every district's houses live in `routes.lua`, editable by hand or captured live with the in-game route builder:

| Command                    | Effect                            |
| -------------------------- | --------------------------------- |
| `/npbuilder`               | Open the builder                  |
| `/npbuilder depot`         | Move the depot to where you stand |
| `/npbuilder add vinewood`  | Record a delivery point           |
| `/npbuilder undo vinewood` | Drop the last one                 |
| `/npbuilder export`        | Write `config/builder_export.lua` |

Paste the exported blocks over the tables in `routes.lua` to wire a new district into the job.

<Tip>
  Leave a point's `label` out and it is read from the world at runtime. Points with `groundSnap = true` correct their height automatically.
</Tip>

## Escrow boundaries

`escrow_ignore` keeps `config/`, `locales/`, and `sql/` readable after upload, everything else in Lua is encrypted. Two things worth knowing if you are integrating with the resource:

<CardGroup cols={2}>
  <Card title="Escrow only encrypts Lua" icon="file-code">
    The contents of `html/` ship readable on every escrowed copy. All pay maths and validation live server-side in Lua, and the page only renders what it is handed.
  </Card>

  <Card title="vrs_bridge is escrowed separately" icon="puzzle">
    It keeps its own `config.lua` and detection map open, so it can be retargeted without touching `vrs_newspaper`.
  </Card>
</CardGroup>
