# FAQ & Fehlerbehebung

#### Allgemeine Fragen

**Wie funktioniert die Framework-Automatische Erkennung?**

FJX TÜV-SYSTEM erkennt beim Start automatisch, ob ESX oder QBCore installiert ist:

```lua
-- Versucht ESX zu erkennen
ESX = exports['es_extended']:getSharedObject()

-- Falls ESX nicht gefunden, versucht QBCore
QBCore = exports['qb-core']:GetCoreObject()
```

Das Script passt sich dann automatisch an das erkannte Framework an.

**Welches Framework wird priorisiert?**

**ESX wird zuerst erkannt.** Wenn beide Frameworks installiert sind, wird ESX verwendet. Um QBCore zu nutzen, deaktiviere ESX.

**Funktioniert das Script ohne Framework (Standalone)?**

**Nein.** Das Script benötigt zwingend ESX oder QBCore für:

* Player-Identification
* Money-System
* Billing-System
* Society-System

**Beeinträchtigt die Framework-Erkennung die Performance?**

**Nein.** Die Erkennung erfolgt nur einmal beim Start. Danach gibt es keine Performance-Einbußen.

**Kann ich das Framework wechseln?**

**Ja.** Wechsle einfach von ESX zu QBCore (oder umgekehrt). Das Script erkennt die Änderung automatisch beim nächsten Neustart.

**Wie funktionieren die TÜV-Plaketten?**

Das Script zeigt automatisch die passende Plakette basierend auf dem Ablaufdatum. Bilder befinden sich in `html/img/` im Format `MM_YY.png`.

**Was passiert bei abgelaufenem TÜV?**

* Plakette wird rot angezeigt
* Status: "ABGELAUFEN"
* Warnung beim Einsteigen (falls aktiviert)
* TÜV muss erneuert werden

**Wie lange dauert eine TÜV-Erneuerung?**

Standard: \~11 Sekunden (6s Diagnose + 5s Erneuerung) + Minigame-Zeit.

Anpassbar in Config:

```lua
Config.DiagnosisDuration = 6000
Config.RenewTuevDuration = 5000
```

**Muss ich das Minigame bestehen?**

**Ja**, wenn aktiviert (`Config.EnableMinigame = true`). Bei Fehlschlag muss die Diagnose wiederholt werden.

**Kann ich mir als Mechaniker selbst TÜV ausstellen?**

Abhängig von der Config:

```lua
Config.AllowSelfBilling = true   -- Ja
Config.AllowSelfBilling = false  -- Nein
```

**Wie weit im Voraus kann ich TÜV erneuern?**

Abhängig von der Config:

```lua
Config.ErneuerungAbTagen = 7  -- 7 Tage vor Ablauf
```

***

### Fehlerbehebung

#### Script lädt nicht

**Symptome:**

* Keine Startmeldung in Console
* Keine Funktionalität im Spiel

**Lösungen:**

1. **Ressourcenname prüfen**

   ```cfg
   ensure fjx_tuev  # Muss mit Ordnernamen übereinstimmen
   ```
2. **Ladereihenfolge prüfen**

   ```cfg
   ensure es_extended  # Framework ZUERST
   ensure fjx_tuev     # Script DANACH
   ```
3. **Console-Logs prüfen**

   ```
   [TÜV] System loaded - Framework: esx
   ```

***

#### Framework wird nicht erkannt

**Symptome:**

* `System loaded - Framework: none`
* Script funktioniert nicht

**Lösungen:**

1. **Framework-Namen prüfen**
   * ESX: Muss `es_extended` heißen
   * QBCore: Muss `qb-core` heißen
2. **Framework lädt vor Script**

   ```cfg
   ensure es_extended
   ensure esx_addonaccount
   ensure fjx_tuev
   ```
3. **Framework-Test**
   * Laden andere Framework-Scripts?
   * Framework-Fehler in Console?
4. **Server neu starten**
   * Kompletter Neustart (nicht nur `refresh`)

***

#### Datenbank-Fehler

