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.
Który plik za co odpowiada
Dział zatytułowany „Który plik za co odpowiada”| Plik | Za co odpowiada | Otwarty? |
|---|---|---|
config.lua | Framework, język, interakcja, domyślny ped, komenda, obrazki, kategorie, zasady napadów, identyfikatory | Tak |
bridge/server.lua | Pieniądze, konta, przedmioty, ekwipunek, prace, powiadomienia, callbacki oraz własny alarm dla policji | Tak |
bridge/client.lua | Powiadomienia, podpowiedzi pomocy, dane gracza i callbacki po stronie klienta | Tak |
bridge/target.lua | Jak sprzedawcy i miejsca sklepów są dodawane do ox_target lub qb-target | Tak |
bridge/utils.lua | Odczytuje identyfikatory gracza (Steam, licencja, Discord, FiveM, Xbox) | Tak |
locales/*.lua | Teksty w grze: powiadomienia, podpowiedzi, komunikaty o napadach | Tak |
html/locales.js | Teksty w panelach i oknie sklepu, dla wszystkich dwunastu języków | Czytelny |
html/index.html, style.css, script.js | Panele i okno sklepu | Czytelny |
list/peds.lua | Modele pedów oferowane w panelu | Zaszyfrowany (Escrow) |
mic_shopcreator.sql | Dziewięć tabel, importowanych jednorazowo | Tak |
client.lua, server.lua | Logika sklepów | Zaszyfrowany (Escrow) |
config.lua
Dział zatytułowany „config.lua”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Locale | Ję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.Command | Komenda otwierająca panel Shop Creatora | 'shopcreator' |
Config.IdentifierType | Po czym rozpoznawani są właściciele i pracownicy: 'discord', 'license', 'esx' lub 'citizenid'. Zobacz Instalacja | 'discord' |
Sprzedawcy i interakcja
Dział zatytułowany „Sprzedawcy i interakcja”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Interaction | 'ox_target', 'qb-target' lub 'default' (podpowiedź pomocy i E) | 'ox_target' |
Config.RadiusInteract | Przy 'default' — jak blisko w metrach musi stać gracz | 2.0 |
Config.SpawnNPC | false nie tworzy sprzedawców: miejsce oznacza wtedy marker (przy 'default') lub sfera targetu. Brak sprzedawcy oznacza też, że nie ma kogo okradać | true |
Config.DefaultPed | Model używany, gdy lokalizacja go nie ma lub ma nieprawidłowy | 'a_f_m_bevhills_01' |
Config.PedSpawnDistance | Sprzedawcy istnieją tylko wtedy, gdy gracz znajduje się w tej odległości (w metrach) | 20.0 |
Produkty
Dział zatytułowany „Produkty”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Categories | Kategorie oferowane przy dodawaniu produktu; okno sklepu grupuje według nich produkty | items, weapons, misc |
Config.InventoryImagePath | Lista 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ładuje | nui://ox_inventory/web/images/ |
Config.AllowEmployeesAddProducts | W sklepach należących do graczy — czy pracownicy mogą dodawać nowe produkty. Właściciele zawsze mogą; pracownicy zawsze mogą zarządzać istniejącymi | false |
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.
| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.BlacklistWeapons | Miał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 nigdy | weapon_unarmed, weapon_nightstick, weapon_stungun |
Config.RobberyNotifyJobs | Prace alarmowane po rozpoczęciu napadu | police |
Config.PoliceAlert | "default" alarmuje powyższe prace powiadomieniem i blipem na minutę. "custom" wywołuje zamiast tego TriggerPoliceAlert w bridge/server.lua | "default" |
Config.RobberyCooldown | Zapasowy 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.TakeRobberyMoneyFromVault | W sklepach należących do graczy nagrody pieniężne pochodzą z sejfu sklepu — i kończą się, gdy jest pusty | true |
| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Screenshot | Dołącza do logów Discord zrzut ekranu gracza. Wymaga uruchomionego screenshot-basic | true |
Sam adres URL webhooka ustawia się osobno dla każdego sklepu w panelu, nie tutaj.
Komendy i uprawnienia
Dział zatytułowany „Komendy i uprawnienia”| Komenda | Kto może jej użyć | Co robi |
|---|---|---|
/shopcreator | ACE mic_shop.open | Otwiera 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:
- Skopiuj
locales/en.luadolocales/<code>.luai przetłumacz tekst po prawej stronie każdej linii. Zachowaj klucze oraz wszystkie%s. - Dodaj
locales/<code>.luadoshared_scriptswfxmanifest.lua, obok pozostałych, aby gracze go pobierali. - W
html/locales.jsskopiuj blok'en', zmień jego nazwę na swój kod i przetłumacz go. - Ustaw
Config.Localena swój kod, wpiszrefreshi 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.
| Funkcja | Do czego służy |
|---|---|
GetPlayer, GetPlayerJob | Obiekt gracza i jego praca |
GetMoney, AddMoney, RemoveMoney | Gotówka |
GetAccount, AddAccountMoney, RemoveAccountMoney | Nazwane konta: bank, black_money |
GetInventoryItem, AddInventoryItem, RemoveInventoryItem | Przedmioty. Odczyt przez ox_inventory, gdy jest uruchomiony |
GetPlayerInventory | Ekwipunek właściciela, wyświetlany podczas zaopatrywania sklepu |
ShowNotification | Powiadomienia po stronie serwera |
RegisterServerCallback | Callbacki 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
Dział zatytułowany „Exporty”Exporty klienta do otwierania sklepów z innego zasobu:
| Export | Argumenty | Co robi |
|---|---|---|
OpenShop | ID sklepu, ID lokalizacji | Otwiera okno tego sklepu, z uwzględnieniem jego cooldownu i ograniczenia pracy |
OpenShopAsEmployee | ID sklepu, ID lokalizacji | To 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.