> 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/jobs/pepper-dealership.md).

# Pepper Dealership

Autohäuser für alle Fahrzeugarten – 3D-Showroom, Probefahrt, Finanzierung, Inzahlungnahme, Gebrauchtwagen und Spieler-Autohäuser mit Lager, Provision und Level 1–50 für ESX, QBCore und Qbox.

{% hint style="success" %}
✅ **Pepper Dealership holen:** <https://pepperscripts.de/package/7809142>
{% endhint %}

{% hint style="info" %}
🧪 **Getestet auf unserem Dev-Server:** Wir testen alle Skripte selbstverständlich permanent auf unserem eigenen Dev-Server „Pepper Scripts“.
{% endhint %}

## Überblick

Pepper Dealership bringt **Autohäuser für jede Fahrzeugart** auf deinen Server – Autos, Motorräder, Nutzfahrzeuge, Boote und Luftfahrzeuge. Jedes Autohaus wählst du einzeln als **NPC-Autohaus** (verkauft rund um die Uhr), als **Job-Autohaus** (Mitarbeiter über den Framework-Job) oder als **kaufbares Spieler-Autohaus** mit eigenem Inhaber.

Kunden erleben einen **3D-Showroom**: Das Fahrzeug steht auf dem Vorschauplatz, die Kamera kreist darum, Werte aus dem Spiel, Vergleich, **Lackierung**, **Wunschkennzeichen**, **Probefahrt**, **Finanzierung** mit Raten in Echtzeit und **Inzahlungnahme** des alten Fahrzeugs. Gekauft wird bar oder per Bank, das Fahrzeug wartet am Abholplatz oder steht direkt in der **Framework-Garage**. Ein **Gebrauchtwagenplatz** lässt Spieler ihre Fahrzeuge untereinander verkaufen – der Erlös kommt auch an, wenn der Verkäufer offline ist.

Spieler-Autohäuser führen ein **Lager** und kaufen beim Hersteller ein (Lieferung oder selbst **überführen**), setzen eigene Preise, stellen Personal mit **Rängen**, **Lohn** und **Provision** ein, machen Kunden **Angebote** mit Rabatt und wachsen über **Level 1–50** mit Ausbau, **Angebot der Woche**, **Gutscheinen** und **Stammkunden-Rabatt**. Ein **Katalog-Tablet** (auch als lb-phone-App) zeigt allen Spielern Autohäuser, Angebote und eine Bestenliste.

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

## Features

