Docs van ZeroDev Sound
ZeroDev Sound: installatiegids
Deze resource bevat of biedt geen audio- of muziekintegraties van derden. Muziek speelt alleen af vanaf audiobestanden die de servereigenaar aan de resource toevoegt en via de ingebouwde radio van GTA. Spelers kunnen geen links invoeren. Voeg alleen audio toe waarvan je eigenaar bent of waarvoor je de rechten hebt om het te gebruiken en te verspreiden; content streamen zonder toestemming kan in strijd zijn met de Cfx.re Creator Platform License Agreement en de wet.
Speakers die spelers kopen, meenemen, neerzetten en koppelen, en caraudio die ze in hun eigen auto inbouwen. Dit is de volledige naslag. Lees voor de korte versie docs/SETUP.md (5 stappen); voor problemen docs/TROUBLESHOOTING.md; kom je van 1.x, dan UPGRADING.md.
Inhoud 1. Vereisten 2. Installeren 3. Items voor je inventory 4. Eerste start: wat je moet zien 5. Instellingen die het vaakst worden aangepast 6. Bediening 7. Caraudio 8. Muziekbronnen 9. Pulse Phone 10. Politie, buren en admins 11. Talen 12. Troubleshooting 13. Updaten
1. Vereisten
| Vereist | oxmysql. ZeroDev Sound maakt bij de eerste start zijn eigen tabellen aan; er is geen SQL-bestand om te importeren. |
| Framework | ESX Legacy, QBCore, Qbox, of geen (standalone). Wordt vanzelf gevonden. |
| Inventory | ox_inventory, qb-inventory (ook ps- en lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, de ESX-inventory, of geen. Wordt vanzelf gevonden. |
| Optioneel | ox_target of qb-target (zonder target krijgen spelers in plaats daarvan een toetsprompt op het scherm). Pulse Phone 1.2.9 of nieuwer (voegt de Sound-app en de autoradio op Pulse Drive toe). pma-voice voor de microfoon: zonder pma-voice kun je de microfoon vasthouden en erin zingen, maar hoort niemand het via de speakers. |
Verder niets: geen ox_lib, geen API-key, geen Google-account.
Linux-servers
Linux-servers: gebruik het Recommended server-artifact, niet Latest. Kies op de downloadpagina voor FiveM-servers (docs.fivem.net/docs/server-download/) Linux en de update-branch Recommended. Een server op het nieuwste Linux-artifact crashte tijdens het laden (FXServer printte een /proc/self/maps-dump), en overstappen op het aanbevolen artifact loste het op. Dat is de enige Linux-melding die we hebben; we hebben ZeroDev Sound zelf nog niet op een Linux-server gedraaid.
Linux-servers: gebruik het Recommended server-artifact, niet Latest. Kies op de downloadpagina voor FiveM-servers (docs.fivem.net/docs/server-download/) Linux en de update-branch Recommended. Een server op het nieuwste Linux-artifact crashte tijdens het laden (FXServer printte een /proc/self/maps-dump), en overstappen op het aanbevolen artifact loste het op. Dat is de enige Linux-melding die we hebben; we hebben ZeroDev Sound zelf nog niet op een Linux-server gedraaid.
Op een standalone server (geen framework) is alles gratis: de winkel en auto-onderdelen kosten niets.
2. Installeren
Stap 1. Zet de map erin. Zet de map zerodev-sound in je map resources (elke submap is prima, bijvoorbeeld resources/[zerodev]/zerodev-sound). Laat de mapnaam zerodev-sound: de item-entries van ox_inventory roepen hem onder die naam aan.
Stap 2. Voeg hem toe aan server.cfg, na je database, framework en inventory:
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-soundStap 3. Geef je admins de adminpermissie (geen speakerlimiet, de /soundadmin-lijst, op afstand stoppen en verwijderen):
add_ace group.admin zerodev.sound.admin allowStap 4. Stel de items in voor je inventory: sectie 3. Op de ESX-inventory en op QBCore wordt dit voor je gedaan.
Stap 5. Herstart de server (een volledige herstart, niet alleen de resource, zodat elke speler de modellen laadt) en check de console: sectie 4.
3. Items voor je inventory
Er zijn 12 items: tien speakers, de microfoonstandaard en de reparatiekit.
| Itemnaam | Label | Gewicht |
|---|---|---|
zds_roam |
Roam Portable Speaker | 2 kg |
zds_room_shelf |
Shelf Speaker | 4 kg |
zds_room_tower |
Tower Speaker | 10 kg |
zds_room_ceiling |
Ceiling Speaker | 2 kg |
zds_room_sub |
Home Subwoofer | 8 kg |
zds_stage_pa |
PA Speaker | 10 kg |
zds_stage_sub |
Concert Subwoofer | 15 kg |
zds_stage_array |
Line Array Speaker | 12 kg |
zds_stage_monitor |
Stage Monitor | 6 kg |
zds_stage_mixer |
DJ Mixer | 5 kg |
zds_stage_mic |
Microfoonstandaard | 3 kg |
zds_repair_kit |
Speaker Repair Kit | 0.6 kg |
De afbeeldingen staan in zerodev-sound/web/img/items/. Je hoeft nooit te gokken: als er iets ontbreekt, print de serverconsole de exacte entries voor jouw inventory en noemt hij elke afbeelding die nog niet op zijn plek staat.
Welke inventory heb je?
| Inventory | Wat je doet | Afbeeldingen gaan naar |
|---|---|---|
| ESX-inventory (ESX Legacy zonder ox) | Niets. De items worden bij het opstarten aan de items-tabel toegevoegd. |
Niets te kopiëren |
| ox_inventory (ESX, Qbox of standalone) | Plak het ox_inventory-blok in ox_inventory/data/items.lua, binnen de tabel. Herstart ox_inventory en daarna zerodev-sound. |
Niets te kopiëren: de entries laden de afbeeldingen uit zerodev-sound |
| qb-inventory, ps-inventory, lj-inventory (QBCore) | Niets. De items worden bij het opstarten aan de shared items van QBCore toegevoegd. | Kopieer web/img/items/*.png naar <your inventory>/html/images/ |
| qs-inventory | Plak op QBCore het QBCore-blok in qb-core/shared/items.lua. Plak op ESX dezelfde entries in qs-inventory/shared/items.lua. |
qs-inventory/html/images/ |
| codem-inventory | Voeg de 12 items toe aan codem-inventory/config/itemlist.lua met de namen, labels en gewichten uit het QBCore-blok. Doe op QBCore ook de eigen installatiestap van codem-inventory die QBCore.Functions.UseItem naar codem-inventory laat wijzen, anders kunnen items niet worden gebruikt. |
De map met itemafbeeldingen van codem-inventory |
| core_inventory | Niets. De items worden voor je toegevoegd aan de shared items van QBCore of de items-tabel van ESX. |
De map met itemafbeeldingen van core_inventory |
| origen_inventory | Voeg de 12 items toe aan origen_inventory/config/items.lua met de namen, labels en gewichten uit het QBCore-blok. |
De map met itemafbeeldingen van origen_inventory |
| tgiann-inventory | Voeg de 12 items toe aan tgiann-inventory/items/items.lua met de namen, labels en gewichten uit het QBCore-blok. |
inventory_images/images/ |
| Geen inventory | Niets. Gekochte en ingepakte speakers wachten in /sound onder Your speakers, met een knop Set up. |
Niets te kopiëren |
Wil je de items met de hand aan qb-core toevoegen in plaats van het script het te laten doen, plak dan het QBCore-blok in qb-core/shared/items.lua.
Een andere inventory die een van deze API's nabootst: zet Config.Inventory op die API (zie sectie 5). Een in-house inventory kun je aansluiten in server/bridge.lua, dat leesbaar is: elke inventory daarin bestaat uit drie kleine functies (tellen, toevoegen, verwijderen).
ox_inventory-blok
Plak binnen de tabel return { ... } van 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' } },QBCore-blok
De itemvorm van QBCore, die qb-, ps-, lj- en qs-inventory lezen:
['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.' },Heb je een label, prijs of gewicht aangepast in config/catalogue.lua, kopieer de entries dan uit je eigen console: die print ze op basis van jouw instellingen.
4. Eerste start: wat je moet zien
In de serverconsole
ZeroDev Sound print één controlekader (typ soundcheck in de serverconsole om het opnieuw te printen): database en schema, framework, geld, inventory en items, de garagetabel, targeting, Pulse Phone, modellen, inbouwwerkplaatsen en instellingen die in game zijn aangepast. Elke regel die niet OK is, zegt wat je moet doen; docs/SETUP.md toont een voorbeeld en docs/TROUBLESHOOTING.md legt elke regel uit.
- De frameworkregel noemt wat er gevonden is. Klopt die niet, stel dan
Config.FrameworkofConfig.Inventoryin inconfig/config.lua. - Een gele regel
Add these to ox_inventory/data/items.lua ...(of... if these items are not in ... yet, add them) gevolgd door item-entries: doe sectie 3 voor je inventory en herstart daarna. De ox_inventory-melding verdwijnt zodra de items erin staan. Op qs-, codem-, origen- en tgiann-inventory worden de entries bij elke start als herinnering geprint, of je ze nu hebt toegevoegd of niet. - Een gele regel
Copy zds_....png from zerodev-sound/web/img/items into ...: die afbeeldingen staan nog niet in de afbeeldingenmap van je inventory. Hij noemt de map. Pulse Phone app not registered: ...: Pulse Phone draait maar heeft de app geweigerd. Zie sectie 9.
In game (vijf controles)
- De map toont een ZeroDev Sound-blip op Legion Square en een Car audio bay-blip bij Benny's.
- In de winkel staat een verkoper bij een stand met de speakers uitgestald. Target de verkoper (of druk op E als er geen target-resource is) en koop een Roam Portable Speaker.
- Gebruik hem vanuit je inventory. Hij komt in je handen terecht. Druk op E, open Library en speel Night Drive af (een demotrack die met het script wordt meegeleverd). Mensen om je heen horen het.
- Stap in een auto. De eerste paar keer zegt de hoek van het scherm welke toets de autoradio opent (standaard K).
- Rij als bestuurder de inbouwwerkplaats voor caraudio in en druk op E. De installer opent op je auto.
5. Instellingen die het vaakst worden aangepast
In game: /soundadmin > Settings past de meestgebruikte live aan voor iedereen (inbouwwerkplaatsen, wie mag inbouwen, welke auto's, prijzen, maximaal volume, stille uren, limieten, winkel, politie en schade). Ze worden in de database opgeslagen en gaan vóór config.lua tot je in het paneel op Reset to config drukt.
Alles staat in config/config.lua, tenzij anders vermeld. Producten, prijzen en auto-onderdelen staan in config/catalogue.lua; het fabrieksgeluid van elke auto staat in config/vehicles.lua.
| Wat je wilt | Instelling |
|---|---|
| Het framework of de inventory forceren | Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none) |
| Het commando voor de afstandsbediening aanpassen | Config.Command (standaard sound, dus /sound) |
| De toets voor de autoradio aanpassen | Config.HeadUnitKey (standaard K). Spelers kunnen hem zelf opnieuw toewijzen in de GTA-instellingen > Key Bindings > FiveM. |
| Speakers per speler | Config.MaxPlacedPerPlayer (standaard 8). Admins hebben geen limiet. |
| Speakers in één gekoppelde groep | Config.MaxLinkedPerGroup (standaard 16) |
| Hoe dichtbij om te verbinden, hoe ver om te bedienen | Config.PairRange (15 m), Config.ControlRange (80 m) |
| De winkel verplaatsen of meer winkels toevoegen | Config.Shop.locations. Elke locatie neemt label, coords, blip, en optioneel heading (welke kant de stand op kijkt) en clerk (een ped-model). Config.Shop.account is bank of cash. Config.Shop.enabled = false haalt de winkel weg. |
| Prijzen van speakers | price bij elk product in config/catalogue.lua > Catalogue.Speakers. De prijs van de reparatiekit is Config.Damage.repairPrice. |
| Waar caraudio wordt ingebouwd | Config.Install.bays (elk met label, coords, radius, blip). Standaard: één werkplaats bij Benny's. |
| Eigenaren overal bij hun auto laten bouwen | Config.Install.anywhere = true. Voegt een knop Install toe op de autoradio en het commando /caraudio (Config.Install.command). |
| Welke auto's je kunt ombouwen | Config.Install.vehicles: 'owned' (standaard) of 'any'. Zie sectie 7. |
| Alleen monteurs mogen inbouwen | Config.Install.anyone = false en zet de jobs in Config.Install.jobs (ze moeten in dienst zijn). |
| Gratis auto-onderdelen | Config.Install.chargeParts = false. Config.Install.account is bank of cash. |
| Prijzen van auto-onderdelen en de kant-en-klare kits | Catalogue.CarParts en Catalogue.CarKits in config/catalogue.lua |
| Het fabrieksgeluid van een auto | Vehicles.ByClass en Vehicles.ByModel in config/vehicles.lua (basic, premium, reference, bike, none) |
| Bibliotheek aan of uit | Config.Sources.library. Zie sectie 8. |
| Je eigen nummers | Config.Library (bestanden in web/library/) |
| Stille uren | Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (lokale tijd van de server) |
| Politiejobs en bevoegdheden | Config.Police (zie sectie 10) |
| Speakers die kapotgaan als erop geschoten wordt | Config.Damage.enabled |
| Performancelimieten | Config.Streaming.propRange (modellen getekend binnen 90 m), maxAudibleSessions (6 verschillende nummers tegelijk hoorbaar), maxMovingParts (24 geanimeerde conussen per frame) |
| Extra consoleregels voor support | Config.Debug (zet hem op true terwijl je een probleem opspoort) |
Itemnamen. Gebruikt een ander script al een van de zds_-itemnamen, hernoem dan de key van dat product in Catalogue.Speakers (bijvoorbeeld zds_roam = { ... }), gebruik daarna de nieuwe naam in je inventory en hernoem de afbeelding zodat hij overeenkomt.
6. Bediening
| Wat | Hoe |
|---|---|
| De afstandsbediening openen | /sound, of E bij een speaker, of de Sound-app in Pulse Phone |
| Autoradio | K terwijl je in een auto zit (opnieuw toe te wijzen in de GTA-instellingen) |
| Een speaker neerzetten | Gebruik het item. Richt op de plek waar hij moet komen: hij wordt groen waar hij past. Het scrollwiel of Q / E draait hem. Enter of linksklik zet hem neer; Backspace of rechtsklik annuleert. |
| Een line array stapelen | Tijdens het neerzetten maakt Arrow Up / Arrow Down hem hoger of lager |
| Een Roam meenemen | Hij komt in je handen terecht en blijft spelen terwijl je loopt. E muziek, G neerzetten, H inpakken. In een auto stappen of het water in gaan pakt hem in. |
| Een speaker van jezelf verplaatsen of inpakken | Target hem en kies Move of Pack up, of ga zonder target-resource ernaast staan: G verplaatsen (bij een Roam: weer meenemen), H inpakken. Het tabblad Speakers van de afstandsbediening kan ook inpakken. |
| Speakers koppelen | Verbind met een van de jouwe, open het tabblad Speakers van de afstandsbediening en druk op Link naast je andere speakers in de buurt. Draagbare koppelen met draagbare, binnen met binnen, concert met concert (binnen respectievelijk 40 m, 60 m en 250 m). |
| Installer voor caraudio | Rij als bestuurder de werkplaats in en druk op E (of op de knop Install op de autoradio / /caraudio als overal bouwen aan staat). Sleep een onderdeel om het over de oppervlakken van de auto te laten glijden, Alt + slepen laat het vlak op zijn hoogte glijden (zonder te snappen), Shift + slepen tilt het op, Q / E of Shift + scrollen draait het. |
| Zingen via de speakers | Bij de DJ Mixer of een microfoonstandaard (te koop in de winkel, koppel hem zoals een speaker) van de speakers waarmee je verbonden bent, of bij de microfoonstandaard van een autobuild: /soundmic pakt de microfoon, nogmaals /soundmic legt hem terug |
| Harde muziek melden | /noise |
| Adminlijst | /soundadmin |
| Een item geven (serverconsole) | givespeaker <player id> <item name> |
| Een sub opblazen om het effect te laten zien (staff) | /soundblow in de auto, of soundblow <plate> in de console |
In de afstandsbediening: Music (de bibliotheek van je server), Queue (volgende, opgeslagen playlists), Speakers (aan/uit en volume van elke speaker, koppelen, opruimen) en Tune (zes geluidsmodi, een equalizer met drie banden, wie de muziek kiest, openingstijden en "Real distance" voor concertopstellingen). Wie de muziek kiest: Only me; Party, waar iedereen in de buurt nummers kan aanvragen die de eigenaar goedkeurt; of Anyone, waar mensen in de buurt kunnen afspelen, pauzeren, overslaan, in de wachtrij zetten en spoelen. Opening hours speelt vanzelf een van de playlists van de eigenaar af tussen twee tijdstippen, voor een winkel of club.
De microfoon (vereist pma-voice). Zolang je hem vasthoudt, hoort iedereen bij een speaker van dat systeem je stem erdoorheen, met een PA-geluid, zo hard als die speaker muziek speelt en zo ver als hij reikt; loop 4 m weg van de mixer of microfoonstandaard, verbreek de verbinding of leg de microfoon terug, en je stem is weer normaal. Alleen de eigenaar van het systeem (en admins, bij een auto) kan erdoor zingen; geef andere spelers de ace zds.mic zodat ze elk systeem kunnen gebruiken. Je stem komt niet vanaf de plek van elke speaker: voicechat kan daar geen stem neerzetten, dus mensen bij een speaker horen je in plaats daarvan op het volume van die speaker. Instellingen: Config.Mic.
7. Caraudio
Hoe spelers bouwen
- Rij de inbouwwerkplaats voor caraudio in (standaard Benny's) en druk als bestuurder op E.
- Begin met een kant-en-klare kit (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) of kies onderdelen: subwoofers (8" tot 18"), kisten, versterkers, deurspeakers, tweeters, pods, valse bodems, panelen, plexi, condensator, tweede accu, ledstrip en head unit.
- Sleep elk onderdeel op zijn plek in de auto. Subs vallen in de uitsparingen van hun kist. Elk onderdeel krijgt een afwerking (acht kleuren), en subs en speakers een grill en lichtring. Mirror kopieert een onderdeel naar de andere kant; Fine position verplaatst het in kleine stapjes. Vijf camerastandpunten: Boot, Cabin, Side, Front, Top. Formaat: subs zijn er in 8", 10", 12", 15" en 18" (elke sub in een kist heeft hetzelfde formaat en de kist wordt eromheen gebouwd, tot 30% groter of kleiner dan waarvoor hij gemaakt is); deurspeakers in 5.25", 6.5" en 6x9"; elk ander onderdeel van 80% tot 130% in stappen van 5% (de head unit heeft een standaardformaat). Grotere kisten en panelen kosten meer; een onderdeel kleiner maken kost niets. Conussen bewegen verder bij grotere drivers, en een grotere deurspeaker gaat lager.
- Druk op Test system om de build door de auto te horen spelen voordat je betaalt. Hij speelt het eerste nummer in
Config.Library(de meegeleverde demotrack, tenzij je die hebt veranderd). - Druk op Install. Alleen onderdelen die nieuw zijn voor de auto worden afgerekend; onderdelen die van de vorige installatie zijn behouden, worden niet opnieuw afgerekend.
De installatie wordt opgeslagen op het kenteken en komt terug als de auto terugkomt: uit elke garage, impound of respawn. Niets aan te passen in je garagescript.
Wat spelers horen
- Elke auto heeft al een fabrieksgeluid op basis van klasse en model: een systeem met 4 speakers, een premium systeem met 10 speakers of een reference-systeem met 13 speakers, kuipspeakers op motoren; fietsen, vliegtuigen en treinen hebben er geen. Ingebouwde speakers vervangen de fabrieksspeakers die het dichtst bij ze zitten; subs komen erbij.
- Buiten de auto komt vooral de bas door de carrosserie. Open deuren, open ramen en een open kofferbak laten elk meer naar buiten, naar de kant waar ze op uitkijken.
- Een auto met subs veert zachtjes mee op de bas terwijl hij geparkeerd staat of stapvoets rijdt (nooit tijdens het rijden), en iedereen binnen voelt de kick.
- De stereo (K) heeft volume, subniveau, fader en balans.
- Subs die een tijd lang ver voorbij wat hun versterker en vermogen toelaten worden aangestuurd, op bijna vol volume, kunnen opblazen. Iedereen in de buurt van de auto ziet een dun pluimpje rook uit die sub en hoort een doffe knal. Een opgeblazen sub beweegt niet meer, de bas zakt in, en de conus blijft verkoold tot hij in de werkplaats wordt vervangen (een nieuwe sub moet betaald worden; het merkteken weghalen is geen gratis reparatie). Staff kan het laten zien:
/soundblowin de auto, ofsoundblow <plate>in de serverconsole.
Welke auto's je kunt ombouwen (Config.Install.vehicles)
'owned'(standaard): alleen auto's in de tabel met voertuigen in bezit van je framework (owned_vehiclesop ESX,player_vehiclesop QBCore en Qbox).'any': ook auto's die van niemand zijn (NPC-auto's, gespawnde auto's, huurauto's).- Hoe dan ook blijft een auto van een andere speler van hem: alleen de eigenaar, een monteur in dienst uit
Config.Install.jobs, of een admin kan hem aanpassen. Op een standalone server telt elke auto als in bezit.
Garages, kentekens en impounds
- Kentekens worden vergeleken zonder spaties aan de randen en in hoofdletters, dus garages die kentekens opvullen of anders schrijven komen nog steeds overeen.
- Een auto met een nep- of gewijzigd kenteken vindt zijn installatie pas terug als hij zijn opgeslagen kenteken weer heeft.
- Auto's die alleen op het scherm van één speler bestaan (garagepreviews, sommige showroomauto's) krijgen nooit een installatie: voor iemand anders zijn het geen echte auto's.
Andere geluids- of stereoscripts
ZeroDev Sound is een eigen resource met eigen commando's (/sound, /caraudio, ...), events en state bags op voertuigen, dus hij vervangt of verandert geen andere scripts (terwijl hij in een auto speelt, zet hij alleen de eigen autoradio van GTA uit). Twee caraudioscripts tegelijk op dezelfde auto zijn niet samen getest: gebruik één stereo per auto.
8. Muziekbronnen
Muziek speelt alleen af vanaf audiobestanden die je aan de resource toevoegt. Spelers kiezen uit jouw lijst; ze kunnen geen links invoeren en er wordt nooit een webadres afgespeeld. Voeg alleen audio toe waarvan je eigenaar bent of waarvoor je de rechten hebt om het te gebruiken en te verspreiden.
- Zet mp3- of ogg-bestanden in
zerodev-sound/web/library/en zet elk inConfig.Libraryals{ title = '...', artist = '...', file = 'name.mp3' }. Ze krijgen de volledige ervaring: 3D-geluid, ruimtes en muren, autocabines, geluidsmodi, EQ en kegels die met de echte bas meebewegen. Config.Sources.library = falsezet de bibliotheek uit.- De eigen autoradio van GTA werkt nog steeds in elke auto zolang er geen nummer van deze resource in speelt.
- Het startvenster laat zien hoeveel nummers spelers kunnen kiezen en waarschuwt voor elke regel die is overgeslagen (een
bestandsnaam die geen mp3 of ogg is in
web/library/). - Updaten vanaf 3.0.0: opgeslagen nummers, recente nummers en playlistitems die links waren, worden niet meer getoond of afgespeeld. Nummers uit de bibliotheek blijven werken.
9. Pulse Phone
Niets in te stellen. Als Pulse Phone op de server draait (resourcenaam phone, beide edities):
- Elke telefoon krijgt een Sound-app op het Home Screen. Het is dezelfde afstandsbediening als
/sound: verbind met een speaker of de auto, kies muziek, bedien de hele groep. Spelers kunnen hem verwijderen en terughalen uit de App Hub. - Wat er speelt op de verbonden speaker of auto, met de resterende tijd, verschijnt op de Island en het Lock Screen. Een tik opent de Sound-app.
- Pulse Drive (het autoscherm van Pulse, standaard F10) toont de stereo van de auto waarin je zit: nummer, artiest en hoes, met afspelen, pauzeren, vorige, volgende en volume, en een knop Open voor de Sound-app. Dit vereist Pulse Phone 1.2.9 of nieuwer; oudere versies tonen het gewoon niet.
Spelers zonder telefoon gebruiken /sound en K, die alles doen wat de app doet.
Heb je de map van de telefoon hernoemd, voeg dan deze regel met de naam toe aan config/config.lua:
Config.PulseResource = 'phone'10. Politie, buren en admins
| Wat | Hoe | Instelling |
|---|---|---|
| Harde muziek melden | /noise stuurt de dichtstbijzijnde spelende speaker (binnen 60 m) 3 minuten lang als knipperende blip naar politie in dienst. Eén melding per speler per 2 minuten. |
Config.Police.complaints, complaintRange |
| Een speaker uitzetten | Politie in dienst: target de speaker > Turn off (police), of het tabblad Tune van de afstandsbediening > Police. Binnen 12 m. | Config.Police.canSilence, silenceMinutes (15) |
| Een speaker in beslag nemen | Politie in dienst, binnen 4 m: target > Seize (police), of Tune > Police > Seize. De speaker gaat naar de agent. | Config.Police.canSeize |
| Politiejobs | Spelers met deze jobs, in dienst | Config.Police.jobs |
| Kapotte speakers | Schieten op een geplaatste speaker maakt hem kapot: hij kraakt en stopt. Een Speaker Repair Kit (te koop in de winkel onder Accessories) maakt hem weer: gebruik de kit ernaast. | Config.Damage |
| Adminlijst | /soundadmin: elke speaker op de server, wat hij speelt en van wie hij is, met knoppen om een waypoint te zetten, de muziek te stoppen of de speaker te verwijderen. |
Config.AdminAce (zerodev.sound.admin) |
| Een item geven | Serverconsole: givespeaker <player id> <item name> |
11. Talen
Het script wordt geleverd in dezelfde 25 talen als Pulse Phone. Stel er een in via config/config.lua:
| Code | Taal | Code | Taal | Code | Taal |
|---|---|---|---|---|---|
en |
Engels | 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', bijvoorbeeld. De standaard, 'auto', volgt Pulse Phone: de server neemt de Config.Locale van Pulse over, en elke speler krijgt Sound in de taal die hij op zijn telefoon heeft gekozen. Zonder Pulse is het Engels. Gamemeldingen, toetsprompts, itemnamen en de naam van de stereotoets staan in locales/<code>.lua; de interface (afstandsbediening, autoradio, winkel, installer, Pulse-app) staat in locales/<code>_ui.lua. Wat ontbreekt, valt terug op Engels.
Om een regel te wijzigen, pas je hem aan in het bestand van die taal. Laat elke %s, %d, %.1f, %% en ~a~ zoals ze zijn. Om een eigen taal toe te voegen, kopieer je locales/en.lua naar locales/xx.lua, verander je Locales['en'] in Locales['xx'] (op beide plekken), vertaal je de tekst tussen de aanhalingstekens en stel je Config.Locale = 'xx' in. locales/ui_strings.txt somt elke interface-key op voor een xx_ui.lua.
12. Troubleshooting
Spelers kunnen de speakeritems niet gebruiken
- ox_inventory: de entries moeten in
ox_inventory/data/items.luastaan met hunclient-regel, en ox_inventory moet na het plakken herstart worden. De map moet nog steedszerodev-soundheten (de entries roepenzerodev-sound.useItemaan). - QBCore / ESX:
zerodev-soundmoet inserver.cfgna je framework starten. - codem-inventory op QBCore: doe de eigen stap van codem-inventory die
QBCore.Functions.UseItemernaar laat wijzen. - Geen inventory: speakers zijn geen items. Spelers openen
/sounden drukken op Set up onder Your speakers.
Itemafbeeldingen ontbreken
- ox_inventory: niets te kopiëren; het afbeeldingspad wijst naar zerodev-sound. Zijn ze leeg, controleer dan de regel
image = 'nui://zerodev-sound/...'van de entry en de mapnaam. - Andere inventories: lees de consoleregel
Copy ... into ...: die noemt de ontbrekende afbeeldingen en de map waar ze in moeten. Kopieer ze uitzerodev-sound/web/img/items/en herstart de inventory.
Een speler kan geen link afspelen
Dat is zo bedoeld: spelers kiezen alleen uit jouw bibliotheek. Voeg het nummer toe aan
Config.Library (sectie 8).
Helemaal geen geluid
- De ingebouwde browser van FiveM start geluid zonder klik, dus spelers hoeven nooit ergens op te drukken om audio "toe te staan". Hoort één speler niets terwijl anderen wel iets horen, controleer dan FiveM in zijn volumemixer van Windows.
- Controleer de speaker in het tabblad Speakers van de afstandsbediening: misschien staat hij uit, of is hij Broken.
- Misschien heeft de politie hem uitgezet (voor
Config.Police.silenceMinutes), of beperken stille uren het volume (Config.QuietHours). - Een speler hoort maximaal
Config.Streaming.maxAudibleSessionsverschillende nummers tegelijk (6), de dichtstbijzijnde eerst. - Test system in de installer is stil als
Config.Libraryleeg is ofConfig.Sources.library = false: hij speelt het eerste nummer uit de bibliotheek.
De winkel is er niet
Config.Shop.enabledmoettruezijn.- De verkoper en de stand verschijnen alleen als een speler binnen ongeveer 70 m van
Config.Shop.locationsis, en alleen op het scherm van die speler. Controleer de coördinaten die je hebt ingesteld. - Met ox_target of qb-target target je de verkoper. Zonder target ga je bij de verkoper staan: E Browse speakers.
Een speaker verschijnt als gewone GTA-speaker, of helemaal niet
De map stream/ ontbreekt of is hernoemd, of de speler joinde voordat de resource gestart was. Herstart de server en maak opnieuw verbinding.
Meldingen over caraudio en wat ze betekenen
| Melding | Waarom | Oplossing |
|---|---|---|
| Drive into a car audio bay to build. | Overal bouwen staat uit en de auto staat niet in een werkplaats. | Rij de werkplaats in (Config.Install.bays), of stel Config.Install.anywhere = true in. |
| Stand next to your car to build its sound system. | Overal bouwen staat aan en je bent meer dan 8 m van de auto, of /caraudio vond geen auto binnen 4 m. |
Ga bij de auto staan of ga erin zitten. |
| Stop the car first. | De auto rijdt. | Stop. |
| Car audio can only be fitted to a car you own. | Config.Install.vehicles = 'owned' en dit kenteken staat niet in je tabel met voertuigen in bezit. Wordt ook aan iedereen behalve admins getoond als die tabel niet gelezen kan worden: de console toont dan een rode regel could not read the owned-vehicles table. |
Gebruik een auto in bezit, stel 'any' in, of herstel de databasefout die de console noemt. |
| Only the owner can change this car's audio. | De auto is van een andere speler. Wordt ook getoond als Config.Install.anyone = false en de speler geen job in dienst heeft uit Config.Install.jobs. |
De eigenaar bouwt hem, of een monteur in dienst, of een admin. |
| Not enough money. | De nieuwe onderdelen kosten meer dan de speler heeft op Config.Install.account. |
Haal onderdelen weg, of stel Config.Install.chargeParts = false in. |
| A subwoofer blew. It needs replacing. | Subs zijn te lang te hard aangestuurd op bijna vol volume. | Vervang de sub in de werkplaats; een grotere versterker helpt. |
Politie ziet haar opties niet
Voeg de namen van je politiejobs toe aan Config.Police.jobs. Spelers moeten in dienst zijn.
13. Updaten
Van 1.x naar 2.0: lees UPGRADING.md. Tussen 2.x-versies:
- Maak een back-up van je map
config/, vanlocales/als je die vertaald hebt, en van alle nummers die je aanweb/library/hebt toegevoegd. - Stop de server. Vervang de map
zerodev-sounddoor de nieuwe (laat de naam zoals hij is). - Zet je
config/-bestanden terug. Noemen de updatenotes nieuwe instellingen, kopieer die regels dan uit de nieuwe bestanden naar de jouwe. - Start de server en lees de console. Eventuele nieuwe items worden geprint voor jouw inventory.
Geplaatste speakers, auto-installaties en playlists staan in de database (zds_speakers, zds_car_builds, zds_playlists, zds_stash) en worden door een update niet aangeraakt.
Teruggaan: bewaar de vorige zerodev-sound-map buiten resources tot de nieuwe versie goed draait, en maak een back-up van de database voordat je updatet. Om terug te gaan stop je de server, zet je de vorige map en je config/ terug, en start je hem. Teruggaan van 3.0 naar 2.x op dezelfde database is niet getest, dus zet de databaseback-up terug als er iets niet klopt.