**Symptome:**

* "Failed to execute query"
* TÜV wird nicht gespeichert

**Lösungen:**

1. **SQL manuell importieren**
   * Öffne phpMyAdmin/HeidiSQL
   * Importiere `tuev_system.sql`
2. **Datenbank-Verbindung prüfen**
   * `oxmysql` oder `mysql-async` installiert?
   * Credentials in `server.cfg` korrekt?
3. **Tabellen prüfen**

   ```sql
   SHOW TABLES LIKE 'vehicle_tuev%';
   ```

   Sollte zeigen:

   * `vehicle_tuev`
   * `vehicle_tuev_history`
4. **Debug aktivieren**

   ```lua
   Config.Debug = true
   ```

***

#### TÜV-Plaketten nicht sichtbar

**Symptome:**

* Keine Plakette erscheint
* UI ist leer

**Lösungen:**

1. **Bilder vorhanden?**

   ```
   resources/fjx_tuev/html/img/
   ├── 00_00.png
   ├── 01_26.png
   └── ...
   ```
2. **NUI testen**

   ```lua
   Config.Debug = true
   ```

   Prüfe Console auf NUI-Meldungen

***

#### Minigame startet nicht

**Symptome:**

* Diagnose hängt
* Kein Minigame

**Lösungen:**

1. **Config prüfen**

   ```lua
   Config.EnableMinigame = true
   Config.MinigameType = 'sequence'  # Nicht leer!
   ```
2. **Anderen Typ testen**

   ```lua
   Config.MinigameType = 'keyspam'
   ```
3. **Minigame deaktivieren**

   ```lua
   Config.EnableMinigame = false
   ```

***

#### Billing funktioniert nicht

**Symptome:**

* Keine Rechnung erstellt
* Fehler beim Billing

**ESX Lösungen:**

1. **esx\_billing installiert?**

   ```cfg
   ensure esx_billing
   ```
2. **Tabelle vorhanden?**

   ```sql
   SHOW TABLES LIKE 'billing';
   ```
3. **Config prüfen**

   ```lua
   Config.PaymentMethod = 'bill'
   Config.EnableBilling = true
   ```

**QBCore Lösungen:**

1. **qb-billing installiert?**

   ```cfg
   ensure qb-billing
   ```
2. **Tabelle vorhanden?**

   ```sql
   SHOW TABLES LIKE 'phone_invoices';
   ```
3. **Debug aktivieren**

   ```lua
   Config.Debug = true
   ```

***

#### Society-Payment funktioniert nicht

**Symptome:**

* Rechnung bezahlt, aber Geld nicht auf Firmenkonto
* Society-Geld unverändert

**ESX Lösungen:**

1. **esx\_addonaccount installiert?**

   ```cfg
   ensure esx_addonaccount  # VOR fjx_tuev!
   ```
2. **Society existiert?**

   ```sql
   SELECT * FROM addon_account 
   WHERE name = 'society_mechanic';
   ```

   Falls nicht:

   ```sql
   INSERT INTO addon_account (name, label, shared) 
   VALUES ('society_mechanic', 'Mechanic', 1);
   ```
3. **Config prüfen**

   ```lua
   Config.PaymentTarget = 'society'
   Config.SocietyName = 'mechanic'  # OHNE 'society_' Prefix!
   ```
4. **Debug aktivieren**

   ```lua
   Config.Debug = true
   ```

   Suche: "zur Society society\_mechanic hinzugefügt"

**QBCore Lösungen:**

1. **qb-management installiert?**

   ```cfg
   ensure qb-management  # VOR fjx_tuev!
   ```
2. **Job konfiguriert?** Prüfe `qb-core/shared/jobs.lua`:

   ```lua
   ['mechanic'] = {
       label = 'Mechanic',
   }
   ```
3. **Config prüfen**

   ```lua
   Config.PaymentTarget = 'society'
   Config.SocietyName = 'mechanic'
   ```
4. **Debug aktivieren**

   ```lua
   Config.Debug = true
   ```

   Suche: "zur Society via qb-management"
