Przejdź do głównej zawartości

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.


Plik lub folderZa co odpowiadaOtwarty?
config.luaWszystkie ustawienia opisane na tej stronie, funkcja powiadomień, przedmioty oraz smakiOtwarty
locales/*.luaWszystkie teksty: menu, etykiety targetu, komunikaty. Jeden plik na językOtwarty
server_functions.luaPobieranie gracza, dodawanie, usuwanie i sprawdzanie przedmiotów, rejestracja używalnych przedmiotów, callback listy smaków i ReduceStressOtwarty
client/client_functions.luaOdczytywanie danych gracza oraz sprawdzanie pracy przy otwieraniu menu konfiguracjiOtwarty
target/target.luaWszystkie opcje targetu dla sziszy i mebli (zarówno dla ox_target, jak i qb-target)Otwarty
client/client.lua, server/server.lua, locale.luaStawianie obiektów, wąż, dym, przypisanie właściciela oraz zapasyZaszyfrowany (Escrow)
html/Menu konfiguracji: index.html, style.css, script.jsZwykłe pliki
inventory_items/Gotowe definicje przedmiotów dla ESX, ox_inventory oraz QBCoreMateriały pomocnicze
inventory_images/Po jednej ikonie dla każdego przedmiotuZasoby graficzne
mic_hookah_prop/stream/Dziesięć modeli sziszyModele, osobny zasób

OpcjaCo robiDomyślnie
Config.LocaleJęzyken
Config.Frameworkesx, qbcore lub qboxesx
Config.ESXResourceNameNazwa folderu zasobu ESXes_extended
Config.QBResourceNameNazwa folderu zasobu QBCoreqb-core
Config.QBoxResourceNameNazwa folderu zasobu QBoxqbx_core
Config.Targetox_target lub qb-targetox_target
Config.QBTargetResourceNameNazwa folderu zasobu qb-targetqb-target
Config.InventoryImagePathŚcieżka, z której menu konfiguracji wczytuje ikony smakównui://ox_inventory/web/images/

OpcjaCo robiDomyślnie
Config.AdminGroupsGrupy, które mogą otwierać menu i podnosić dowolną sziszę lub mebel. false oznacza, że każdy jest traktowany jak adminfalse
Config.AllowedJobsPrace, 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:

KtoOtwórz menu konfiguracjiPodnieśChwyć wąż
Gracz, który postawił obiekttak (jeśli jego praca jest dozwolona)taktak
Grupa administracyjnatak (jeśli jego praca jest dozwolona)taktak
Każdy inny gracznienietak

Config.AllowedJobs chroni wyłącznie menu konfiguracji. Każdy może chwycić wąż i palić z rozpalonej sziszy.


OpcjaCo robiDomyślnie
Config.MaxActiveTimeCo oznacza “pełny” dla węgla i wody. Jeden hookah_coal lub hookah_water napełnia sziszę do tej wartości1800
Config.ConsumptionPerPuffIle jednostek charcoal oraz water zużywa każde zaciągnięcie10 i 10
Config.MaxPuffsPerSessionWyliczane z dwóch powyższych (1800 ÷ 10 = 180). Tylko informacyjnie — skrypt nie odczytuje tego pola180
Config.MaxHoseDistanceMaksymalna długość węża w metrach przed jego wypięciem3.5
Config.MaxSimultaneousUsersZamierzony limit osób palących jednocześnie z tej samej sziszy4
Config.StressWywołuje ReduceStress przy każdym zaciągnięciutrue

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.


OpcjaCo robiDomyślnie
Config.ParticleUżywana cząsteczka: słownik (dict) oraz nazwa (name)scr_recartheft / scr_wheel_burnout
Config.VapeExhaleRozmiar chmury dymu0.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.


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:

PoleCo robi
LabelNazwa wyświetlana w menu konfiguracji
SmokeColorKolor dymu w formacie R, G, B
ScreenEffectNazwa efektu ekranowego GTA odtwarzanego u palącego gracza lub false dla braku efektu
EffectDurationCzas 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.


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.


Aby zmienićEdytuj
Niestandardowy frameworkObiekt frameworka na dole config.lua oraz funkcje w server_functions.lua i client/client_functions.lua
Inny ekwipunekFunkcje AddItem, RemoveItem i HasItem w server_functions.lua oraz rejestrację używalnych przedmiotów poniżej nich
Inny zasób targetutarget/target.lua — listy opcji są wspólne, różnią się tylko dwa wywołania addModel / AddTargetModel
Etykiety, ikony lub dystans targetutarget/target.lua dla ikon i dystansu, locales/ dla etykiet
Zasady sprawdzania pracyCheckJobAccess 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.


Klawisz lub komendaKiedyCo robi
ETrzymając sziszęRozpoczyna ustawianie obiektu
XTrzymając sziszęChowa sziszę bez stawiania
Kółko myszyPodczas ustawianiaObraca podgląd
Strzałka w górę / w dółPodczas ustawianiaPodnosi lub obniża podgląd
EPodczas ustawianiaStawia obiekt na ziemi
XPodczas ustawianiaAnuluje ustawianie
ETrzymając wąż rozpalonej sziszyBierze bucha
X (“Hookah - Stand Up X”)SiedzącWstaje z krzesła. Można zmienić przypisanie w ustawieniach klawiszy FiveM
/hookah:chair:stand_upSiedzącTo samo, jako komenda