> 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-farmer/installation.md).

# Installation

Diese Anleitung führt dich **Schritt für Schritt** durch die Installation. Du brauchst keine Programmierkenntnisse – du kopierst nur Ordner, fügst Text in Dateien ein und änderst ein paar Zeilen. Nimm dir etwa **30–45 Minuten** Zeit und arbeite die Schritte **in der angegebenen Reihenfolge** ab.

Nach jedem Schritt gibt es einen **Kontrollpunkt**. Geh erst weiter, wenn dort alles stimmt – so findest du Fehler sofort und nicht erst am Ende.

{% hint style="info" %}
**Ein paar Begriffe, die in dieser Anleitung vorkommen:**

* **Ressource** – ein Script-Ordner in deinem Server, z. B. `pepper_farmer` oder `ox_inventory`.
* **`resources`-Ordner** – der Ordner deines Servers, in dem alle Ressourcen liegen.
* **`server.cfg`** – die Einstellungsdatei deines Servers. Dort steht, welche Ressourcen in welcher Reihenfolge starten.
* **`ensure`** – der Befehl in der `server.cfg`, der eine Ressource startet (`ensure pepper_farmer`).
* **Serverkonsole** – das schwarze Fenster deines Servers bzw. in txAdmin die Seite **Live Console**. Dort stehen Meldungen und Fehler.
* **F8-Konsole** – die Konsole im Spiel (Taste `F8`). Dort stehen Fehler, die nur bei dir im Spiel auftreten.
* **Item** – ein Gegenstand im Inventar, z. B. Tomate oder Gießkanne.
  {% endhint %}

