Personalizacja
Zachowanie jest w config.lua. Wszystko, co dotyka twojego frameworka, powiadomień lub tego, co faktycznie robi dany efekt, znajduje się w folderze bridge/, który jest otwarty właśnie z tego powodu.
Który plik za co odpowiada
Dział zatytułowany „Który plik za co odpowiada”| Plik lub folder | Za co odpowiada | Otwarty? |
|---|---|---|
config.lua | Każde ustawienie z tej strony oraz lista vape’ów | Otwarty |
locales/*.lua | Teksty powiadomień, jeden plik na język | Otwarty |
bridge/client_bridge.lua | Wykrywanie frameworka po stronie klienta, powiadomienia, pasek postępu i to, co robi każdy efekt | Otwarty |
bridge/server_bridge.lua | Wykrywanie frameworka po stronie serwera, usuwanie pustego vape’a, sprawdzanie ekwipunku oraz hak stresu OnVapePuff | Otwarty |
bridge/stress.lua | Starsza kopia haka stresu. Manifest jej nie wczytuje; edytuj zamiast niej server_bridge.lua | Otwarty |
client/client.lua | Wyjmowanie vape’a, zaciągnięcie, dym i jego synchronizacja | Zaszyfrowany (Escrow) |
server.lua | Rejestruje każdy vape jako używalny przedmiot i przekazuje dym | Zaszyfrowany (Escrow) |
html/ | Pasek postępu: index.html, style.css, script.js | Zwykłe pliki |
stream/ | Dziesięć modeli vape’ów i def_props.ytyp | Zasoby |
inventory_items/ | Gotowe definicje przedmiotów dla ESX, ox_inventory i QBCore | Materiały pomocnicze |
inventory_images/ | Po jednej ikonie dla każdego przedmiotu | Zasoby |
Ustawienia ogólne
Dział zatytułowany „Ustawienia ogólne”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Locale | Język powiadomień | en |
Config.ShowNotifications | Czy w ogóle pokazywać powiadomienia. Wyłączone oznacza brak komunikatów “took out”, “on cooldown”, “empty” i o mocach | false |
Config.EnableMaxPuffs | Vape’y wyczerpują się po swojej liczbie puffs | true |
Config.RemoveVapeCommand | Komenda czatu, która chowa vape’a | vape |
Config.PuffKey | Domyślny klawisz zaciągnięcia | E |
Config.DisableCombatButtons | Blokuje przyciski walki (atak i celowanie), gdy wydobywa się dym | true |
Config.Stress | Wywołuje hak stresu przy każdym zaciągnięciu (zobacz Stres) | true |
Config.PuffKey to wartość domyślna. Zaciągnięcie to przypisanie klawisza FiveM o nazwie “Vape Puff”, więc każdy gracz może je zmienić w Ustawienia › Key Bindings › FiveM, a gdy gracz ma już zapisane przypisanie, zmiana Config.PuffKey nie wpływa już na niego.
Zdrowie, pancerz i szybkość
Dział zatytułowany „Zdrowie, pancerz i szybkość”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.SpeedVapeInfiniteStamina | Wytrzymałość nie spada podczas efektu szybkości | true |
Config.StaticHealth | false: każde zaciągnięcie zdrowia dodaje Config.Health. true: zaciągnięcie podnosi zdrowie do Config.Health, jeśli jest niższe | false |
Config.Health | Dodawana ilość albo poziom, do którego podnosimy. Przy ustawieniu statycznym użyj 101–200, czyli skali zdrowia w grze | 10 |
Config.StaticArmor | To samo dla pancerza: dodawanie lub podnoszenie do poziomu | false |
Config.Armor | Dodawana ilość albo poziom, do którego podnosimy (maksymalnie 100) | 10 |
Zdrowie jest zawsze utrzymywane w przedziale od 100 do 200, a pancerz na poziomie 100 lub niższym.
| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.VapeExhale | Rozmiar cząsteczki dymu | 0.4 |
Config.SmokeOpacity | Jak gęsty jest dym, od 0.0 do 1.0 | 1.0 |
Config.SmokeDelay | Sekundy między animacją zaciągnięcia a pojawieniem się dymu | 1.5 |
Config.Particle | Używana cząsteczka: dict i name. Domyślnie dym z palenia gumy ze scr_recartheft | scr_recartheft / scr_wheel_burnout |
Config.SmokeOffset | Skąd dym się zaczyna względem głowy: PosX, PosY, PosZ, RotX, RotY, RotZ | 0.05, 0.0, 0.5, 0, 0, 0 |
Każda chmura utrzymuje się 1,5 sekundy i jest widoczna dla graczy w promieniu 30 metrów.
Vape’y — Config.Vapes
Dział zatytułowany „Vape’y — Config.Vapes”Każdy wpis to nazwa przedmiotu → ustawienia. Pełna dołączona lista znajduje się w 🎒 Przedmioty.
| Pole | Co robi |
|---|---|
prop | Który model jest trzymany: mic_black, mic_blue, mic_green, mic_lightblue, mic_orange, mic_pink, mic_purple, mic_red, mic_white, mic_yellow |
Label | Nazwa używana na pasku postępu |
SmokeColor | Kolor R, G, B albo słowo Rainbow dla zmieniających się kolorów |
Cooldown | Sekundy, zanim ten vape będzie można znowu zaciągnąć |
puffs | Liczba zaciągnięć, zanim się wyczerpie i jedna sztuka zostanie zabrana z ekwipunku |
EffectDuration | Sekundy, przez które trwa moc. 0 dla smaków |
ShowProgress | Pokaż pasek postępu, dopóki trwa moc. Wyłączone w każdym dołączonym vape’ie |
SpeedMultiplier | Tylko dla speed_vape (sprint) i carspeed_vape (silnik) |
power | Opcjonalne. Lista efektów uruchamianych razem, każdy z własną liczbą (zobacz niżej) |
Jaki efekt ma vape
Dział zatytułowany „Jaki efekt ma vape”O efekcie decyduje nazwa przedmiotu. invisibility_vape czyni cię niewidzialnym, bo nazywa się invisibility_vape; każda inna nazwa bez listy power to smak.
Nazwy efektów, które rozumie bridge: invisibility_vape, speed_vape, superjump_vape, teleport_vape, invincibility_vape, health_vape (lub health), armor_vape (lub armor), carspeed_vape, freeze_vape, gravity_vape — oraz random_vape, który wybiera jeden z pozostałych.
Łączenie efektów przez power
Dział zatytułowany „Łączenie efektów przez power”Daj vape’owi listę power, a przy każdym zaciągnięciu uruchomi każdy efekt z niej, niezależnie od tego, jak się nazywa. Liczba obok każdego efektu to jego czas trwania w sekundach, z wyjątkiem health i armor, gdzie jest to ilość. vape_custom w configu to działający przykład: zdrowie 10, pancerz 10, szybkość przez 10 sekund.
Dodawanie vape’a
Dział zatytułowany „Dodawanie vape’a”- Skopiuj istniejący wpis w
Config.Vapesi nadaj mu nową nazwę przedmiotu. - Wybierz
prop,SmokeColor,puffsiCooldown. Dla mocy użyj jednej z powyższych nazw efektów jako nazwy przedmiotu albo dodaj listępower. - Dodaj przedmiot do swojego ekwipunku tak samo jak pozostałe, wraz z ikoną.
- Wpisz
refresh, a potemrestart mic_vape.
Dodatkowe efekty, które rozumie bridge
Dział zatytułowany „Dodatkowe efekty, które rozumie bridge”freeze_vape (nie możesz się ruszać) i gravity_vape (niska grawitacja, wolniejszy ruch) są obsługiwane w bridge/client_bridge.lua, a ich definicje przedmiotów są już w inventory_items/, ale nie mają wpisu w Config.Vapes. Dodaj wpis dla każdego — skopiuj superjump_vape i zmień nazwę — a będą działać.
transform_vape też jest w plikach przedmiotów, ale wymaga listy Config.TransformAnimals, której dołączony config nie ma. Pomiń go, chyba że jesteś gotowy napisać tę listę i ją przetestować.
Przy Config.Stress = true każde zaciągnięcie wywołuje OnVapePuff w bridge/server_bridge.lua z serwerowym ID gracza. Domyślnie ta funkcja tylko wypisuje linię w konsoli serwera. W środku znajdują się zakomentowane przykłady dla metadanych QBCore i esx_status: odkomentuj ten, który pasuje, albo wywołaj tam własny HUD lub zasób od stresu.
Jeśli nie używasz stresu, ustaw Config.Stress = false, a konsola będzie milczeć.
W locales/ znajduje się dziewięć plików: en, de, es, fr, it, pl, pt, ru, tr. Wybierz jeden przez Config.Locale.
Linia car_speed — pokazywana, gdy zadziała vape z prędkością auta — brzmi w dołączonych plikach “No waypoint set!”. Przeredaguj ją w pliku swojego języka.
Aby dodać język: skopiuj locales/en.lua, zmień klucz na górze na swój kod, przetłumacz i dodaj plik do obu list client_scripts i server_scripts w fxmanifest.lua. Ustaw Config.Locale, wpisz refresh i zrestartuj.
Wszystko, co zależy od twojego serwera, znajduje się w bridge/.
| Plik | Co tam zmienić |
|---|---|
bridge/client_bridge.lua | ShowNotification — kieruje komunikaty do twojego zasobu powiadomień. Kod efektów — zmienia działanie mocy lub dodaje nową nazwę efektu. ShowProgressBar / HideProgressBar dla paska |
bridge/server_bridge.lua | OnVapePuff dla stresu. Usuwanie pustego vape’a i sprawdzanie, czy gracz nadal go ma — dostosuj te dwie funkcje do ekwipunku, który nie korzysta z własnych funkcji przedmiotów ESX ani QBCore |
Oba pliki znajdują framework w ten sam sposób: es_extended, jeśli jest uruchomiony, w przeciwnym razie qb-core — tak samo wykrywany jest QBox, przez swoją zgodność z QBCore. Dla innego frameworka dodaj gałąź tam oraz w dwóch funkcjach przedmiotów obok.
Komendy i klawisze
Dział zatytułowany „Komendy i klawisze”| Komenda lub klawisz | Co robi | Ustawiane w |
|---|---|---|
| Użycie przedmiotu | Wyjmuje vape’a; ponowne użycie go chowa | Ekwipunek |
| E (“Vape Puff”) | Zaciąga się | Config.PuffKey, potem przypisania klawiszy każdego gracza |
/vape | Chowa vape’a | Config.RemoveVapeCommand |
Vape jest też chowany, gdy gracz nie ma już przy sobie przedmiotu; zasób sprawdza to co 2,5 sekundy.