# Installation

## Installation

### Anforderungen

* **ESX Legacy** oder **QBCore** Framework (erforderlich)
* FiveM Server
* MySQL-Datenbank (oxmysql oder mysql-async)
* Optional: ox\_lib für beste UI-Erfahrung
* Optional: ox\_target oder qb-target für Target-System
* Optional: esx\_billing (ESX) oder qb-billing (QBCore) für Rechnungssystem

### Installationsschritte

#### Schritt 1: Download

Lade die FJX TÜV-SYSTEM Ressource von deiner Kaufbestätigung herunter.

#### Schritt 2: Dateien extrahieren

Extrahiere die heruntergeladene ZIP-Datei in den `resources/` Ordner deines Servers.

#### Schritt 3: Ordner umbenennen

Benenne den extrahierten Ordner in `fjx_tuev` um (oder einen Namen deiner Wahl).

#### Schritt 4: Datenbank importieren

Importiere die `tuev_system.sql` Datei in deine MySQL-Datenbank:

```sql
-- Öffne phpMyAdmin oder HeidiSQL
-- Wähle deine FiveM-Datenbank
-- Importiere tuev_system.sql
```

**Alternativ:** Das Script erstellt die Tabellen automatisch beim ersten Start, falls sie noch nicht existieren.

#### Schritt 5: Konfiguration anpassen

Öffne die `config.lua` und passe die wichtigsten Einstellungen an:

```lua
-- Framework (wird automatisch erkannt)
Config.Locale = 'de'                -- Sprache: 'de' oder 'en'

-- TÜV-Einstellungen
Config.TuevGueltigTage = 30         -- Gültigkeit in Tagen (2 Jahre)
Config.Price = 750                  -- TÜV-Preis

-- Zahlungssystem
Config.PaymentTarget = 'society'    -- 'society' oder 'player'
Config.SocietyName = 'mechanic'     -- Society für Zahlungen

-- Jobs die TÜV durchführen dürfen
Config.MechanicJobs = {
    'mechanic',
    'tuner',
    'bennys'
}
```

