# Konfiguration

***

### Alle Konfigurationsoptionen für FJX BMA

Alle globalen Einstellungen werden in `config.lua` vorgenommen. Gebäude-spezifische Einstellungen (Fehlalarme, Feuer-Positionen, Job-Zugang) werden **ingame** über den BMA Creator konfiguriert.

***

### Allgemein

```lua
Config.Debug = false
Config.Framework = 'auto'
```

| Option      | Typ     | Beschreibung                                                                       |
| ----------- | ------- | ---------------------------------------------------------------------------------- |
| `Debug`     | boolean | Aktiviert ausführliche Ausgaben in F8 und Server-Konsole                           |
| `Framework` | string  | `'auto'` erkennt automatisch, oder `'esx'` / `'qbcore'` / `'standalone'` erzwingen |

***

### Berechtigungen

```lua
Config.CreatorGroup = 'projektinhaber'
Config.UseAcePermission = true
Config.AcePermission = 'fjx_bma.creator'
```

| Option             | Typ     | Beschreibung                                             |
| ------------------ | ------- | -------------------------------------------------------- |
| `CreatorGroup`     | string  | ESX-Gruppe die Zugriff auf den Creator hat               |
| `UseAcePermission` | boolean | `true` = Ace Permission statt Framework-Gruppe verwenden |
| `AcePermission`    | string  | Name der Ace Permission                                  |

Ace Permissions werden mit `add_ace identifier.license:xxxxx fjx_bma.creator allow` in der `server.cfg` vergeben.

***

### Target-System

```lua
Config.TargetSystem = 'ox_target'
```

| Wert          | Beschreibung                                       |
| ------------- | -------------------------------------------------- |
| `'ox_target'` | Verwendet ox\_target (muss installiert sein)       |
| `'qb-target'` | Verwendet qb-target (muss installiert sein)        |
| `'3dtext'`    | 3D-Text mit Tastendruck — keine Dependencies nötig |

#### 3D-Text Einstellungen

```lua
Config.DrawText = {
    distance = 2.5,
    key = 38,
    bmaText = '[E] Brandmeldeanlage öffnen',
    handmelderText = '[E] Handmelder betätigen',
}
```

Nur relevant wenn `Config.TargetSystem = '3dtext'`. Taste 38 = E.

#### Target Labels

```lua
Config.Target = {
    bma = { icon = 'fas fa-fire-extinguisher', label = 'Brandmeldeanlage öffnen', distance = 2.0 },
    handmelder = { icon = 'fas fa-bell', label = 'Handmelder betätigen', distance = 1.5 },
}
```

Gilt für ox\_target und qb-target.

***

### Props

```lua
Config.Props = {
    bma = 'bma',
    handmelder = 'handmelder_prop',
}
```

Die Modell-Namen müssen mit den `.ydr` Dateien im `stream/` Ordner übereinstimmen.

***

### Kamera

```lua
Config.Camera = {
    transitionTime = 1500,
    fov = 50.0,
    offsetForward = 0.8,
    offsetUp = 0.0,
}
```

| Option           | Beschreibung                           |
| ---------------- | -------------------------------------- |
| `transitionTime` | Dauer der Kamerafahrt in Millisekunden |
| `fov`            | Sichtfeld der Kamera                   |
| `offsetForward`  | Abstand der Kamera vor dem BMA-Prop    |
| `offsetUp`       | Höhenversatz der Kamera                |

***

### Audio

```lua
Config.Audio = {
    alarmFile = 'alarm.ogg',
    fadeOutDistance = 10.0,
    maxVolume = 0.8,
}
```

| Option            | Beschreibung                                                     |
| ----------------- | ---------------------------------------------------------------- |
| `alarmFile`       | Dateiname der Alarm-Audiodatei in `html/audio/`                  |
| `fadeOutDistance` | Nicht verwendet (Radius wird pro Gebäude im Creator eingestellt) |
| `maxVolume`       | Maximale Lautstärke (0.0 - 1.0)                                  |

***

### Cooldowns

```lua
Config.Cooldowns = {
    handmelder = 15,
    bmaButton = 5,
    resetBMA = 10,
}
```

Anti-Spam Schutz. Werte in Sekunden, pro Spieler serverseitig geprüft.

| Option       | Beschreibung                             |
| ------------ | ---------------------------------------- |
| `handmelder` | Sekunden zwischen Handmelder-Auslösungen |
| `bmaButton`  | Sekunden zwischen BMA-Button-Klicks      |
| `resetBMA`   | Sekunden zwischen BMZ-Zurückstellungen   |

***

### Fehlalarme

```lua
Config.FalseAlarm = {
    minInterval = 1800,
    maxInterval = 7200,
    requireMinJobs = true,
    jobName = 'berufsfeuerwehr',
}
```

