Dokumentacja ZeroDev Sound
ZeroDev Sound: poradnik instalacji
Ten zasób nie zawiera ani nie udostępnia żadnych integracji dźwięku lub muzyki od podmiotów trzecich. Muzyka odtwarzana jest wyłącznie z plików audio, które właściciel serwera doda do zasobu, oraz z wbudowanego radia GTA. Gracze nie mogą wpisywać linków. Dodawaj tylko dźwięk, który posiadasz lub do którego masz prawa do użytkowania i dystrybucji; streamowanie treści bez zezwolenia może naruszać Cfx.re Creator Platform License Agreement i prawo.
Głośniki, które gracze kupują, noszą, stawiają i łączą, oraz car audio, które budują we własnych autach. To pełna dokumentacja. Krótką wersję znajdziesz w docs/SETUP.md (5 kroków); problemy w docs/TROUBLESHOOTING.md; przy przejściu z 1.x w UPGRADING.md.
Spis treści 1. Wymagania 2. Instalacja 3. Przedmioty dla twojego ekwipunku 4. Pierwszy start: co powinieneś zobaczyć 5. Najczęściej zmieniane ustawienia 6. Sterowanie 7. Car audio 8. Źródła muzyki 9. Pulse Phone 10. Policja, sąsiedzi i admini 11. Języki 12. Rozwiązywanie problemów 13. Aktualizacja
1. Wymagania
| Wymagane | oxmysql. ZeroDev Sound tworzy własne tabele przy pierwszym starcie; nie ma pliku SQL do importu. |
| Framework | ESX Legacy, QBCore, Qbox albo żaden (standalone). Wykrywany sam. |
| Ekwipunek | ox_inventory, qb-inventory (także ps- i lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, ekwipunek ESX albo żaden. Wykrywany sam. |
| Opcjonalnie | ox_target albo qb-target (bez nich gracze dostają zamiast tego podpowiedź klawisza na ekranie). Pulse Phone 1.2.9 lub nowszy (dodaje aplikację Sound i radio samochodowe w Pulse Drive). pma-voice do mikrofonu: bez niego można trzymać mikrofon i w niego śpiewać, ale nikt nie usłyszy tego przez głośniki. |
Nic więcej: bez ox_lib, bez klucza API, bez konta Google.
Serwery Linux
Serwery Linux: używaj artefaktu Recommended, nie Latest. Na stronie pobierania serwera FiveM (docs.fivem.net/docs/server-download/) wybierz Linux i gałąź aktualizacji Recommended. Serwer na najnowszym artefakcie Linux crashował podczas ładowania (FXServer wypisał zrzut /proc/self/maps), a przejście na artefakt recommended to naprawiło. To jedyne zgłoszenie z Linuxa, jakie mamy; sami jeszcze nie uruchamialiśmy ZeroDev Sound na serwerze Linux.
Serwery Linux: używaj artefaktu Recommended, nie Latest. Na stronie pobierania serwera FiveM (docs.fivem.net/docs/server-download/) wybierz Linux i gałąź aktualizacji Recommended. Serwer na najnowszym artefakcie Linux crashował podczas ładowania (FXServer wypisał zrzut /proc/self/maps), a przejście na artefakt recommended to naprawiło. To jedyne zgłoszenie z Linuxa, jakie mamy; sami jeszcze nie uruchamialiśmy ZeroDev Sound na serwerze Linux.
Na serwerze standalone (bez frameworka) wszystko jest za darmo: sklep i części do auta nic nie kosztują.
2. Instalacja
Krok 1. Wrzuć folder. Umieść folder zerodev-sound w folderze resources (dowolny podfolder jest w porządku, na przykład resources/[zerodev]/zerodev-sound). Zachowaj nazwę folderu zerodev-sound: wpisy przedmiotów ox_inventory odwołują się do niego po tej nazwie.
Krok 2. Dodaj go do server.cfg, po bazie danych, frameworku i ekwipunku:
ensure oxmysql
ensure es_extended # or qb-core / qbx_core, or nothing on a standalone server
ensure ox_inventory # or your inventory
ensure ox_target # optional, or qb-target
ensure phone # optional: Pulse Phone
ensure zerodev-soundKrok 3. Daj adminom uprawnienie admina (bez limitu głośników, lista /soundadmin, zdalne zatrzymywanie i usuwanie):
add_ace group.admin zerodev.sound.admin allowKrok 4. Skonfiguruj przedmioty dla swojego ekwipunku: sekcja 3. Na ekwipunku ESX i na QBCore zrobi się to za ciebie.
Krok 5. Zrestartuj serwer (pełny restart, nie tylko resource, żeby każdy gracz wczytał modele) i sprawdź konsolę: sekcja 4.
3. Przedmioty dla twojego ekwipunku
Jest 12 przedmiotów: dziesięć głośników, statyw mikrofonowy i zestaw naprawczy.
| Nazwa przedmiotu | Etykieta | Waga |
|---|---|---|
zds_roam |
Przenośny głośnik Roam | 2 kg |
zds_room_shelf |
Głośnik półkowy | 4 kg |
zds_room_tower |
Kolumna podłogowa | 10 kg |
zds_room_ceiling |
Głośnik sufitowy | 2 kg |
zds_room_sub |
Domowy subwoofer | 8 kg |
zds_stage_pa |
Głośnik PA | 10 kg |
zds_stage_sub |
Subwoofer koncertowy | 15 kg |
zds_stage_array |
Głośnik line array | 12 kg |
zds_stage_monitor |
Monitor sceniczny | 6 kg |
zds_stage_mixer |
Mikser DJ-ski | 5 kg |
zds_stage_mic |
Statyw mikrofonowy | 3 kg |
zds_repair_kit |
Zestaw naprawczy do głośników | 0.6 kg |
Obrazki są w zerodev-sound/web/img/items/. Nigdy nie musisz zgadywać: gdy czegoś brakuje, konsola serwera wypisuje dokładne wpisy dla twojego ekwipunku i wymienia każdy obrazek, którego jeszcze nie ma na miejscu.
Jaki masz ekwipunek?
| Ekwipunek | Co robisz | Obrazki trafiają do |
|---|---|---|
| Ekwipunek ESX (ESX Legacy bez ox) | Nic. Przedmioty są dodawane do tabeli items przy starcie. |
Nie trzeba nic kopiować |
| ox_inventory (ESX, Qbox albo standalone) | Wklej blok ox_inventory do ox_inventory/data/items.lua, wewnątrz tabeli. Zrestartuj ox_inventory, potem zerodev-sound. |
Nie trzeba nic kopiować: wpisy wczytują obrazki z zerodev-sound |
| qb-inventory, ps-inventory, lj-inventory (QBCore) | Nic. Przedmioty są dodawane do shared items QBCore przy starcie. | Skopiuj web/img/items/*.png do <your inventory>/html/images/ |
| qs-inventory | Na QBCore wklej blok QBCore do qb-core/shared/items.lua. Na ESX wklej te same wpisy do qs-inventory/shared/items.lua. |
qs-inventory/html/images/ |
| codem-inventory | Dodaj 12 przedmiotów do codem-inventory/config/itemlist.lua z nazwami, etykietami i wagami z bloku QBCore. Na QBCore wykonaj też własny krok instalacji codem-inventory, który kieruje QBCore.Functions.UseItem na codem-inventory, bo inaczej przedmiotów nie da się używać. |
Folder obrazków przedmiotów codem-inventory |
| core_inventory | Nic. Przedmioty są dodawane za ciebie do shared items QBCore albo tabeli items w ESX. |
Folder obrazków przedmiotów core_inventory |
| origen_inventory | Dodaj 12 przedmiotów do origen_inventory/config/items.lua z nazwami, etykietami i wagami z bloku QBCore. |
Folder obrazków przedmiotów origen_inventory |
| tgiann-inventory | Dodaj 12 przedmiotów do tgiann-inventory/items/items.lua z nazwami, etykietami i wagami z bloku QBCore. |
inventory_images/images/ |
| Bez ekwipunku | Nic. Kupione i spakowane głośniki czekają w /sound pod Your speakers, z przyciskiem Set up. |
Nie trzeba nic kopiować |
Żeby dodać przedmioty do qb-core ręcznie, zamiast zostawić to skryptowi, wklej blok QBCore do qb-core/shared/items.lua.
Inny ekwipunek, który kopiuje jedno z tych API: ustaw Config.Inventory na ten (zobacz sekcję 5). Własny ekwipunek można podłączyć w server/bridge.lua, który jest czytelny: każdy ekwipunek to tam trzy małe funkcje (licz, dodaj, usuń).
Blok ox_inventory
Wklej wewnątrz tabeli return { ... } w ox_inventory/data/items.lua:
['zds_repair_kit'] = { label = 'Speaker Repair Kit', weight = 600, stack = false, close = true, description = 'Fixes a broken speaker. Use it next to one.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_repair_kit.png' } },
['zds_roam'] = { label = 'Roam Portable Speaker', weight = 2000, stack = false, close = true, description = 'Portable speaker with twin bass radiators. Carry it or set it down.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_roam.png' } },
['zds_room_ceiling'] = { label = 'Ceiling Speaker', weight = 2000, stack = false, close = true, description = 'Indoor. Round ceiling or wall speaker for background music in a business.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_ceiling.png' } },
['zds_room_shelf'] = { label = 'Shelf Speaker', weight = 4000, stack = false, close = true, description = 'Indoor. Bookshelf speaker: link several around a home or shop.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_shelf.png' } },
['zds_room_sub'] = { label = 'Home Subwoofer', weight = 8000, stack = false, close = true, description = 'Indoor. Cube subwoofer: link it to your indoor speakers for deep bass.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_sub.png' } },
['zds_room_tower'] = { label = 'Tower Speaker', weight = 10000, stack = false, close = true, description = 'Indoor. Floor-standing tower with two woofers: deep, clean sound for a whole room.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_tower.png' } },
['zds_stage_array'] = { label = 'Line Array Speaker', weight = 12000, stack = false, close = true, description = 'Concert. Line-array speaker for long throw over a big crowd. Stack them.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_array.png' } },
['zds_stage_mic'] = { label = 'Mic Stand', weight = 3000, stack = false, close = true, description = 'Concert. A mic on a boom stand: link it to your concert speakers, stand at it and sing through them (/soundmic).',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_mic.png' } },
['zds_stage_mixer'] = { label = 'DJ Mixer', weight = 5000, stack = false, close = true, description = 'Concert. Not a speaker: whoever stands at it runs every linked concert speaker (volume, bass, sound, timing).',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_mixer.png' } },
['zds_stage_monitor'] = { label = 'Stage Monitor', weight = 6000, stack = false, close = true, description = 'Concert. Wedge monitor so the DJ or band hears the mix on stage.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_monitor.png' } },
['zds_stage_pa'] = { label = 'PA Speaker', weight = 10000, stack = false, close = true, description = 'Concert. Powered 15" PA top on a tripod: link many for an event.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_pa.png' } },
['zds_stage_sub'] = { label = 'Concert Subwoofer', weight = 15000, stack = false, close = true, description = 'Concert. Double 18" sub cabinet: the bass you feel at a show.',
client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_sub.png' } },Blok QBCore
Format przedmiotów QBCore, który czytają qb-, ps-, lj- i qs-inventory:
['zds_repair_kit'] = { name = 'zds_repair_kit', label = 'Speaker Repair Kit', weight = 600, type = 'item', image = 'zds_repair_kit.png', unique = true, useable = true, shouldClose = true, description = 'Fixes a broken speaker. Use it next to one.' },
['zds_roam'] = { name = 'zds_roam', label = 'Roam Portable Speaker', weight = 2000, type = 'item', image = 'zds_roam.png', unique = true, useable = true, shouldClose = true, description = 'Portable speaker with twin bass radiators. Carry it or set it down.' },
['zds_room_ceiling'] = { name = 'zds_room_ceiling', label = 'Ceiling Speaker', weight = 2000, type = 'item', image = 'zds_room_ceiling.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Round ceiling or wall speaker for background music in a business.' },
['zds_room_shelf'] = { name = 'zds_room_shelf', label = 'Shelf Speaker', weight = 4000, type = 'item', image = 'zds_room_shelf.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Bookshelf speaker: link several around a home or shop.' },
['zds_room_sub'] = { name = 'zds_room_sub', label = 'Home Subwoofer', weight = 8000, type = 'item', image = 'zds_room_sub.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Cube subwoofer: link it to your indoor speakers for deep bass.' },
['zds_room_tower'] = { name = 'zds_room_tower', label = 'Tower Speaker', weight = 10000, type = 'item', image = 'zds_room_tower.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Floor-standing tower with two woofers: deep, clean sound for a whole room.' },
['zds_stage_array'] = { name = 'zds_stage_array', label = 'Line Array Speaker', weight = 12000, type = 'item', image = 'zds_stage_array.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Line-array speaker for long throw over a big crowd. Stack them.' },
['zds_stage_mic'] = { name = 'zds_stage_mic', label = 'Mic Stand', weight = 3000, type = 'item', image = 'zds_stage_mic.png', unique = true, useable = true, shouldClose = true, description = 'Concert. A mic on a boom stand: link it to your concert speakers, stand at it and sing through them (/soundmic).' },
['zds_stage_mixer'] = { name = 'zds_stage_mixer', label = 'DJ Mixer', weight = 5000, type = 'item', image = 'zds_stage_mixer.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Not a speaker: whoever stands at it runs every linked concert speaker (volume, bass, sound, timing).' },
['zds_stage_monitor'] = { name = 'zds_stage_monitor', label = 'Stage Monitor', weight = 6000, type = 'item', image = 'zds_stage_monitor.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Wedge monitor so the DJ or band hears the mix on stage.' },
['zds_stage_pa'] = { name = 'zds_stage_pa', label = 'PA Speaker', weight = 10000, type = 'item', image = 'zds_stage_pa.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Powered 15" PA top on a tripod: link many for an event.' },
['zds_stage_sub'] = { name = 'zds_stage_sub', label = 'Concert Subwoofer', weight = 15000, type = 'item', image = 'zds_stage_sub.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Double 18" sub cabinet: the bass you feel at a show.' },Jeśli zmieniłeś etykietę, cenę albo wagę w config/catalogue.lua, skopiuj wpisy z własnej konsoli: wypisuje je na podstawie twoich ustawień.
4. Pierwszy start: co powinieneś zobaczyć
W konsoli serwera
ZeroDev Sound wypisuje jedną ramkę sprawdzenia (wpisz soundcheck w konsoli serwera, żeby wypisać ją ponownie): baza danych i schemat, framework, pieniądze, ekwipunek i przedmioty, tabela garaży, targetowanie, Pulse Phone, modele, warsztaty montażu i ustawienia zmienione w grze. Każda linia, która nie jest OK, mówi, co zrobić; docs/SETUP.md pokazuje przykład, a docs/TROUBLESHOOTING.md wyjaśnia każdą linię.
- Linia frameworka podaje, co zostało znalezione. Jeśli to błąd, ustaw
Config.FrameworkalboConfig.Inventorywconfig/config.lua. - Żółta linia
Add these to ox_inventory/data/items.lua ...(albo... if these items are not in ... yet, add them), a po niej wpisy przedmiotów: wykonaj sekcję 3 dla swojego ekwipunku, potem zrestartuj. Komunikat ox_inventory znika, gdy przedmioty są już dodane. Na qs-, codem-, origen- i tgiann-inventory wpisy są wypisywane przy każdym starcie jako przypomnienie, niezależnie od tego, czy je dodałeś. - Żółta linia
Copy zds_....png from zerodev-sound/web/img/items into ...: tych obrazków nie ma jeszcze w folderze obrazków twojego ekwipunku. Linia podaje folder. Pulse Phone app not registered: ...: Pulse Phone działa, ale odrzucił aplikację. Zobacz sekcję 9.
W grze (pięć sprawdzeń)
- Mapa pokazuje blip ZeroDev Sound na Legion Square i blip Car audio bay przy Benny's.
- W sklepie przy stoisku z wystawionymi głośnikami stoi sprzedawca. Wyceluj w sprzedawcę (albo naciśnij E, gdy nie ma resource'a targetu) i kup Roam Portable Speaker.
- Użyj go z ekwipunku. Pojawi się w twoich rękach. Naciśnij E, otwórz Library i puść Night Drive (utwór demo dołączony do skryptu). Ludzie wokół ciebie go słyszą.
- Wsiądź do auta. Przez kilka pierwszych razy w rogu ekranu pojawia się informacja, który klawisz otwiera radio samochodowe (domyślnie K).
- Wjedź do warsztatu car audio jako kierowca i naciśnij E. Monter otwiera się na twoim aucie.
5. Najczęściej zmieniane ustawienia
W grze: /soundadmin > Settings zmienia najczęstsze ustawienia na żywo dla wszystkich (warsztaty montażu, kto może montować, które auta, ceny, maksymalna głośność, godziny ciszy, limity, sklep, policja i uszkodzenia). Są zapisywane w bazie i mają pierwszeństwo przed config.lua, dopóki nie naciśniesz Reset to config w panelu.
Wszystko jest w config/config.lua, chyba że zaznaczono inaczej. Produkty, ceny i części do aut są w config/catalogue.lua; fabryczne audio każdego auta jest w config/vehicles.lua.
| Co chcesz | Ustawienie |
|---|---|
| Wymusić framework albo ekwipunek | Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none) |
| Zmienić komendę pilota | Config.Command (domyślnie sound, czyli /sound) |
| Zmienić klawisz radia samochodowego | Config.HeadUnitKey (domyślnie K). Gracze mogą sami zmienić przypisanie w ustawieniach GTA > Key Bindings > FiveM. |
| Głośniki na gracza | Config.MaxPlacedPerPlayer (domyślnie 8). Admini nie mają limitu. |
| Głośniki w jednej połączonej grupie | Config.MaxLinkedPerGroup (domyślnie 16) |
| Z jakiej odległości się łączyć, z jakiej sterować | Config.PairRange (15 m), Config.ControlRange (80 m) |
| Przenieść sklep albo dodać więcej sklepów | Config.Shop.locations. Każda przyjmuje label, coords, blip i opcjonalnie heading (w którą stronę jest zwrócone stoisko) oraz clerk (model peda). Config.Shop.account to bank albo cash. Config.Shop.enabled = false usuwa sklep. |
| Ceny głośników | price przy każdym produkcie w config/catalogue.lua > Catalogue.Speakers. Cena zestawu naprawczego to Config.Damage.repairPrice. |
| Gdzie montuje się car audio | Config.Install.bays (każdy z label, coords, radius, blip). Domyślnie: jeden warsztat przy Benny's. |
| Pozwolić właścicielom budować przy aucie w dowolnym miejscu | Config.Install.anywhere = true. Dodaje przycisk Install w radiu samochodowym i komendę /caraudio (Config.Install.command). |
| Które auta można rozbudować | Config.Install.vehicles: 'owned' (domyślnie) albo 'any'. Zobacz sekcję 7. |
| Tylko mechanicy mogą montować | Config.Install.anyone = false i wymień prace w Config.Install.jobs (muszą być na służbie). |
| Darmowe części do aut | Config.Install.chargeParts = false. Config.Install.account to bank albo cash. |
| Ceny części do aut i gotowe zestawy | Catalogue.CarParts i Catalogue.CarKits w config/catalogue.lua |
| Fabryczne audio auta | Vehicles.ByClass i Vehicles.ByModel w config/vehicles.lua (basic, premium, reference, bike, none) |
| Biblioteka włączona lub wyłączona | Config.Sources.library. Zobacz sekcję 8. |
| Twoje własne piosenki | Config.Library (pliki w web/library/) |
| Godziny ciszy | Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (czas lokalny serwera) |
| Prace policyjne i uprawnienia | Config.Police (zobacz sekcję 10) |
| Psucie się głośników po postrzale | Config.Damage.enabled |
| Limity wydajności | Config.Streaming.propRange (modele rysowane w promieniu 90 m), maxAudibleSessions (6 różnych utworów słyszanych naraz), maxMovingParts (24 animowane membrany na klatkę) |
| Dodatkowe linie w konsoli dla wsparcia | Config.Debug (ustaw na true, gdy szukasz przyczyny problemu) |
Nazwy przedmiotów. Jeśli inny skrypt już używa którejś z nazw przedmiotów zds_, zmień klucz tego produktu w Catalogue.Speakers (na przykład zds_roam = { ... }), a potem użyj nowej nazwy w swoim ekwipunku i odpowiednio zmień nazwę obrazka.
6. Sterowanie
| Co | Jak |
|---|---|
| Otwórz pilota | /sound albo E przy głośniku, albo aplikacja Sound w Pulse Phone |
| Radio samochodowe | K siedząc w aucie (można zmienić w ustawieniach GTA) |
| Postaw głośnik | Użyj jego przedmiotu. Wyceluj tam, gdzie ma stanąć: pokazuje się na zielono tam, gdzie pasuje. Kółko myszy albo Q / E go obraca. Enter albo lewy przycisk myszy go stawia; Backspace albo prawy przycisk anuluje. |
| Stackuj line array | Podczas stawiania Strzałka w górę / Strzałka w dół podnosi albo opuszcza go |
| Noś Roam | Pojawia się w twoich rękach i gra dalej, gdy idziesz. E muzyka, G postaw, H spakuj. Wejście do auta albo do wody go pakuje. |
| Przenieś albo spakuj swój głośnik | Wyceluj w niego i wybierz Move albo Pack up, albo bez resource'a targetu stań obok: G przenieś (w Roam: weź go znowu do rąk), H spakuj. Zakładka Speakers w pilocie też potrafi pakować. |
| Połącz głośniki | Połącz się z jednym ze swoich, otwórz zakładkę Speakers w pilocie i naciśnij Link obok swoich pozostałych głośników w pobliżu. Przenośne łączą się z przenośnymi, domowe z domowymi, koncertowe z koncertowymi (odpowiednio w promieniu 40 m, 60 m i 250 m). |
| Monter car audio | Wjedź do warsztatu jako kierowca i naciśnij E (albo przycisk Install w radiu / /caraudio, gdy budowanie w dowolnym miejscu jest włączone). Przeciągnij element, żeby przesuwać go po powierzchniach auta, Alt + przeciąganie przesuwa go płasko na jego wysokości (bez przyciągania), Shift + przeciąganie unosi go, Q / E albo Shift + kółko obraca go. |
| Śpiewaj przez głośniki | Przy mikserze DJ-skim albo statywie mikrofonowym (sprzedawanym w sklepie, połącz go jak głośnik) głośników, z którymi jesteś połączony, albo przy statywie mikrofonowym w zestawie samochodowym: /soundmic bierze mikrofon, kolejne /soundmic odkłada go |
| Zgłoś głośną muzykę | /noise |
| Lista admina | /soundadmin |
| Daj przedmiot (konsola serwera) | givespeaker <player id> <item name> |
| Spal suba, żeby pokazać efekt (obsługa) | /soundblow w aucie albo soundblow <plate> w konsoli |
W pilocie: Music (biblioteka twojego serwera), Queue (następne, zapisane playlisty), Speakers (zasilanie i głośność każdego głośnika, łączenie, składanie) oraz Tune (sześć trybów dźwięku, trzypasmowy equalizer, kto wybiera muzykę, godziny otwarcia i "Real distance" dla zestawów koncertowych). Kto wybiera muzykę: Only me; Party, gdzie każdy w pobliżu może zgłaszać piosenki, które właściciel zatwierdza; albo Anyone, gdzie osoby w pobliżu mogą odtwarzać, pauzować, pomijać, dodawać do kolejki i przewijać. Opening hours samo odtwarza jedną z playlist właściciela między dwiema godzinami, dla sklepu lub klubu.
Mikrofon (wymaga pma-voice). Dopóki go trzymasz, wszyscy przy dowolnym głośniku tego systemu słyszą przez niego twój głos z brzmieniem nagłośnienia, tak głośno, jak ten głośnik gra muzykę, i tak daleko, jak go słychać. Odejdź 4 m od miksera lub statywu mikrofonowego, rozłącz się albo odłóż mikrofon, a twój głos znów będzie normalny. Śpiewać przez system może tylko jego właściciel (a w przypadku auta także admini); nadaj innym graczom ace zds.mic, żeby mogli używać każdego systemu. Twój głos nie dochodzi z miejsca, w którym stoi każdy głośnik: czat głosowy nie potrafi umieścić tam głosu, więc osoby przy głośniku słyszą cię z głośnością tego głośnika. Ustawienia: Config.Mic.
7. Car audio
Jak gracze budują
- Wjedź do warsztatu car audio (domyślnie Benny's) i naciśnij E jako kierowca.
- Zacznij od gotowego zestawu (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) albo wybierz części: subwoofery (od 8" do 18"), skrzynie, wzmacniacze, głośniki drzwiowe, tweetery, pody, podwójne podłogi, panele, plexi, kondensator, drugi akumulator, taśmę LED i radio.
- Przeciągnij każdą część na miejsce w aucie. Suby wpadają w wycięcia swojej skrzyni. Każda część ma wykończenie (osiem kolorów), a suby i głośniki maskownicę i podświetlany pierścień. Mirror kopiuje część na drugą stronę; Fine position przesuwa ją małymi krokami. Pięć widoków kamery: Boot, Cabin, Side, Front, Top. Rozmiar: suby są w 8", 10", 12", 15" i 18" (każdy sub w skrzyni ma ten sam rozmiar, a skrzynia jest budowana wokół nich, do 30% większa albo mniejsza niż ta, dla której ją zaprojektowano); głośniki drzwiowe w 5.25", 6.5" i 6x9"; każda inna część od 80% do 130% co 5% (radio ma standardowy rozmiar). Większe skrzynie i panele kosztują więcej; zmniejszona część nic nie kosztuje. Membrany większych głośników mają większy skok, a większy głośnik drzwiowy schodzi niżej.
- Naciśnij Test system, żeby usłyszeć zestaw grający w aucie przed zapłatą. Odtwarza pierwszy utwór z
Config.Library(dołączony utwór demo, chyba że go zmieniłeś). - Naciśnij Install. Płacisz tylko za części nowe dla auta; części zachowane z ostatniego montażu nie są liczone ponownie.
Montaż jest zapisywany przy tablicy rejestracyjnej i wraca zawsze, gdy wraca auto: z każdego garażu, parkingu policyjnego czy respawnu. Nic nie trzeba edytować w twoim skrypcie garaży.
Co słyszą gracze
- Każde auto ma już fabryczne audio według klasy i modelu: system 4-głośnikowy, premium 10-głośnikowy albo referencyjny 13-głośnikowy, głośniki w owiewce na motocyklach; rowery, samoloty i pociągi nie mają żadnego. Zamontowane głośniki zastępują najbliższe im głośniki fabryczne; suby się do nich dokładają.
- Na zewnątrz auta przez karoserię przechodzi głównie bas. Otwarte drzwi, otwarte szyby i otwarty bagażnik wypuszczają więcej, w stronę, w którą są zwrócone.
- Auto z subami delikatnie buja się na sprężynach w rytm basu, gdy stoi albo się toczy (nigdy podczas jazdy), a wszyscy w środku czują uderzenie.
- Radio (K) ma głośność, poziom suba, fader i balans.
- Suby przez dłuższą chwilę mocno przeciążane ponad to, na co pozwala ich wzmacniacz i parametry, blisko pełnej głośności, mogą się spalić. Każdy w pobliżu auta widzi cienką smużkę dymu z tego suba i słyszy głuche pyknięcie. Spalony sub przestaje się ruszać, bas spada, a jego membrana zostaje zwęglona, dopóki nie zostanie wymieniona w warsztacie (za nowego suba się płaci; usunięcie śladu nie jest darmową naprawą). Obsługa może to pokazać:
/soundbloww aucie albosoundblow <plate>w konsoli serwera.
Które auta można rozbudować (Config.Install.vehicles)
'owned'(domyślnie): tylko auta z tabeli posiadanych pojazdów twojego frameworka (owned_vehiclesna ESX,player_vehiclesna QBCore i Qbox).'any': także auta, które nie mają właściciela (auta NPC, spawnowane, wypożyczone).- W obu przypadkach auto innego gracza pozostaje jego: zmienić je może tylko właściciel, mechanik na służbie z
Config.Install.jobsalbo admin. Na serwerze standalone każde auto liczy się jako posiadane.
Garaże, tablice i parkingi policyjne
- Tablice są porównywane po obcięciu spacji i wielkimi literami, więc garaże, które dopełniają tablice albo zmieniają wielkość liter, nadal pasują.
- Auto z fałszywą albo zmienioną tablicą nie znajdzie swojego montażu, dopóki znowu nie będzie miało zapisanej tablicy.
- Auta, które istnieją tylko na ekranie jednego gracza (podglądy w garażu, niektóre auta w salonie), nigdy nie dostają montażu: dla nikogo innego nie są prawdziwymi autami.
Inne skrypty dźwięku albo radia
ZeroDev Sound to osobny resource z własnymi komendami (/sound, /caraudio, ...), eventami i state bagami pojazdów, więc nie zastępuje ani nie zmienia innych skryptów (gdy gra w aucie, wyłącza tylko wbudowane radio samochodowe GTA). Dwa skrypty car audio działające jednocześnie na tym samym aucie nie były razem testowane: używaj jednego radia na auto.
8. Źródła muzyki
Muzyka jest odtwarzana wyłącznie z plików audio, które dodasz do zasobu. Gracze wybierają z twojej listy; nie mogą wpisywać linków i żaden adres internetowy nie jest nigdy odtwarzany. Dodawaj tylko dźwięk, który posiadasz lub do którego masz prawa do użytkowania i dystrybucji.
- Wrzuć pliki mp3 lub ogg do
zerodev-sound/web/library/i wpisz każdy wConfig.Libraryjako{ title = '...', artist = '...', file = 'name.mp3' }. Dostają pełne doświadczenie: dźwięk 3D, pomieszczenia i ściany, kabiny aut, tryby dźwięku, EQ i stożki poruszające się z prawdziwym basem. Config.Sources.library = falsewyłącza bibliotekę.- Własne radio samochodowe GTA nadal działa w każdym aucie, dopóki nie gra w nim żadna piosenka z tego zasobu.
- Okno startowe pokazuje, ile piosenek gracze mogą wybrać, i ostrzega o każdym pominiętym wpisie (nazwie
pliku, który nie jest mp3 ani ogg, w
web/library/). - Aktualizacja z 3.0.0: zapisane piosenki, ostatnie piosenki i wpisy playlist, które były linkami, nie są już pokazywane ani odtwarzane. Piosenki z biblioteki nadal działają.
9. Pulse Phone
Nie ma nic do konfigurowania. Gdy na serwerze działa Pulse Phone (nazwa resource'a phone, dowolna edycja):
- Każdy telefon dostaje aplikację Sound na ekranie głównym. To ten sam pilot co
/sound: połącz się z głośnikiem albo autem, wybierz muzykę, steruj całą grupą. Gracze mogą ją usunąć i odzyskać z App Hub. - To, co gra na połączonym głośniku albo w aucie, z pozostałym czasem, pokazuje się w Island i na ekranie blokady. Dotknięcie otwiera aplikację Sound.
- Pulse Drive (ekran samochodowy Pulse, domyślnie F10) pokazuje radio auta, w którym siedzisz: utwór, wykonawcę i okładkę, z odtwarzaniem, pauzą, poprzednim, następnym i głośnością oraz przyciskiem Open dla aplikacji Sound. Wymaga to Pulse Phone 1.2.9 lub nowszego; starsze wersje po prostu tego nie pokazują.
Gracze bez telefonu używają /sound i K, które robią wszystko to, co aplikacja.
Jeśli zmieniłeś nazwę folderu telefonu, dodaj tę linię do config/config.lua z jego nazwą:
Config.PulseResource = 'phone'10. Policja, sąsiedzi i admini
| Co | Jak | Ustawienie |
|---|---|---|
| Zgłoś głośną muzykę | /noise wysyła najbliższy grający głośnik (w promieniu 60 m) do policji na służbie jako migający blip na 3 minuty. Jedno zgłoszenie na gracza co 2 minuty. |
Config.Police.complaints, complaintRange |
| Wyłącz głośnik | Policja na służbie: wyceluj w głośnik > Turn off (police) albo zakładka Tune w pilocie > Police. W promieniu 12 m. | Config.Police.canSilence, silenceMinutes (15) |
| Zarekwiruj głośnik | Policja na służbie, w promieniu 4 m: target > Seize (police) albo Tune > Police > Seize. Głośnik trafia do funkcjonariusza. | Config.Police.canSeize |
| Prace policyjne | Gracze z tymi pracami, na służbie | Config.Police.jobs |
| Zepsute głośniki | Strzał w postawiony głośnik go psuje: trzeszczy i przestaje grać. Speaker Repair Kit (sprzedawany w sklepie w Accessories) go naprawia: użyj zestawu obok niego. | Config.Damage |
| Lista admina | /soundadmin: każdy głośnik na serwerze, co gra i do kogo należy, z przyciskami do ustawienia waypointa, zatrzymania muzyki albo usunięcia głośnika. |
Config.AdminAce (zerodev.sound.admin) |
| Daj przedmiot | Konsola serwera: givespeaker <player id> <item name> |
11. Języki
Skrypt jest dostępny w tych samych 25 językach co Pulse Phone. Język ustawisz w config/config.lua:
| Kod | Język | Kod | Język | Kod | Język |
|---|---|---|---|---|---|
en |
Angielski | hu |
Magyar | pt-PT |
Português (Portugal) |
ar |
العربية | it |
Italiano | ro |
Română |
bs |
Bosanski | ja |
日本語 | ru |
Русский |
cs |
Čeština | ko |
한국어 | sl |
Slovenščina |
da |
Dansk | nb |
Norsk bokmål | sv |
Svenska |
de |
Deutsch | nl |
Nederlands | th |
ไทย |
es |
Español | pl |
Polski | tr |
Türkçe |
fr |
Français | pt-BR |
Português (Brasil) | uk |
Українська |
zh-CN |
简体中文 |
Na przykład Config.Locale = 'de'. Domyślne 'auto' podąża za Pulse Phone: serwer bierze Config.Locale z Pulse, a każdy gracz dostaje Sound w języku wybranym w swoim telefonie. Bez Pulse wszystko jest po angielsku. Komunikaty w grze, podpowiedzi klawiszy, nazwy przedmiotów i nazwa klawisza radia są w locales/<code>.lua; interfejs (pilot, radio samochodowe, sklep, monter, aplikacja w Pulse) jest w locales/<code>_ui.lua. Wszystko, czego brakuje, wyświetla się po angielsku.
Aby zmienić linijkę, edytuj ją w pliku danego języka. Zostaw każde %s, %d, %.1f, %% i ~a~ bez zmian. Aby dodać własny język, skopiuj locales/en.lua do locales/xx.lua, zmień Locales['en'] na Locales['xx'] (w obu miejscach), przetłumacz tekst w cudzysłowach i ustaw Config.Locale = 'xx'. locales/ui_strings.txt wymienia każdy klucz interfejsu dla pliku xx_ui.lua.
12. Rozwiązywanie problemów
Gracze nie mogą używać przedmiotów głośników
- ox_inventory: wpisy muszą być wewnątrz
ox_inventory/data/items.luarazem z liniąclient, a ox_inventory musi zostać zrestartowany po wklejeniu. Folder musi nadal nazywać sięzerodev-sound(wpisy wywołujązerodev-sound.useItem). - QBCore / ESX:
zerodev-soundmusi startować po twoim frameworku wserver.cfg. - codem-inventory na QBCore: wykonaj własny krok codem-inventory, który kieruje na niego
QBCore.Functions.UseItem. - Bez ekwipunku: głośniki nie są przedmiotami. Gracze otwierają
/soundi naciskają Set up pod Your speakers.
Brakuje obrazków przedmiotów
- ox_inventory: nie trzeba nic kopiować; ścieżka obrazka wskazuje na zerodev-sound. Jeśli są puste, sprawdź linię
image = 'nui://zerodev-sound/...'we wpisie i nazwę folderu. - Inne ekwipunki: przeczytaj linię konsoli
Copy ... into ...: wymienia brakujące obrazki i folder, do którego trafiają. Skopiuj je zzerodev-sound/web/img/items/i zrestartuj ekwipunek.
Gracz nie może odtworzyć linku
To zamierzone: gracze wybierają tylko z twojej biblioteki. Dodaj piosenkę do
Config.Library (sekcja 8).
W ogóle brak dźwięku
- Wbudowana przeglądarka FiveM uruchamia dźwięk bez kliknięcia, więc gracze nigdy nie muszą niczego naciskać, żeby "pozwolić" na dźwięk. Jeśli jeden gracz nic nie słyszy, a inni tak, sprawdź FiveM w jego mikserze głośności Windows.
- Sprawdź głośnik w zakładce Speakers w pilocie: może być wyłączony albo Broken.
- Policja mogła go wyłączyć (na
Config.Police.silenceMinutes) albo godziny ciszy mogą ograniczać głośność (Config.QuietHours). - Gracz słyszy naraz najwyżej
Config.Streaming.maxAudibleSessionsróżnych utworów (6), od najbliższych. - Test system w monterze milczy, gdy
Config.Libraryjest puste alboConfig.Sources.library = false: odtwarza pierwszy utwór z biblioteki.
Nie ma sklepu
Config.Shop.enabledmusi mieć wartośćtrue.- Sprzedawca i stoisko pojawiają się tylko wtedy, gdy gracz jest w promieniu około 70 m od
Config.Shop.locations, i tylko na ekranie tego gracza. Sprawdź ustawione współrzędne. - Z ox_target albo qb-target wyceluj w sprzedawcę. Bez nich stań przy sprzedawcy: E Browse speakers.
Głośnik wyświetla się jako zwykły głośnik z GTA albo wcale
Brakuje folderu stream/ albo ma zmienioną nazwę, albo gracz dołączył, zanim resource wystartował. Zrestartuj serwer i połącz się ponownie.
Komunikaty car audio i co oznaczają
| Komunikat | Dlaczego | Rozwiązanie |
|---|---|---|
| Drive into a car audio bay to build. | Budowanie w dowolnym miejscu jest wyłączone, a auto nie jest w warsztacie. | Wjedź do warsztatu (Config.Install.bays) albo ustaw Config.Install.anywhere = true. |
| Stand next to your car to build its sound system. | Budowanie w dowolnym miejscu jest włączone, a jesteś dalej niż 8 m od auta, albo /caraudio nie znalazło auta w promieniu 4 m. |
Stań przy aucie albo usiądź w nim. |
| Stop the car first. | Auto jest w ruchu. | Zatrzymaj się. |
| Car audio can only be fitted to a car you own. | Config.Install.vehicles = 'owned', a tej tablicy nie ma w twojej tabeli posiadanych pojazdów. Pokazuje się też wszystkim poza adminami, gdy tej tabeli nie da się odczytać: konsola pokazuje wtedy czerwoną linię could not read the owned-vehicles table. |
Użyj posiadanego auta, ustaw 'any' albo napraw błąd bazy, który podaje konsola. |
| Only the owner can change this car's audio. | Auto należy do innego gracza. Pokazuje się też, gdy Config.Install.anyone = false, a gracz nie ma pracy na służbie z Config.Install.jobs. |
Buduje je właściciel albo mechanik na służbie, albo admin. |
| Not enough money. | Nowe części kosztują więcej, niż gracz ma na Config.Install.account. |
Usuń części albo ustaw Config.Install.chargeParts = false. |
| A subwoofer blew. It needs replacing. | Suby były zbyt mocno i zbyt długo przeciążane przy niemal pełnej głośności. | Wymień suba w warsztacie; większy wzmacniacz pomaga. |
Policja nie widzi swoich opcji
Dodaj nazwy swoich prac policyjnych do Config.Police.jobs. Gracze muszą być na służbie.
13. Aktualizacja
Przejście z 1.x na 2.0: przeczytaj UPGRADING.md. Między wersjami 2.x:
- Zrób kopię zapasową folderu
config/,locales/, jeśli go tłumaczyłeś, i utworów, które dodałeś doweb/library/. - Zatrzymaj serwer. Zastąp folder
zerodev-soundnowym (zachowaj nazwę). - Przywróć swoje pliki
config/. Jeśli notatki aktualizacji wspominają o nowych ustawieniach, skopiuj te linie z nowych plików do swoich. - Uruchom serwer i przeczytaj konsolę. Nowe przedmioty, jeśli są, zostaną wypisane dla twojego ekwipunku.
Postawione głośniki, montaże w autach i playlisty są trzymane w bazie danych (zds_speakers, zds_car_builds, zds_playlists, zds_stash) i aktualizacja ich nie rusza.
Powrót do poprzedniej wersji: trzymaj poprzedni folder zerodev-sound poza resources, dopóki nowa wersja nie działa dobrze, i przed aktualizacją zrób kopię zapasową bazy danych. Żeby wrócić, zatrzymaj serwer, przywróć poprzedni folder i swój config/, a potem go uruchom. Powrót z 3.0 do 2.x na tej samej bazie danych nie był testowany, więc jeśli coś wygląda źle, przywróć kopię zapasową bazy.