Documentația ZeroDev Sound
ZeroDev Sound: ghid de instalare
Această resursă nu conține și nu oferă nicio integrare audio sau muzicală de la terți. Muzica se redă doar din fișierele audio pe care proprietarul serverului le adaugă în resursă și din radioul integrat din GTA. Jucătorii nu pot introduce linkuri. Adaugă doar audio pe care îl deții sau pentru care ai drepturile de utilizare și distribuire; transmiterea de conținut în streaming fără permisiune poate încălca Cfx.re Creator Platform License Agreement și legea.
Boxe pe care jucătorii le cumpără, le cară, le pun jos și le leagă între ele și audio auto pe care și-l montează în propriile mașini. Aceasta este referința completă. Pentru varianta scurtă citește docs/SETUP.md (5 pași); pentru probleme, docs/TROUBLESHOOTING.md; dacă vii de pe 1.x, UPGRADING.md.
Cuprins 1. Cerințe 2. Instalare 3. Iteme pentru inventarul tău 4. Prima pornire: ce ar trebui să vezi 5. Setările schimbate cel mai des 6. Controale 7. Audio auto 8. Surse de muzică 9. Pulse Phone 10. Poliția, vecinii și adminii 11. Limbi 12. Depanare 13. Actualizare
1. Cerințe
| Obligatoriu | oxmysql. ZeroDev Sound își creează propriile tabele la prima pornire; nu există niciun fișier SQL de importat. |
| Framework | ESX Legacy, QBCore, Qbox sau niciunul (standalone). Detectat automat. |
| Inventar | ox_inventory, qb-inventory (și ps-, lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, inventarul ESX sau niciunul. Detectat automat. |
| Opțional | ox_target sau qb-target (fără unul, jucătorii primesc în schimb o indicație de tastă pe ecran). Pulse Phone 1.2.9 sau mai nou (adaugă aplicația Sound și sistemul audio al mașinii în Pulse Drive). pma-voice pentru microfon: fără el, microfonul poate fi ținut în mână și poți cânta în el, dar nimeni nu te aude prin boxe. |
Nimic altceva: fără ox_lib, fără cheie API, fără cont Google.
Servere Linux
Servere Linux: folosește artifact-ul de server Recommended, nu Latest. Pe pagina de descărcare a serverului FiveM (docs.fivem.net/docs/server-download/) alege Linux și ramura de actualizare Recommended. Un server cu cel mai recent artifact Linux a crăpat la încărcare (FXServer a afișat un dump /proc/self/maps), iar trecerea la artifact-ul recomandat a rezolvat problema. Acesta este singurul raport Linux pe care îl avem; încă nu am rulat noi înșine ZeroDev Sound pe un server Linux.
Servere Linux: folosește artifact-ul de server Recommended, nu Latest. Pe pagina de descărcare a serverului FiveM (docs.fivem.net/docs/server-download/) alege Linux și ramura de actualizare Recommended. Un server cu cel mai recent artifact Linux a crăpat la încărcare (FXServer a afișat un dump /proc/self/maps), iar trecerea la artifact-ul recomandat a rezolvat problema. Acesta este singurul raport Linux pe care îl avem; încă nu am rulat noi înșine ZeroDev Sound pe un server Linux.
Pe un server standalone (fără framework) totul este gratuit: magazinul și piesele auto nu costă nimic.
2. Instalare
Pasul 1. Pune folderul. Pune folderul zerodev-sound în folderul resources (orice subfolder e în regulă, de exemplu resources/[zerodev]/zerodev-sound). Păstrează numele folderului zerodev-sound: intrările de iteme din ox_inventory îl apelează după acest nume.
Pasul 2. Adaugă-l în server.cfg, după baza de date, framework și inventar:
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-soundPasul 3. Dă-le adminilor permisiunea de admin (fără limită de boxe, lista /soundadmin, oprire și ștergere de la distanță):
add_ace group.admin zerodev.sound.admin allowPasul 4. Configurează itemele pentru inventarul tău: secțiunea 3. Pe inventarul ESX și pe QBCore, asta se face automat.
Pasul 5. Repornește serverul (un restart complet, nu doar al resursei, ca fiecare jucător să încarce modelele) și verifică consola: secțiunea 4.
3. Iteme pentru inventarul tău
Sunt 12 iteme: zece boxe, stativul de microfon și kitul de reparație.
| Numele itemului | Etichetă | Greutate |
|---|---|---|
zds_roam |
Boxa portabilă Roam | 2 kg |
zds_room_shelf |
Boxă de raft | 4 kg |
zds_room_tower |
Boxă turn | 10 kg |
zds_room_ceiling |
Boxă de tavan | 2 kg |
zds_room_sub |
Subwoofer de casă | 8 kg |
zds_stage_pa |
PA Speaker | 10 kg |
zds_stage_sub |
Subwoofer de concert | 15 kg |
zds_stage_array |
Line Array Speaker | 12 kg |
zds_stage_monitor |
Monitor de scenă | 6 kg |
zds_stage_mixer |
Mixer DJ | 5 kg |
zds_stage_mic |
Stativ de microfon | 3 kg |
zds_repair_kit |
Speaker Repair Kit | 0.6 kg |
Imaginile sunt în zerodev-sound/web/img/items/. Nu trebuie să ghicești niciodată: de fiecare dată când lipsește ceva, consola serverului afișează exact intrările pentru inventarul tău și numește orice imagine care nu este încă la locul ei.
Ce inventar ai?
| Inventar | Ce faci | Imaginile merg în |
|---|---|---|
| Inventarul ESX (ESX Legacy fără ox) | Nimic. Itemele sunt adăugate în tabelul items la pornire. |
Nimic de copiat |
| ox_inventory (ESX, Qbox sau standalone) | Lipește blocul ox_inventory în ox_inventory/data/items.lua, în interiorul tabelului. Repornește ox_inventory, apoi zerodev-sound. |
Nimic de copiat: intrările încarcă imaginile din zerodev-sound |
| qb-inventory, ps-inventory, lj-inventory (QBCore) | Nimic. Itemele sunt adăugate în shared items-ul QBCore la pornire. | Copiază web/img/items/*.png în <your inventory>/html/images/ |
| qs-inventory | Pe QBCore, lipește blocul QBCore în qb-core/shared/items.lua. Pe ESX, lipește aceleași intrări în qs-inventory/shared/items.lua. |
qs-inventory/html/images/ |
| codem-inventory | Adaugă cele 12 iteme în codem-inventory/config/itemlist.lua cu numele, etichetele și greutățile din blocul QBCore. Pe QBCore, finalizează și pasul de instalare propriu al codem-inventory care direcționează QBCore.Functions.UseItem către codem-inventory, altfel itemele nu pot fi folosite. |
Folderul de imagini pentru iteme al codem-inventory |
| core_inventory | Nimic. Itemele sunt adăugate automat în shared items-ul QBCore sau în tabelul items al ESX. |
Folderul de imagini pentru iteme al core_inventory |
| origen_inventory | Adaugă cele 12 iteme în origen_inventory/config/items.lua cu numele, etichetele și greutățile din blocul QBCore. |
Folderul de imagini pentru iteme al origen_inventory |
| tgiann-inventory | Adaugă cele 12 iteme în tgiann-inventory/items/items.lua cu numele, etichetele și greutățile din blocul QBCore. |
inventory_images/images/ |
| Fără inventar | Nimic. Boxele cumpărate și cele strânse așteaptă în /sound, la Your speakers, cu un buton Set up. |
Nimic de copiat |
Ca să adaugi manual itemele în qb-core, în loc să lași scriptul s-o facă, lipește blocul QBCore în qb-core/shared/items.lua.
Un alt inventar care copiază unul dintre aceste API-uri: setează Config.Inventory la acela (vezi secțiunea 5). Un inventar făcut intern poate fi conectat în server/bridge.lua, care este lizibil: fiecare inventar de acolo înseamnă trei funcții mici (count, add, remove).
Blocul ox_inventory
Lipește în interiorul tabelului return { ... } din 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' } },Blocul QBCore
Formatul de item QBCore, pe care îl citesc 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.' },Dacă ai schimbat o etichetă, un preț sau o greutate în config/catalogue.lua, copiază în schimb intrările din propria consolă: le afișează pe baza setărilor tale.
4. Prima pornire: ce ar trebui să vezi
În consola serverului
ZeroDev Sound afișează o singură casetă de verificare (scrie soundcheck în consola serverului ca s-o afișezi din nou): baza de date și schema, framework-ul, banii, inventarul și itemele, tabelul de garaj, targeting-ul, Pulse Phone, modelele, atelierele de instalare și setările schimbate în joc. Fiecare linie care nu este OK spune ce trebuie făcut; docs/SETUP.md arată un exemplu, iar docs/TROUBLESHOOTING.md explică fiecare linie.
- Linia de framework numește ce a fost găsit. Dacă este greșit, setează
Config.FrameworksauConfig.Inventoryînconfig/config.lua. - O linie galbenă
Add these to ox_inventory/data/items.lua ...(sau... if these items are not in ... yet, add them) urmată de intrări de iteme: fă secțiunea 3 pentru inventarul tău, apoi repornește. Mesajul ox_inventory dispare după ce itemele sunt adăugate. Pe qs-, codem-, origen- și tgiann-inventory, intrările sunt afișate la fiecare pornire ca reamintire, indiferent dacă le-ai adăugat sau nu. - O linie galbenă
Copy zds_....png from zerodev-sound/web/img/items into ...: acele imagini nu sunt încă în folderul de imagini al inventarului tău. Linia numește folderul. Pulse Phone app not registered: ...: Pulse Phone rulează, dar a refuzat aplicația. Vezi secțiunea 9.
În joc (cinci verificări)
- Harta afișează un blip ZeroDev Sound în Legion Square și un blip Car audio bay la Benny's.
- La magazin, un vânzător stă la un stand cu boxele expuse. Țintește vânzătorul (sau apasă E când nu există resursă de target) și cumpără un Roam Portable Speaker.
- Folosește-l din inventar. Îți apare în mâini. Apasă E, deschide Library și redă Night Drive (o piesă demo livrată cu scriptul). Cei din jurul tău o aud.
- Urcă într-o mașină. Primele câteva dăți, în colțul ecranului apare ce tastă deschide sistemul audio al mașinii (K implicit).
- Intră cu mașina în atelierul audio auto, ca șofer, și apasă E. Installer-ul se deschide pe mașina ta.
5. Setările schimbate cel mai des
În joc: /soundadmin > Settings schimbă live, pentru toată lumea, setările uzuale (atelierele de instalare, cine poate instala, ce mașini, prețuri, volumul maxim, orele de liniște, limitele, magazinul, poliția și daunele). Sunt salvate în baza de date și au prioritate față de config.lua până apeși Reset to config în panou.
Totul este în config/config.lua, dacă nu se precizează altfel. Produsele, prețurile și piesele auto sunt în config/catalogue.lua; sunetul de fabrică al fiecărei mașini este în config/vehicles.lua.
| Ce vrei | Setare |
|---|---|
| Forțezi framework-ul sau inventarul | Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none) |
| Schimbi comanda telecomenzii | Config.Command (implicit sound, deci /sound) |
| Schimbi tasta sistemului audio al mașinii | Config.HeadUnitKey (implicit K). Jucătorii o pot schimba singuri în setările GTA > Key Bindings > FiveM. |
| Boxe per jucător | Config.MaxPlacedPerPlayer (implicit 8). Adminii nu au limită. |
| Boxe într-un grup legat | Config.MaxLinkedPerGroup (implicit 16) |
| Cât de aproape te conectezi, de cât de departe controlezi | Config.PairRange (15 m), Config.ControlRange (80 m) |
| Muți magazinul sau adaugi mai multe magazine | Config.Shop.locations. Fiecare primește label, coords, blip și, opțional, heading (încotro e orientat standul) și clerk (un model de ped). Config.Shop.account este bank sau cash. Config.Shop.enabled = false elimină magazinul. |
| Prețurile boxelor | price la fiecare produs din config/catalogue.lua > Catalogue.Speakers. Prețul kitului de reparație este Config.Damage.repairPrice. |
| Unde se montează audio auto | Config.Install.bays (fiecare cu label, coords, radius, blip). Implicit: un atelier la Benny's. |
| Permiți proprietarilor să echipeze mașina oriunde | Config.Install.anywhere = true. Adaugă un buton Install pe sistemul audio al mașinii și comanda /caraudio (Config.Install.command). |
| Ce mașini pot fi echipate | Config.Install.vehicles: 'owned' (implicit) sau 'any'. Vezi secțiunea 7. |
| Doar mecanicii pot instala | Config.Install.anyone = false și listează joburile în Config.Install.jobs (trebuie să fie în serviciu). |
| Piese auto gratuite | Config.Install.chargeParts = false. Config.Install.account este bank sau cash. |
| Prețurile pieselor auto și kiturile gata făcute | Catalogue.CarParts și Catalogue.CarKits în config/catalogue.lua |
| Sunetul de fabrică al unei mașini | Vehicles.ByClass și Vehicles.ByModel în config/vehicles.lua (basic, premium, reference, bike, none) |
| Biblioteca pornită sau oprită | Config.Sources.library. Vezi secțiunea 8. |
| Melodiile tale | Config.Library (fișiere în web/library/) |
| Ore de liniște | Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (ora locală a serverului) |
| Joburile și puterile poliției | Config.Police (vezi secțiunea 10) |
| Boxe care se strică atunci când sunt împușcate | Config.Damage.enabled |
| Limite de performanță | Config.Streaming.propRange (modelele sunt desenate în raza de 90 m), maxAudibleSessions (6 melodii diferite auzite simultan), maxMovingParts (24 de conuri animate pe cadru) |
| Linii suplimentare în consolă pentru suport | Config.Debug (setează-l la true cât timp cauți o problemă) |
Numele itemelor. Dacă alt script folosește deja unul dintre numele de iteme zds_, redenumește cheia acelui produs în Catalogue.Speakers (de exemplu zds_roam = { ... }), apoi folosește noul nume în inventar și redenumește imaginea corespunzător.
6. Controale
| Ce | Cum |
|---|---|
| Deschizi telecomanda | /sound, E la o boxă sau aplicația Sound din Pulse Phone |
| Sistemul audio al mașinii | K când stai într-o mașină (se poate schimba din setările GTA) |
| Pui jos o boxă | Folosește itemul ei. Țintește unde trebuie pusă: devine verde acolo unde încape. Rotița mouse-ului sau Q / E o rotește. Enter sau clic stânga o pune jos; Backspace sau clic dreapta anulează. |
| Stivuiești un line array | În timp ce îl pui jos, Arrow Up / Arrow Down îl ridică sau îl coboară |
| Cari un Roam | Îți apare în mâini și continuă să cânte cât timp mergi. E muzică, G pune jos, H strânge. Când urci într-o mașină sau intri în apă, se strânge singur. |
| Muți sau strângi o boxă pe care o deții | Țintește-o și alege Move sau Pack up ori, fără resursă de target, stai lângă ea: G mută (la un Roam: o cari din nou), H strânge. Tabul Speakers din telecomandă poate și el s-o strângă. |
| Legi boxe între ele | Conectează-te la una dintre boxele tale, deschide tabul Speakers din telecomandă și apasă Link lângă celelalte boxe ale tale din apropiere. Cele portabile se leagă cu cele portabile, cele de interior cu cele de interior, cele de concert cu cele de concert (în raza de 40 m, 60 m și, respectiv, 250 m). |
| Installer-ul audio auto | Intră cu mașina în atelier ca șofer și apasă E (sau butonul Install de pe sistemul audio al mașinii / /caraudio, când construitul oriunde este activ). Trage o piesă ca să o glisezi peste suprafețele mașinii, Alt + tragere o glisează plat, la înălțimea ei (fără magnetizare), Shift + tragere o ridică, Q / E sau Shift + rotița mouse-ului o rotește. |
| Cântă prin boxe | La Mixer DJ sau la un stativ de microfon (se vinde în magazin, leagă-l ca pe o boxă) al boxelor la care ești conectat, sau la stativul de microfon al unui montaj auto: /soundmic ia microfonul, încă o dată /soundmic îl pune la loc |
| Raportezi muzica prea tare | /noise |
| Lista de admin | /soundadmin |
| Dai un item (consola serverului) | givespeaker <player id> <item name> |
| Arzi un subwoofer ca să arăți efectul (staff) | /soundblow în mașină sau soundblow <plate> în consolă |
În telecomandă: Music (biblioteca serverului tău), Queue (următoarele, playlisturi salvate), Speakers (alimentarea și volumul fiecărui difuzor, legarea, strângerea) și Tune (șase moduri de sunet, un egalizator cu trei benzi, cine alege muzica, program de funcționare și "Real distance" pentru instalații de concert). Cine alege muzica: Only me; Party, unde oricine din apropiere poate cere melodii pe care proprietarul le aprobă; sau Anyone, unde cei din apropiere pot reda, pune pe pauză, sări, adăuga în coadă și derula. Opening hours redă singur unul dintre playlisturile proprietarului între două ore, pentru un magazin sau un club.
Microfonul (are nevoie de pma-voice). Cât timp îl ții, toți cei aflați lângă oricare boxă a acelui sistem îți aud vocea prin ea, cu sunet de sistem PA, la fel de tare cum cântă boxa muzica și până unde se aude; îndepărtează-te 4 m de mixer sau de stativ, deconectează-te sau pune microfonul la loc, și vocea ta revine la normal. Doar proprietarul sistemului (și adminii, în cazul unei mașini) poate cânta prin el; dă-le altor jucători ace-ul zds.mic ca să poată folosi orice sistem. Vocea ta nu se aude din locul fiecărei boxe: chatul vocal nu poate plasa o voce acolo, așa că cei de lângă o boxă te aud la volumul acelei boxe. Setări: Config.Mic.
7. Audio auto
Cum construiesc jucătorii
- Intră cu mașina în atelierul audio auto (implicit la Benny's) și apasă E, ca șofer.
- Pornește de la un kit gata făcut (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) sau alege piese: subwoofere (de la 8" la 18"), boxe pentru subwoofere, amplificatoare, difuzoare de ușă, tweetere, pod-uri, podele false, panouri, plexiglas, condensator, a doua baterie, bandă LED și head unit.
- Trage fiecare piesă la locul ei pe mașină. Subwooferele intră în decupajele boxei lor. Fiecare piesă primește un finisaj (opt culori), iar subwooferele și difuzoarele, o grilă și un inel luminos. Mirror copiază o piesă pe partea cealaltă; Fine position o mută în pași mici. Cinci vederi ale camerei: Boot, Cabin, Side, Front, Top. Size: subwooferele vin în 8", 10", 12", 15" și 18" (toate subwooferele dintr-o boxă au aceeași dimensiune, iar boxa este construită în jurul lor, cu până la 30% mai mare sau mai mică decât cea pentru care a fost făcută); difuzoarele de ușă în 5.25", 6.5" și 6x9"; orice altă piesă între 80% și 130%, în pași de 5% (head unit-ul are dimensiune standard). Boxele și panourile mai mari costă mai mult; o piesă micșorată nu costă nimic în plus. Conurile se mișcă mai mult la difuzoarele mai mari, iar un difuzor de ușă mai mare coboară mai jos.
- Apasă Test system ca să auzi configurația cântând în mașină înainte să plătești. Redă prima melodie din
Config.Library(piesa demo livrată, dacă nu ai schimbat-o). - Apasă Install. Se plătesc doar piesele noi pentru mașină; piesele păstrate de la ultima instalare nu se plătesc din nou.
Instalarea este salvată pe numărul de înmatriculare și revine de fiecare dată când revine mașina: din orice garaj, sechestru sau respawn. Nimic de editat în scriptul tău de garaj.
Ce aud jucătorii
- Fiecare mașină are deja un sunet de fabrică în funcție de clasă și model: un sistem cu 4 difuzoare, unul premium cu 10 difuzoare sau unul de referință cu 13 difuzoare, difuzoare în carenaj la motociclete; bicicletele, aeronavele și trenurile nu au. Difuzoarele montate le înlocuiesc pe cele de fabrică aflate cel mai aproape de ele; subwooferele se adaugă.
- În afara mașinii, prin caroserie trece mai ales basul. Ușile deschise, geamurile deschise și portbagajul deschis lasă fiecare să iasă mai mult sunet, spre partea către care sunt orientate.
- O mașină cu subwoofere sare ușor pe arcuri odată cu basul cât timp e parcată sau merge foarte încet (niciodată în timpul condusului), iar toți cei din interior simt kick-ul.
- Sistemul audio (K) are volum, nivel de subwoofer, fader și balans.
- Subwooferele forțate mult peste ce permit amplificatorul și puterea lor nominală, aproape de volum maxim, o perioadă, se pot arde. Toți cei de lângă mașină văd un fir subțire de fum din acel subwoofer și aud o pocnitură surdă. Un subwoofer ars nu se mai mișcă, basul scade, iar conul lui rămâne ars până este înlocuit în atelier (un subwoofer nou se plătește; ștergerea urmei nu este o reparație gratuită). Staff-ul poate arăta efectul:
/soundblowîn mașină sausoundblow <plate>în consola serverului.
Ce mașini pot fi echipate (Config.Install.vehicles)
'owned'(implicit): doar mașinile din tabelul de vehicule deținute al framework-ului tău (owned_vehiclespe ESX,player_vehiclespe QBCore și Qbox).'any': și mașinile pe care nu le deține nimeni (mașini NPC, mașini spawnate, închirieri).- Oricum ar fi, o mașină deținută de alt jucător rămâne a lui: doar proprietarul ei, un mecanic în serviciu din
Config.Install.jobssau un admin o pot modifica. Pe un server standalone, fiecare mașină contează ca deținută.
Garaje, numere de înmatriculare și sechestre
- Numerele de înmatriculare sunt comparate fără spații la capete și cu majuscule, așa că și garajele care completează sau schimbă majusculele numerelor se potrivesc.
- O mașină cu număr fals sau schimbat nu își găsește instalarea până nu are din nou numărul salvat.
- Mașinile care există doar pe ecranul unui singur jucător (previzualizările din garaj, unele mașini din showroom) nu primesc niciodată o instalare: pentru ceilalți nu sunt mașini reale.
Alte scripturi de sunet sau de sistem audio
ZeroDev Sound este o resursă separată, cu propriile comenzi (/sound, /caraudio, ...), evenimente și state bags pe vehicule, așa că nu înlocuiește și nu modifică alte scripturi (cât timp cântă într-o mașină, doar oprește radioul propriu al mașinii din GTA). Rularea simultană a două scripturi audio auto pe aceeași mașină nu a fost testată: folosește un singur sistem audio per mașină.
8. Surse de muzică
Muzica se redă doar din fișierele audio pe care le adaugi în resursă. Jucătorii aleg din lista ta; nu pot introduce linkuri și nicio adresă web nu este redată vreodată. Adaugă doar audio pe care îl deții sau pentru care ai drepturile de utilizare și distribuire.
- Pune fișiere mp3 sau ogg în
zerodev-sound/web/library/și trece fiecare fișier înConfig.Librarysub forma{ title = '...', artist = '...', file = 'name.mp3' }. Primesc experiența completă: sunet 3D, camere și pereți, habitacluri de mașini, moduri de sunet, EQ și conuri care se mișcă odată cu basul real. Config.Sources.library = falseoprește biblioteca.- Radioul propriu al mașinilor din GTA funcționează în continuare în orice mașină cât timp nu se redă în ea nicio melodie din această resursă.
- Caseta de pornire arată câte melodii pot alege jucătorii și avertizează despre orice intrare sărită (un nume
de fișier care nu este mp3 sau ogg în
web/library/). - Actualizare de la 3.0.0: melodiile salvate, melodiile recente și intrările din playlisturi care erau linkuri nu mai sunt afișate și nici redate. Melodiile din bibliotecă continuă să funcționeze.
9. Pulse Phone
Nimic de configurat. Când Pulse Phone rulează pe server (numele resursei phone, oricare ediție):
- Fiecare telefon primește o aplicație Sound pe Home Screen. Este aceeași telecomandă ca
/sound: te conectezi la o boxă sau la mașină, alegi muzica, controlezi tot grupul. Jucătorii o pot șterge și o pot reinstala din App Hub. - Ce se redă pe boxa sau mașina conectată, cu timpul rămas, apare în Island și pe Lock Screen. O atingere deschide aplicația Sound.
- Pulse Drive (ecranul de mașină al Pulse, F10 implicit) afișează sistemul audio al mașinii în care stai: melodia, artistul și coperta, cu play, pauză, anterior, următor și volum, plus un buton Open pentru aplicația Sound. Necesită Pulse Phone 1.2.9 sau mai nou; versiunile mai vechi pur și simplu nu îl afișează.
Jucătorii fără telefon folosesc /sound și K, care fac tot ce face aplicația.
Dacă ai redenumit folderul telefonului, adaugă această linie în config/config.lua, cu numele lui:
Config.PulseResource = 'phone'10. Poliția, vecinii și adminii
| Ce | Cum | Setare |
|---|---|---|
| Raportezi muzica prea tare | /noise trimite cea mai apropiată boxă care cântă (în raza de 60 m) către poliția aflată în serviciu, ca blip intermitent, timp de 3 minute. Un raport per jucător la fiecare 2 minute. |
Config.Police.complaints, complaintRange |
| Oprești o boxă | Poliția în serviciu: țintește boxa > Turn off (police) sau tabul Tune din telecomandă > Police. În raza de 12 m. | Config.Police.canSilence, silenceMinutes (15) |
| Confiști o boxă | Poliția în serviciu, în raza de 4 m: target > Seize (police) sau Tune > Police > Seize. Boxa ajunge la polițist. | Config.Police.canSeize |
| Joburile poliției | Jucătorii cu aceste joburi, în serviciu | Config.Police.jobs |
| Boxe stricate | Dacă tragi într-o boxă plasată, se strică: pârâie și se oprește. Un Speaker Repair Kit (vândut în magazin, la Accessories) o repară: folosește kitul lângă ea. | Config.Damage |
| Lista de admin | /soundadmin: fiecare boxă de pe server, ce redă și cine o deține, cu butoane pentru a seta un waypoint, a opri muzica sau a șterge boxa. |
Config.AdminAce (zerodev.sound.admin) |
| Dai un item | Consola serverului: givespeaker <player id> <item name> |
11. Limbi
Scriptul vine în aceleași 25 de limbi ca Pulse Phone. Setează una în config/config.lua:
| Cod | Limbă | Cod | Limbă | Cod | Limbă |
|---|---|---|---|---|---|
en |
Engleză | 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 |
简体中文 |
Config.Locale = 'de', de exemplu. Valoarea implicită, 'auto', urmează Pulse Phone: serverul preia Config.Locale din Pulse, iar fiecare jucător primește Sound în limba aleasă pe telefon. Fără Pulse, este în engleză. Mesajele din joc, indicațiile de taste, numele obiectelor și numele tastei pentru sistemul audio sunt în locales/<code>.lua; interfața (telecomanda, sistemul audio al mașinii, magazinul, instalatorul, aplicația Pulse) este în locales/<code>_ui.lua. Tot ce lipsește apare în engleză.
Ca să schimbi un rând, editează-l în fișierul limbii respective. Păstrează fiecare %s, %d, %.1f, %% și ~a~ exact cum sunt. Ca să adaugi o limbă proprie, copiază locales/en.lua în locales/xx.lua, schimbă Locales['en'] în Locales['xx'] (în ambele locuri), tradu textul dintre ghilimele și setează Config.Locale = 'xx'. locales/ui_strings.txt listează toate cheile de interfață pentru un xx_ui.lua.
12. Depanare
Jucătorii nu pot folosi itemele de boxe
- ox_inventory: intrările trebuie să fie în
ox_inventory/data/items.luacu linia lorclient, iar ox_inventory trebuie repornit după ce le lipești. Folderul trebuie să se numească în continuarezerodev-sound(intrările apeleazăzerodev-sound.useItem). - QBCore / ESX:
zerodev-soundtrebuie să pornească după framework înserver.cfg. - codem-inventory pe QBCore: finalizează pasul propriu al codem-inventory care direcționează
QBCore.Functions.UseItemcătre el. - Fără inventar: boxele nu sunt iteme. Jucătorii deschid
/soundși apasă Set up la Your speakers.
Lipsesc imaginile itemelor
- ox_inventory: nimic de copiat; calea imaginii indică spre zerodev-sound. Dacă sunt goale, verifică linia
image = 'nui://zerodev-sound/...'a intrării și numele folderului. - Alte inventare: citește linia din consolă
Copy ... into ...: listează imaginile lipsă și folderul în care trebuie puse. Copiază-le dinzerodev-sound/web/img/items/și repornește inventarul.
Un jucător nu poate reda un link
Este intenționat: jucătorii aleg doar din biblioteca ta. Adaugă melodia în
Config.Library (secțiunea 8).
Niciun sunet
- Browserul integrat al FiveM pornește sunetul fără clic, așa că jucătorii nu trebuie să apese niciodată nimic ca să „permită” sunetul. Dacă un jucător nu aude nimic în timp ce alții aud, verifică FiveM în mixerul de volum Windows al acelui jucător.
- Verifică boxa în tabul Speakers din telecomandă: poate fi oprită sau Broken.
- Poliția poate să o fi oprit (pentru
Config.Police.silenceMinutes) sau orele de liniște pot limita volumul (Config.QuietHours). - Un jucător aude cel mult
Config.Streaming.maxAudibleSessionsmelodii diferite simultan (6), cele mai apropiate primele. - Test system din installer nu are sunet când
Config.Libraryeste gol sauConfig.Sources.library = false: redă prima melodie din bibliotecă.
Magazinul nu apare
Config.Shop.enabledtrebuie să fietrue.- Vânzătorul și standul apar doar când un jucător se află în raza de aproximativ 70 m de
Config.Shop.locationsși doar pe ecranul acelui jucător. Verifică coordonatele pe care le-ai setat. - Cu ox_target sau qb-target, țintește vânzătorul. Fără unul, stai lângă vânzător: E Browse speakers.
O boxă apare ca o boxă GTA simplă sau nu apare deloc
Folderul stream/ lipsește sau a fost redenumit ori jucătorul a intrat înainte să pornească resursa. Repornește serverul și reconectează-te.
Mesajele audio auto și ce înseamnă
| Mesaj | De ce | Soluție |
|---|---|---|
| Drive into a car audio bay to build. | Echiparea oriunde este dezactivată, iar mașina nu este într-un atelier. | Intră cu mașina în atelier (Config.Install.bays) sau setează Config.Install.anywhere = true. |
| Stand next to your car to build its sound system. | Echiparea oriunde este activată, iar tu ești la mai mult de 8 m de mașină sau /caraudio nu a găsit nicio mașină în raza de 4 m. |
Stai lângă mașină sau urcă în ea. |
| Stop the car first. | Mașina se mișcă. | Oprește. |
| Car audio can only be fitted to a car you own. | Config.Install.vehicles = 'owned', iar acest număr de înmatriculare nu este în tabelul tău de vehicule deținute. Apare tuturor, cu excepția adminilor, și când acel tabel nu poate fi citit: consola afișează atunci o linie roșie could not read the owned-vehicles table. |
Folosește o mașină deținută, setează 'any' sau repară eroarea de bază de date numită în consolă. |
| Only the owner can change this car's audio. | Mașina aparține altui jucător. Apare și când Config.Install.anyone = false, iar jucătorul nu are un job în serviciu din Config.Install.jobs. |
O echipează proprietarul, un mecanic în serviciu sau un admin. |
| Not enough money. | Piesele noi costă mai mult decât are jucătorul în Config.Install.account. |
Scoate piese sau setează Config.Install.chargeParts = false. |
| A subwoofer blew. It needs replacing. | Subwooferele au fost forțate prea tare, prea mult timp, aproape de volum maxim. | Înlocuiește subwooferul în atelier; un amplificator mai mare ajută. |
Poliția nu își vede opțiunile
Adaugă numele joburilor de poliție în Config.Police.jobs. Jucătorii trebuie să fie în serviciu.
13. Actualizare
Dacă treci de la 1.x la 2.0: citește UPGRADING.md. Între versiunile 2.x:
- Fă backup la folderul
config/, lalocales/dacă l-ai tradus și la orice melodii ai adăugat înweb/library/. - Oprește serverul. Înlocuiește folderul
zerodev-soundcu cel nou (păstrează numele). - Pune înapoi fișierele din
config/. Dacă notele de actualizare menționează setări noi, copiază acele linii din fișierele noi în ale tale. - Pornește serverul și citește consola. Itemele noi, dacă există, sunt afișate pentru inventarul tău.
Boxele plasate, instalările auto și playlisturile sunt păstrate în baza de date (zds_speakers, zds_car_builds, zds_playlists, zds_stash) și nu sunt atinse de o actualizare.
Revenirea la versiunea anterioară: păstrează folderul zerodev-sound anterior în afara resources până când noua versiune merge bine și fă un backup al bazei de date înainte de actualizare. Ca să revii, oprește serverul, pune la loc folderul anterior și config/-ul tău, apoi pornește-l. Revenirea de la 3.0 la 2.x pe aceeași bază de date nu a fost testată, așa că restaurează backupul bazei de date dacă ceva nu arată bine.