Anpassung
Die Einstellungen befinden sich in config.lua. Die Dateien, die mit deinem Framework, deinem Inventar und deiner Target-Ressource kommunizieren, sind offen gelassen, sodass Server mit individuellen Setups Anpassungen vornehmen können, ohne den Escrow-Kern zu berühren.
Welche Datei was bestimmt
Abschnitt betitelt „Welche Datei was bestimmt“| Datei oder Ordner | Was sie bestimmt | Offen? |
|---|---|---|
config.lua | Jede Einstellung auf dieser Seite, die Benachrichtigungsfunktion, Items und Geschmacksrichtungen | Offen |
locales/*.lua | Alle Texte: Menü, Target-Labels, Nachrichten. Eine Datei pro Sprache | Offen |
server_functions.lua | Spieler abrufen, Items geben, entfernen und prüfen, Registrierung benutzbarer Items, der Callback für Geschmäcker und ReduceStress | Offen |
client/client_functions.lua | Auslesen von Spielerdaten und Job-Prüfung für das Einrichtungsmenü | Offen |
target/target.lua | Alle Target-Optionen für Shishas und Möbel, für ox_target und qb-target | Offen |
client/client.lua, server/server.lua, locale.lua | Platzierung, Schlauch, Rauch, Besitz und Verbrauchsgüter | Verschlüsselt (Escrow) |
html/ | Das Einrichtungsmenü: index.html, style.css, script.js | Unverschlüsselte Dateien |
inventory_items/ | Fertige Item-Definitionen für ESX, ox_inventory und QBCore | Referenz |
inventory_images/ | Ein Icon pro Item | Assets |
mic_hookah_prop/stream/ | Die zehn Shisha-Modelle | Assets, eigene Ressource |
Framework, Target und Bilder
Abschnitt betitelt „Framework, Target und Bilder“| Option | Was sie macht | Standard |
|---|---|---|
Config.Locale | Sprache | en |
Config.Framework | esx, qbcore oder qbox | esx |
Config.ESXResourceName | Ordnername von ESX | es_extended |
Config.QBResourceName | Ordnername von QBCore | qb-core |
Config.QBoxResourceName | Ordnername von QBox | qbx_core |
Config.Target | ox_target oder qb-target | ox_target |
Config.QBTargetResourceName | Ordnername von qb-target | qb-target |
Config.InventoryImagePath | Pfad, aus dem das Menü Geschmacks-Icons lädt | nui://ox_inventory/web/images/ |
Zugriffsberechtigungen
Abschnitt betitelt „Zugriffsberechtigungen“| Option | Was sie macht | Standard |
|---|---|---|
Config.AdminGroups | Gruppen, die das Menü jeder Shisha und jedes Möbels öffnen und einpacken dürfen. false bedeutet, dass jeder als Admin gilt | false |
Config.AllowedJobs | Jobs, die das Einrichtungsmenü öffnen dürfen. false erlaubt jeden Job | false |
Im Auslieferungszustand kann jeder Spieler jede Shisha bedienen und verwalten. Um sicherzustellen, dass jede Shisha dem Spieler gehört, der sie aufgestellt hat, trage deine Team-Gruppen in Config.AdminGroups ein — zum Beispiel admin und superadmin. Unter ESX wird dies mit der Gruppe des Spielers abgeglichen; unter QBCore und QBox mit dem Feld permission des Spielers.
Mit konfigurierter Liste:
| Wer | Open Setup Menu | Einpacken | Grab Hose |
|---|---|---|---|
| Der Spieler, der sie platziert hat | ja (sofern Job erlaubt) | ja | ja |
| Eine Admin-Gruppe | ja (sofern Job erlaubt) | ja | ja |
| Alle anderen | nein | nein | ja |
Config.AllowedJobs sichert nur das Einrichtungsmenü ab. Jeder Spieler kann den Schlauch nehmen und an einer brennenden Shisha ziehen.
Rauchen und Verbrauchsgüter
Abschnitt betitelt „Rauchen und Verbrauchsgüter“| Option | Was sie macht | Standard |
|---|---|---|
Config.MaxActiveTime | Was “voll” für Kohle und Wasser bedeutet. Ein hookah_coal oder hookah_water füllt auf diesen Wert | 1800 |
Config.ConsumptionPerPuff | Wie viel jeder Zug von charcoal und water abzieht | 10 und 10 |
Config.MaxPuffsPerSession | Ergibt sich aus den beiden Werten oben (1800 ÷ 10 = 180). Nur zur Orientierung; wird nicht eingelesen | 180 |
Config.MaxHoseDistance | Reichweite des Schlauchs in Metern, bevor er abreißt | 3.5 |
Config.MaxSimultaneousUsers | Vorgesehene Maximalzahl an Personen, die gleichzeitig an derselben Shisha rauchen | 4 |
Config.Stress | Ruft bei jedem Zug ReduceStress auf | true |
Die Shisha verbraucht sich nicht nach Zeit: Kohle und Wasser sinken nur, wenn jemand an ihr zieht. Sobald eines von beiden null erreicht, erlischt die Shisha und muss nachgefüllt werden.
ReduceStress in server_functions.lua erhält bei jedem Zug die Server-ID des Spielers, wenn Config.Stress aktiviert ist. Die Funktion wird leer ausgeliefert, enthält jedoch auskommentierte Beispiele: ein Client-Event, ein Export oder ein Server-Event deiner Stress- oder HUD-Ressource. Füge deinen Aufruf dort ein.
| Option | Was sie macht | Standard |
|---|---|---|
Config.Particle | Welches Partikel verwendet wird: ein dict und name | scr_recartheft / scr_wheel_burnout |
Config.VapeExhale | Größe der Rauchwolke | 0.5 |
In der Config sind diese beiden Optionen mit „nur ändern, wenn du genau weißt, was du tust“ markiert. Jede Wolke bleibt drei Sekunden sichtbar und wird Spielern im Umkreis von 150 Metern angezeigt.
Shishas, Möbel und Geschmäcker
Abschnitt betitelt „Shishas, Möbel und Geschmäcker“Die kompletten Listen findest du unter 🎒 Items.
Config.HookahItems — Item-Name → Modell. Um eine Shisha hinzuzufügen, muss das Modell gestreamt werden (z. B. in mic_hookah_prop/stream/ mit einem Eintrag in der .ytyp), danach trägst du die Zeile hier ein und registrierst das Item in deinem Inventar.
Config.PlaceableProps — Item-Name → propModel, type (furniture) und isChair. Jedes Prop aus dem Basisspiel funktioniert. Setze isChair = true für alles, was die Option Sit Down anbieten soll.
Config.Flavors — Item-Name → Einstellungen:
| Feld | Was es macht |
|---|---|
Label | Im Einrichtungsmenü angezeigter Name |
SmokeColor | Farbe R, G, B des Rauchs |
ScreenEffect | Name eines GTA-Bildschirmeffekts für den Raucher, oder false für keinen |
EffectDuration | Dauer des Bildschirmeffekts in Sekunden |
Die Config verlinkt neben Config.Flavors eine Liste mit Bildschirmeffekt-Namen. Um einen Geschmack hinzuzufügen, kopiere einen Eintrag, vergib einen neuen Item-Namen und füge das Item samt Icon deinem Inventar hinzu.
Benachrichtigungen
Abschnitt betitelt „Benachrichtigungen“Config.Notify in config.lua wickelt alle Nachrichten ab: ShowNotification unter ESX, Functions.Notify unter QBCore und QBox, andernfalls die Konsole. Passe den Inhalt der Funktion an, wenn du dein eigenes Benachrichtigungssystem verwenden möchtest.
Sprachen
Abschnitt betitelt „Sprachen“Elf Sprachdateien werden in locales/ mitgeliefert: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Wähle eine mit Config.Locale.
Der Kommentar über Config.Locale erwähnt auch jp, eine japanische Datei wird jedoch nicht mitgeliefert; wird dies eingestellt, erscheint die Meldung „Locale [jp] does not exist“.
Jede Datei deckt das Einrichtungsmenü, die Target-Labels und alle Nachrichten ab. Einige wenige Wörter sind fest im Lua-Code verankert: die Platzierungshinweise (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), „You are already placing an object“ und „None“ für eine leere Sorte.
Neue Sprache hinzufügen: Kopiere locales/en.lua, ändere den Schlüssel ganz oben auf dein Sprachkürzel und übersetze die Texte. Das Manifest lädt automatisch alle Dateien im locales/-Ordner, es muss also nichts extra registriert werden. Stelle Config.Locale ein, führe refresh aus und starte die Ressource neu.
Anpassung an deinen Server
Abschnitt betitelt „Anpassung an deinen Server“| Anforderung | Datei / Stelle |
|---|---|
| Eigenes Framework | Das Framework-Objekt am Ende von config.lua sowie die Funktionen in server_functions.lua und client/client_functions.lua |
| Anderes Inventar | AddItem, RemoveItem und HasItem in server_functions.lua sowie die Registrierung der benutzbaren Items darunter |
| Anderes Target-System | target/target.lua — die Optionen sind identisch, nur die beiden Aufrufe addModel / AddTargetModel unterscheiden sich |
| Target-Labels, Icons oder Distanz | target/target.lua für Icons und Distanz, locales/ für Labels |
| Job-Regeln | CheckJobAccess in client/client_functions.lua |
Unter QBCore und QBox mit gestartetem ox_inventory registriert server_functions.lua zudem jedes Shisha- und Möbel-Item über den internen Use-Hook von ox_inventory — als Absicherung für Setups, bei denen die QBCore-Itembridge das Benutzen nicht weiterreicht.
Tasten und Befehle
Abschnitt betitelt „Tasten und Befehle“| Taste oder Befehl | Situation | Was passiert |
|---|---|---|
| E | Shisha in der Hand | Startet das Platzieren |
| X | Shisha in der Hand | Steckt die Shisha weg, ohne zu platzieren |
| Mausrad | Beim Platzieren | Dreht die Vorschau |
| Pfeil hoch / runter | Beim Platzieren | Hebt oder senkt die Vorschau |
| E | Beim Platzieren | Stellt das Objekt ab |
| X | Beim Platzieren | Bricht ab |
| E | Schlauch einer brennenden Shisha halten | Nimmt einen Zug |
| X (“Hookah - Stand Up X”) | Sitzend | Steht auf. In den FiveM-Tastenbelegungen anpassbar |
/hookah:chair:stand_up | Sitzend | Das Gleiche als Chat-Befehl |