5. **Alternative: qb-banking**

   ```cfg
   ensure qb-banking
   ```

***

#### Keybinds funktionieren nicht

**Symptome:**

* Tasten ohne Funktion
* Keine 3D-Text-Anzeige

**Lösungen:**

1. **Config prüfen**

   ```lua
   Config.Keybinds = {
       CheckTuev = 38,   # E
       Diagnose = 74,    # H
       RenewTuev = 26    # C
   }
   ```
2. **Target-System aktiviert?**

   ```lua
   Config.Target = 'ox_target'
   Config.Use3DText = false
   ```
3. **3D-Text aktiviert?**

   ```lua
   Config.Target = 'none'
   Config.Use3DText = true
   ```
4. **Distanz prüfen**

   ```lua
   Config.Interaction3DDistance = 3.0
   ```
5. **Job prüfen**

   ```lua
   Config.MechanicJobs = {
       'mechanic',  # Dein Job hier?
   }
   ```

***

#### Progress-Bars fehlen

**Symptome:**

* Keine Progress-Bar
* Aktionen enden sofort

**Lösungen:**

1. **Config prüfen**

   ```lua
   Config.ProgressType = 'ox_lib'  # Nicht 'none'!
   ```
2. **Ressource installiert?**
   * ox\_lib: `ensure ox_lib`
   * qb-progressbar: `ensure qb-progressbar`
3. **Deaktivieren**

   ```lua
   Config.ProgressType = 'none'
   ```

***

#### Warnungen fehlen

**Symptome:**

* Keine Warnung beim Einsteigen

**Lösungen:**

1. **Config prüfen**

   ```lua
   Config.EnableReminders = true
   Config.ReminderDays = 30
   ```
2. **TÜV-Status prüfen**
   * `/tuevcheck [kennzeichen]` als Admin
3. **Notification testen**

   ```lua
   Config.NotifyType = 'native'
   ```

***

### Performance-Probleme

#### FPS-Drops

**Lösungen:**

1. **3D-Text deaktivieren**

   ```lua
   Config.Use3DText = false
   Config.Target = 'ox_target'
   ```
2. **Progress-Bars reduzieren**

   ```lua
   Config.ProgressType = 'none'
   ```
3. **Debug aus**

   ```lua
   Config.Debug = false
   ```

#### Hohe Server-Last

**Lösungen:**

1. **Minigames deaktivieren**

   ```lua
   Config.EnableMinigame = false
   ```
2. **Weniger TÜV-Stationen**
   * Reduziere in Config

***

### Escrow-Hinweise

**Was ist editierbar?**

* ✅ `config.lua` vollständig editierbar
* ❌ Andere Dateien verschlüsselt

**Script aktualisieren:**

1. Neue Version herunterladen
2. Dateien ersetzen (außer `config.lua`!)
3. Server neu starten

***

### Quick Reference

| Problem               | Lösung                            |
| --------------------- | --------------------------------- |
| Script lädt nicht     | Framework vor Script laden        |
| Keine Plaketten       | Cache löschen (F5)                |
| Billing fehlt         | esx\_billing / qb-billing         |
| Society-Payment fehlt | esx\_addonaccount / qb-management |
| Keybinds gehen nicht  | Job in Config?                    |
| FPS-Drops             | 3D-Text aus, Target an            |
| Keine Warnung         | EnableReminders = true            |

***

### Admin-Commands

```lua
/tuevcheck [kennzeichen]  # TÜV-Status prüfen
```

### Debug-Modus

```lua
Config.Debug = true  # In config.lua
```

***

### Support

Bei Problemen im Discord melden.

**Bitte angeben:**

* Detaillierte Problembeschreibung
* Framework (ESX/QBCore) & Version
* Config-Einstellungen
* Console-Logs (mit Debug = true)
* Server.cfg Ladereihenfolge

***

**FJX TÜV-SYSTEM – Wir helfen dir gerne! 🚗**


---

# 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/faq-and-fehlerbehebung.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.
