Dokumentacja ZeroDev Sound

ZeroDev Sound: poradnik instalacji

Dla ZeroDev Sound 3.0.127 min czytaniaAktualizacja

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:

server.cfg
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-sound

Krok 3. Daj adminom uprawnienie admina (bez limitu głośników, lista /soundadmin, zdalne zatrzymywanie i usuwanie):

server.cfg
add_ace group.admin zerodev.sound.admin allow

Krok 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:

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:

Lua
    ['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.Framework albo Config.Inventory w config/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ń)

  1. Mapa pokazuje blip ZeroDev Sound na Legion Square i blip Car audio bay przy Benny's.
  2. 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.
  3. 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ą.
  4. Wsiądź do auta. Przez kilka pierwszych razy w rogu ekranu pojawia się informacja, który klawisz otwiera radio samochodowe (domyślnie K).
  5. 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ą

  1. Wjedź do warsztatu car audio (domyślnie Benny's) i naciśnij E jako kierowca.
  2. 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.
  3. 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.
  4. 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ś).
  5. 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ć: /soundblow w aucie albo soundblow <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_vehicles na ESX, player_vehicles na 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.jobs albo 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 w Config.Library jako { 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 = false wyłą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ą:

Lua
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.lua razem 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-sound musi startować po twoim frameworku w server.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ą /sound i 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 z zerodev-sound/web/img/items/ i zrestartuj ekwipunek.

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.maxAudibleSessions różnych utworów (6), od najbliższych.
  • Test system w monterze milczy, gdy Config.Library jest puste albo Config.Sources.library = false: odtwarza pierwszy utwór z biblioteki.

Nie ma sklepu

  • Config.Shop.enabled musi 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:

  1. Zrób kopię zapasową folderu config/, locales/, jeśli go tłumaczyłeś, i utworów, które dodałeś do web/library/.
  2. Zatrzymaj serwer. Zastąp folder zerodev-sound nowym (zachowaj nazwę).
  3. Przywróć swoje pliki config/. Jeśli notatki aktualizacji wspominają o nowych ustawieniach, skopiuj te linie z nowych plików do swoich.
  4. 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.

Przetłumaczone z angielskiego. Jeśli coś tutaj różni się od strony angielskiej, rację ma strona angielska. English