Siehe [Konfiguration](https://claude.ai/chat/konfiguration.md) für alle verfügbaren Optionen.

#### Schritt 6: TÜV-Plaketten (Optional)

Die TÜV-Plaketten-Bilder (60+ Stück) sind bereits im Paket enthalten (`html/img/` Ordner).

Falls du eigene Plaketten verwenden möchtest:

1. Erstelle PNG-Bilder im Format `MM_YY.png` (z.B. `01_26.png` für Januar 2026)
2. Bilder sollten 160x160 Pixel groß sein
3. Lege sie in den Ordner `html/img/`
4. Das Script zeigt automatisch das passende Bild basierend auf dem Ablaufdatum

#### Schritt 7: server.cfg konfigurieren

Füge die folgende Zeile zu deiner `server.cfg` hinzu:

```cfg
ensure fjx_tuev
```

**Wichtig:** Stelle sicher, dass dein Framework **vor** FJX TÜV geladen wird:

**Für ESX**

```cfg
ensure es_extended
ensure esx_billing          # Optional, für Rechnungen
ensure esx_addonaccount     # Wichtig für Society-Payments!

ensure fjx_tuev
```

**Für QBCore**

```cfg
ensure qb-core
ensure qb-billing           # Optional, für Rechnungen
ensure qb-management        # Wichtig für Society-Payments!

ensure fjx_tuev
```

#### Schritt 8: Starten oder Neustarten

Starte entweder deinen Server neu oder verwende die Konsole:

```bash
refresh
ensure fjx_tuev
```

### Überprüfung

Um zu überprüfen, ob das Script korrekt läuft:

#### 1. Serverkonsole prüfen

Suche nach folgenden Meldungen:

```
[TÜV] Datenbank-Tabellen erfolgreich initialisiert!
[TÜV Server] System loaded - Framework: esx
```

oder für QBCore:

```
[TÜV Server] System loaded - Framework: qb
```

#### 2. Im Spiel testen

1. **TÜV-Station besuchen**: Fahre zu einer der vorkonfigurierten TÜV-Stationen
2. **Blip überprüfen**: Du solltest einen gelben Werkstatt-Marker auf der Map sehen
3. **Fahrzeug prüfen**: Gehe zu einem Fahrzeug und drücke `E` (oder konfigurierte Taste)
4. **TÜV-Plakette**: Eine TÜV-Plakette sollte unten rechts erscheinen

#### 3. Als Mechaniker testen

1. Logge dich mit einem Mechaniker-Account ein
2. Drücke `H` bei einem Fahrzeug für Diagnose
3. Minigame sollte starten (falls aktiviert)
4. Nach erfolgreicher Diagnose: Drücke `C` für TÜV-Erneuerung
5. Rechnungssystem sollte funktionieren

### Framework-Automatische Erkennung

FJX TÜV erkennt automatisch, welches Framework auf deinem Server installiert ist:

#### ESX-Erkennung

Das Script versucht, ESX mit der modernen Export-Methode zu erkennen:

```lua
ESX = exports['es_extended']:getSharedObject()
```

#### QBCore-Erkennung

Falls ESX nicht gefunden wird, versucht das Script QBCore zu erkennen:

```lua
QBCore = exports['qb-core']:GetCoreObject()
```

#### Framework nicht gefunden

Wenn keines der Frameworks erkannt wird, erscheint eine Fehlermeldung:

```
[TÜV Server] System loaded - Framework: none
```

**Hinweis:** Das Script benötigt zwingend ein Framework (ESX oder QBCore).

### Wichtige Ladereihenfolge

Für optimale Funktion stelle sicher, dass alle Abhängigkeiten **vor** FJX TÜV starten:

#### ESX Setup

```cfg
# Framework & Basis-Scripts
ensure es_extended
ensure oxmysql              # Oder mysql-async
ensure esx_addonaccount     # Für Society-Accounts
ensure esx_billing          # Für Rechnungen (optional)

# UI-Systeme (optional, empfohlen)
ensure ox_lib               # Beste UI-Erfahrung
ensure ox_target            # Target-System

# TÜV-System
ensure fjx_tuev
```

#### QBCore Setup

```cfg
# Framework & Basis-Scripts
ensure qb-core
ensure oxmysql              # Oder mysql-async
ensure qb-management        # Für Society-Management
ensure qb-billing           # Für Rechnungen (optional)

# UI-Systeme (optional, empfohlen)
ensure ox_lib               # Beste UI-Erfahrung
ensure ox_target            # Target-System

# TÜV-System
ensure fjx_tuev
```

### Optionale Abhängigkeiten

#### UI-Systeme

Für beste Ergebnisse installiere:

```cfg
ensure ox_lib               # Empfohlen - Moderne UI
```

**Alternative:** Nutze Native-UI ohne zusätzliche Abhängigkeiten:

```lua
Config.NotifyType = 'native'
Config.ProgressType = 'none'
Config.MenuType = 'native'
```

#### Target-Systeme

Für komfortablere Interaktionen:

```cfg
ensure ox_target            # Empfohlen
# oder
ensure qb-target            # Für QBCore
```

**Alternative:** Nutze 3D-Text ohne Target-System:

```lua
Config.Target = 'none'
Config.Use3DText = true
```

#### Billing-Systeme

Für Rechnungsfunktionalität:

**ESX**

```cfg
ensure esx_billing          # Für Rechnungen
ensure esx_addonaccount     # Wichtig für Society-Payments!
```

**QBCore**

```cfg
ensure qb-billing           # Für Rechnungen (optional)
ensure qb-management        # Wichtig für Society-Payments!
```

### Wichtiger Hinweis zum Escrow-Schutz

Dieses Script ist **Escrow-geschützt**, was bedeutet:

✅ Du kannst die `config.lua` vollständig bearbeiten\
✅ Alle Anpassungen erfolgen über Konfigurationsoptionen\
✅ Updates erfolgen automatisch über Escrow-System\
❌ Du kannst die Kern-Skriptdateien nicht modifizieren\
❌ Quellcode ist geschützt

Der Escrow-Schutz gewährleistet die Integrität des Scripts, während du sein Verhalten weiterhin vollständig über die `config.lua` anpassen kannst.

### Nächste Schritte

Nach erfolgreicher Installation:

1. 📖 Lies die Konfiguration für alle Einstellungsmöglichkeiten
2. 🎮 Teste alle Features im Spiel
3. 🔧 Passe TÜV-Stationen nach deinen Wünschen an
4. 💰 Konfiguriere das Zahlungssystem
5. 🎯 Stelle Minigame-Schwierigkeit ein

Bei Problemen siehe FAQ & Fehlerbehebung.

### Support

Bei Fragen oder Problemen, melde dich im Discord.


---

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