dv_menucard

dv_menucard

€28.00

Zum Warenkorb hinzufügen

# 🍽️ dv_menucard — Restaurant Speisekarten System mit NUI Clipboard | ESX | FiveM

Gib deinen Restaurantmitarbeitern die Möglichkeit, ihre eigene Speisekarte direkt im Spiel zu verwalten – mit schickem Klemmbrett-UI, Kategorie-Tabs, Bild-Upload und serverseitiger Sicherheit.

---

## 💡 Was ist dv_menucard?

dv_menucard ist ein vollständiges Speisekarten-System für ESX-Server. Restaurantmitarbeiter laden Speisekarten-Bilder über ein ingame Staff-Panel hoch, aktivieren oder deaktivieren einzelne Kategorien und geben Kunden das passende Item. Kunden öffnen die Speisekarte per Item-Nutzung und sehen sie als realistisches Klemmbrett im Spiel. Alles läuft serverseitig abgesichert – nur Mitarbeiter des jeweiligen Restaurants können ihre eigene Karte bearbeiten.

---

## ⚙️ Features auf einen Blick

  • 📋 **Klemmbrett-NUI** – Speisekarte wird als realistisches Clipboard angezeigt, inklusive Clipboard-Animation

  • 🗂️ **Kategorie-Tabs** – mehrere Kategorien pro Restaurant (Speisen, Getränke, Desserts, Tagesangebot etc.)

  • 🖼️ **Bild-Upload per Link** – Mitarbeiter laden Speisekarten-Bilder via Direkt-Link hoch (imgur, Discord, ibb.co, ...)

  • **Link-Validierung** – Links werden client- und serverseitig auf Format und erlaubte Domain geprüft

  • 👁️ **Vorschau-Funktion** – Bild vor dem Speichern direkt im Staff-Panel prüfen

  • 🔛 **Aktivieren / Deaktivieren** – jede Kategorie einzeln ein- oder ausschaltbar

  • 🔒 **Serverseitige Absicherung** – nur Mitarbeiter mit dem passenden Job können ihre Karte bearbeiten

  • 🏪 **Unbegrenzt viele Restaurants** – alle frei konfigurierbar mit eigenem Job, Item und Kategorien

  • 👤 **NPC-Modus** – Staff- und Pickup-NPC statt klassischer Marker, inkl. Blickrichtung pro Restaurant

  • 📍 **Marker-Modus** – alternativ klassische farbige Marker (Orange = Staff, Weiß = Kunden)

  • 🎭 **Clipboard-Animation** – wird automatisch beim Öffnen abgespielt

  • 🎁 **Item-System** – Kunden erhalten das Speisekarten-Item am Pickup-NPC/Marker

  • 💾 **Automatische Datenbank** – Tabelle `dv_menucard` wird beim ersten Start automatisch angelegt

  • 🐛 **Upload-Log** – jeder Speisekarten-Upload wird in der Serverkonsole protokolliert

  • **Performance-schonend** – Marker/NPC-Loops laufen nur in Reichweite der konfigurierten Standorte

---

## 🖥️ NUI Panel

Das System nutzt zwei separate NUI-Ansichten:

**Kunden-Ansicht (Clipboard)** – Öffnet sich beim Benutzen des Speisekarten-Items. Die Karte erscheint als realistisches Klemmbrett mit Kategorie-Tabs. Nicht aktive oder leere Kategorien werden automatisch ausgeblendet.

**Staff-Panel** – Öffnet sich am Staff-NPC oder -Marker per `[E]`. Mitarbeiter sehen alle Kategorien ihres Restaurants, können pro Kategorie einen Bild-Link einfügen, eine Vorschau laden und die Karte speichern oder deaktivieren.

---

## 🔒 Serverseitige Sicherheit

Alle kritischen Aktionen – Speichern, Aktivieren, Deaktivieren – werden serverseitig geprüft. Jeder eingehende Link wird auf HTTPS, `.png`-Endung und erlaubte Domain validiert. Zusätzlich wird der Job des Spielers gegengeprüft – nur Mitarbeiter des jeweiligen Restaurants können ihre eigene Karte bearbeiten. Manipulationen durch gefälschte Client-Events werden damit effektiv unterbunden.

---

## 🖼️ Unterstützte Bild-Plattformen

Nur Bilder von konfigurierten Domains werden akzeptiert. Standardmäßig vorbereitete Plattformen:

| Plattform | Kostenlos | Registrierung | Dauerhaft |

|---|---|---|---|

| imgur.com | ✅ | Nicht nötig | ✅ |

| ibb.co | ✅ | Nicht nötig | ✅ |

| Discord CDN | ✅ | Discord-Account | ⚠️ Links können ablaufen |

| s1.directupload.eu | ✅ | Nicht nötig | ✅ |

Weitere Domains lassen sich jederzeit in der `config.lua` hinzufügen.

---

## 🔔 Notify-System

Das Benachrichtigungssystem ist vollständig framework-unabhängig. Einfach den eigenen Notify-Aufruf als einzeilige Funktion in der Config eintragen – fertig.

```lua

-- ESX Standard:

ESX.ShowNotification(message)

-- ox_lib:

lib.notify({ title = "Speisekarte", description = message, type = "inform" })

-- okokNotify:

exports["okokNotify"]:Alert("Speisekarte", message, 5000, "info")

-- QBCore:

QBCore.Functions.Notify(message, "primary")

```

---

## 📦 Abhängigkeiten

| Pflicht | Optional |

|---|---|

| es_extended (ESX Legacy) | Emote-Script (z.B. dpemotes) für Clipboard-Animation |

| oxmysql | – |

---

## 🚀 Installation in 4 Schritten

1. Ordner in `resources/` legen

2. `ensure dv_menucard` in die `server.cfg` eintragen

  1. Server starten – die Datenbanktabelle wird **automatisch** angelegt

4. Items für jedes Restaurant in der `items`-Tabelle registrieren & `config.lua` anpassen – fertig!

### Item registrieren (Beispiel)

```sql

INSERT INTO items (name, label, weight, rare, can_remove)

VALUES ('cat_cafe', 'Speisekarte Cat Cafe', 100, 0, 1);

```

---

## ⚙️ Konfiguration auf einen Blick

| Option | Beschreibung |

|---|---|

| `Config.Restaurants` | Alle Restaurants mit Job, Label, Koordinaten, Item und Kategorien |

| `Config.InteractMode` | Interaktionsmodus: `'npc'` oder `'marker'` |

| `Config.NPC` | NPC-Modelle, Interaktionsdistanz und Idle-Szenario |

| `Config.Marker` | Marker-Typ, Größe, Farben und Distanzen |

| `Config.AllowedDomains` | Erlaubte Bild-Domains für den Upload |

| `Config.Text` | Alle Texte und Benachrichtigungen frei anpassbar |

Alle Einstellungen befinden sich in einer einzigen zentralen `config.lua`. Neue Restaurants lassen sich in wenigen Sekunden hinzufügen.

---

## 💬 Support

Bei Fragen, Problemen oder Feature-Wünschen erreichst du uns jederzeit über unseren Discord:

👉

*Powered by DV_Development 🚀*