* **6 Händlertypen** (Autos, Motorräder, Nutzfahrzeuge, Boote, Luftfahrt, Gemischt), beliebig viele Autohäuser, je Autohaus **NPC, Job oder kaufbar**
* **Admin-Menü** `/dealeradmin` mit **Platzier-Modus** (Zielstrahl, durchsichtiges Vorschau-Fahrzeug für Stellplätze, eigene Position mit **G**), 6 Vorlagen, Sortiment je Autohaus, Besitzer setzen
* **Fahrzeugkatalog** mit 454 Vanilla-Fahrzeugen in 19 Kategorien, Bild-URL, „Ab Level“, **Import aus dem Framework** (qbx\_core, QBCore, ESX) mit Vorschau
* **3D-Showroom**: Vorschau-Fahrzeug, Kamera mit Orbit + Ansichten (vorn, Seite, hinten, oben, innen), Türen, Licht, **Fahrzeugwerte** aus dem Spiel, **Vergleich** bis 3 Fahrzeuge
* **Lackierung** (31 Farben, Grund- + Zweitfarbe, Aufpreis je Lackart) und **Wunschkennzeichen** mit Sperrwörtern und Reservierung
* **Kauf** bar oder Bank, Übergabe **am Abholplatz** (Schlüssel, voller Tank, Wegpunkt) oder **in die Garage**, optional Kaufvertrag-Item (ox\_inventory)
* **Probefahrt** mit Zeitlimit, Entfernungs- und Aussteige-Grenze, `/teststop`, Rückkehr zum Verkäufer, optional Gebühr und eigene Instanz
* **Ausstellungsfahrzeuge** im Autohaus mit „Ansehen“
* **Finanzierung**: 3 Pläne (6/12/24 Raten), Anzahlung 20–90 %, Raten in Echtzeit vom Bankkonto, Verzug mit Mahngebühr, **Sicherstellung** nach 3 verpassten Raten, Ablösen jederzeit, offline kein Verzug
* **Inzahlungnahme** des alten Fahrzeugs (Zustand + Alter bestimmen den Wert) und **Ankauf** am Verkäufer
* **Gebrauchtwagenplatz** Spieler → Spieler mit Preis, Beschreibung, Laufzeit und Auszahlung auch an Offline-Verkäufer
* **„Meine Finanzierungen & Inserate“** (`/myfinance`)
* **Spieler-Autohaus**: 5 Ränge mit Rechten, **Stempeluhr**, Lohn aus dem Geschäftskonto, **Provision**, Einladen/Befördern/Entlassen
* **Geschäftskonto** mit Buchungsliste, optional im Firmenkonto des Frameworks
* **Büro-Tablet**: Lager, eigene Preise (90–130 %), Einkauf per **Lieferung** oder **Überführung** vom Werk, Gebrauchtwagen, Ausstellung, Team, Konto, Aktionen, Einstellungen
* **Verkaufsangebot an Kunden** mit Preis bis zur Rang-Grenze und einmaligem Gegenangebot; **Selbstbedienung**, wenn niemand im Dienst ist (abschaltbar), „Verkäufer rufen“
* **Gebrauchtwagenlager** aus Inzahlungnahmen, Ankäufen und Sicherstellungen; **Händler-Finanzierung** aufs Geschäftskonto
* Autohaus **kaufen**, an Spieler **übergeben**, an den Staat **zurückverkaufen**; fällt nach Inaktivität zurück
* **Level 1–50** mit 10 Stufen-Namen: Fahrzeugklassen und Funktionen nach Level, **Ausbau** (Lager, Ausstellung, Personal, Einkaufsrabatt, Lieferzeit)
* **Angebot der Woche**, **Gutscheine** (Prozent/Betrag, Einlösungen, Ablauf) und **Stammkunden-Rabatt** – gedeckelt, nie unter Einkauf
* **Katalog-Tablet** (`/dealer`, Taste, optional Item) und **lb-phone-App**: alle Autohäuser, Sortiment, Wegpunkt, **Probefahrt-Termin/Kaufanfrage**, Bestenliste, eigene Käufe
* **Admin-Übersicht**: Umsatz, Personal im Dienst, offene Raten, Finanzierung erlassen/sicherstellen, Inserate entfernen, Konto korrigieren, Kennzeichen suchen
* **Garagen-Script in der Config wählbar** (esx\_garage, qb-garages, qbx\_garages, jg-advancedgarages, cd\_garage, qs-advancedgarages, okokGarage, loaf\_garage, nur Framework oder eigene Funktionen) mit Garagennamen je Fahrzeugart, **11 Schlüssel-Systeme**, 7 Tank-Scripts (ox\_fuel, LegacyFuel, cdn-fuel, ps-fuel, qb-fuel, lj-fuel, lc\_fuel)
* **Showroom-Bühne** mit Drehbühne, Motorstart, Licht-Stimmungen, Rarität des Tages und Besucher-NPCs
* **Große Übergabe** auf eigener Bühne: Enthüllung, Rundgang, Schlüsselübergabe, Foto-Moment, überspringbar
* **Preisverhandlung** mit verdecktem Spielraum, Geduld und vier Argumenten; einmaliges Gegenangebot bei Verkäufer-Angeboten
* **Limitierte Serien** mit Seriennummer, Sonderausstattung, Kennzeichen-Muster, Drops mit Countdown, Erinnerung und Vorkaufsrecht
* **Fahrzeugpass** für jedes Auto, **Sammler-Rang** mit 5 Stufen und Tablet-Bereich „Sammlung“
* **Live-Auktionen**: Auktionshaus, Wochenplan, Bieten im Saal oder per Tablet, Anti-Sniping, Einlieferung durch Spieler
* **NPC-Kunden** für Spieler-Autohäuser mit Wünschen aus dem echten Lager, Beifahrer bei der Probefahrt, Verhandlung, Bewertung und **Ruf**, mit Stundengrenzen für die Server-Wirtschaft
* **Autohaus-Events**: Neuwagen-Präsentation, Tag der offenen Tür, Rabattwoche, Extras und Ausfall-Regel
* **Büro-Seite „Heute“** mit Ruf, Umsatz, Live-Feed, Engpässen und Tipp
* 3 Discord-Webhooks, 15 Server-Exports, Deutsch & Englisch, Config, Sprachdateien, Bridges und Installationsdateien offen
* Leerlauf ohne Dauerschleifen (ausgelegt auf **0,00 ms**)

