> For the complete documentation index, see [llms.txt](https://pepper-scripts.gitbook.io/pepper-scripts-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pepper-scripts.gitbook.io/pepper-scripts-docs/docs/de/activities/pepper-fight-club.md).

# Pepper Fight Club

Box- und Kampfkarriere mit eigenem Kampfsystem – Story in 12 Kapiteln, Akademie, Profi-Rangliste, Untergrund mit Razzien, PvP-Arena, Turniere und Wetten.

> ✅ **Pepper Fight Club holen:** <https://pepper-scripts.tebex.store/package/7745369>

> 🧪 **Getestet auf unserem Dev-Server:** Wir testen alle Skripte selbstverständlich permanent auf unserem eigenen Dev-Server „Pepper Scripts“.

### Überblick

Pepper Fight Club macht aus Faustkämpfen eine Karriere: vom Hinterhof in Davis bis zum Weltmeistertitel. Gekämpft wird mit einem **eigenen Kampfsystem** – jeden Treffer entscheidet der Server. Spieler folgen einer **Story in 12 Abschnitten** (Prolog, Kapitel 1–10, Epilog), lernen jede Technik in der **Akademie**, klettern in der Profi-Rangliste nach oben, kämpfen im **Untergrund** und treten in der **Arena** gegeneinander an.

Alles läuft über ein **Tablet** (`F7` oder `/fightclub`). Admins richten die Spielorte einmal mit dem Assistenten `/fcsetup` ein und verwalten alles Weitere im Admin-Fenster `/fcadmin`.

> **Hinweis:** Alle mitgelieferten Koordinaten sind Näherungen. Prüfe die Orte einmal auf deinem Server – der Assistent `/fcsetup` führt dich durch alle 36 Schritte.

### Features

* **Eigenes Kampfsystem**, jeden Treffer entscheidet der Server: Jab, Cross, Haken, Uppercut, Tritte, Clinch, Deckung, Pendeln, Parade, Konter, Kombos, Ausdauer und Finisher – mit Latenzausgleich für faires PvP
* **4 Kampfstile:** Straßenkampf, Boxen, Kickboxen, Freestyle
* **Niederschläge** mit Ringrichter-Zählung und Aufsteh-Minispiel, Runden, Ecke mit Taktik, drei Punktrichter
* **Story-Karriere in 12 Abschnitten** mit Szenen, Trainer, Promoter und Rivale – Entscheidungen führen zu 3 verschiedenen Enden
* **Akademie** mit 46 Lektionen in 8 Modulen und 4 Prüfungen: Jede Technik lernst du erst, bevor du sie im Kampf einsetzt
* **Profi-Karriere:** Rangliste mit 50 Boxern, Lizenzen, Trainingslager, Pressekonferenzen und 5 Titel
* **Untergrund:** 8 Schauplätze mit 56 Kämpfern, Bossen, Rivalen, Ruf, Käfig und Gürteln – per Config auch als legale Liga
* **Arena für PvP:** Herausforderungen mit Einsatz, Elo-Saisons, Champion-Gürtel, Turniere, Kampfabende und NPC-Schaukämpfe
* **Wetten** mit festen Quoten, Spieler-Pool und Live-Wetten in der Ecke
* **Polizei-Razzien** mit Hitze je Schauplatz, eingebautem Alarm oder eigener Dispatch-Anbindung
* **17 Trainingsstationen** mit Minispielen, Verletzungen, Ärzte und Ernährung
* **29 Items** für ox\_inventory mit fertigen Bildern, Sponsoren, Manager, Cutman, Tages- und Wochenaufgaben, 58 Erfolge
* **Eigenes Gym** (6 kaufbare Gyms) und **Fight-Teams** bis 6 Mitglieder
* **Level 1–100** mit Freischaltungen, Prestige bis Stufe 10 und Signature Move
* **Ersteinrichtungs-Assistent** `/fcsetup` und Admin-Fenster `/fcadmin` mit 11 Reitern
* **Anzeigen frei anordnen:** Position (frei ziehen oder fester Platz) und Größe jeder Anzeige im Admin-Fenster
* **Karriere pausieren:** Ziel und Wegpunkte verschwinden, bis der Spieler weitermacht
* Deutsch & Englisch, Config, Sprachdateien, Bridges und Installationsdateien offen

### Voraussetzungen

| Voraussetzung      | Version                                                               |
| ------------------ | --------------------------------------------------------------------- |
| FiveM-Server-Build | ≥ 7290                                                                |
| OneSync            | erforderlich                                                          |
| Framework          | ESX Legacy, QBCore oder Qbox (`Config.Framework = 'auto'` erkennt es) |
| Datenbank          | MySQL / MariaDB über oxmysql                                          |
| Inventar           | ox\_inventory (Pflicht)                                               |
| Target             | optional – ox\_target, sonst Hinweis + Taste `E`                      |

### Abhängigkeiten

* [ox\_lib](https://github.com/overextended/ox_lib)
* [oxmysql](https://github.com/overextended/oxmysql)
* [ox\_inventory](https://github.com/overextended/ox_inventory)
* optional: [ox\_target](https://github.com/overextended/ox_target)

### Installation

1. Ressource aus dem Cfx.re Portal (Granted Assets) herunterladen
2. Nach `resources/[pepper]/pepper_fightclub` entpacken – **nicht umbenennen**
3. **Items eintragen:** den Inhalt von `install/ox_items_de.lua` (bzw. `install/ox_items_en.lua`) in `ox_inventory/data/items.lua` einfügen – **innerhalb** der Tabelle, direkt vor der letzten schließenden `}`. Kein zweites `return {` einfügen
4. **Bilder kopieren:** alle Bilder aus `install/images/` nach `ox_inventory/web/images/`
5. In der `server.cfg` nach den Abhängigkeiten starten und das Admin-Recht vergeben:

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended        # bzw. qb-core / qbx_core
ensure ox_inventory
# ensure ox_target        # optional – ohne ox_target interagieren Spieler mit E
ensure pepper_fightclub

add_ace group.admin pepper.fightclub.admin allow
```

6. **Datenbank:** Die 18 Tabellen (`fc_*`) legt das Script beim Start selbst an. Ohne CREATE-Recht vorher `install/pepper_fightclub.sql` importieren
7. Server starten – in der Konsole erscheint eine grüne Zeile `Pepper Fight Club v… gestartet (Framework: …)`
8. Im Spiel als Admin `/fcsetup` ausführen und die Spielorte festlegen (siehe Ersteinrichtung)

### Ersteinrichtung

Beim ersten Start – solange noch kein Ort gesetzt ist – erinnert das Script jeden Admin beim Einloggen und danach alle 10 Minuten an die offene Einrichtung. Gestartet wird sie mit `/fcsetup`.

Der Assistent fragt **36 Orte** in der Reihenfolge des Spielverlaufs ab: Hinterhof und Muscle Beach, die Untergrund-Schauplätze, die Hallen der Profi-Karriere, die Arena, die Trainings-Gyms, Laden und Händler, die 6 Spieler-Gyms und die Laufstrecken. Links am Bildschirm steht der aktuelle Schritt, du kannst dabei normal laufen.

| Taste       | Funktion                                                  |
| ----------- | --------------------------------------------------------- |
| `E`         | Ort hier setzen (deine Position und Blickrichtung)        |
| `G`         | zum Vorschlag teleportieren                               |
| `BACKSPACE` | Schritt überspringen – der Vorschlag bleibt               |
| `X`         | Pause – mit `/fcsetup` geht es beim selben Schritt weiter |

* **Mitziehen:** Ein Ring nimmt alles mit, was zu ihm gehört – Figuren, Stationen, Requisiten im Umkreis. Laufstrecken drehen sich mit dem Startpunkt mit. Bei Ringen zeigt eine rote Vorschau Größe und Ausrichtung; stell dich in die Mitte und schau in Ringrichtung
* **Von Hand gesetzte Orte** überschreibt der Assistent nie
* `/fcsetup restart` beginnt von vorn, `/fcsetup stop` pausiert
* **Später:** `/fcadmin` → Reiter **Einrichtung** zeigt alle Schritte mit Status und setzt einzelne Schritte neu. Einzelne Orte änderst du unter `/fcadmin` → **Orte** (hinteleportieren, „Hierher“ setzen, zurücksetzen)
* **Export:** `/fcexport` (oder **Export** im Reiter Orte) gibt alle geänderten Orte als Lua-Zeilen in der Server-Konsole und in F8 aus – zum Übernehmen in `config/locations.lua`

Gesetzte Orte liegen in der Datenbank und gelten sofort, ohne Neustart.

#### Anzeigen anordnen

`/fcadmin` → Reiter **Anzeigen** legt Position und Größe der Anzeigen für alle Spieler fest: Kampf-Anzeige, Story-Ziel, Meldungen, Tastenhilfe, Level-Up, Pratzen & Lauf, Trainingsstationen, Live-Wetten und Razzia-Hinweis. In der Liste änderst du die Größe in 10-%-Schritten. **Editor öffnen** zeigt alle Anzeigen als Rahmen über dem Spiel: Rahmen frei ziehen (rastet in der Bildmitte ein), einen von 9 festen Plätzen wählen, Größe per Regler oder Mausrad (50–200 %), dann **Speichern**. Die Anordnung liegt in der Datenbank und gilt sofort. Startwerte für neue Server stehen in `Config.Hud.Layout`.

### Spieler-Anleitung

#### Tablet

`F7` oder `/fightclub` öffnet das Tablet. Die Taste kann jeder Spieler in den GTA-Einstellungen unter Tastenbelegung → FiveM umlegen. Ab Level 2 bekommt jeder Spieler einmal das Item **Fight-Club-Tablet**; Benutzen öffnet es ebenfalls.

Am Anfang gibt es die Reiter **Start, Karriere, Ausbildung, Profil, Steuerung**. Mit dem Level kommen **Training, Box-Rec, Untergrund, Arena, Wetten, Hitze, Laden, Verträge, Aufgaben, Gym & Team** und **Erfolge** dazu. Der Reiter **Start** zeigt die nächsten Freischaltungen.

#### Steuerung im Kampf

| Taste                       | Funktion                                                    |
| --------------------------- | ----------------------------------------------------------- |
| Linke Maustaste             | leichter Schlag (Jab / Schwinger)                           |
| Rechte Maustaste            | schwerer Schlag (Cross / Heumacher)                         |
| `A` / `D` + linke Maustaste | Haken links / rechts                                        |
| `S` + linke Maustaste       | Körpertreffer                                               |
| `S` + rechte Maustaste      | Uppercut                                                    |
| `STRG` (halten)             | Deckung                                                     |
| `LEERTASTE`                 | Ausweichen · Aufstehen nach einem Niederschlag              |
| `A` / `D` + `LEERTASTE`     | Pendeln                                                     |
| `F`                         | Schubser / Spezialschlag, im Kickboxen Tritte               |
| `G`                         | Clinch (Freestyle)                                          |
| `Q`                         | Provozieren                                                 |
| `E`                         | Finisher, wenn das Adrenalin voll ist · in Dialogen: weiter |
| `BACKSPACE`                 | Szene überspringen                                          |

Welche Technik eine Taste auslöst, hängt vom Stil und von den gelernten Lektionen ab – der Reiter **Steuerung** im Tablet zeigt die Belegung deines Servers. `/fcquit` gibt einen laufenden Kampf auf.

#### Story

Die Karriere beginnt im Hinterhof in Davis und führt über Delgado's Boxing Gym an der Muscle Beach bis zum WM-Kampf. Prolog, 10 Kapitel und Epilog erzählen die Geschichte mit Szenen, Gesprächen, Nachrichten im Tablet und Kapitelkämpfen. Entscheidungen – etwa zum Untergrund, zu Doping oder zu Schiebung – verändern die **Ehre** und führen zu einem von **3 Enden**. Zwischen den Kapiteln braucht es Level; der Reiter **Karriere** zeigt das nächste Ziel und was du bis dahin tun kannst. Szenen am Gym starten nicht von selbst – dort heißt es „\[E] Story fortsetzen“.

Gestartet wird die Karriere bei **Lil' D im Hinterhof** (Kartenpunkt „Karriere beginnen“), nicht im Tablet. Wer gerade etwas anderes vorhat, **pausiert** die Karriere im Tablet, bei Pops oder mit `/fcpause`: Ziel, Wegpunkte und Szenen verschwinden, bis man fortsetzt – der Fortschritt bleibt gespeichert.

#### Akademie

Im Reiter **Ausbildung** liegen **46 Lektionen** in 8 Modulen: Drills, Pratzen, Rhythmus, Laufstrecken, Sparring mit Ziel und Regelkunde. Eine Technik ist erst im Kampf nutzbar, wenn ihre Lektion bestanden ist. Dazu kommen **4 Prüfungen**: Aufnahmetest, Amateur-Lizenz (ab Level 8), Profi-Lizenz (ab Level 35) und Meisterprüfung (ab Level 98), ein Tagesplan mit 3 Aufgaben und das Vertrauen deiner Trainer.

#### Box-Rec und Profi-Karriere

Der Reiter **Box-Rec** zeigt deine Bilanz, die Rangliste mit **50 Boxern** und die Angebote der Promoter. Siege bringen dich nach oben, die Börse richtet sich nach deinem Rang. Mit dem Rang öffnen sich die **5 Titel**: Los Santos, San Andreas, Nordamerika, Weltmeister und Vereinigter Weltmeister – mit Trainingslager, Pressekonferenz und Einlauf.

#### Training und Gesundheit

**17 Trainingsstationen** (Sandsack, Liegestütze, Laufstrecken, Schattenboxen und mehr) in den Gyms Muscle Beach, Hinterhof-Gym und Keller-Gym verbessern deine Werte mit einem Minispiel; jede Einheit kostet Trainingsenergie. Kämpfe hinterlassen Blessuren und manchmal Verletzungen – sie heilen mit der Zeit, beim Arzt oder mit Items wie Eisbeutel und Verband.

#### Untergrund

**8 Schauplätze:** Hinterhof, Parkhaus, Kellerloch, Hafenhalle, Schrottplatz-Käfig, Steinbruch, Dachterrasse VIP und Die Grube. Am Promoter nimmst du Kampfangebote an, an jedem Schauplatz gibt es eine Rangliste, Ruf, einen Boss, Rivalen und einen Gürtel. Börsen werden hier als Schwarzgeld ausgezahlt (einstellbar). Jeder Kampf erhöht die **Hitze** des Schauplatzes – wird sie zu hoch, kommt eine **Razzia**: Nach der Vorwarnung bleibt Zeit, die Zone zu verlassen; wer bleibt, zahlt eine Strafe und darf eine Weile nicht in den Untergrund. Polizisten im Dienst können an Untergrund-Schauplätzen nicht kämpfen oder wetten.

Der Hinterhof ist nach dem Prolog offen, alle weiteren Schauplätze öffnen sich in **Kapitel 4**, wenn Sal Marino sein Angebot macht. Im **Legal-Modus** (`Config.Underground.enabled = false`) heißt der Untergrund „Liga“: keine Hitze, keine Razzien, und die Story erzählt Kapitel 4 passend dazu – Sal bietet seine eigene Show-Liga an statt illegaler Kämpfe.

#### Arena

In der Arena kämpfen Spieler gegeneinander: freie Herausforderungen (ab Level 5, optional mit Einsatz), Ranglisten-Kämpfe mit Elo-Wertung und Monatssaison (ab Level 20), Warteschlange mit NPC-Gegner, wenn niemand frei ist, Turniere mit 4, 8 oder 16 Plätzen, Kampfabende mit Fight-Card und ein Champion-Gürtel. Fremden öffentlichen Kämpfen und Schaukämpfen schaust du mit `/fcwatch` zu.

#### Wetten

Wetten gehen nur vor Ort: beim Buchmacher, im Tablet oder mit `/fcbet` in der Nähe eines Rings. Kämpfe mit NPCs haben feste Quoten, PvP-Kämpfe einen Spieler-Pool. Mit dem Level kommen Methoden-, Live- und Rundenwetten sowie höhere Limits dazu. Wetten geben keine XP.

#### Wirtschaft

Im Sportladen gibt es Handschuhe, Schutzausrüstung, Essen und Erste Hilfe, beim Untergrund-Händler mehr. Ausrüstung nutzt sich ab und lässt sich im Laden reparieren. Dazu kommen Sponsoren-Verträge, Manager, Cutman, Promoter-Aufträge, Tages- und Wochenaufgaben, 58 Erfolge mit wählbaren Titeln, ab Level 70 ein **eigenes Gym** (kaufen oder mieten, mit Upgrades) und ab Level 72 ein **Fight-Team**.

#### Prestige

Ab Level 100 startest du per **Prestige** wieder bei Level 1 – deine Techniken bleiben, du bekommst einen Stern und Punkte für kleine Vorteile. Bis zu 10 Prestige-Stufen sind möglich. Auf Level 100 wählst du außerdem deinen **Signature Move**. Die Hall of Fame nimmt Spieler mit Level 100, Weltmeistertitel oder Prestige auf.

### Befehle

#### Spieler

| Befehl                        | Funktion                                                                                                                     |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `/fightclub` (`F7`)           | Tablet öffnen                                                                                                                |
| `/fcquit`                     | laufenden Kampf oder laufende Lektion aufgeben                                                                               |
| `/fcduel <ID>`                | Freundschaftskampf anbieten (Spieler in der Nähe)                                                                            |
| `/fcaccept`                   | Freundschaftskampf annehmen                                                                                                  |
| `/fcwatch`                    | öffentlichem Kampf oder Schaukampf in der Nähe zuschauen – nochmal = aufhören                                                |
| `/fcpause`                    | Karriere pausieren / fortsetzen                                                                                              |
| `/fcchallenge <ID> [Einsatz]` | Ranglisten-Herausforderung · `/fcchallenge frei <ID> [Einsatz]` freie Herausforderung · `/fcchallenge ja` / `nein` antworten |
| `/fcqueue`                    | Warteschlange am Arena-Schauplatz an / aus                                                                                   |
| `/fcbet`                      | Wettschein für Kämpfe in der Nähe (Taste frei belegbar)                                                                      |

Die Namen stehen in `Config.Commands` (`config/config.lua`) und `Config.Arena.Commands` (`config/arena.lua`).

#### Admin

| Befehl                                       | Funktion                                                                                                                            |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `/fcadmin`                                   | Admin-Fenster: Orte, Anzeigen, Einrichtung, Spieler, Kämpfe, Profi-Karriere, Schauplätze, Gesundheit, Arena, Untergrund, Wirtschaft |
| `/fcsetup`                                   | Ersteinrichtung starten / fortsetzen · `restart` von vorn · `stop` Pause                                                            |
| `/fcsetpos <ort>`                            | Ort auf die eigene Position setzen                                                                                                  |
| `/fcresetpos <ort>`                          | Ort auf den Config-Wert zurücksetzen                                                                                                |
| `/fctp <ort>`                                | zu einem Ort teleportieren                                                                                                          |
| `/fcorte`                                    | alle Ortsnamen anzeigen (`*` = geändert)                                                                                            |
| `/fcexport`                                  | geänderte Orte als Lua-Zeilen ausgeben (Server-Konsole + F8)                                                                        |
| `/fcxp <menge> [ID]`                         | XP geben                                                                                                                            |
| `/fclevel <level> [ID]`                      | Level setzen                                                                                                                        |
| `/fcunlock <technik\|all> [ID]`              | Techniken freischalten                                                                                                              |
| `/fcstory reset \| <kapitel> [schritt] [ID]` | Story zurücksetzen oder in ein Kapitel springen (z. B. `chapter5`)                                                                  |
| `/fcfight <kampf>`                           | einen Kampf aus `Config.Fights` starten                                                                                             |
| `/fcexam [prüfung] [ID]`                     | Prüfung zurücksetzen (Standard: Aufnahmetest)                                                                                       |
| `/fcwipe [ID]`                               | alle Fight-Club-Daten eines Spielers löschen                                                                                        |
| `/fcmove strafe\|assist`                     | Bewegungsmodus im Kampf für dich umschalten (Test)                                                                                  |
| `/fcdebug`                                   | Kampf-Debug-Anzeige an / aus                                                                                                        |

Ohne `[ID]` gilt ein Befehl für dich selbst. Admin-Befehle prüft der Server bei jedem Aufruf.

### Rechte

Admin ist, wer eine dieser Bedingungen erfüllt:

* **ACE-Recht `pepper.fightclub.admin`** (`Config.AdminAce`) – der verlässliche Weg auf jedem Framework
* **eine Framework-Gruppe aus `Config.AdminGroups`** (Standard `admin`, `superadmin`, `god`)
* nur wenn `Config.AdminAllowCommandAce = true`: jeder mit dem allgemeinen ACE-Recht `command` (Standard **aus** – das haben auf vielen Servern auch Moderatoren)

```cfg
add_ace group.admin pepper.fightclub.admin allow
add_ace identifier.license:DEINE_LIZENZ pepper.fightclub.admin allow
```

### Konfiguration

| Datei                                        | Inhalt                                                                                                                                          |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `config/config.lua`                          | Sprache, Framework, Admin-Recht, Befehle, Tasten, Interaktion, Story, Geld, Dispatch, Bewegungsmodus                                            |
| `config/combat.lua`                          | Kampfsystem, Stile, Techniken, Kombos, Finisher, Regeln, KI                                                                                     |
| `config/fighters.lua` · `config/venues.lua`  | Gegner und Kämpfe · Untergrund-Schauplätze                                                                                                      |
| `config/academy.lua` · `config/pro.lua`      | Lektionen und Prüfungen · Profi-Rangliste, Titel, Trainingslager                                                                                |
| `config/training.lua` · `config/health.lua`  | Stationen und Gyms · Verletzungen, Ernährung, Doping                                                                                            |
| `config/arena.lua` · `config/betting.lua`    | PvP, Saison, Turniere, Kampfabende · Wetten                                                                                                     |
| `config/underground.lua`                     | Hitze, Razzien, Flyer, Legal-Modus                                                                                                              |
| `config/items.lua` · `config/economy.lua`    | Items · Händler, Sponsoren, Aufgaben, Erfolge, Gym, Team, Prestige                                                                              |
| `config/locations.lua` · `config/setup.lua`  | Orte und Ringe · Ersteinrichtung                                                                                                                |
| `config/story.lua` · `config/story_late.lua` | Story-Kapitel und Szenen                                                                                                                        |
| `config/progression.lua`                     | Level-Kurve, Werte, Ränge                                                                                                                       |
| `config/server.lua`                          | Discord-Webhook für Logs, Versionshinweis, Schutzgrenzen gegen Makros und Absprachen (`ServerConfig.Protection`) – wird nie an Clients gesendet |
| `locales/de` · `locales/en`                  | alle Texte                                                                                                                                      |

Wichtige Optionen:

| Option                                        | Standard                          | Bedeutung                                                                                                                           |
| --------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `Config.Locale`                               | `'de'`                            | Sprache (`de` / `en`), gilt für alle Spieler                                                                                        |
| `Config.Framework`                            | `'auto'`                          | `auto`, `esx`, `qbcore`, `qbox`, `standalone`                                                                                       |
| `Config.AdminAllowCommandAce`                 | `false`                           | `true` = jeder mit ACE `command` ist Fight-Club-Admin                                                                               |
| `Config.Commands`                             | `fightclub`, `fcquit`, …          | Namen der Spieler-Befehle                                                                                                           |
| `Config.Keys`                                 | siehe Steuerung                   | Tasten im Kampf (FiveM-Steuerungsnummern) · `tablet` = Vorgabe `F7`                                                                 |
| `Config.Interaction`                          | `'auto'`                          | ox\_target, wenn gestartet, sonst Hinweis + `E` · `'target'` · `'key'`                                                              |
| `Config.MovementMode`                         | `'strafe'`                        | Bewegung im Kampf: `'strafe'` = Kampfhaltung, Blick zum Gegner · `'assist'` = normale Bewegung, Blick wird weich zum Gegner gedreht |
| `Config.Story.Enabled`                        | `true`                            | Story-Karriere an / aus                                                                                                             |
| `Config.Story.Instanced`                      | `true`                            | Szenen und Kapitelkämpfe in eigener Instanz (Routing-Bucket)                                                                        |
| `Config.Story.AllowSkip`                      | `true`                            | Szenen mit `BACKSPACE` überspringen                                                                                                 |
| `Config.Story.StartNpc` · `StartLoc`          | `'lil_d'` · `'backyard_promoter'` | Figur und Ort, an dem die Karriere beginnt · `StartNpc = nil` = auch im Tablet startbar                                             |
| `Config.Story.AllowPause`                     | `true`                            | Spieler dürfen die Karriere pausieren (`/fcpause`, Tablet, Pops)                                                                    |
| `Config.Hud.Layout`                           | `{}`                              | Startwerte für Position und Größe der Anzeigen (im Spiel: `/fcadmin` → Anzeigen)                                                    |
| `Config.Underground.enabled`                  | `true`                            | `false` = **Legal-Modus**: keine Hitze, keine Razzien, kein Schwarzgeld, „Liga“ statt „Untergrund“                                  |
| `Config.Combat.AutoSpectate`                  | `false`                           | `true` = alle Spieler im Umkreis bekommen das Kampf-HUD automatisch (auf RP-Servern nicht empfohlen)                                |
| `Config.Combat.SpectateHint`                  | `true`                            | Spieler in der Nähe eines Kampfes bekommen den Hinweis auf `/fcwatch`                                                               |
| `Config.Combat.RingWalls`                     | `true`                            | unsichtbare Wände an Ringen mit Seilen · je Ring abschaltbar mit `walls = false`                                                    |
| `Config.Money.account`                        | `'cash'`                          | Konto für Börsen (`cash` / `bank`)                                                                                                  |
| `Config.Money.black`                          | `'auto'`                          | Schwarzgeld: ESX-Konto `black_money`, bei QBCore / Qbox Item `markedbills` · `'account'`, `'markedbills'`, `'cash'`                 |
| `Config.Economy.PayoutAccount` · `PayAccount` | `'bank'` · `'cash_then_bank'`     | Auszahlungen der Wirtschaft · Zahlweise bei Käufen                                                                                  |
| `Config.Dispatch.mode`                        | `'builtin'`                       | Razzia-Alarm: `'builtin'` = Meldung + Kartenpunkt bei Polizisten im Dienst · `'event'` = eigenes Ereignis · `'none'`                |
| `Config.Dispatch.jobs`                        | `police`, `sheriff`               | Jobs, die als Polizei zählen                                                                                                        |
| `Config.Setup.Enabled` · `AutoPrompt`         | `true` · `true`                   | Ersteinrichtung an · Admins daran erinnern                                                                                          |
| `Config.Progression.GlobalXpMultiplier`       | `1.0`                             | Tempo des Aufstiegs                                                                                                                 |
| `Config.Economy.PayoutMultiplier`             | `1.0`                             | skaliert Auszahlungen der Wirtschaft (Sponsoren, Aufträge, Aufgaben, Erfolge, Gym)                                                  |

Fast jedes Modul hat einen eigenen Schalter `Enabled` (z. B. `Config.Training`, `Config.Arena`, `Config.Betting`, `Config.Pro`). Nach jeder Änderung die Ressource neu starten.

### Für Entwickler

#### Exports

```lua
-- Server
exports.pepper_fightclub:getProfile(src)        -- Profil (Name, Level, Rang, Werte, Bilanz, Ehre, Stile, Techniken) oder nil
exports.pepper_fightclub:isInFight(src)         -- true, solange der Spieler kämpft
exports.pepper_fightclub:getProRank(src)        -- Platz in der Profi-Rangliste (1–50, 51 = ohne Rang) oder nil
exports.pepper_fightclub:getProLicense(src)     -- 'none' | 'amateur' | 'pro' oder nil
exports.pepper_fightclub:openBetting(src, venue) -- Wettschein für einen Spieler öffnen

-- Client
exports.pepper_fightclub:openBetting(venue)     -- Wettschein öffnen (venue = Schauplatz-ID oder nil = Kämpfe in der Nähe)
```

`useItem` ist der Export für ox\_inventory: Die Item-Vorlagen in `install/` tragen ihn schon ein (`server = { export = 'pepper_fightclub.useItem' }`). Selbst aufrufen musst du ihn nicht.

#### Hooks für Jail- und Polizei-Scripts

Server-Ereignisse – mit `AddEventHandler` zuhören, **nicht** mit `RegisterNetEvent`:

```lua
AddEventHandler('pepper_fightclub:raid', function(data) end)
-- data = { venue, phase, coords, police, players = { src, … } }
AddEventHandler('pepper_fightclub:arrestZoneLeft', function(src, venue) end)
-- Spieler hat die Zone rechtzeitig verlassen
AddEventHandler('pepper_fightclub:raidCaught', function(src, venue, info) end)
-- Spieler war bei Razzia-Ende noch in der Zone · info = { fine, police, banUntil, late }
```

Mit `Config.Dispatch.mode = 'event'` ruft das Script bei einem Alarm `TriggerEvent(Config.Dispatch.event, data)` auf (Standard `pepper_fightclub:dispatch`, `data = { coords, title, message, code }`) – dort bindest du dein Dispatch-Script an. Ob die Polizei bei einer Razzia automatisch Geldstrafen verteilt, regelt `Config.Underground.Raid.fineWithPolice` (Standard `false`: Mit echter Polizei übernimmt sie oder dein Jail-Script).

Die internen Ereignisse zwischen den Modulen (`Fight.Bus`) sind keine öffentliche Schnittstelle und können sich ändern.

#### Framework-Anbindung

`bridge/server/esx.lua`, `qbcore.lua`, `qbox.lua` und `standalone.lua` liefern Geld, Jobs, Namen und Admin-Gruppen, `bridge/client/frameworks.lua` die Benachrichtigungen. Alle Bridges sind offen.

### Troubleshooting

| Problem                                                               | Lösung                                                                                                                       |
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Ressource startet nicht, die Konsole nennt eine fehlende Abhängigkeit | oxmysql, ox\_lib und ox\_inventory müssen vor `pepper_fightclub` starten, OneSync muss an sein, Server-Build 7290 oder neuer |
| Konsole: „Datenbank konnte nicht vorbereitet werden“                  | oxmysql prüfen oder `install/pepper_fightclub.sql` von Hand importieren                                                      |
| `/fcadmin`: keine Berechtigung                                        | ACE-Zeile aus „Rechte“ eintragen und den Server neu starten                                                                  |
| Items ohne Bild oder unbekannt                                        | Schritt 3 und 4 der Installation prüfen, dann ox\_inventory neu starten                                                      |
| Figur steht in einer Wand, Ring liegt schief                          | `/fcadmin` → **Orte** → „Hierher“, oder den Schritt unter **Einrichtung** neu setzen                                         |
| Kein „\[E]“ an einer Figur                                            | `Config.Interaction` prüfen; mit ox\_target erscheint stattdessen das Target-Menü                                            |
| `/fcexport` gibt nichts aus                                           | es wurden noch keine Orte geändert                                                                                           |

### FAQ

**Wer darf `/fcadmin` und `/fcsetup` benutzen?** Wer das ACE-Recht `pepper.fightclub.admin` hat oder in einer Gruppe aus `Config.AdminGroups` ist. Das allgemeine `command`-Recht zählt nur mit `Config.AdminAllowCommandAce = true`.

**Die Orte passen nicht zu meiner Map.** Die mitgelieferten Koordinaten sind Näherungen. Mit `/fcsetup` setzt du alle Orte der Reihe nach, mit `/fcadmin` → **Orte** einzelne. Gespeichert wird in der Datenbank; mit `/fcexport` übernimmst du sie in die Config.

**Geht es ohne ox\_target?** Ja. Ohne ox\_target steht an Figuren ein Hinweis, Spieler interagieren mit `E`.

**Kann ich den Untergrund abschalten?** Ja: `Config.Underground.enabled = false` ist der **Legal-Modus** – keine Hitze, keine Razzien, kein Schwarzgeld, „Liga“ statt „Untergrund“. Die Story-Szenen erzählen weiterhin vom Untergrund.

**Was passiert mit der Polizei?** Polizisten im Dienst können an Untergrund-Schauplätzen nicht kämpfen oder wetten, außer Dienst schon (`Config.Underground.AllowOffDuty`). Bei einer Razzia alarmiert das Script die Polizei – eingebaut oder über dein Dispatch-Script. Sind zu wenige Polizisten im Dienst, läuft eine „Razzia light“ ohne echte Polizei.

**Wie sieht es mit der Performance aus?** Den Kampf rechnet der Server nur, solange ein Kampf läuft. Figuren, Ringe und Marker werden lokal und nach Entfernung erzeugt. Einen gemessenen resmon-Wert nennen wir erst nach der Messung.

**Was passiert bei einem Restart?** Laufende Kämpfe und Szenen enden. Level, Story, Lektionen, Orte, Rangliste und Items liegen in der Datenbank bzw. im Inventar.

### Changelog

Siehe Updates-Seite oder `CHANGELOG.md` in der Ressource.

### Support

Ticket in unserem [Discord](https://discord.gg/6NaFJWKDYu) (Kategorie „Script Support“) öffnen und den Kauf vorher mit `/verify` verknüpfen – auf Deutsch oder Englisch.
