Zum Inhalt springen

Anpassung

Jeder Shop wird im Panel eingerichtet und in deiner Datenbank gespeichert — siehe 🏪 Einen Shop erstellen. Die Dateien regeln die gemeinsamen Grundlagen aller Shops.


DateiWas sie bestimmtOffen?
config.luaFramework, Sprache, Interaktion, Standard-Ped, Befehl, Bilder, Kategorien, Überfallregeln, IdentifierJa
bridge/server.luaGeld, Konten, Items, Inventar, Jobs, Benachrichtigungen, Callbacks und individueller PolizeialarmJa
bridge/client.luaBenachrichtigungen, Hilfetexte, Spielerdaten und Callbacks auf dem ClientJa
bridge/target.luaWie Verkäufer und Shop-Punkte zu ox_target oder qb-target hinzugefügt werdenJa
bridge/utils.luaLiest die Identifier eines Spielers aus (Steam, Lizenz, Discord, FiveM, Xbox)Ja
locales/*.luaTexte im Spiel: Benachrichtigungen, Interaktionshinweise, ÜberfallnachrichtenJa
html/locales.jsTexte in den Panels und im Shop-Fenster für alle zwölf SprachenLesbar
html/index.html, style.css, script.jsDie Benutzeroberfläche (Panels und Shop-Fenster)Lesbar
list/peds.luaDie im Panel zur Auswahl stehenden Ped-ModelleVerschlüsselt (Escrow)
mic_shopcreator.sqlDie neun Datenbanktabellen, einmalig importiertJa
client.lua, server.luaShop-LogikVerschlüsselt (Escrow)

OptionWas sie machtStandard
Config.LocaleSprache im Spiel und in allen Menüs. Siehe Sprachen'en'
Config.Framework'esx' oder 'qbcore'. Keine automatische Erkennung. Bei QBox 'qbcore' wählen (Kompatibilitätslayer)'esx'
Config.CommandBefehl zum Öffnen des Shop Creator Panels'shopcreator'
Config.IdentifierTypeWie Besitzer und Mitarbeiter erkannt werden: 'discord', 'license', 'esx' oder 'citizenid'. Siehe Installation'discord'
OptionWas sie machtStandard
Config.Interaction'ox_target', 'qb-target' oder 'default' (Hilfetext und Taste E)'ox_target'
Config.RadiusInteractBei 'default', maximaler Abstand in Metern für die Interaktion2.0
Config.SpawnNPCBei false spawnen keine NPCs: Ein Marker ('default') oder eine Target-Sphäre markiert den Ort. Ohne Verkäufer ist auch kein Überfall möglichtrue
Config.DefaultPedPed-Modell, falls ein Standort keines oder ein ungültiges definiert hat'a_f_m_bevhills_01'
Config.PedSpawnDistanceVerkäufer existieren nur, solange sich ein Spieler innerhalb dieser Reichweite in Metern befindet20.0
OptionWas sie machtStandard
Config.CategoriesBeim Anlegen eines Produkts angebotene Kategorien; das Shop-Fenster gruppiert Produkte danachitems, weapons, misc
Config.InventoryImagePathListe an Bilderordnern. Für jedes Produkt wird <item_name>.png nacheinander in den Ordnern gesucht und das erste gefundene Bild genutztnui://ox_inventory/web/images/
Config.AllowEmployeesAddProductsBestimmt bei Spieler-Shops, ob Mitarbeiter neue Produkte hinzufügen dürfen. Besitzer können dies immerfalse

Kein ox_inventory im Einsatz? Trage den Bildpfad deines Inventars in Config.InventoryImagePath ein, z. B. nui://qb-inventory/html/images/. Liegen Bilder in mehreren Ordnern, füge weitere Einträge hinzu.

OptionWas sie machtStandard
Config.BlacklistWeaponsGedacht für Waffen, die keinen Überfall starten können. Wird in dieser Version nicht geprüft: Jede Waffe startet einen Überfall, nur Fäuste nichtweapon_unarmed, weapon_nightstick, weapon_stungun
Config.RobberyNotifyJobsJobs, die bei Überfallbeginn alarmiert werdenpolice
Config.PoliceAlert"default" benachrichtigt obige Jobs mit Meldung und 1-minütigem Blip. "custom" ruft stattdessen TriggerPoliceAlert in bridge/server.lua auf"default"
Config.RobberyCooldownStandard-Cooldown für Shops ohne eigenen Wert. Wird im Code in Minuten gezählt (Kommentar in config.lua nennt irrtümlich Sekunden)300
Config.TakeRobberyMoneyFromVaultBei Spieler-Shops stammt das geraubte Geld direkt aus dem Tresor — ist dieser leer, bricht die Geldauszahlung abtrue
OptionWas sie machtStandard
Config.ScreenshotHängt Screenshots des Spielerbildschirms an Discord-Logs an. Benötigt screenshot-basictrue

Die Webhook-URL selbst wird pro Shop direkt im Panel festgelegt.


BefehlWer ihn nutzen darfWas er macht
/shopcreatorACE mic_shop.openÖffnet das Shop Creator Panel. Umbenennbar über Config.Command und in FiveMs Tastenbelegung wie jeder Befehl belegbar

Shopbesitzer und Mitarbeiter benötigen keine Permission: Öffnen sie einen Shop, den sie besitzen oder in dem sie arbeiten, erscheint ein Zahnrad-Symbol für die Shop-Einstellungen.


Zwölf Sprachen werden mitgeliefert: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar und nl. Texte liegen an zwei Stellen und richten sich nach Config.Locale:

  • locales/<code>.lua — Ingame-Texte: Benachrichtigungen, Hinweistexte, Überfallmeldungen.
  • html/locales.js — Texte im Panel und im Einkaufsfenster, jeweils ein Block pro Sprache.

Neue Sprache hinzufügen:

  1. Kopiere locales/en.lua nach locales/<code>.lua und übersetze die rechte Seite jeder Zeile. Behalte Schlüssel und %s unverändert bei.
  2. Füge locales/<code>.lua in fxmanifest.lua unter shared_scripts hinzu, damit Clients die Datei herunterladen.
  3. Kopiere in html/locales.js den 'en'-Block, benenne ihn auf dein Sprachkürzel um und übersetze die Werte.
  4. Setze Config.Locale auf deinen Code, führe refresh aus und starte neu.

Ein fehlender Schlüssel im Lua-File erzeugt im Spiel Translation not found: <key>.


Vier offene Dateien in bridge/. Ändere keine Funktionsnamen — das Skript ruft sie namentlich auf.

bridge/server.lua — Ein Block für ESX, einer für QBCore, ausgewählt über Config.Framework.

FunktionVerwendungszweck
GetPlayer, GetPlayerJobSpieler-Objekt und Job
GetMoney, AddMoney, RemoveMoneyBargeld
GetAccount, AddAccountMoney, RemoveAccountMoneyKonten: bank, black_money
GetInventoryItem, AddInventoryItem, RemoveInventoryItemItems. Greift bei Ausführung direkt auf ox_inventory zu
GetPlayerInventoryInventar des Besitzers beim Befüllen des Shops
ShowNotificationServerseitige Benachrichtigungen
RegisterServerCallbackCallbacks über ESX oder QBCore
TriggerPoliceAlert(x, y, z, shopLabel)Wird bei Überfall aufgerufen, wenn Config.PoliceAlert = "custom". Standardmäßig leer — trage deinen Alarm ein

bridge/client.lua — ShowNotification, ShowHelpNotification, GetPlayerData und TriggerServerCallback. Bei QBCore ist ShowHelpNotification leer; trage hier deinen Help-Text- oder Draw-Text-Aufruf ein, falls du Config.Interaction = 'default' nutzt oder die Mitarbeiter-Einladung sehen möchtest.

bridge/target.lua — Registriert die Option „Shop öffnen“ an jedem Verkäufer (bzw. an einer kleinen Sphäre bei Config.SpawnNPC = false) für ox_target oder qb-target und aktualisiert diese bei Änderungen.

Eigenes Polizei-Dispatch: Setze Config.PoliceAlert = "custom" und implementiere den Aufruf in TriggerPoliceAlert in bridge/server.lua. Die Funktion empfängt Verkäuferkoordinaten und Shop-Namen.


Client-Exports zum Öffnen von Shops aus anderen Ressourcen:

ExportArgumenteWas er bewirkt
OpenShopshop ID, location IDÖffnet das Shop-Fenster unter Berücksichtigung von Cooldown und Job-Beschränkung
OpenShopAsEmployeeshop ID, location IDIdentisch zu OpenShop; das Zahnrad für Einstellungen erscheint für Besitzer/Mitarbeiter
OpenShopAsOwner—Öffnet das Shop Creator Panel, sofern der Spieler die Permission mic_shop.open besitzt

Target-Systeme können auch das Client-Event mic_shopcreator:client:openShop mit shopId und locationId in den Eventdaten aufrufen (entspricht dem Verhalten des internen Targets). IDs sind im Panel ersichtlich.