> 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-taxi.md).

# Pepper Taxi

<figure><img src="https://content.gitbook.com/content/Irecym4R4dkBNbFKaJiy/blobs/yB93YMCu05YERna2TZFw/.gitbook/assets/taxi-cover.png" alt="Pepper Taxi"><figcaption></figcaption></figure>

Nicht einfach nur „NPC abholen, Geld kassieren“: Mit **Pepper Taxi** fahren deine Spieler eine echte Karriere. Sie steigen 50 Level auf, sammeln Reputation, schalten bessere Fahrzeuge bis hin zur Limousine frei und können sogar ihr eigenes Taxi-Unternehmen mit Angestellten und Gehältern führen. Gesteuert wird alles über das Dispatch-Tablet an der Taxi-Zentrale.

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

{% hint style="success" %}
**Pepper Taxi holen:** [pepper-scripts.tebex.store](https://pepper-scripts.tebex.store/)
{% endhint %}

### Funktionen

* Taxi-Karriere mit **50 Leveln**, Titeln, Level-Belohnungen und Freischaltungen
* Reputation von **Bronze bis Legende**, Bewertung mit 1–5 Sternen inklusive Begründung
* **15 Kundentypen** und **12 Missionstypen** – z. B. Flughafen, Hotel, Nacht, Business, VIP, Mehrfachstopp, Limousine
* Echte NPC-Fahrgäste, die winken, einsteigen, mitfahren und aussteigen
* Tägliche und wöchentliche Challenges, Bonus für aktive Dienstzeit
* **Taxi-Unternehmen** – öffentlich oder von Spielern geführt – mit Angestellten, Rängen, Gehältern und Firmenkonto
* Spielerfahrten und `/taxi`-Anfragen (auch als Export für Handy-Apps)
* **Adminpanel** mit Offline-Bearbeitung und Audit-Log
* Dispatch-Tablet, HUD während der Fahrt und optionale Sounds
* Serverseitige Auszahlungen, Schutz vor doppelten Auszahlungen und Teleports
* Deutsch & Englisch, Config und Locales offen

### Auf einen Blick

|                        |                                                                                                               |
| ---------------------- | ------------------------------------------------------------------------------------------------------------- |
| **Version**            | 1.0.1                                                                                                         |
| **Framework**          | ESX Legacy 1.9+                                                                                               |
| **OneSync**            | erforderlich                                                                                                  |
| **Abhängigkeiten**     | [es\_extended](https://github.com/esx-framework/esx_core), [oxmysql](https://github.com/overextended/oxmysql) |
| **Nicht erforderlich** | ox\_lib, ox\_target, ox\_inventory                                                                            |
| **Performance**        | ca. 0,02 ms im Leerlauf / 0,1 ms im Dienst (Richtwert)                                                        |
| **Auslieferung**       | Cfx.re Asset Escrow (`config/`, `locales/`, `sql/` offen)                                                     |

{% hint style="info" %}
**Open-Source-Variante:** Pepper Taxi gibt es auch als **Pepper Taxi (Open Source)** mit dem vollständigen, unverschlüsselten Quellcode – siehe [Shop](https://pepper-scripts.tebex.store/).
{% endhint %}

### Installation

#### Voraussetzungen

| Voraussetzung      | Version                                            |
| ------------------ | -------------------------------------------------- |
| FiveM-Server-Build | 7290+ mit **OneSync** (Legacy oder Infinity)       |
| Framework          | ESX Legacy 1.9+ (`es_extended`)                    |
| Datenbank          | [oxmysql](https://github.com/overextended/oxmysql) |

ox\_lib, ox\_target und ox\_inventory werden **nicht** benötigt.

#### Schritte

{% stepper %}
{% step %}
**Download**

Lade `pepper_taxi` aus dem [Cfx.re Portal → Granted Assets](https://portal.cfx.re/assets/granted-assets) herunter.
{% endstep %}

{% step %}
**Kopieren**

Entpacke die Ressource nach `resources/[pepper]/pepper_taxi`.
{% endstep %}

{% step %}
**Datenbank**

Lass `Config.Database.AutoInstall = true` (Standard) – fehlende Tabellen werden beim ersten Start angelegt. Alternativ importierst du `sql/install.sql` manuell.
{% endstep %}

{% step %}
**server.cfg**

Trage die Ressource nach ihren Abhängigkeiten ein:

```cfg
ensure oxmysql
ensure es_extended
ensure pepper_taxi
```

{% endstep %}

{% step %}
**Admin-Rechte**

Vergib Admin-Zugriff (siehe unten) und passe `config/config.lua` an.
{% endstep %}

{% step %}
**Start**

Starte den Server neu, fahr zur Taxi-Zentrale (gelbes Taxi-Symbol, Downtown Cab Co.) und drück `E`.
{% endstep %}
{% endstepper %}

#### Admin-Rechte

Ein Spieler hat Admin-Zugriff, wenn **eine** dieser Bedingungen zutrifft (wird immer serverseitig geprüft):

* ESX-Gruppe ist in `Config.Admin.Groups` eingetragen (Standard: `superadmin`, `admin`)
* ACE-Berechtigung `pepper_taxi.admin`:

```cfg
add_ace group.admin pepper_taxi.admin allow
```

{% hint style="info" %}
`Config.Admin.RequireReason = true` verlangt für jede Admin-Änderung eine Begründung – alle Änderungen werden im Audit-Log gespeichert.
{% endhint %}

#### Charaktere (Multicharacter)

Karrieredaten werden pro **ESX-Charakter-Identifier** gespeichert. Mit `esx_multicharacter` hat jeder Charakter seine eigene Taxi-Karriere. Bei einem Charakterwechsel wird die Schicht sauber beendet und das Profil gespeichert.

#### Datenbank

`sql/install.sql` kann gefahrlos mehrfach importiert werden. Die Datei enthält Tabellen für Karriere, Statistiken, Challenges, Freischaltungen, Unternehmen, Transaktionen, Admin-Logs und den Missionsverlauf.

### Konfiguration

Alle Einstellungen liegen offen in `config/`. Starte die Ressource nach Änderungen neu.

#### Dateien

| Datei                   | Inhalt                                                                                                                                                               |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `config/config.lua`     | Sprache, Zentrale, Dispatch, AFK, Sicherheit, Vergütung, Schäden, Bewertung, Reputation, Dienstbonus, Fahrzeuge, NPCs, Spielerfahrten, Unternehmen, Admin, Sounds/UI |
| `config/vehicles.lua`   | Fahrzeugklassen und Taxis mit Voraussetzungen                                                                                                                        |
| `config/levels.lua`     | XP-Kurve, Titel, Karrierebonus, Level-Belohnungen                                                                                                                    |
| `config/customers.lua`  | Kundentypen                                                                                                                                                          |
| `config/missions.lua`   | Missionstypen                                                                                                                                                        |
| `config/locations.lua`  | Abhol- und Zielorte (81 auf der ganzen Karte)                                                                                                                        |
| `config/challenges.lua` | Pools für tägliche und wöchentliche Challenges                                                                                                                       |
| `config/server.lua`     | Nur serverseitig: optionaler Discord-Webhook für Logs                                                                                                                |

#### Allgemein

| Option                         | Standard | Beschreibung                                             |
| ------------------------------ | -------- | -------------------------------------------------------- |
| `Config.Locale`                | `'de'`   | Sprache: `'de'` oder `'en'`                              |
| `Config.Debug`                 | `false`  | Ausführliche Konsolenausgaben zur Fehlersuche            |
| `Config.Currency`              | `'$'`    | Währungssymbol in der Oberfläche                         |
| `Config.TimeSource`            | `'game'` | Tageszeit für Kunden/Missionen: `'game'` oder `'server'` |
| `Config.Resets.DailyHour`      | `5`      | Zurücksetzen der täglichen Challenges (Serverzeit)       |
| `Config.Resets.WeeklyDay`      | `1`      | Wochentag für das wöchentliche Zurücksetzen (1 = Montag) |
| `Config.Database.AutoInstall`  | `true`   | Fehlende Tabellen beim Start anlegen                     |
| `Config.Database.SaveInterval` | `300`    | Sekunden zwischen Zwischenspeicherungen                  |

#### Taxi-Zentrale (`Config.Center`)

| Option             | Standard             | Beschreibung                                                          |
| ------------------ | -------------------- | --------------------------------------------------------------------- |
| `Label`            | `'Downtown Cab Co.'` | Name der Zentrale                                                     |
| `Blip`             | aktiviert            | Kartensymbol der Zentrale                                             |
| `Dispatcher`       | aktiviert            | Dispatcher-NPC am Terminal                                            |
| `Terminal`         | Downtown             | Interaktionspunkt (`E` drücken)                                       |
| `SpawnPoints`      | 4 Plätze             | Spawnpunkte für Taxis, werden der Reihe nach auf freien Platz geprüft |
| `MaxStartDistance` | `60.0`               | Schichten können nur so nah an der Zentrale gestartet werden          |

{% hint style="info" %}
Du nutzt eine andere Zentrale (MLO)? Verschiebe einfach alle Koordinaten in `Config.Center` dorthin.
{% endhint %}

#### Tablet & Dispatch

| Option                                   | Standard      | Beschreibung                                          |
| ---------------------------------------- | ------------- | ----------------------------------------------------- |
| `Config.Tablet.DefaultKey`               | `'F6'`        | Taste für das Tablet (Spieler können sie neu belegen) |
| `Config.Tablet.AcceptKey` / `DeclineKey` | `'Y'` / `'N'` | Aufträge ohne Maus annehmen oder ablehnen             |
| `Config.Dispatch.FirstMissionDelay`      | 15–45 s       | Zeit bis zum ersten Auftrag nach Dienstantritt        |
| `Config.Dispatch.MinMissionDelay`        | `60`          | Minimale Sekunden zwischen Aufträgen                  |
| `Config.Dispatch.MaxMissionDelay`        | `300`         | Maximale Sekunden zwischen Aufträgen                  |
| `Config.Dispatch.OfferTimeout`           | `25`          | Sekunden, um ein Angebot anzunehmen                   |
| `Config.Dispatch.MaxIgnoredOffers`       | `3`           | Ignorierte Angebote in Folge, bevor der Dienst endet  |
| `Config.Dispatch.RequireInTaxi`          | `true`        | Aufträge nur, während du in deinem eigenen Taxi sitzt |

#### Inaktivität (`Config.Afk`)

| Option            | Standard | Beschreibung                                       |
| ----------------- | -------- | -------------------------------------------------- |
| `PickupTimeout`   | `900`    | Sekunden, um den Abholpunkt zu erreichen           |
| `BoardingTimeout` | `120`    | Sekunden, bis der Fahrgast eingestiegen sein muss  |
| `IdleTimeout`     | `900`    | Verfügbar ohne Bewegung → automatisch außer Dienst |

#### Vergütung (`Config.Economy`)

| Option                   | Standard | Beschreibung                                                           |
| ------------------------ | -------- | ---------------------------------------------------------------------- |
| `PayAccount`             | `'bank'` | `'bank'` oder `'money'`                                                |
| `GlobalMultiplier`       | `1.0`    | Multipliziert alle Auszahlungen (z. B. `1.5` für ein Event-Wochenende) |
| `MinPayout`              | `25`     | Mindestauszahlung pro erfolgreicher Fahrt (nie negativ)                |
| `MaxRepairDeduction`     | `0.8`    | Reparaturabzug max. 80 % der Auszahlung                                |
| `ChallengeBonusPerDaily` | `0.02`   | +2 % pro heute abgeschlossener täglicher Challenge …                   |
| `ChallengeBonusMax`      | `0.06`   | … bis maximal +6 %                                                     |

Die Vergütung je Missionstyp (Grundbetrag, Preis pro km, XP) legst du in `config/missions.lua` fest.

#### Bewertung & Reputation

| Option                               | Standard | Beschreibung                                                                          |
| ------------------------------------ | -------- | ------------------------------------------------------------------------------------- |
| `Config.Rating.SpeedLimit`           | `36.0`   | m/s (\~130 km/h) – schneller gilt als Rasen                                           |
| `Config.Rating.DamagePerStar`        | `120`    | Schadenspunkte pro verlorenem Stern                                                   |
| `Config.Reputation.Tiers`            | 6 Stufen | Bronze, Silber, Gold, Platin, Diamant, Legende – jeweils mit Vergütungsbonus (0–15 %) |
| `Config.DutyBonus.DutyBonusInterval` | `3600`   | Sekunden **aktiver** Dienstzeit pro XP-Bonus                                          |
| `Config.DutyBonus.DutyBonusXP`       | `120`    | XP pro Intervall                                                                      |

#### Fahrzeuge (`Config.VehicleRules`)

| Option            | Standard | Beschreibung                                                  |
| ----------------- | -------- | ------------------------------------------------------------- |
| `PlatePrefix`     | `'TAXI'` | Präfix für das Kennzeichen                                    |
| `SpawnCooldown`   | `45`     | Sekunden zwischen zwei Spawns eines Spielers                  |
| `DeleteOnDutyEnd` | `true`   | Taxi bei Schichtende entfernen                                |
| `Fuel`            | `100.0`  | Start-Tankfüllung (State Bag `fuel` für gängige Fuel-Scripts) |

Neue Taxis fügst du in `config/vehicles.lua` mit einem eindeutigen `key`, dem Spawn-`model`, einer Klasse (`standard`, `comfort`, `business`, `premium`, `luxury`, `limousine`) und Voraussetzungen (Level, Reputation, Bewertung, Fahrten, Challenge) hinzu. Add-on-Fahrzeuge funktionieren genauso.

{% hint style="warning" %}
Benenne Fahrzeug-`key`s oder Challenge-`id`s nach dem Livegang nicht mehr um – sie werden in der Datenbank gespeichert.
{% endhint %}

#### Spielerfahrten & Anfragen

| Option                           | Standard | Beschreibung                                                        |
| -------------------------------- | -------- | ------------------------------------------------------------------- |
| `Config.PlayerRides.Enabled`     | `true`   | Fahrer können Spieler befördern (keine Auszahlung durch das Script) |
| `Config.PlayerRequests.Enabled`  | `true`   | Spieler können mit `/taxi` ein Taxi rufen                           |
| `Config.PlayerRequests.Cooldown` | `120`    | Sekunden zwischen zwei Anfragen                                     |
| `Config.PlayerRequests.Timeout`  | `300`    | Offene Anfrage verfällt nach … Sekunden                             |

#### Unternehmen (`Config.Company`)

| Option               | Standard    | Beschreibung                                          |
| -------------------- | ----------- | ----------------------------------------------------- |
| `AllowPurchase`      | `true`      | Spieler können das Unternehmen am Terminal übernehmen |
| `PurchasePrice`      | `750000`    | Kaufpreis                                             |
| `OwnerCanDrive`      | `true`      | Der Inhaber darf ebenfalls fahren                     |
| `DriverShareDefault` | `0.35`      | Fahreranteil, wenn der Rang nichts festlegt           |
| `RepairPaidBy`       | `'company'` | `'company'` oder `'driver'`                           |
| `VehicleSpawnCost`   | `150`       | Betriebskosten pro ausgegebenem Taxi                  |
| `SalaryInterval`     | `1800`      | Sekunden aktiver Dienstzeit pro Gehaltszahlung        |
| `MaxEmployees`       | `40`        | Maximale Anzahl Angestellter                          |
| `DefaultRanks`       | 5 Ränge     | Gehalt, Anteil und Rechte je Rang                     |

#### Admin, Sounds & UI

| Option                       | Standard              | Beschreibung                                   |
| ---------------------------- | --------------------- | ---------------------------------------------- |
| `Config.Admin.Groups`        | `superadmin`, `admin` | ESX-Gruppen mit Admin-Zugriff                  |
| `Config.Admin.Ace`           | `'pepper_taxi.admin'` | ACE-Berechtigung als Alternative               |
| `Config.Admin.RequireReason` | `true`                | Begründung bei jeder Änderung erforderlich     |
| `Config.Sounds.Enabled`      | `true`                | Standard für neue Spieler (im Tablet änderbar) |
| `Config.Sounds.Volume`       | `0.45`                | Lautstärke 0.0–1.0                             |
| `Config.UI.HudPosition`      | `'right'`             | HUD während der Fahrt `'right'` oder `'left'`  |

#### Weitere Dateien

* **Level** (`config/levels.lua`): XP-Kurve, Anpassungen einzelner Level, Maximallevel (kann erhöht werden, z. B. auf 75), Titel und Belohnungen.
* **Challenges** (`config/challenges.lua`): tägliche/wöchentliche Pools, Messwerte (Fahrten, Strecke, Einnahmen, Spielerfahrten, Dienstminuten), Filter und Belohnungen.
* **Orte** (`config/locations.lua`): Koordinaten am Straßenrand setzen – der NPC findet automatisch einen sicheren Platz auf dem Gehweg.

### Spielablauf

#### Schicht starten

1. Fahr zur **Taxi-Zentrale** (gelbes Taxi-Symbol, Downtown Cab Co.) und drück am Terminal `E`.
2. Wähle ein freigeschaltetes Taxi – es erscheint auf einem freien Parkplatz.
3. Du bist jetzt **verfügbar**. Du brauchst keinen ESX-Job – jeder Spieler kann fahren.

#### Aufträge annehmen

* Aufträge kommen in zufälligen Abständen (standardmäßig alle 1–5 Minuten) mit Countdown und Sound.
* Mit `Y` annehmen, mit `N` ablehnen – während der Fahrt brauchst du keine Maus.
* Aufträge kommen nur, solange du in deinem eigenen Taxi sitzt und keine Pause machst.

#### Die Fahrt

{% stepper %}
{% step %}
**Abholung**

Fahr zum markierten Abholpunkt. Der Fahrgast winkt, geht zum Taxi und steigt ein.
{% endstep %}

{% step %}
**Fahrt**

Bring den Kunden ans Ziel – manche Missionen haben Zwischenstopps. Das HUD zeigt Route und Status.
{% endstep %}

{% step %}
**Ankunft**

Halte am Ziel. Der Fahrgast steigt aus und du erhältst dein Ergebnis: Sterne, Vergütung, XP und Reputation.
{% endstep %}
{% endstepper %}

#### Missionstypen

Stadt, Flughafen, Hotel, Nacht, Langstrecke, abgelegene Orte, Business, Mehrfachstopp, Event, VIP, Chauffeur und Limousine. Welche Missionen du bekommst, hängt von Level, Reputation, Bewertung, Fahrzeugklasse, Tageszeit und Position ab.

#### Bewertung (1–5 Sterne)

Wird serverseitig aus Schäden, Kollisionen, Geschwindigkeit, Dauer und Wartezeit berechnet – die Begründung siehst du in der Oberfläche. Gute Bewertungen steigern deine Reputation und deine XP.

#### Karriere & Reputation

* **50 Level** mit Titeln, Level-Belohnungen und Fahrzeug-Freischaltungen bis zur Limousine
* **Reputation** Bronze → Silber → Gold → Platin → Diamant → Legende (unabhängig vom Level, mit Vergütungsbonus)
* **Challenges** täglich und wöchentlich mit Belohnungen
* **Dienstbonus:** zusätzliche XP pro Stunde *aktiver* Dienstzeit (fahren, nicht AFK)

#### Spielerfahrten & Taxi-Anfragen

* Spieler rufen mit `/taxi [nachricht]` ein Taxi – alle Fahrer im Dienst werden benachrichtigt und können mit `Y` oder über das Tablet annehmen.
* Für Fahrten mit echten Spielern schaltest du im Tablet auf **„Spieler als Fahrgast“** um: keine NPC-Aufträge und keine Auszahlung durch das Script während der Fahrt.

#### Taxi-Unternehmen

| Modus                     | Beschreibung                                                                                                                                                                                                  |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Öffentlich** (Standard) | Das Unternehmen gehört niemandem – alle fahren und erhalten die volle Vergütung.                                                                                                                              |
| **Spielerfirma**          | Sobald ein Spieler das Unternehmen besitzt, fahren nur noch der Inhaber und die Angestellten. Fahrpreise gehen an die Firma, Fahrer erhalten den Anteil ihres Rangs, Gehälter werden vom Firmenkonto bezahlt. |

Das Unternehmen kann im Tablet übernommen werden („Unternehmen übernehmen“) oder von einem Admin zugewiesen werden. Der Inhaber kann es aufgeben, oder ein Admin macht es wieder öffentlich.

#### Adminpanel

Tablet → **Admin**: Spieler suchen (auch offline), XP, Level, Reputation, Statistiken, Challenges und Freischaltungen ändern, das Unternehmen verwalten – jede Änderung wird im Audit-Log festgehalten.

### Befehle & Exports

#### Befehle & Tasten

| Befehl         | Taste | Funktion                                                 |
| -------------- | ----- | -------------------------------------------------------- |
| `/taxitablet`  | `F6`  | Tablet öffnen (im Dienst überall, sonst an der Zentrale) |
| `/taxiaccept`  | `Y`   | Auftrag / neueste Spieleranfrage annehmen                |
| `/taxidecline` | `N`   | Auftrag ablehnen                                         |
| `/taxi [text]` | –     | Taxi rufen (alle Fahrer im Dienst werden benachrichtigt) |
| `/taxicancel`  | –     | Eigene Anfrage abbrechen                                 |

{% hint style="info" %}
Spieler können die Tasten in den GTA-Einstellungen → Tastenbelegung → FiveM ändern.
{% endhint %}

#### Exports (Server)

| Export                                      | Rückgabe / Beschreibung                                                                         |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `GetTaxiPlayerData(source)`                 | Karriere und Statistiken (Level, XP, Reputation, Bewertung …)                                   |
| `IsTaxiDriverOnDuty(source)`                | `boolean`                                                                                       |
| `GetTaxiDriverStatus(source)`               | Status, z. B. `'OFF_DUTY'`, `'AVAILABLE'`, `'PLAYER_PASSENGER'`, `'BREAK'`                      |
| `SetPlayerPassengerActive(source, active)`  | „Spieler als Fahrgast“ ein-/ausschalten – gibt `ok, reason` zurück                              |
| `CreatePlayerTaxiRequest(source, message)`  | Taxi-Anfrage erstellen (z. B. aus einer Handy-App) – gibt `requestId` oder `nil, reason` zurück |
| `CancelPlayerTaxiRequest(source)`           | Anfrage des Spielers abbrechen                                                                  |
| `GetOpenTaxiRequests()`                     | Liste der offenen Anfragen                                                                      |
| `GetOnDutyDrivers()`                        | Liste der Fahrer im Dienst                                                                      |
| `GetTaxiCompany()`                          | Firmeninfos (Label, Modus, Kontostand, Angestellte, Inhaber)                                    |
| `IsTaxiCompanyEmployee(sourceOrIdentifier)` | `boolean, grade`                                                                                |

Beispiel:

```lua
local onDuty = exports.pepper_taxi:IsTaxiDriverOnDuty(source)
```

{% hint style="info" %}
Es gibt bewusst **keinen** Export, mit dem andere Ressourcen Geld, XP oder Reputation erzeugen können.
{% endhint %}

#### Events (Server)

Für Handy-Apps und andere Server-Ressourcen:

| Event                         | Parameter                                                  |
| ----------------------------- | ---------------------------------------------------------- |
| `pepper_taxi:requestCreated`  | `request`                                                  |
| `pepper_taxi:requestAccepted` | `request`, `driverSource`                                  |
| `pepper_taxi:requestClosed`   | `requestId`, `reason` (`finished`, `cancelled`, `expired`) |

### FAQ

| Problem                        | Lösung                                                                                                                                  |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| „Datenbank nicht erreichbar“   | Läuft oxmysql? Ist `mysql_connection_string` korrekt? Prüfe die Konsole beim Start.                                                     |
| Tabellen fehlen                | `sql/install.sql` importieren oder `Config.Database.AutoInstall = true` setzen.                                                         |
| Keine Aufträge                 | Sitz in deinem eigenen Taxi (`Config.Dispatch.RequireInTaxi`), keine Pause, Status „Verfügbar“. Die Wartezeit beträgt bis zu 5 Minuten. |
| „Alle Parkplätze belegt“       | Entferne Fahrzeuge an den Spawnpunkten oder ergänze weitere `Config.Center.SpawnPoints`.                                                |
| NPC steigt nicht ein           | Nach `Config.Passenger.BoardTimeout` wird der NPC automatisch hineingesetzt. Es werden freie Rücksitze benötigt.                        |
| Fahrgast erscheint nicht       | Prüfe das Modell in `config/customers.lua`. Aktiviere `Config.Debug = true` und schau in die F8-Konsole.                                |
| Auszahlung fehlt               | Die Fahrt war vermutlich unplausibel (Teleport, zu kurz) – siehe Serverkonsole.                                                         |
| Admin-Bereich fehlt            | ESX-Gruppe in `Config.Admin.Groups` oder ACE `pepper_taxi.admin`. Öffne das Tablet erneut.                                              |
| Ein Ort ist schlecht platziert | Passe die Koordinaten in `config/locations.lua` an (Straßenrand) und starte die Ressource neu.                                          |

<details>

<summary>Brauchen Spieler einen ESX-Job?</summary>

Nein. Jeder kann an der Zentrale in den Dienst gehen. Angestellte und Ränge einer Spielerfirma werden direkt im Script verwaltet.

</details>

<details>

<summary>Hat jeder Charakter seine eigene Karriere?</summary>

Ja. Die Daten werden pro ESX-Charakter-Identifier gespeichert, daher funktioniert `esx_multicharacter` ohne weitere Anpassungen.

</details>

<details>

<summary>Kann ich eine Handy-App anbinden?</summary>

Ja – nutze den Export `CreatePlayerTaxiRequest` und die Anfrage-Events, siehe **Befehle & Exports**.

</details>

<details>

<summary>Gibt es einen Konflikt mit F6 bei Pepper Bus oder Pepper Trucking?</summary>

Nein – Bus nutzt F7 und Trucking F9. Außerdem kann jeder Spieler die Taste neu belegen.

</details>

### Changelog

#### 1.0.1 – 2026-09-26

**Behoben**

* Firmenkonto: Absturz bei Einzahlungen, Auszahlungen, Gehältern und Fahrteinnahmen einer Spielerfirma
* Challenge-Popup: Texte und Belohnungen wurden verschoben angezeigt

#### 1.0.0 – 2026-09-26

**Erstveröffentlichung**

* Taxi-Karriere mit 50 Leveln, Reputation, 15 Kundentypen und 12 Missionstypen inkl. Limousinen-Karriere
* Bewertung mit 1–5 Sternen, tägliche und wöchentliche Challenges, Dienstbonus
* Spielerfahrten und `/taxi`-Anfragen
* Taxi-Unternehmen (öffentlich oder von Spielern geführt) mit Angestellten, Rängen, Gehältern und Firmenkonto
* Adminpanel mit Offline-Bearbeitung und Audit-Log
* Dispatch-Tablet, HUD, Sounds; Deutsch und Englisch