Ob Fehlalarme für ein Gebäude aktiv sind und wie viele Spieler online sein müssen, wird **pro Gebäude im Creator** eingestellt — nicht hier.

| Option           | Beschreibung                                               |
| ---------------- | ---------------------------------------------------------- |
| `minInterval`    | Minimum Sekunden zwischen Fehlalarmen (global)             |
| `maxInterval`    | Maximum Sekunden zwischen Fehlalarmen (global)             |
| `requireMinJobs` | Ob eine Mindestanzahl Spieler mit dem Job online sein muss |
| `jobName`        | Welcher Job-Name für die Online-Prüfung verwendet wird     |

***

### Feuer / Brandsimulation

```lua
Config.Fire = {
    system = 'z_fire',
    burnoutTime = 600,
    spreadSize = 5,
    chanceWithoutAlarm = 10,
}
```

Ob Feuer für ein Gebäude aktiv ist und die Wahrscheinlichkeit wird **pro Gebäude im Creator** eingestellt.

| Option               | Beschreibung                                                    |
| -------------------- | --------------------------------------------------------------- |
| `system`             | `'z_fire'` oder `'smartfires'` — natives GTA-Feuer als Fallback |
| `burnoutTime`        | Sekunden bis das Feuer ausgeht (nur z\_fire)                    |
| `spreadSize`         | Ausbreitungsradius (nur z\_fire)                                |
| `chanceWithoutAlarm` | % Chance dass bei Fehlalarm nur Feuer ohne BMA-Alarm spawnt     |

***

### Dispatch

```lua
Config.Dispatch = {
    enabled = true,
    system = 'emergencydispatch',
    customEvent = '',
    sendResetDispatch = true,
    emergencyDispatch = {
        jobs = { 'berufsfeuerwehr', 'feuerwehr' },
        message = 'Brandmeldeanlage ausgelöst',
    },
}
```

| Option                      | Beschreibung                                                        |
| --------------------------- | ------------------------------------------------------------------- |
| `enabled`                   | Dispatch ein/ausschalten                                            |
| `system`                    | `'emergencydispatch'`, `'cd_dispatch'`, `'ps-dispatch'`, `'custom'` |
| `customEvent`               | Event-Name für Custom Dispatch                                      |
| `sendResetDispatch`         | Entwarnung senden wenn BMZ zurückgestellt wird                      |
| `emergencyDispatch.jobs`    | Jobs die den Dispatch erhalten                                      |
| `emergencyDispatch.message` | Nachricht im Dispatch                                               |

#### Custom Dispatch

Bei `system = 'custom'` wird ein Server-Event mit folgendem Payload ausgelöst:

```lua
TriggerEvent(Config.Dispatch.customEvent, {
    buildingId = 1,
    buildingName = 'Rathaus',
    coords = { x = 100.0, y = 200.0, z = 30.0 },
    reset = false, -- true bei Entwarnung
})
```

***

### Creator

```lua
Config.Creator = {
    moveSpeed = 0.01,
    moveSpeedFast = 0.05,
    rotateSpeed = 1.0,
    radiusStep = 0.5,
    minRadius = 5.0,
    maxRadius = 100.0,
    defaultRadius = 30.0,
}
```

Steuerung für die Prop-Positionierung und Radius-Auswahl im Creator.

***

### Ingame Creator — Pro-Gebäude Einstellungen

Folgende Einstellungen werden **nicht** in der config.lua vorgenommen sondern im Creator ingame:

| Einstellung             | Tab        | Beschreibung                                    |
| ----------------------- | ---------- | ----------------------------------------------- |
| Gebäudename             | Allgemein  | Name des Gebäudes                               |
| Scharf/Unscharf         | Allgemein  | Props erscheinen nur im scharfen Zustand        |
| BMA Position & Rotation | BMA        | Wo das BMA-Panel steht                          |
| Handmelder              | Handmelder | Name, Position, Rotation pro Melder             |
| Audio Zentrum & Radius  | Audio      | Wo und wie weit der Alarm hörbar ist            |
| Fehlalarme aktiv        | Fehlalarm  | Ob automatische Fehlalarme möglich sind         |
| Min. Feuerwehr online   | Fehlalarm  | Wie viele Spieler mit FW-Job online sein müssen |
| Brandsimulation aktiv   | Fehlalarm  | Ob bei Alarm Feuer spawnen kann                 |
| Wahrscheinlichkeit      | Fehlalarm  | % Chance auf Feuer bei Alarm                    |
| Feuer-Positionen        | Fehlalarm  | Mehrere Positionen, zufällige Auswahl           |
| Job-Zugang              | Zugang     | Jobs eingeben, Zugriffsmodus wählen             |


---

# Agent Instructions: 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:

```
GET https://fjx.gitbook.io/fjx-docs/bma-system/konfiguration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