{% hint style="warning" %}
**Dateien immer mit einem Text-Editor öffnen**, zum Beispiel [Visual Studio Code](https://code.visualstudio.com/) oder [Notepad++](https://notepad-plus-plus.org/). **Niemals mit Word, WordPad oder LibreOffice** – diese Programme verändern Anführungszeichen und Zeilenumbrüche, und die Datei funktioniert danach nicht mehr.
{% endhint %}

## Schritt 1 – Prüfen, was du schon hast

Pepper Farmer braucht einige andere Ressourcen, die **vorher** auf deinem Server laufen müssen. Geh die Liste durch und hake ab, was du schon hast.

### Checkliste

| Was                                                                                           | Wozu                                                                   | Pflicht?         |
| --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------- |
| FiveM-Server (FXServer) **Build 7290 oder neuer**                                             | ältere Server können das Script nicht starten                          | ja               |
| **OneSync** eingeschaltet                                                                     | Fahrzeuge, Tiere und Positionen werden über OneSync abgeglichen        | ja               |
| **MySQL oder MariaDB** (Datenbank) + **oxmysql**                                              | speichert Level, Felder, Tiere, Maschinen …                            | ja               |
| **ox\_lib**                                                                                   | Menüs, Hinweise, Tastenbelegung                                        | ja               |
| **ox\_inventory**                                                                             | Inventar, Items, Hoflager                                              | ja               |
| **ox\_target**                                                                                | „Anschauen und Option wählen“ an Pflanzen, Tieren, Maschinen, Händlern | ja               |
| **ESX Legacy** (`es_extended`) **oder** **QBCore** (`qb-core`) **oder** **Qbox** (`qbx_core`) | Charaktere und Geld                                                    | genau eins davon |

### So prüfst du, ob eine Ressource schon da ist

Für jede Ressource aus der Liste (`oxmysql`, `ox_lib`, `ox_inventory`, `ox_target` und dein Framework) prüfst du drei Dinge:

1. **Gibt es den Ordner?** Öffne deinen `resources`-Ordner und such nach einem Ordner mit genau diesem Namen. Er kann auch in einem Unterordner mit eckigen Klammern liegen, z. B. `resources/[ox]/ox_lib` oder `resources/[standalone]/oxmysql`.
2. **Steht er in der `server.cfg`?** Öffne die `server.cfg` und such nach einer Zeile wie `ensure ox_lib`. (Steht dort nur `ensure [ox]`, werden alle Ressourcen im Ordner `[ox]` gestartet – das zählt auch.)
3. **Startet er wirklich?** Starte den Server und such in der Serverkonsole nach der Zeile `Started resource ox_lib`. In txAdmin siehst du alle laufenden Ressourcen auch unter **Resources**.

{% hint style="success" %}
**Kontrollpunkt:** Für jede Ressource aus der Checkliste findest du beim Serverstart die Zeile `Started resource <name>` in der Konsole.
{% endhint %}

### Server-Build und OneSync prüfen

* **Build:** Beim Start zeigt die Serverkonsole ganz oben die Version, z. B. `FXServer-master v1.0.0.XXXX`. Die Zahl `XXXX` muss **7290 oder größer** sein. Du kannst auch in die Serverkonsole `version` eingeben.
* **OneSync:** In **txAdmin** unter **Settings → FXServer** (Einstellung *OneSync*) auf **On** stellen. Startest du den Server ohne txAdmin, schreib diese Zeile ganz oben in die `server.cfg`:

  ```cfg
  set onesync on
  ```

### Welches Framework habe ich?

Schau in deinen `resources`-Ordner (auch in die Unterordner mit eckigen Klammern):

| Du findest den Ordner … | Dein Framework ist … | Später in der Config eintragen |
| ----------------------- | -------------------- | ------------------------------ |
| `es_extended`           | ESX Legacy           | `'esx'`                        |
| `qb-core`               | QBCore               | `'qbcore'`                     |
| `qbx_core`              | Qbox                 | `'qbox'`                       |

{% hint style="warning" %}
**QBCore-Server:** Viele QBCore-Server nutzen `qb-inventory` und `qb-target`. Pepper Farmer braucht aber **ox\_inventory** und **ox\_target**. Stelle deinen Server zuerst auf ox\_inventory um (Anleitung in der [ox\_inventory-Dokumentation](https://github.com/CommunityOx/ox_inventory)), bevor du Pepper Farmer installierst. Qbox nutzt ox\_inventory bereits von Haus aus.
{% endhint %}

### Fehlende Ressourcen besorgen

Die ox-Ressourcen werden von **CommunityOx** weitergeführt. Lade immer die **fertige Release-Datei** herunter:

| Ressource     | Download (Releases-Seite)                                                                             | Ordnername im `resources`-Ordner |
| ------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- |
| oxmysql       | [github.com/CommunityOx/oxmysql/releases](https://github.com/CommunityOx/oxmysql/releases)            | `oxmysql`                        |
| ox\_lib       | [github.com/CommunityOx/ox\_lib/releases](https://github.com/CommunityOx/ox_lib/releases)             | `ox_lib`                         |
| ox\_inventory | [github.com/CommunityOx/ox\_inventory/releases](https://github.com/CommunityOx/ox_inventory/releases) | `ox_inventory`                   |
| ox\_target    | [github.com/CommunityOx/ox\_target/releases](https://github.com/CommunityOx/ox_target/releases)       | `ox_target`                      |

So geht's:

1. Öffne die Releases-Seite und nimm den obersten Eintrag (**Latest**).
2. Klappe **Assets** auf und lade die Datei mit dem Namen der Ressource herunter, z. B. `ox_lib.zip`.
3. Entpacke sie in deinen `resources`-Ordner.

{% hint style="danger" %}
**Nicht „Source code (zip)“ herunterladen!** Das ist der unfertige Quellcode – bei ox\_lib und ox\_inventory fehlt darin die gebaute Oberfläche, und die Ressource funktioniert nicht.

**Ordnernamen exakt so lassen:** `ox_lib`, nicht `ox_lib-main`, nicht `ox_lib-3.x` und nicht `ox_lib (1)`.
{% endhint %}

Die Frameworks selbst bekommst du hier: [ESX Legacy](https://github.com/esx-framework/esx_core), [QBCore](https://github.com/qbcore-framework/qb-core), [Qbox](https://github.com/Qbox-project/qbx_core). Wie du ein Framework neu einrichtest, steht in deren eigener Dokumentation.

## Schritt 2 – Pepper Farmer herunterladen

1. Öffne das [Cfx.re-Portal → Assets → Granted Assets](https://portal.cfx.re/assets/granted-assets) und melde dich mit dem **Cfx.re-Konto** an, mit dem du gekauft hast.
2. Such **pepper\_farmer** und klicke auf **Download**. Du bekommst eine ZIP-Datei.

{% hint style="warning" %}
**Asset Escrow – wichtig:** Pepper Farmer ist teilweise verschlüsselt. Es startet nur auf einem Server, dessen **Lizenzschlüssel** (`sv_licenseKey` in der `server.cfg`) zum **selben Cfx.re-Konto** gehört, mit dem du das Script gekauft hast. Nutze immer die Datei aus dem Portal und verändere keine verschlüsselten Dateien. Mehr dazu: [Asset Escrow](file:///getting-started/asset-escrow.md).
{% endhint %}

{% hint style="success" %}
**Kontrollpunkt:** Du hast eine ZIP-Datei mit Pepper Farmer auf deinem PC.
{% endhint %}

## Schritt 3 – Entpacken und an die richtige Stelle kopieren

1. Erstelle in deinem `resources`-Ordner einen Ordner mit dem Namen `[pepper]` (mit den eckigen Klammern). Hast du schon andere Pepper-Scripts, gibt es ihn bereits.
2. Entpacke die ZIP-Datei und kopiere den Ordner `pepper_farmer` nach `resources/[pepper]/`.

**So sieht es richtig aus:**

```
resources/
└── [pepper]/
    └── pepper_farmer/
        ├── bridge/
        ├── client/
        ├── config/
        │   ├── config.lua
        │   └── …
        ├── html/
        ├── install/
        │   ├── ox_containers.lua
        │   ├── ox_items_de.lua
        │   ├── ox_items_en.lua
        │   └── pepper_farmer.sql
        ├── locales/
        ├── modules/
        ├── server/
        ├── shared/
        └── fxmanifest.lua
```

**So sieht es falsch aus:**

```
resources/[pepper]/pepper_farmer/pepper_farmer/fxmanifest.lua   ← doppelter Ordner
resources/[pepper]/pepper_farmer-1.0.0/fxmanifest.lua           ← Ordner umbenannt
resources/[pepper]/Pepper Farmer/fxmanifest.lua                 ← Ordner umbenannt
```

{% hint style="danger" %}
**Den Ordnernamen `pepper_farmer` niemals ändern.** Die Oberfläche (das Tablet) nutzt den Namen der Ressource – mit einem anderen Namen öffnet sich das Tablet nicht richtig.
{% endhint %}

{% hint style="success" %}
**Kontrollpunkt:** Die Datei `fxmanifest.lua` liegt **direkt** in `resources/[pepper]/pepper_farmer/` – nicht eine Ebene tiefer.
{% endhint %}

## Schritt 4 – Framework in der Config einstellen

1. Öffne die Datei `resources/[pepper]/pepper_farmer/config/config.lua` mit deinem Text-Editor.
2. Such die Zeile mit `Config.Framework` (ziemlich weit oben):

   ```lua
   Config.Framework = 'esx'
   ```
3. Trag dein Framework ein (siehe Tabelle in Schritt 1):

{% tabs %}
{% tab title="ESX Legacy" %}

```lua
Config.Framework = 'esx'
```

Das ist schon der Standard – du musst nichts ändern.
{% endtab %}

{% tab title="QBCore" %}

```lua
Config.Framework = 'qbcore'
```

{% endtab %}

{% tab title="Qbox" %}

```lua
Config.Framework = 'qbox'
```

{% endtab %}
{% endtabs %}

4. Stell direkt darüber die Sprache ein – `'de'` für Deutsch, `'en'` für Englisch:

   ```lua
   Config.Locale = 'de'
   ```
5. Speichere die Datei.

{% hint style="info" %}
Du kannst auch `Config.Framework = 'auto'` eintragen. Dann sucht das Script selbst in dieser Reihenfolge nach `qbx_core`, `es_extended` und `qb-core`. Eine feste Einstellung ist aber eindeutiger und wird empfohlen.
{% endhint %}

{% hint style="warning" %}
Achte darauf, dass die **Anführungszeichen** stehen bleiben (`'qbcore'`, nicht `qbcore`) und dass am Zeilenende **kein Komma** steht.
{% endhint %}

**Wenn die Einstellung nicht passt**, zeigt die Serverkonsole beim Start eine rote Warnung zwischen zwei Linien aus `=`-Zeichen, zum Beispiel:

```
[pepper_farmer] Config.Framework = 'esx', aber die Ressource 'es_extended' läuft nicht (Status: missing).
[pepper_farmer] Prüfe server.cfg: 'ensure es_extended' muss VOR 'ensure pepper_farmer' stehen – oder Config.Framework anpassen ('auto').
[pepper_farmer] Ohne Framework fällt Pepper Farmer auf standalone zurück (Identität = Lizenz, Geld = Item) – Spielerdaten passen dann NICHT!
```

Dann ist entweder das falsche Framework eingetragen oder dein Framework startet **nach** Pepper Farmer (siehe Schritt 9).

{% hint style="success" %}
**Kontrollpunkt:** In `config/config.lua` steht dein Framework (`'esx'`, `'qbcore'` oder `'qbox'`) in Anführungszeichen, die Datei ist gespeichert.
{% endhint %}

## Schritt 5 – Items in ox\_inventory eintragen

Pepper Farmer bringt **265 Items** mit (Saatgut, Ernte, Werkzeuge, Futter, Produkte …). ox\_inventory kennt diese Items erst, wenn du sie in seine Item-Liste einträgst. **Ohne diesen Schritt funktioniert das Script nicht.**

Du brauchst zwei Dateien:

| Datei                                                                                                 | Was du damit machst              |
| ----------------------------------------------------------------------------------------------------- | -------------------------------- |
| `pepper_farmer/install/ox_items_de.lua` (deutsche Namen) **oder** `ox_items_en.lua` (englische Namen) | du **kopierst** den Inhalt       |
| `ox_inventory/data/items.lua`                                                                         | du **fügst** den Inhalt dort ein |

Nimm die Sprache, die du auch in `Config.Locale` eingestellt hast.

### So geht's

1. Mach zuerst eine **Sicherheitskopie** von `ox_inventory/data/items.lua` (z. B. als `items.lua.bak` daneben kopieren). Wenn etwas schiefgeht, kannst du sie zurückkopieren.
2. Öffne `pepper_farmer/install/ox_items_de.lua` im Editor, markiere **alles** (`Strg` + `A`) und kopiere es (`Strg` + `C`).
3. Öffne `ox_inventory/data/items.lua` und scrolle **ganz nach unten** (`Strg` + `Ende`).
4. Die Datei endet mit einer einzelnen schließenden geschweiften Klammer `}` in der letzten Zeile. Setze den Cursor in die **leere Zeile direkt über** dieser letzten `}` (notfalls eine leere Zeile mit `Enter` anlegen).
5. Füge den kopierten Text dort ein (`Strg` + `V`).
6. Speichere die Datei.

### Vorher / nachher

**Vorher** – so ungefähr sieht das Ende von `ox_inventory/data/items.lua` aus (deine letzten Items können anders heißen):

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	},
}
```

**Nachher** – der Pepper-Farmer-Block steht **zwischen** dem letzten Item und der letzten `}`:

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	},

-- Pepper Farmer – ox_inventory-Items (de), 265 Einträge
-- …
    ['alpaca_blanket'] = {
        label = 'Alpakadecke',
        weight = 1200,
        stack = true,
        close = true,
        description = 'Luxuriöse Decke aus Alpakagarn.',
    },

    -- … (alle weiteren Pepper-Farmer-Items) …

    ['zucchini'] = {
        label = 'Zucchini',
        weight = 300,
        stack = true,
        close = true,
        description = 'Frische Ernte. Die Qualität bestimmt den Preis.',
    },
}
```

Die allerletzte `}` gehört zu ox\_inventory und muss **stehen bleiben**.

### Die drei häufigsten Fehler

{% hint style="danger" %}
**1. Kein zweites `return {` einfügen.** `items.lua` beginnt schon mit `return {`. Die Pepper-Datei enthält absichtlich nur die Item-Einträge. Steht nach dem Einfügen irgendwo mitten in der Datei ein zweites `return {`, startet ox\_inventory nicht mehr.

**2. Komma am letzten alten Eintrag prüfen.** Das Item direkt **über** dem eingefügten Block muss mit `},` enden (mit Komma). Steht dort nur `}` ohne Komma, ergänze das Komma.

**3. Nicht hinter die letzte `}` einfügen.** Alles, was nach der allerletzten `}` steht, führt zu einem Fehler.
{% endhint %}

**So sieht es falsch aus:**

```lua
	['scrapmetal'] = {
		label = 'Scrap Metal',
		weight = 80,
	}                          ← Komma fehlt
return {                       ← zweites return { – NICHT einfügen
    ['alpaca_blanket'] = {
```

### Doppelte Items entfernen

Manche Server haben Items wie `bread` (Brot) oder `fabric` (Stoff) schon. Gibt es einen Namen doppelt, gilt der untere Eintrag – das ist meistens der von Pepper Farmer. Um Verwirrung zu vermeiden, **lösch den alten Eintrag** weiter oben in `items.lua`.

So findest du doppelte Einträge: Drück in `items.lua` `Strg` + `F` und such nach `['bread']` bzw. `['fabric']`. Findest du **zwei** Treffer, lösch den oberen Eintrag komplett – von `['bread'] = {` bis einschließlich der passenden `},`.

{% hint style="warning" %}
Andere Scripts, die `bread` oder `fabric` benutzen, funktionieren danach weiter – der Name bleibt ja gleich, nur Anzeige-Name und Gewicht kommen dann von Pepper Farmer.
{% endhint %}

{% hint style="success" %}
**Kontrollpunkt:** Nach dem nächsten Serverstart erscheint `Started resource ox_inventory` in der Konsole und **keine** rote Fehlermeldung von ox\_inventory. Andere Ressourcen melden **nicht** `No such export RegisterStash in resource ox_inventory` (das bedeutet: ox\_inventory ist wegen eines Tippfehlers in `items.lua` nicht gestartet – dann Schritt 5 noch einmal prüfen oder die Sicherheitskopie zurückspielen).
{% endhint %}

## Schritt 6 – Erntekorb als Container eintragen

Der **Erntekorb** ist ein Behälter, in den du Ernte legen kannst (12 Plätze, bis 30 kg). Damit ox\_inventory ihn als Behälter kennt, trägst du ihn in eine zweite Datei ein.

| Datei                                       | Was du damit machst              |
| ------------------------------------------- | -------------------------------- |
| `pepper_farmer/install/ox_containers.lua`   | du **kopierst** den Inhalt       |
| `ox_inventory/modules/items/containers.lua` | du **fügst** den Inhalt dort ein |

1. Mach eine Sicherheitskopie von `ox_inventory/modules/items/containers.lua`.
2. Öffne `pepper_farmer/install/ox_containers.lua`, markiere alles und kopiere es.
3. Öffne `ox_inventory/modules/items/containers.lua` und scrolle ganz nach unten. Die letzte Zeile lautet:

   ```lua
   return containers
   ```
4. Setze den Cursor in die leere Zeile **direkt über** `return containers` und füge den Text ein.
5. Speichere die Datei.

**Vorher:**

```lua
setContainerProperties('pizzabox', {
	slots = 5,
	maxWeight = 1000,
	whitelist = { 'pizza' }
})

return containers
```

**Nachher:**

```lua
setContainerProperties('pizzabox', {
	slots = 5,
	maxWeight = 1000,
	whitelist = { 'pizza' }
})

-- Pepper Farmer – Container für ox_inventory/modules/items/containers.lua
-- …
setContainerProperties('harvest_basket', {
    slots = 12,
    maxWeight = 30000,
    whitelist = {
        'apple', 'asparagus', 'barley', …
    },
})

return containers
```

{% hint style="danger" %}
`return containers` muss die **allerletzte Zeile** der Datei bleiben. Alles, was darunter steht, wird ignoriert oder verhindert den Start von ox\_inventory.
{% endhint %}

{% hint style="success" %}
**Kontrollpunkt:** Die letzte Zeile von `containers.lua` ist `return containers`, direkt darüber steht der Block `setContainerProperties('harvest_basket', { … })`.
{% endhint %}

## Schritt 7 – Item-Bilder (optional)

Pepper Farmer liefert **keine Item-Bilder** mit. Ohne Bilder funktioniert alles, im Inventar siehst du dann nur ein leeres Feld mit dem Namen. Möchtest du Bilder, lege PNG-Dateien mit dem **Item-Namen** ab:

```
ox_inventory/web/images/tomato.png
ox_inventory/web/images/seed_wheat.png
ox_inventory/web/images/harvest_basket.png
```

Den Item-Namen findest du in `install/ox_items_de.lua` in den eckigen Klammern, z. B. `['tomato']` → `tomato.png`.

## Schritt 8 – Datenbank

**Normalerweise musst du hier nichts tun.** Pepper Farmer legt alle Tabellen (29 Stück, alle beginnen mit `farmer_`) beim ersten Start **automatisch** an.

Nur wenn dein Datenbank-Benutzer **keine Tabellen anlegen darf** (bei manchen Hostern der Fall), importierst du die Tabellen vorher von Hand aus der Datei `pepper_farmer/install/pepper_farmer.sql`:

{% tabs %}
{% tab title="HeidiSQL" %}
{% stepper %}
{% step %}

### Verbinden

Öffne HeidiSQL und verbinde dich mit deiner Datenbank.
{% endstep %}

{% step %}

### Datenbank auswählen

Klicke links auf die Datenbank deines Servers (die gleiche, die in deiner `server.cfg` bei `mysql_connection_string` steht).
{% endstep %}

{% step %}

### SQL-Datei laden

Menü **Datei → SQL-Datei laden …** und `pepper_farmer/install/pepper_farmer.sql` auswählen.
{% endstep %}

{% step %}

### Ausführen

Klicke auf den blauen **Ausführen**-Pfeil (oder drücke `F9`).
{% endstep %}

{% step %}

### Prüfen

Drücke `F5` (Aktualisieren). Links erscheinen die Tabellen `farmer_meta`, `farmer_players`, `farmer_farms` usw.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="phpMyAdmin" %}
{% stepper %}
{% step %}

### Datenbank auswählen

Öffne phpMyAdmin und klicke links auf die Datenbank deines Servers.
{% endstep %}

{% step %}

### Importieren

Klicke oben auf den Reiter **Importieren**.
{% endstep %}

{% step %}

### Datei auswählen

Wähle bei **Datei zum Importieren** die Datei `pepper_farmer/install/pepper_farmer.sql`.
{% endstep %}

{% step %}

### Starten

Scrolle nach unten und klicke auf **Importieren** (bzw. **OK**).
{% endstep %}

{% step %}

### Prüfen

Links erscheinen die Tabellen `farmer_meta`, `farmer_players`, `farmer_farms` usw.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Die SQL-Datei kann ohne Risiko mehrfach importiert werden – vorhandene Tabellen und Daten bleiben erhalten (`CREATE TABLE IF NOT EXISTS`).
{% endhint %}

## Schritt 9 – server.cfg eintragen

Jetzt sagst du dem Server, dass er Pepper Farmer starten soll. Die **Reihenfolge ist wichtig**: Eine Ressource kann nur starten, wenn alles, was sie braucht, **vorher** gestartet wurde. Deshalb steht `pepper_farmer` **ganz unten**, unter allen Abhängigkeiten.

1. Öffne deine `server.cfg` (in txAdmin: **Settings → CFG Editor**).
2. Such die Zeilen, mit denen dein Framework und die ox-Ressourcen gestartet werden.
3. Füge **darunter** die Zeile `ensure pepper_farmer` ein.

{% tabs %}
{% tab title="ESX Legacy" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure ox_inventory
ensure ox_target

# … deine anderen Ressourcen …

ensure pepper_farmer
```

{% endtab %}

{% tab title="QBCore" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure qb-core
ensure ox_inventory
ensure ox_target

# … deine anderen Ressourcen …

ensure pepper_farmer
```

{% endtab %}

{% tab title="Qbox" %}

```cfg
ensure oxmysql
ensure ox_lib
ensure qbx_core
ensure ox_inventory
ensure ox_target

# … deine anderen Ressourcen …

ensure pepper_farmer
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Die Reihenfolge von oxmysql, ox\_lib, Framework, ox\_inventory und ox\_target **untereinander** richtet sich nach deren eigenen Anleitungen – funktioniert dein Server schon, lass sie so, wie sie ist. Für Pepper Farmer zählt nur: **alle fünf stehen über `ensure pepper_farmer`.**
{% endhint %}

{% hint style="warning" %}
**Nur eine Startzeile.** Steht in deiner `server.cfg` schon `ensure [pepper]` (startet alle Pepper-Scripts auf einmal), füge **nicht zusätzlich** `ensure pepper_farmer` ein. Dann muss aber `ensure [pepper]` unter den Abhängigkeiten stehen.
{% endhint %}

Falls noch nicht vorhanden, gehört auch OneSync dazu (nur wenn du **ohne** txAdmin startest, siehe Schritt 1):

```cfg
set onesync on
```

{% hint style="success" %}
**Kontrollpunkt:** In der `server.cfg` steht genau **eine** Zeile `ensure pepper_farmer` (bzw. `ensure [pepper]`), und sie steht **unter** oxmysql, ox\_lib, ox\_inventory, ox\_target und deinem Framework.
{% endhint %}

## Schritt 10 – Admin-Rechte vergeben

Admins können im Tablet den Reiter **Admin** öffnen (Positionen verschieben, Spieler verwalten) und den Befehl `/farmadmin` benutzen. Das Script prüft in dieser Reihenfolge:

1. Hat der Spieler das ACE-Recht `pepper_farmer.admin`? → Admin.
2. Sonst: Ist der Spieler in einer der Framework-Gruppen aus `Config.Admin.groups` (Standard: `admin`, `superadmin`, `god`)? → Admin.

### Empfohlener Weg: ACE-Recht (funktioniert mit allen Frameworks)

Füge diese Zeile in die `server.cfg` ein:

```cfg
add_ace group.admin pepper_farmer.admin allow
```

Damit bekommt jeder in der ACE-Gruppe `group.admin` die Admin-Rechte. Bist du selbst noch nicht in dieser Gruppe, füge dich mit deiner **Lizenz-Kennung** hinzu:

```cfg
add_principal identifier.license:DEINE_LIZENZ group.admin
```

`DEINE_LIZENZ` ersetzt du durch deine eigene Kennung. So findest du sie:

* **txAdmin:** Menü **Players** → auf deinen Namen klicken → Reiter **IDs**. Dort steht eine Zeile wie `license:1a2b3c4d…`. Kopiere alles **nach** `license:`.

**So sieht es richtig aus:**

```cfg
add_ace group.admin pepper_farmer.admin allow
add_principal identifier.license:1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b group.admin
```

**So sieht es falsch aus:**

```cfg
add_principal license:1a2b3c4d… group.admin              ← „identifier.“ fehlt
add_principal identifier.license:license:1a2b3c4d… group.admin   ← „license:“ doppelt
```

{% hint style="info" %}
**txAdmin-Admin ≠ Server-Admin.** Dass du dich in txAdmin anmelden kannst, macht dich im Spiel **nicht** automatisch zum Admin. Dafür brauchst du die `add_principal`-Zeile oder die passende Framework-Gruppe.
{% endhint %}

### Alternative: Framework-Gruppe

Bist du in deinem Framework schon Admin, funktioniert Pepper Farmer meist ohne weitere Schritte:

| Framework | Wie das Script die Gruppe prüft                               |
| --------- | ------------------------------------------------------------- |
| ESX       | ESX-Gruppe des Spielers ist `admin`, `superadmin` oder `god`  |
| QBCore    | QBCore-Berechtigung `admin`, `superadmin` oder `god`          |
| Qbox      | ACE-Gruppe `group.admin`, `group.superadmin` oder `group.god` |

Die Liste der Gruppen änderst du in `config/config.lua` unter `Config.Admin.groups`.

{% hint style="success" %}
**Kontrollpunkt:** Nach dem Neustart (Schritt 11) siehst du im Tablet links den Reiter **Admin**.
{% endhint %}

## Schritt 11 – Erster Start

1. **Starte den Server komplett neu** (in txAdmin: **Restart**). Ein `ensure pepper_farmer` in der Konsole reicht beim ersten Mal **nicht**, weil ox\_inventory die neuen Items nur beim eigenen Start einliest.
2. Schau in die Serverkonsole. **So sieht ein erfolgreicher Start aus** (bei `Config.Locale = 'de'` und ESX):

   ```
   Started resource ox_inventory
   …
   Started resource pepper_farmer
   [pepper_farmer] Pepper Farmer v1.0.0 gestartet (Framework: esx)
   ```

   Statt `esx` steht dort `qbcore` oder `qbox`, je nach deinem Framework. Steht dort `standalone`, stimmt Schritt 4 oder die Reihenfolge aus Schritt 9 nicht.
3. Verbinde dich mit dem Server.
4. Drück **`F6`** oder gib im Chat **`/farmer`** ein – das Farm-Tablet öffnet sich.
5. Auf der Karte findest du die **Farmzentrale in Grapeseed**. Dort öffnet sich am Büro das Tablet, am Scheunentor das Hoflager, und direkt daneben liegen die Einsteigerbeete.

{% hint style="success" %}
**Kontrollpunkt:** Die Konsole zeigt `Pepper Farmer v1.0.0 gestartet (Framework: …)` mit **deinem** Framework, `F6` öffnet das Tablet und Items wie „Tomate“ werden im Inventar mit deutschem Namen angezeigt.
{% endhint %}

### Erste Schritte zum Testen

1. Tablet öffnen (`F6`) → Reiter **Felder** → ein freies Beet pachten.
2. An den Einsteigerbeeten Werkzeug bei **Gartengeräte Grapeseed** (Hacke, Gießkanne) und Saat im **Saatguthandel Grapeseed** kaufen.
3. Am Beet mit ox\_target (Anschauen + Option wählen) hacken, säen, gießen.
4. Nach der Wachstumszeit ernten und verkaufen.

Wie es danach weitergeht, steht unter [Spielablauf](broken://pages/d7fe9b5c8c9a434b80214e38b018cda10064466f).

## Schritt 12 – Positionen prüfen und anpassen

**Alle Orte des Scripts sind Näherungswerte** – Felder, Pachttafeln, Ställe, Maschinen, Händler, Depot und Farmzentrale wurden aus Kartendaten gesetzt. Fahre sie vor dem Livegang einmal ab. Liegt etwas in der Luft, im Boden oder in einer Wand, verschiebst du es am einfachsten **im Spiel**:

Tablet → Reiter **Admin** → **Orte** bzw. **Felder** → dich an die richtige Stelle stellen → **Auf meine Position setzen**. Die Änderung gilt sofort für alle Spieler, ohne Neustart.

Die ausführliche Anleitung (inkl. Feld-Editor) steht unter [Admin-Reiter & Positionen](broken://pages/d4bca060ef2297c1d820a5a390d19f64d4374419).

## Updates installieren

{% stepper %}
{% step %}

### Changelog lesen

Lies den [Changelog](broken://pages/097a9cb22302b1ae7c575270e6aae70d601abab9) der neuen Version. Dort steht, ob Items oder der Erntekorb neu eingetragen werden müssen.
{% endstep %}

{% step %}

### Einstellungen sichern

Kopiere den Ordner `pepper_farmer/config/` an einen sicheren Ort (z. B. auf den Desktop).
{% endstep %}

{% step %}

### Alten Ordner löschen

Stoppe den Server und lösche den Ordner `resources/[pepper]/pepper_farmer` komplett. Nicht einfach darüber kopieren – sonst bleiben alte Dateien liegen.
{% endstep %}

{% step %}

### Neue Version entpacken

Lade die neue Version im [Cfx.re-Portal](https://portal.cfx.re/assets/granted-assets) herunter und entpacke sie wie in Schritt 3 nach `resources/[pepper]/pepper_farmer`.
{% endstep %}

{% step %}

### Einstellungen übernehmen

Übertrage deine Änderungen aus der gesicherten `config/config.lua` (mindestens `Config.Framework` und `Config.Locale`) in die neue Datei. Hattest du weitere Config-Dateien geändert, übertrage auch diese. Kopiere die alten Dateien **nicht einfach** über die neuen – neue Versionen können neue Einstellungen enthalten.
{% endstep %}

{% step %}

### Items und Container nur bei Hinweis

Schritt 5 und 6 wiederholst du **nur**, wenn der Changelog das verlangt. Dann ersetzt du den alten Pepper-Farmer-Block in `items.lua` bzw. `containers.lua` durch den neuen.
{% endstep %}

{% step %}

### Neu starten

Server komplett neu starten und in der Konsole auf `Pepper Farmer v… gestartet` achten.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Spielerdaten, Farmen und alle Positionen, die du im Admin-Reiter geändert hast, liegen in der **Datenbank** und bleiben bei einem Update erhalten.
{% endhint %}

## Fehlerbehebung

Such die Meldung aus deiner Serverkonsole (oder F8-Konsole) in der linken Spalte.

| Meldung / Problem                                                                                                                 | Ursache                                                                                                                                                                                                                | Lösung                                                                                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Could not find dependency ox_target for resource pepper_farmer.` (oder `ox_lib`, `ox_inventory`, `oxmysql`)                      | Die genannte Ressource fehlt, hat einen falschen Ordnernamen oder startet nach Pepper Farmer.                                                                                                                          | Ressource wie in Schritt 1 installieren, Ordnernamen prüfen (kein `-main`), `ensure`-Zeile **über** `ensure pepper_farmer` setzen.                                                                                     |
| `Could not find dependency /onesync for resource pepper_farmer.`                                                                  | OneSync ist aus.                                                                                                                                                                                                       | OneSync einschalten (Schritt 1).                                                                                                                                                                                       |
| `Could not find dependency /server:7290 …`                                                                                        | Dein Server-Build ist zu alt.                                                                                                                                                                                          | FXServer auf einen aktuellen Build aktualisieren (in txAdmin bzw. neue Server-Dateien laden).                                                                                                                          |
| `Couldn't start resource pepper_farmer.`                                                                                          | Folgefehler – die eigentliche Ursache steht **direkt darüber** in der Konsole.                                                                                                                                         | Die Zeile darüber lesen und hier in der Tabelle suchen.                                                                                                                                                                |
| `No such export RegisterStash in resource ox_inventory` (oder ein anderes `No such export … in resource ox_inventory`)            | ox\_inventory ist nicht gestartet – fast immer wegen eines Tippfehlers in `data/items.lua` (zweites `return {`, fehlendes Komma, Text nach der letzten `}`) oder in `containers.lua` (Block nach `return containers`). | Weiter oben in der Konsole nach dem roten ox\_inventory-Fehler suchen (dort steht die Zeilennummer). Schritt 5 und 6 prüfen oder die Sicherheitskopie zurückspielen und neu einfügen.                                  |
| Rote Warnung zwischen `=====`-Linien: `Config.Framework = '…', aber die Ressource '…' läuft nicht`                                | Falsches Framework eingetragen oder Framework startet nach Pepper Farmer.                                                                                                                                              | `Config.Framework` prüfen (Schritt 4) und Reihenfolge in der `server.cfg` prüfen (Schritt 9).                                                                                                                          |
| Konsole zeigt `gestartet (Framework: standalone)`                                                                                 | Kein Framework erkannt.                                                                                                                                                                                                | Wie die Zeile darüber: Schritt 4 und 9 prüfen.                                                                                                                                                                         |
| `Datenbank nicht erreichbar (Versuch 1/10) …` und danach `Pepper Farmer konnte die Datenbank nicht erreichen und bleibt inaktiv.` | oxmysql kann sich nicht mit der Datenbank verbinden.                                                                                                                                                                   | `mysql_connection_string` in der `server.cfg` prüfen (Benutzer, Passwort, Datenbankname), läuft der MySQL/MariaDB-Dienst? Ist die oxmysql-Verbindung in Ordnung, startet Pepper Farmer beim nächsten Neustart normal.  |
| `Mindestens ein Schema-Block ist fehlgeschlagen – bitte Konsole prüfen.`                                                          | Tabellen konnten nicht angelegt werden (oft fehlende Rechte des Datenbank-Benutzers).                                                                                                                                  | `install/pepper_farmer.sql` von Hand importieren (Schritt 8).                                                                                                                                                          |
| Items heißen im Inventar `tomato` statt „Tomate“ oder lassen sich nicht geben                                                     | Die Items fehlen in `ox_inventory/data/items.lua`.                                                                                                                                                                     | Schritt 5 durchführen, danach Server **komplett** neu starten.                                                                                                                                                         |
| Items haben englische Namen, obwohl du Deutsch willst                                                                             | Die englische Item-Datei wurde eingefügt.                                                                                                                                                                              | Den Block in `items.lua` durch den Inhalt von `install/ox_items_de.lua` ersetzen.                                                                                                                                      |
| Erntekorb nimmt nichts auf / ist ein normales Item                                                                                | Der Container-Block fehlt.                                                                                                                                                                                             | Schritt 6 durchführen, Server neu starten.                                                                                                                                                                             |
| Tablet öffnet sich nicht (`F6` / `/farmer`)                                                                                       | Pepper Farmer ist nicht gestartet, Ordner umbenannt oder Framework-Fehler.                                                                                                                                             | Konsole auf `Pepper Farmer v… gestartet` prüfen, Ordnername `pepper_farmer` prüfen, F8-Konsole auf rote Fehler prüfen. Ein anderes Script kann `F6` belegen – `/farmer` testen, Taste in den GTA-Einstellungen ändern. |
| Reiter **Admin** fehlt im Tablet                                                                                                  | Keine Admin-Rechte.                                                                                                                                                                                                    | Schritt 10 prüfen, danach Server neu starten oder neu verbinden.                                                                                                                                                       |
| ox\_target-Optionen fehlen an Pflanzen, Händlern oder Maschinen                                                                   | ox\_target läuft nicht oder startet nach Pepper Farmer – oder der Ort liegt woanders als erwartet.                                                                                                                     | Reihenfolge prüfen (Schritt 9). Liegt der Ort daneben: im Admin-Reiter verschieben ([Admin-Reiter & Positionen](broken://pages/d4bca060ef2297c1d820a5a390d19f64d4374419)).                                             |
| `You lack the required entitlement …` / `Failed to verify protected resource`                                                     | Asset Escrow: Der Server-Lizenzschlüssel gehört nicht zum Konto, mit dem gekauft wurde – oder verschlüsselte Dateien wurden verändert.                                                                                 | `sv_licenseKey` des Käufer-Kontos verwenden, Ressource neu aus dem Portal laden. Siehe [Asset Escrow](file:///getting-started/asset-escrow.md).                                                                        |
| Warnung zu `sv_endpointPrivacy`                                                                                                   | Allgemeiner Hinweis von FXServer, **nicht** von Pepper Farmer.                                                                                                                                                         | Harmlos – kannst du ignorieren.                                                                                                                                                                                        |
| Pflanzen, Pachttafeln oder Händler schweben oder stecken im Boden                                                                 | Die Standard-Koordinaten sind Näherungen.                                                                                                                                                                              | Im Admin-Reiter an die richtige Stelle setzen ([Admin-Reiter & Positionen](broken://pages/d4bca060ef2297c1d820a5a390d19f64d4374419)).                                                                                  |
| Maschine erkennt das Feld nicht                                                                                                   | Die Bahnen des Großfelds liegen nicht dort, wo du fährst.                                                                                                                                                              | Im Admin-Reiter → **Felder** die Bahnen neu abfahren. Zum Testen `Config.Debug = true` setzen.                                                                                                                         |
| Geld landet auf dem falschen Konto (Bar statt Bank)                                                                               | Einstellung `Config.Money`.                                                                                                                                                                                            | In `config/config.lua` anpassen (siehe [Konfiguration](broken://pages/1e0e4a6ed680d139a4548c96dc81b60c50496726)).                                                                                                      |

{% hint style="success" %}
Kommst du nicht weiter? Öffne ein Ticket in unserem [Discord](https://discord.gg/6NaFJWKDYu) und schick uns einen Screenshot der Serverkonsole **ab dem Serverstart** und deine `ensure`-Zeilen aus der `server.cfg`.
{% endhint %}
