Przejdź do głównej zawartości

Personalizacja

Każdy sklep konfiguruje się w panelu i jest zapisywany w twojej bazie danych — zobacz 🏪 Budowanie sklepu. Pliki służą do tego, co wspólne dla wszystkich sklepów.


PlikZa co odpowiadaOtwarty?
config.luaFramework, język, interakcja, domyślny ped, komenda, obrazki, kategorie, zasady napadów, identyfikatoryTak
bridge/server.luaPieniądze, konta, przedmioty, ekwipunek, prace, powiadomienia, callbacki oraz własny alarm dla policjiTak
bridge/client.luaPowiadomienia, podpowiedzi pomocy, dane gracza i callbacki po stronie klientaTak
bridge/target.luaJak sprzedawcy i miejsca sklepów są dodawane do ox_target lub qb-targetTak
bridge/utils.luaOdczytuje identyfikatory gracza (Steam, licencja, Discord, FiveM, Xbox)Tak
locales/*.luaTeksty w grze: powiadomienia, podpowiedzi, komunikaty o napadachTak
html/locales.jsTeksty w panelach i oknie sklepu, dla wszystkich dwunastu językówCzytelny
html/index.html, style.css, script.jsPanele i okno sklepuCzytelny
list/peds.luaModele pedów oferowane w paneluZaszyfrowany (Escrow)
mic_shopcreator.sqlDziewięć tabel, importowanych jednorazowoTak
client.lua, server.luaLogika sklepówZaszyfrowany (Escrow)

OpcjaCo robiDomyślnie
Config.LocaleJęzyk, w grze i w panelach. Zobacz Języki'en'
Config.Framework'esx' lub 'qbcore'. Nie jest wykrywany automatycznie. Na QBox użyj 'qbcore' — QBox uruchamia zasoby QBCore przez swoją warstwę zgodności'esx'
Config.CommandKomenda otwierająca panel Shop Creatora'shopcreator'
Config.IdentifierTypePo czym rozpoznawani są właściciele i pracownicy: 'discord', 'license', 'esx' lub 'citizenid'. Zobacz Instalacja'discord'
OpcjaCo robiDomyślnie
Config.Interaction'ox_target', 'qb-target' lub 'default' (podpowiedź pomocy i E)'ox_target'
Config.RadiusInteractPrzy 'default' — jak blisko w metrach musi stać gracz2.0
Config.SpawnNPCfalse nie tworzy sprzedawców: miejsce oznacza wtedy marker (przy 'default') lub sfera targetu. Brak sprzedawcy oznacza też, że nie ma kogo okradaćtrue
Config.DefaultPedModel używany, gdy lokalizacja go nie ma lub ma nieprawidłowy'a_f_m_bevhills_01'
Config.PedSpawnDistanceSprzedawcy istnieją tylko wtedy, gdy gracz znajduje się w tej odległości (w metrach)20.0
OpcjaCo robiDomyślnie
Config.CategoriesKategorie oferowane przy dodawaniu produktu; okno sklepu grupuje według nich produktyitems, weapons, misc
Config.InventoryImagePathLista folderów z obrazkami. Dla każdego produktu okno próbuje po kolei wczytać <item name>.png z każdego folderu i używa pierwszego, który się załadujenui://ox_inventory/web/images/
Config.AllowEmployeesAddProductsW sklepach należących do graczy — czy pracownicy mogą dodawać nowe produkty. Właściciele zawsze mogą; pracownicy zawsze mogą zarządzać istniejącymifalse

Nie używasz ox_inventory? Wskaż w Config.InventoryImagePath folder z obrazkami swojego ekwipunku, na przykład nui://qb-inventory/html/images/. Dodaj drugi wpis, jeśli obrazki są rozproszone po kilku folderach.

OpcjaCo robiDomyślnie
Config.BlacklistWeaponsMiała to być lista broni, które nie mogą rozpocząć napadu. Ta wersja jej nie odczytuje: napad zaczyna każda broń, a gołe pięści nigdyweapon_unarmed, weapon_nightstick, weapon_stungun
Config.RobberyNotifyJobsPrace alarmowane po rozpoczęciu napadupolice
Config.PoliceAlert"default" alarmuje powyższe prace powiadomieniem i blipem na minutę. "custom" wywołuje zamiast tego TriggerPoliceAlert w bridge/server.lua"default"
Config.RobberyCooldownZapasowy cooldown dla sklepu, który nie ma zapisanego własnego. Kod liczy go w minutach, tak jak pole dla poszczególnych sklepów (komentarz w config.lua mówi o sekundach)300
Config.TakeRobberyMoneyFromVaultW sklepach należących do graczy nagrody pieniężne pochodzą z sejfu sklepu — i kończą się, gdy jest pustytrue
OpcjaCo robiDomyślnie
Config.ScreenshotDołącza do logów Discord zrzut ekranu gracza. Wymaga uruchomionego screenshot-basictrue

Sam adres URL webhooka ustawia się osobno dla każdego sklepu w panelu, nie tutaj.


KomendaKto może jej użyćCo robi
/shopcreatorACE mic_shop.openOtwiera panel Shop Creatora. Nazwę zmienisz przez Config.Command, a klawisz możesz jak dla każdej komendy przypisać w ustawieniach klawiszy FiveM

Właściciele i pracownicy sklepów nie potrzebują żadnego uprawnienia: okno sklepu pokazuje im przycisk zębatki do Shop Settings, gdy otwierają sklep, który posiadają lub w którym pracują.


W zestawie jest dwanaście języków: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar i nl. Teksty znajdują się w dwóch miejscach, a oba zależą od Config.Locale:

  • locales/<code>.lua — to, co pokazuje gra: powiadomienia, podpowiedzi, komunikaty o napadach.
  • html/locales.js — to, co pokazują panele i okno sklepu, po jednym bloku na język.

Dodawanie języka:

  1. Skopiuj locales/en.lua do locales/<code>.lua i przetłumacz tekst po prawej stronie każdej linii. Zachowaj klucze oraz wszystkie %s.
  2. Dodaj locales/<code>.lua do shared_scripts w fxmanifest.lua, obok pozostałych, aby gracze go pobierali.
  3. W html/locales.js skopiuj blok 'en', zmień jego nazwę na swój kod i przetłumacz go.
  4. Ustaw Config.Locale na swój kod, wpisz refresh i zrestartuj.

Klucz, którego brakuje w twoim pliku Lua, pojawi się w grze jako Translation not found: <key>.


Cztery otwarte pliki w bridge/. Zachowaj nazwy funkcji — kod sklepu wywołuje je po nazwie.

bridge/server.lua — jeden blok dla ESX, jeden dla QBCore, wybierany przez Config.Framework.

FunkcjaDo czego służy
GetPlayer, GetPlayerJobObiekt gracza i jego praca
GetMoney, AddMoney, RemoveMoneyGotówka
GetAccount, AddAccountMoney, RemoveAccountMoneyNazwane konta: bank, black_money
GetInventoryItem, AddInventoryItem, RemoveInventoryItemPrzedmioty. Odczyt przez ox_inventory, gdy jest uruchomiony
GetPlayerInventoryEkwipunek właściciela, wyświetlany podczas zaopatrywania sklepu
ShowNotificationPowiadomienia po stronie serwera
RegisterServerCallbackCallbacki przez ESX lub QBCore
TriggerPoliceAlert(x, y, z, shopLabel)Wywoływana przy każdym napadzie, gdy Config.PoliceAlert = "custom". Domyślnie pusta — wstaw tu wywołanie swojego dispatchu

bridge/client.lua — ShowNotification, ShowHelpNotification, GetPlayerData i TriggerServerCallback. Na QBCore ShowHelpNotification jest pusta; uzupełnij ją własnym wywołaniem tekstu pomocy lub draw-text, jeśli używasz Config.Interaction = 'default' albo chcesz widzieć podpowiedź z zaproszeniem dla pracownika.

bridge/target.lua — dodaje opcję “otwórz sklep” do każdego sprzedawcy (lub do małej sfery, gdy Config.SpawnNPC jest wyłączone) dla ox_target lub qb-target i usuwa je ponownie, gdy sklepy się zmieniają.

Własny dispatch policji: ustaw Config.PoliceAlert = "custom" i wpisz alarm swojego zasobu dispatchu wewnątrz TriggerPoliceAlert w bridge/server.lua. Otrzymuje on współrzędne sprzedawcy i nazwę sklepu.


Exporty klienta do otwierania sklepów z innego zasobu:

ExportArgumentyCo robi
OpenShopID sklepu, ID lokalizacjiOtwiera okno tego sklepu, z uwzględnieniem jego cooldownu i ograniczenia pracy
OpenShopAsEmployeeID sklepu, ID lokalizacjiTo samo co OpenShop; zębatka Shop Settings pojawia się, jeśli gracz jest tam właścicielem lub pracuje
OpenShopAsOwner—Otwiera panel Shop Creatora, jeśli gracz ma mic_shop.open

Zasoby targetu mogą też wywołać event klienta mic_shopcreator:client:openShop, przekazując w danych shopId i locationId — tak działają wbudowane opcje targetu. ID sklepów i lokalizacji to te widoczne w panelu.