Personalizacja
Ustawienia znajdują się w pliku config.lua. Pliki odpowiadające za komunikację z frameworkiem, ekwipunkiem oraz zasobem targetu są otwarte, dzięki czemu serwery z niestandardowymi rozwiązaniami mogą je dostosować bez ingerencji w zaszyfrowany rdzeń skryptu.
Który plik odpowiada za co
Dział zatytułowany „Który plik odpowiada za co”| Plik lub folder | Za co odpowiada | Otwarty? |
|---|---|---|
config.lua | Wszystkie ustawienia opisane na tej stronie, funkcja powiadomień, przedmioty oraz smaki | Otwarty |
locales/*.lua | Wszystkie teksty: menu, etykiety targetu, komunikaty. Jeden plik na język | Otwarty |
server_functions.lua | Pobieranie gracza, dodawanie, usuwanie i sprawdzanie przedmiotów, rejestracja używalnych przedmiotów, callback listy smaków i ReduceStress | Otwarty |
client/client_functions.lua | Odczytywanie danych gracza oraz sprawdzanie pracy przy otwieraniu menu konfiguracji | Otwarty |
target/target.lua | Wszystkie opcje targetu dla sziszy i mebli (zarówno dla ox_target, jak i qb-target) | Otwarty |
client/client.lua, server/server.lua, locale.lua | Stawianie obiektów, wąż, dym, przypisanie właściciela oraz zapasy | Zaszyfrowany (Escrow) |
html/ | Menu konfiguracji: index.html, style.css, script.js | Zwykłe pliki |
inventory_items/ | Gotowe definicje przedmiotów dla ESX, ox_inventory oraz QBCore | Materiały pomocnicze |
inventory_images/ | Po jednej ikonie dla każdego przedmiotu | Zasoby graficzne |
mic_hookah_prop/stream/ | Dziesięć modeli sziszy | Modele, osobny zasób |
Framework, target i obrazki
Dział zatytułowany „Framework, target i obrazki”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Locale | Język | en |
Config.Framework | esx, qbcore lub qbox | esx |
Config.ESXResourceName | Nazwa folderu zasobu ESX | es_extended |
Config.QBResourceName | Nazwa folderu zasobu QBCore | qb-core |
Config.QBoxResourceName | Nazwa folderu zasobu QBox | qbx_core |
Config.Target | ox_target lub qb-target | ox_target |
Config.QBTargetResourceName | Nazwa folderu zasobu qb-target | qb-target |
Config.InventoryImagePath | Ścieżka, z której menu konfiguracji wczytuje ikony smaków | nui://ox_inventory/web/images/ |
| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.AdminGroups | Grupy, które mogą otwierać menu i podnosić dowolną sziszę lub mebel. false oznacza, że każdy jest traktowany jak admin | false |
Config.AllowedJobs | Prace, które mogą otwierać menu konfiguracji. false oznacza dowolną pracę | false |
Domyślnie każdy gracz może zarządzać cudzą sziszą. Aby każda szisza należała wyłącznie do gracza, który ją postawił, wypisz grupy administracyjne w Config.AdminGroups — na przykład admin oraz superadmin. Na ESX lista jest porównywana z grupą gracza; na QBCore i QBox z polem permission gracza.
Gdy lista jest ustawiona:
| Kto | Otwórz menu konfiguracji | Podnieś | Chwyć wąż |
|---|---|---|---|
| Gracz, który postawił obiekt | tak (jeśli jego praca jest dozwolona) | tak | tak |
| Grupa administracyjna | tak (jeśli jego praca jest dozwolona) | tak | tak |
| Każdy inny gracz | nie | nie | tak |
Config.AllowedJobs chroni wyłącznie menu konfiguracji. Każdy może chwycić wąż i palić z rozpalonej sziszy.
Palenie i zapasy
Dział zatytułowany „Palenie i zapasy”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.MaxActiveTime | Co oznacza “pełny” dla węgla i wody. Jeden hookah_coal lub hookah_water napełnia sziszę do tej wartości | 1800 |
Config.ConsumptionPerPuff | Ile jednostek charcoal oraz water zużywa każde zaciągnięcie | 10 i 10 |
Config.MaxPuffsPerSession | Wyliczane z dwóch powyższych (1800 ÷ 10 = 180). Tylko informacyjnie — skrypt nie odczytuje tego pola | 180 |
Config.MaxHoseDistance | Maksymalna długość węża w metrach przed jego wypięciem | 3.5 |
Config.MaxSimultaneousUsers | Zamierzony limit osób palących jednocześnie z tej samej sziszy | 4 |
Config.Stress | Wywołuje ReduceStress przy każdym zaciągnięciu | true |
Szisza nie wypala się samoczynnie z upływem czasu: węgiel i woda zużywają się tylko wtedy, gdy ktoś się zaciąga. Gdy którykolwiek ze składników spadnie do zera, szisza gaśnie i wymaga uzupełnienia.
Funkcja ReduceStress w server_functions.lua otrzymuje serwerowe ID gracza przy każdym zaciągnięciu, gdy Config.Stress jest włączone. Domyślnie jest pusta i zawiera zakomentowane przykłady: event klienta, export lub event serwera z Twojego zasobu od stresu bądź HUD-u. Umieść tam swoje wywołanie.
| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Particle | Używana cząsteczka: słownik (dict) oraz nazwa (name) | scr_recartheft / scr_wheel_burnout |
Config.VapeExhale | Rozmiar chmury dymu | 0.5 |
W pliku konfiguracyjnym te dwie opcje są oznaczone jako “nie zmieniaj, chyba że wiesz, co robisz”. Każda chmura utrzymuje się przez trzy sekundy i jest widoczna dla graczy w promieniu 150 metrów.
Szisze, meble i smaki
Dział zatytułowany „Szisze, meble i smaki”Pełne listy znajdują się na stronie 🎒 Przedmioty.
Config.HookahItems — nazwa przedmiotu → model. Aby dodać nową sziszę, jej model musi być streamowany (na przykład w mic_hookah_prop/stream/ z odpowiednim wpisem w .ytyp), a następnie należy dodać linijkę tutaj oraz sam przedmiot do ekwipunku.
Config.PlaceableProps — nazwa przedmiotu → propModel, type (furniture) oraz isChair. Zadziała każdy prop z podstawowej wersji gry. Ustaw isChair = true przy każdym obiekcie, który ma oferować opcję Sit Down.
Config.Flavors — nazwa przedmiotu → ustawienia:
| Pole | Co robi |
|---|---|
Label | Nazwa wyświetlana w menu konfiguracji |
SmokeColor | Kolor dymu w formacie R, G, B |
ScreenEffect | Nazwa efektu ekranowego GTA odtwarzanego u palącego gracza lub false dla braku efektu |
EffectDuration | Czas trwania efektu ekranowego w sekundach |
W konfiguracji obok Config.Flavors znajduje się link do listy nazw efektów ekranowych. Aby dodać nowy smak, skopiuj istniejący wpis, nadaj mu nową nazwę przedmiotu i dodaj przedmiot wraz z ikoną do swojego ekwipunku.
Powiadomienia
Dział zatytułowany „Powiadomienia”Config.Notify w config.lua wysyła wszystkie komunikaty: ShowNotification na ESX, Functions.Notify na QBCore i QBox, a w pozostałych przypadkach wypisuje tekst w konsoli. Zastąp zawartość tej funkcji, aby korzystać z własnego systemu powiadomień.
W folderze locales/ znajduje się jedenaście plików: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Wybierz odpowiedni za pomocą Config.Locale.
Komentarz nad Config.Locale wspomina również o jp, ale plik japoński nie jest dołączony; ustawienie tej wartości spowoduje błąd “Locale [jp] does not exist”.
Każdy plik obejmuje menu konfiguracji, etykiety targetu oraz komunikaty. Kilka zwrotów jest wpisanych bezpośrednio w kodzie Lua zamiast w plikach językowych: podpowiedzi podczas ustawiania (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), komunikat “You are already placing an object” oraz “None” dla braku wybranego smaku.
Aby dodać język: skopiuj locales/en.lua, zmień klucz na górze na swój kod języka i przetłumacz teksty. Plik manifestu automatycznie wczytuje wszystko z folderu locales/, więc nie trzeba niczego dodatkowo rejestrować. Ustaw Config.Locale, wpisz refresh i zrestartuj zasób.
Dostosowanie do własnego serwera
Dział zatytułowany „Dostosowanie do własnego serwera”| Aby zmienić | Edytuj |
|---|---|
| Niestandardowy framework | Obiekt frameworka na dole config.lua oraz funkcje w server_functions.lua i client/client_functions.lua |
| Inny ekwipunek | Funkcje AddItem, RemoveItem i HasItem w server_functions.lua oraz rejestrację używalnych przedmiotów poniżej nich |
| Inny zasób targetu | target/target.lua — listy opcji są wspólne, różnią się tylko dwa wywołania addModel / AddTargetModel |
| Etykiety, ikony lub dystans targetu | target/target.lua dla ikon i dystansu, locales/ dla etykiet |
| Zasady sprawdzania pracy | CheckJobAccess w client/client_functions.lua |
Na QBCore oraz QBox z uruchomionym ox_inventory, plik server_functions.lua rejestruje również każdy przedmiot sziszy i mebla bezpośrednio przez hook użycia w ox_inventory, jako zabezpieczenie dla konfiguracji, w których mostek przedmiotów QBCore nie przekazuje zdarzenia użycia.
Klawisze i komendy
Dział zatytułowany „Klawisze i komendy”| Klawisz lub komenda | Kiedy | Co robi |
|---|---|---|
| E | Trzymając sziszę | Rozpoczyna ustawianie obiektu |
| X | Trzymając sziszę | Chowa sziszę bez stawiania |
| Kółko myszy | Podczas ustawiania | Obraca podgląd |
| Strzałka w górę / w dół | Podczas ustawiania | Podnosi lub obniża podgląd |
| E | Podczas ustawiania | Stawia obiekt na ziemi |
| X | Podczas ustawiania | Anuluje ustawianie |
| E | Trzymając wąż rozpalonej sziszy | Bierze bucha |
| X (“Hookah - Stand Up X”) | Siedząc | Wstaje z krzesła. Można zmienić przypisanie w ustawieniach klawiszy FiveM |
/hookah:chair:stand_up | Siedząc | To samo, jako komenda |