# Installation

***

### Installationsanleitung für FJX BMA — Brandmeldeanlage

## Installation

### Voraussetzungen

* FiveM Server (aktuelle empfohlene Version)
* **oxmysql** — einzige Pflicht-Dependency
* **ESX Legacy**, **QB-Core** oder **Standalone** (wird automatisch erkannt)

#### Optional

* `ox_target` oder `qb-target` — für Target-Interaktion (alternativ: 3D-Text ohne Dependencies)
* `z_fire` oder `SmartFires` — für Brandsimulation (alternativ: natives GTA-Feuer)
* Dispatch-System: `emergencydispatch`, `cd_dispatch`, `ps-dispatch` oder Custom Event

***

### Schritt 1 — Dateien kopieren

1. Entpacke das Archiv und kopiere den Ordner `fjx_bma` in dein Server-Verzeichnis unter `resources/[fjx]/fjx_bma` (oder einen Ordner deiner Wahl).
2. Stelle sicher, dass folgende Dateien im Ordner vorhanden sind:

```
fjx_bma/
├── fxmanifest.lua
├── config.lua
├── sql.sql
├── shared/bridge.lua
├── client/ (main, creator, camera, audio, target)
├── server/main.lua
├── html/ (index.html, css/, js/, images/, audio/)
├── stream/ (Custom Props — .ydr/.ytyp)
├── locales/de.json
```

***

### Schritt 2 — Eigene Dateien einfügen (OPTIONAL)

#### Props

Falls du eigene BMA- und Handmelder-Props verwendest, musst du die Prop-Namen in `Config.Props.bma` und `Config.Props.handmelder` in der `config.lua` mit deinen übereinstimmen.

#### Audio

Für eigenen Alarm: Kopiere deine Alarm-Audiodatei in `html/audio/`:

* `alarm.ogg` — Der Alarm-Sound (OGG-Format empfohlen)

#### Bilder (Optional)

* `html/images/Handmelder.png` — Eigenes Bild für die Handmelder-UI

***

### Schritt 3 — Datenbank

Die Datenbanktabellen werden **automatisch** beim ersten Start erstellt. Du musst nichts manuell importieren.

Falls du die Tabellen vorab erstellen möchtest, findest du das SQL in `sql.sql`.

Auto-Migration ist eingebaut. Bei Updates werden neue Spalten automatisch hinzugefügt.

***

### Schritt 4 — server.cfg

Füge die Resource in deine `server.cfg` ein — **nach** deinem Framework und oxmysql:

```
ensure oxmysql
ensure es_extended  # oder qb-core
ensure fjx_bma
```

#### Ace Permission einrichten

Wenn du `Config.UseAcePermission = true` nutzt, musst du die Berechtigung vergeben:

```
add_ace identifier.license:xxxxxx fjx_bma.creator allow
```

Ersetze `xxxxxx` durch die Lizenz-ID des Spielers. Du findest den exakten Befehl auch im Access-Denied Screen wenn ein Spieler ohne Berechtigung `/bmacreator` eingibt.

***

### Schritt 5 — Konfiguration

Passe die `config.lua` nach deinen Wünschen an. Eine vollständige Erklärung findest du unter Konfiguration.

***

### Schritt 6 — Server starten

Starte deinen Server. In der Konsole sollte erscheinen:

```
[fjx_bma:debug] DB OK.
```

Danach kannst du ingame `/bmacreator` eingeben um den Creator zu öffnen und dein erstes Gebäude anzulegen.

***

### Commands

| Command         | Beschreibung                                                    | Berechtigung                         |
| --------------- | --------------------------------------------------------------- | ------------------------------------ |
| `/bmacreator`   | Öffnet den BMA Creator zum Erstellen und Verwalten von Gebäuden | Ace Permission oder Framework-Gruppe |
| `/feuertrigger` | Manuelles Auslösen eines Feuers mit optionalem BMA-Alarm        | Ace Permission oder Framework-Gruppe |

***

### Schnellstart

1. `/bmacreator` eingeben
2. „+ Hinzufügen" klicken, Gebäude benennen
3. Tab „BMA" → BMA-Position mit Prop platzieren
4. Tab „Handmelder" → Mindestens 1 Handmelder hinzufügen
5. Tab „Audio" → Zentrum & Radius wählen
6. Gebäude scharfschalten (Schalter oben rechts)
7. Fertig — BMA und Handmelder erscheinen als Props


---

# 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/installation.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.
