> For the complete documentation index, see [llms.txt](https://dracker-scripts.gitbook.io/dracker-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dracker-scripts.gitbook.io/dracker-scripts/scripts/administration/admin-panel/configuration.md).

# Configuration

| File                  | What it does                                                                |
| --------------------- | --------------------------------------------------------------------------- |
| `config.lua`          | Language, keys, staff groups and rights, penalties, teleports               |
| `integrations.lua`    | Which scripts the panel talks to, modules on or off, your own adapters      |
| `security_config.lua` | Settings of the Security Center. Clients never receive this file            |
| `locales/*.json`      | Translations. Copy a file to add a language and list it in `Config.Locales` |

Every value in `integrations.lua` defaults to `auto`. Set it by hand if a resource was renamed or the wrong script gets picked. Switching a module off in `Integrations.Modules` hides its tab and makes the server refuse its actions.

### Supported scripts

| Area         | Scripts                                                                                                                                                                                                             |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inventory    | esx\_inventory and classic ESX, ox\_inventory, qb-inventory, ps-inventory, lj-inventory, jpr-inventory, qs-inventory, codem-inventory, tgiann-inventory, core\_inventory, origen\_inventory, one\_inventory, custom |
| Phone        | lb-phone, sd-phone, qs-smartphone, qs-smartphone-pro, gksphone, roadphone, yseries, yphone, yflip-phone, okokPhone, 17mov\_Phone, codem-phone, npwd, qb-phone, custom                                               |
| Garage       | esx\_garage, qb-garages, jg-advancedgarages, cd\_garage, qs-advancedgarages, okokGarage, codem-garage, custom                                                                                                       |
| Fuel         | ox\_fuel, LegacyFuel, cdn-fuel, ps-fuel, lj-fuel, qb-fuel, lc\_fuel, ti\_fuel, okokGasStation, qs-fuelstations, Renewed-Fuel, x-fuel, BigDaddy-Fuel, custom                                                         |
| Vehicle keys | qb-vehiclekeys, qbx\_vehiclekeys, wasabi\_carlock, qs-vehiclekeys, cd\_garage, mk\_vehiclekeys, Renewed-Vehiclekeys, t1ger\_keys, MrNewbVehicleKeys, jaksams\_VehiclesKeys, mVehicle, okokGarage, custom            |
| Medical      | esx\_ambulancejob, esx\_death, qb-ambulancejob, qbx\_medical, wasabi\_ambulance, ars\_ambulancejob, osp\_ambulance, codem-deathscreen, custom                                                                       |
| Clothing     | esx\_skin, qb-clothing, illenium-appearance, fivem-appearance, rcore\_clothing, custom                                                                                                                              |
| Notify       | panel, framework, ox\_lib, okokNotify, wasabi\_notify, brutal\_notify, mythic\_notify, lation\_ui, codem-notification, custom                                                                                       |
| Weather      | qb-weathersync, esx\_weather and servers without a weather script, custom                                                                                                                                           |
| Doors        | ox\_doorlock, doors\_creator                                                                                                                                                                                        |

### What works per inventory

| Inventory                                                                     | Online players | Offline characters | Trunk and glovebox |
| ----------------------------------------------------------------------------- | -------------- | ------------------ | ------------------ |
| Classic ESX, esx\_inventory                                                   | Yes            | Yes                | No                 |
| ox\_inventory, qb-inventory, ps-inventory, lj-inventory, qs-inventory         | Yes            | Yes                | Yes                |
| codem-inventory, tgiann-inventory, core\_inventory, origen\_inventory, custom | Yes            | No                 | No                 |

### Your own scripts

The panel core is encrypted, `integrations.lua` is not. To connect another script, set the area to `'custom'` and fill in `Integrations.Custom` at the end of that file.

```lua
Integrations.Garage = 'custom'

Integrations.Custom.Garage = {
    columns = { stored = 'in_garage', garage = 'garage_id' },
    garages = {
        { id = 'pillbox', label = 'Pillbox Garage' },
    },
}
```

{% hint style="warning" %}
Keep secrets out of `integrations.lua`. Players can read it like any client file.
{% endhint %}

### Optional setup

* **Discord avatars:** add `set vs_adminmenu_discord_bot "TOKEN"` to `server.cfg`. The bot has to be on your Discord server.
* **Live screen:** works over a direct connection, which shows admin and player each other's IP. For relay-only streaming, set `Config.LiveScreen.turnUrls` and put your coturn secret into `data/turn_secret.txt`.
* **Cayo Perico on the map:** needs your own tiles in `Config.Map.cayoTiles`.
* **Fixed player IDs:** see `Config.PermId` in `config.lua`.

### Discord roles as ranks

1. Open **Permissions** in the panel and click **Set up Discord**.
2. Connect with the VScripts bot. You need no token and no server ID, and the bot needs no permissions. You can also use your own bot instead.
3. Choose your highest role. It counts as owner, and you need to have it yourself.
4. Tick the roles that become panel ranks and set the rights for each role.

While the sync is active, only the chosen Discord roles give rights:

* Manually assigned ranks and framework groups are paused. They apply again when you switch the sync off.
* Someone with several panel roles gets the rights of all of them. Name, colour and rank protection come from the highest role.
* Take a role away in Discord and its rights are gone within a minute.
* If Discord cannot be reached, the last known ranks stay valid for 3 minutes. After that nobody has rights until Discord answers again, except the owners in `server.cfg`. An outage never gives rights.
* Owners in `server.cfg` (see [Installation](/dracker-scripts/scripts/administration/admin-panel/installation.md)) always stay owners, as an emergency access.

#### Web panel

With the VScripts bot connected, tick **Allow web panel**. Everyone with a panel role can then sign in on [panel.vscripts.de](https://panel.vscripts.de) with Discord and sees what their rank allows. Every action is checked by your game server, and the service stores no player data.

#### Logs in Discord

With the VScripts bot connected, open **Server logs** or **Staff logs** and click **Discord**. The panel creates the categories **Server Logs** and **Staff Logs** with one channel per area, for example money, items, vehicles or deaths and combat, and copies every new log there. Only the panel roles that may read logs see these channels. If the bot lacks a permission, the panel shows an invite link that adds it.

### Own tools

Every staff member sets their own tools under **Own tools**. The settings stay on their PC.

* **Noclip** has two modes. **Ghost** flies in third person and shows you semi-transparent, only to yourself. **First person** flies where you look, like txAdmin. Switch with `G` or `/anoclipmodus`.
* Keys: `W A S D` move, `Q` and `E` up and down (in ghost mode also `Space` and `Ctrl`), `Shift` fast, mouse wheel sets the speed. A bar at the bottom shows the keys of the current mode.
* When you leave noclip you sink to the ground, like in txAdmin. You can switch that off, set the transparency of the ghost and the start speed.
* Server defaults are in `Config.Noclip` in `config.lua`.

### Live screen and monitoring

* **Live screen** shows the screen of one player in real time, in up to 720p.
* **Monitoring** shows up to six players side by side at 30 FPS, without sound. Click a tile to make it large.
* Both need the right `players.screen`. See *Optional setup* above for relay-only streaming.

### Jobs Creator

If `vs_jobscreator` is running, its logs appear in the server logs on their own, and in Discord when Discord logs are on. Its settings open from the **Jobs** tab.

### Team style

Owners set the outfit each rank wears in staff mode under **Settings → Menu & UI**: put the outfit on and click **Apply** for that rank, for male and female characters. Face and hair are never stored. The name tag colour per rank is set there too.

### Exports

```lua
exports.vs_adminmenu:HasPermission(source, 'players.kick')
exports.vs_adminmenu:GetStaffGroup(source)
exports.vs_adminmenu:AddLog({ title = 'Shop', description = 'Bought an item', player = source })
```

### Security Center

The tab needs the rights `security.view` and `security.manage`. Clear violations of panel actions are blocked, anything statistical is only reported. Nothing bans automatically.

* **Fully protected:** every action of this panel.
* **With integration:** money through ESX and QBCore, items through ox\_inventory and codem-inventory. These are seen, not prevented.
* **Observed only:** entities, explosions, hits, positions and stock changes by other scripts.
* **Not monitored:** events and internal data of other scripts. Those scripts must protect themselves.