## Voraussetzungen

| Voraussetzung      | Version                     |
| ------------------ | --------------------------- |
| FiveM-Server-Build | ≥ 7290                      |
| OneSync            | erforderlich                |
| Framework          | ESX, QBCore oder Qbox       |
| Datenbank          | MySQL 8 oder MariaDB ≥ 10.6 |

## Abhängigkeiten

* [ox\_lib](https://github.com/overextended/ox_lib)
* [oxmysql](https://github.com/overextended/oxmysql)
* optional [ox\_target](https://github.com/overextended/ox_target) oder qb-target – sonst Hinweistext „\[E] …“
* ein Garagen-Script (in der Config wählen) – optional ein Schlüssel- und ein Tank-Script (werden automatisch erkannt)
* optional [ox\_inventory](https://github.com/overextended/ox_inventory) – Kaufvertrag und Tablet-Item
* optional [lb-phone](https://lbscripts.com) – eigene App „Pepper Dealership“

## Installation

1. Ordner nach `resources/[pepper]/pepper_dealership` kopieren – **nicht umbenennen**.
2. In der `server.cfg` nach Framework, oxmysql und ox\_lib eintragen:

```
ensure pepper_dealership
```

3. Admin-Recht: `add_ace group.admin pepper_dealership.admin allow` (oder eine Gruppe aus `Config.AdminGroups`).
4. Die Tabellen legt die Ressource beim Start selbst an. `install/pepper_dealership.sql` brauchst du nur, wenn der Datenbank-Benutzer keine Tabellen anlegen darf.
5. `config/config.lua` anpassen (Sprache, Garage, Kauf, Finanzierung …), Webhooks in `config/server.lua`.
6. Server starten, im Spiel `/dealeradmin` öffnen, eine **Vorlage** übernehmen (z. B. Premium Deluxe Motorsport) oder ein eigenes Autohaus anlegen und die Punkte im Platzier-Modus setzen.
7. **Garage wählen:** In `config/config.lua` bei `Config.Garage.System` dein Garagen-Script eintragen und unter `Config.Garage.Garages` die Namen deiner Garagen (Auto, Boot, Luftfahrzeug) aus der Config deines Garagen-Scripts. Beim Start nennt die Server-Konsole System, Tabelle und Garagen („Garage: …“) und warnt, wenn das Script nicht läuft oder seine Spalten fehlen.

| `Config.Garage.System` | Garagen-Script                                                |
| ---------------------- | ------------------------------------------------------------- |
| `esx_garage`           | ESX Legacy Garage                                             |
| `qb-garages`           | QBCore Garages                                                |
| `qbx_garages`          | Qbox Garages                                                  |
| `jg-advancedgarages`   | JG Advanced Garages                                           |
| `cd_garage`            | Codesign Garage                                               |
| `qs-advancedgarages`   | Quasar Advanced Garages                                       |
| `okokGarage`           | okokGarage                                                    |
| `loaf_garage`          | Loaf Garage                                                   |
| `framework`            | ohne Garagen-Script (nur Framework-Tabelle)                   |
| `custom`               | eigene Funktionen `Config.Garage.Add/Remove/Transfer/OwnerOf` |
| `auto`                 | erkennt das laufende Script selbst                            |

Optional:

* **Tablet-Item:** `Config.Tablet.Item = 'dealer_tablet'` und in ox\_inventory ein Item mit `server = { export = 'pepper_dealership.dealer_tablet' }` anlegen.
* **lb-phone:** läuft lb-phone, erscheint die App automatisch (`Config.Tablet.LbPhone`).

## Konfiguration

| Datei                    | Inhalt                                                                                                                                                                                  |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `config/config.lua`      | Das Wichtigste: Sprache, Framework, Befehle, Garage, Schlüssel, Showroom, Kauf, Kennzeichen, Probefahrt, Führerschein, Polizei, Finanzierung, Inzahlungnahme, Gebrauchtwagen, Auktionen |
| `config/advanced.lua`    | Feineinstellungen: Händlertypen, Kategorien, Blips, Tasten, Kamera, Abstände, Zeiten, Modelle, Events. Werte aus `config.lua` haben Vorrang                                             |
| `config/ranks.lua`       | Ränge mit Rechten, Lohn, Provision, Rabatt; Spieler-Autohaus (Preisrahmen, Lager, Angebote), Einkauf, Besitz                                                                            |
| `config/progression.lua` | Level-Kurve, XP, Freischaltungen, Ausbau, Rabatt-Obergrenze, Aktionen, Stammkunden, Anfragen, Tablet                                                                                    |
| `config/dealers.lua`     | Vorlagen (Koordinaten im Spiel prüfen)                                                                                                                                                  |
| `config/vehicles.lua`    | Katalog für die Erstbefüllung (danach im Spiel gepflegt)                                                                                                                                |
| `config/colors.lua`      | Lackfarben                                                                                                                                                                              |
| `config/server.lua`      | Webhooks, Admin-ACE, erlaubte Bild-Hosts (wird nie an Clients gesendet)                                                                                                                 |

Autohäuser, Katalog, Sortimente, Lager, Preise und Aktionen liegen in der Datenbank und werden im Spiel gepflegt.

## Rechte

| Wer                       | Recht                                                                                                                           |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Admin                     | ACE `pepper_dealership.admin` oder `Config.AdminGroups` – Admin-Menü, alle Autohäuser, Aktionen auch für NPC-Autohäuser         |
| Mitarbeiter (Job/kaufbar) | Ränge aus `config/ranks.lua`: `sell`, `display`, `used`, `stock`, `prices`, `staff`, `account`, `promo`, `upgrades`, `settings` |
| Job-Autohaus              | Rang aus der Job-Stufe (Zuordnung im Admin-Menü je Autohaus)                                                                    |

## Autohaus anlegen

1. `/dealeradmin` → **Vorlagen** übernehmen oder **Neues Autohaus**: Name, Händlertyp, Betriebsart (NPC/Job/kaufbar), Job oder Kaufpreis.
2. Reiter **Punkte** → **Punkte nacheinander setzen**: Verkäufer, Vorschauplatz, Abholplätze, Probefahrt-Start; optional Ankauf-Zone, Ausstellungs- und Gebrauchtwagenplätze; für Job/kaufbar zusätzlich Büro, Stempeluhr und Anlieferung. Im Platzier-Modus: zielen, **E** setzen, **G** eigene Position bzw. eigenes Fahrzeug, **Mausrad** drehen, **Bild auf/ab** Höhe, **X** überspringen, **Z** zurück, **ESC** beenden.
3. Reiter **Sortiment**: Kategorien wählen, einzelne Modelle ausblenden.
4. **Speichern** – Blip, Verkäufer und Ausstellungsfahrzeuge erscheinen sofort für alle.

## Kaufen, Probefahrt, Finanzierung

Am Verkäufer **Showroom öffnen**: Fahrzeug wählen, Lack und Kennzeichen, Übergabe, Zahlungsart. Mit **Probefahrt** geht es direkt los; `/teststop` beendet sie. Mit **Finanzieren** wählt man Plan und Anzahlung – die Raten gehen automatisch vom Bankkonto ab, die Übersicht gibt es mit `/myfinance`. Für die **Inzahlungnahme** stellt man sein altes Fahrzeug in die Ankauf-Zone und wählt es im Showroom aus.

## Führerschein, Kaution und Polizei

**Führerschein:** Probefahrt und Kauf gehen nur mit passendem Führerschein. In `Config.License.System` stellst du dein Führerschein-Script ein:

| Einstellung            | Für                                                                                                 |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| `'esx_license'`        | ESX mit esx\_license – auch esx\_dmvschool, okokDrivingSchool (ESX) und die meisten ESX-Fahrschulen |
| `'qb'`                 | QBCore/Qbox-Lizenzen (`metadata.licences`) – qb-drivingschool, qb-cityhall, okokDrivingSchool (QB)  |
| `'bcs_licensemanager'` | BCS License Manager                                                                                 |
| `'item'`               | Führerschein als Item im Inventar – bl\_idcard, um-idcard, qbx\_idcard, ox\_inventory-Karten        |
| `'custom'`             | eigene Prüfung über `Config.License.Check`                                                          |
| `'auto'`               | erkennt BCS → esx\_license (ESX) → QBCore/Qbox                                                      |
| `false`                | keine Prüfung                                                                                       |

Welche Klasse ein Fahrzeug braucht (Auto, Motorrad, Lkw, Boot, Luftfahrt), steht in `Config.License.Classes`, wie der Führerschein in deinem Script heißt, in `Config.License.Names`. Boote und Luftfahrt sind ab Werk ohne Prüfung. `TestDrive`/`Purchase` schalten die Prüfung einzeln ab, `OnError` legt fest, was passiert, wenn die Abfrage nicht klappt.

**Kaution:** Bei der Probefahrt wird eine Kaution (`Config.TestDrive.Deposit`, Anteil vom Fahrzeugpreis mit Unter- und Obergrenze) hinterlegt. Bei der Rückgabe kommt sie zurück, abzüglich Schaden am Fahrzeug.

**Diebstahl:** Fährt jemand weiter als `MaxDistance`, bekommt er eine Warnung. Kehrt er nicht innerhalb von `Theft.WarnSeconds` um, gilt das Fahrzeug als gestohlen: Die Kaution bleibt beim Autohaus (Spieler-Autohaus: aufs Konto), die Polizei bekommt eine Meldung mit Position (alle `AlertEverySeconds` neu), und nach `TrackMinutes` holt das Autohaus das Fahrzeug ab. Danach gibt es `Theft.CooldownMinutes` lang keine Probefahrt. Die Meldung läuft über `Config.Police.Dispatch` (Pepper Emergency pepper\_dispatch, ps-dispatch, cd\_dispatch, qs-dispatch, rcore\_dispatch, core\_dispatch) oder, ohne Dispatch-Script, eingebaut als Hinweis mit Blip an alle Spieler mit einem Job aus `Config.Police.Jobs`. Mit `Theft.Enabled = false` endet die Fahrt wie früher einfach an der Grenze.

## Fahrzeug an Spieler verkaufen

Mit `/sellcar` verkauft ein Spieler sein eigenes Fahrzeug direkt an einen anderen Spieler. Beide stehen am Fahrzeug, der Verkäufer wählt Fahrzeug, Käufer (Spieler-ID) und Preis, der Käufer sieht Zustand, Preis und Umschreibungsgebühr und nimmt an oder lehnt ab. Danach steht das Fahrzeug in der Garage des Käufers, die Schlüssel wechseln, der Fahrzeugpass zählt einen Vorbesitzer mehr. Finanzierte, inserierte, gemietete und besetzte Fahrzeuge gehen nicht. Einstellungen in `Config.Handover` (Abstand, Preisgrenzen, Gebühr, Zahlungsarten, Gültigkeit des Angebots).

## Spieler-Autohaus

* **Kaufen** am Verkäufer eines kaufbaren Autohauses (eins je Charakter). Der Inhaber findet das **Büro** im Autohaus.
* **Stempeluhr**: Nur wer eingestempelt ist, verkauft, bekommt Lohn und Provision.
* **Lager**: Neuwagen gibt es nur aus dem Lager. Einkauf zu 70 % (Lieferung) oder günstiger per **Überführung** vom Werk – Wegpunkt, am Anlieferpunkt mit **E** abgeben, Schäden werden vom Konto repariert.
* **Angebot an Kunden**: Im Showroom „Angebot machen“ → Kunde in der Nähe wählen, Rabatt einstellen, senden. Der Kunde sieht das Angebot mit Zahlungsart, Finanzierung, Inzahlungnahme und Gutschein und nimmt an.
* **Selbstbedienung**: Ist niemand im Dienst, kaufen Kunden selbst (im Büro abschaltbar, ebenso Finanzierung und Inzahlungnahme in der Selbstbedienung).

## Level, Ausbau und Aktionen

Spieler-Autohäuser sammeln **XP** für Verkäufe, Überführungen, Käufe nach einer Probefahrt und bezahlte Händler-Finanzierungen. **Level 1–50** (rund 80–100 Stunden Betrieb) schaltet Fahrzeugklassen (z. B. Sportwagen ab 15, Super ab 30) und Funktionen frei: Gutscheine ab 5, Angebot der Woche ab 8, Händler-Finanzierung ab 10, lange Laufzeiten ab 20, „Empfohlen“ im Katalog ab 25. Mit Geld aus dem Geschäftskonto baut der Inhaber Lager, Ausstellung, Personal, Einkaufsrabatt und Lieferzeit aus. Alle Rabatte zusammen sind auf 25 % begrenzt (`Config.Pricing`), und ein Spieler-Autohaus verkauft nie unter dem Einkaufspreis. NPC-Autohäuser haben keine Level-Grenzen.

## Showroom-Bühne und Übergabe

Der freiwillige Punkt **Übergabe-Bühne** im Admin-Menü schaltet die große Übergabe frei. Ohne Punkt läuft die Abholung wie gewohnt. Dauer, Tasten und Abdeckung stehen in `Config.Reveal`, die Bühne in `Config.Showroom`.

## Verhandlung

Im NPC-Autohaus und in der Selbstbedienung können Spieler in bis zu 3 Runden verhandeln. Inhaber schalten das im Büro ab („Verhandeln in Selbstbedienung“). Mitarbeiter verhandeln nicht im eigenen Haus. Werte stehen in `Config.Negotiation`. Der verhandelte Preis gilt 5 Minuten für einen Kauf, die Rabatt-Obergrenze und der Einkaufspreis bleiben Grenzen.

## Limitierte Serien

Admins legen Serien im Admin-Menü unter **Serien** an. Der Preis ist fest. Spieler-Autohäuser verkaufen nur Serien, in denen sie ausdrücklich stehen; der Erlös minus Serien-Einkauf geht aufs Konto, das Lager bleibt unberührt. Ausstattungswerte sind GTA-Nummern. `Config.Series` und `Config.Collectors` regeln Vorkauf, Grenzen, Punkte und Ränge.

## Auktionen

Unter **Auktionshaus** setzen Admins Los-Platz und Auktionator an der eigenen Position, planen Termine und legen Lose an. `Config.Auction.Schedule` legt wöchentliche Termine an, ein Termin ohne Lose fällt aus. Das Geld wird erst beim Zuschlag abgebucht, plus Aufgeld. Ist der Höchstbietende offline oder nicht gedeckt, kommt das nächste Gebot zum Zug und er ist für diese Auktion gesperrt. Mit `Remote = false` wird nur in der Halle geboten.

## NPC-Kunden und Ruf

Kunden kommen nur in Spieler-Autohäuser mit Verkäufer im Dienst und gesetztem Punkt **Kundenbereich**. Bedient wird im Büro, Reiter **Kunden**. Ein Verkauf bringt echtes Geld ins Spiel, deshalb gelten `MaxRevenuePerHour` und `MaxPerPlayerHour` in `config/customers.lua`. Dort stehen auch Kundentypen, Namen und Ruf-Fenster.

## Events

Mitarbeiter mit Recht „Aktionen“ planen Events im Büro, frühestens 15 Minuten und spätestens 3 Tage im Voraus. Ist zum Start niemand im Dienst, fällt das Event aus: Kosten weg, Ruf −0,5. Arten und Extras stehen in `Config.Events`.

## Katalog-Tablet und Handy

`/dealer` (Taste frei belegbar) zeigt allen Spielern alle Autohäuser mit Status (geöffnet, Verkäufer im Dienst, Selbstbedienung, geschlossen), Sortiment, Lager, Angebot der Woche, Wegpunkt, **Probefahrt-Termin** und **Kaufanfrage**, die **Bestenliste** und eigene Käufe. Mitarbeiter sehen zusätzlich die Anfragen ihres Autohauses. Mit lb-phone gibt es dieselbe Ansicht als App.

## Befehle

| Befehl         | Wer   | Zweck                                               |
| -------------- | ----- | --------------------------------------------------- |
| `/dealeradmin` | Admin | Admin-Menü                                          |
| `/dealer`      | alle  | Katalog-Tablet                                      |
| `/myfinance`   | alle  | Meine Finanzierungen & Inserate                     |
| `/teststop`    | alle  | Probefahrt bzw. Überführung beenden                 |
| `/sellcar`     | alle  | Eigenes Fahrzeug an einen Spieler daneben verkaufen |

Alle Befehle lassen sich in der Config umbenennen oder abschalten.

## Webhooks

In `config/server.lua`:

| Webhook    | Inhalt                                                                                                                              |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `admin`    | Autohäuser angelegt/geändert/gelöscht, Besitzer, Katalog, Eingriffe aus der Admin-Übersicht                                         |
| `business` | Käufe, Besitzerwechsel, Halterwechsel zwischen Spielern, gestohlene Probefahrten, Sicherstellungen, Gebrauchtwagen, Level-Aufstiege |
| `security` | Verdachtsfälle                                                                                                                      |

## Exports

**Server**

```lua
exports.pepper_dealership:getDealers()                 -- alle Autohäuser (öffentliche Sicht)
exports.pepper_dealership:getDealer(id)
exports.pepper_dealership:getVehicle(model)            -- Katalog-Eintrag
exports.pepper_dealership:getVehiclePrice(model)
exports.pepper_dealership:getCatalog()
exports.pepper_dealership:isFinanced(plate)            -- für Garagen-/Handelsscripts: nicht verkaufen/übergeben
exports.pepper_dealership:getFinance(plate)
exports.pepper_dealership:isListed(plate)              -- steht auf dem Gebrauchtwagenplatz
exports.pepper_dealership:getRank(src, dealerId)       -- Rang im Spieler-Autohaus oder nil
exports.pepper_dealership:getDuty(src)                 -- Autohaus-ID im Dienst oder nil
exports.pepper_dealership:getBalance(dealerId)
exports.pepper_dealership:addBalance(dealerId, amount, note)
exports.pepper_dealership:getStock(dealerId, model)
exports.pepper_dealership:getLevel(dealerId)
exports.pepper_dealership:addXp(dealerId, amount)
```

**Server-Ereignisse** – für Polizei-Computer, Versicherungen, Logs. Nur serverseitig, mit `AddEventHandler` empfangen (nicht `RegisterNetEvent`):

```lua
AddEventHandler('pepper_dealership:vehiclePurchased', function(e) end)    -- source, identifier, dealerId, model, plate, price, financed, delivery, used
AddEventHandler('pepper_dealership:ownerChanged', function(e) end)        -- plate, model, from, to, source, price, via ('handover' | 'listing' | 'auction')
AddEventHandler('pepper_dealership:vehicleSoldToDealer', function(e) end) -- source, identifier, dealerId, model, plate, price
AddEventHandler('pepper_dealership:vehicleRepossessed', function(e) end)  -- plate, model, identifier, dealerId
AddEventHandler('pepper_dealership:testDriveStolen', function(e) end)     -- source, identifier, dealerId, model, plate, coords
```

## Framework-Anbindung

Die Bridges in `bridge/` (offen) erkennen ESX, QBCore und Qbox automatisch (`Config.Framework = 'auto'`). Geld läuft über das Framework, gekaufte Fahrzeuge über die Garagen-Bridge (`bridge/server/garage.lua`, eigene Funktionen mit `Config.Garage.System = 'custom'`), Schlüssel über `bridge/*/keys.lua`, Tank über `bridge/client/fuel.lua`.

## Troubleshooting

| Problem                                     | Lösung                                                                                                                                            |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Gekauftes Fahrzeug fehlt in der Garage      | `Config.Garage.System` = dein Garagen-Script? Garagennamen in `Config.Garage.Garages` passend? Die Konsole beim Start („Garage: …“) nennt beides  |
| Keine Schlüssel nach dem Kauf               | Schlüssel-Script läuft? Sonst `Config.Keys.Mode = 'custom'` mit eigenen Funktionen                                                                |
| Vorschau-Fahrzeug fehlt im Showroom         | Vorschauplatz im Admin-Menü neu setzen; Modell im Katalog prüfen („Modell prüfen“)                                                                |
| Kunde kann im Spieler-Autohaus nicht kaufen | Ein Verkäufer ist im Dienst (Kauf über Angebot) oder Selbstbedienung ist aus                                                                      |
| Fahrzeugklasse fehlt im Spieler-Autohaus    | Level zu niedrig – siehe Büro → Level oder `config/progression.lua`                                                                               |
| App fehlt in lb-phone                       | `Config.Tablet.LbPhone = true`? Die App meldet sich auch nach einem Neustart von lb-phone wieder an; F8 mit `Config.Debug = true` zeigt den Grund |

## Changelog

**Aktuelle Version: 1.0.0.** Alle Änderungen stehen in `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.
