Documentation ZeroDev Sound

ZeroDev Sound : guide d'installation

Pour ZeroDev Sound 3.0.127 min de lectureMis à jour le

Cette ressource ne contient ni ne fournit aucune intégration audio ou musicale tierce. La musique est lue uniquement à partir de fichiers audio que le propriétaire du serveur ajoute à la ressource et de la radio intégrée de GTA. Les joueurs ne peuvent pas saisir de liens. N'ajoutez que de l'audio dont vous êtes propriétaire ou dont vous détenez les droits d'utilisation et de diffusion ; diffuser du contenu en streaming sans autorisation peut enfreindre le Cfx.re Creator Platform License Agreement et la loi.

Des enceintes que les joueurs achètent, transportent, posent et relient, et de l'audio embarqué qu'ils montent dans leurs propres voitures. Ceci est la référence complète. Pour la version courte, lisez docs/SETUP.md (5 étapes) ; pour les problèmes, docs/TROUBLESHOOTING.md ; si vous venez de la 1.x, UPGRADING.md.

Sommaire 1. Prérequis 2. Installation 3. Items pour votre inventaire 4. Premier démarrage : ce que vous devez voir 5. Les réglages les plus souvent modifiés 6. Commandes 7. Audio embarqué 8. Sources musicales 9. Pulse Phone 10. Police, voisins et admins 11. Langues 12. Dépannage 13. Mise à jour

1. Prérequis

Obligatoire oxmysql. ZeroDev Sound crée ses propres tables au premier démarrage ; il n'y a aucun fichier SQL à importer.
Framework ESX Legacy, QBCore, Qbox, ou aucun (standalone). Détecté automatiquement.
Inventaire ox_inventory, qb-inventory (ainsi que ps- et lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, l'inventaire ESX, ou aucun. Détecté automatiquement.
Facultatif ox_target ou qb-target (sans eux, les joueurs ont une invite de touche à l'écran à la place). Pulse Phone 1.2.9 ou plus récent (ajoute l'app Sound et l'autoradio sur Pulse Drive). pma-voice pour le micro : sans lui, on peut tenir le micro et chanter dedans, mais personne ne l'entend dans les enceintes.

Rien d'autre : pas d'ox_lib, pas de clé API, pas de compte Google.

Serveurs Linux

Serveurs Linux : utilisez l'artifact serveur Recommended, pas Latest. Sur la page de téléchargement du serveur FiveM (docs.fivem.net/docs/server-download/), choisissez Linux et la branche de mise à jour Recommended. Un serveur sur le dernier artifact Linux a planté au chargement (FXServer a affiché un dump /proc/self/maps), et passer à l'artifact recommandé a réglé le problème. C'est le seul signalement Linux que nous ayons ; nous n'avons pas encore fait tourner ZeroDev Sound nous-mêmes sur un serveur Linux.

Serveurs Linux : utilisez l'artifact serveur Recommended, pas Latest. Sur la page de téléchargement du serveur FiveM (docs.fivem.net/docs/server-download/), choisissez Linux et la branche de mise à jour Recommended. Un serveur sur le dernier artifact Linux a planté au chargement (FXServer a affiché un dump /proc/self/maps), et passer à l'artifact recommandé a réglé le problème. C'est le seul signalement Linux que nous ayons ; nous n'avons pas encore fait tourner ZeroDev Sound nous-mêmes sur un serveur Linux.

Sur un serveur standalone (sans framework), tout est gratuit : la boutique et les pièces audio ne coûtent rien.

2. Installation

Étape 1. Déposez le dossier. Placez le dossier zerodev-sound dans votre dossier resources (n'importe quel sous-dossier convient, par exemple resources/[zerodev]/zerodev-sound). Gardez le nom de dossier zerodev-sound : les entrées d'items ox_inventory l'appellent par ce nom.

Étape 2. Ajoutez-le à server.cfg, après votre base de données, votre framework et votre inventaire :

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

Étape 3. Donnez à vos admins la permission admin (pas de limite d'enceintes, la liste /soundadmin, arrêt et suppression à distance) :

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

Étape 4. Configurez les items pour votre inventaire : section 3. Sur l'inventaire ESX et sur QBCore, c'est fait pour vous.

Étape 5. Redémarrez le serveur (un redémarrage complet, pas seulement la ressource, pour que chaque joueur charge les modèles) et vérifiez la console : section 4.

3. Items pour votre inventaire

Il y a 12 items : dix enceintes, le pied de micro et le kit de réparation.

Nom de l'item Étiquette Poids
zds_roam Enceinte portable Roam 2 kg
zds_room_shelf Enceinte d'étagère 4 kg
zds_room_tower Enceinte colonne 10 kg
zds_room_ceiling Enceinte de plafond 2 kg
zds_room_sub Caisson de basses de maison 8 kg
zds_stage_pa Enceinte de sonorisation 10 kg
zds_stage_sub Caisson de basses de concert 15 kg
zds_stage_array Enceinte line array 12 kg
zds_stage_monitor Retour de scène 6 kg
zds_stage_mixer Table de mixage DJ 5 kg
zds_stage_mic Pied de micro 3 kg
zds_repair_kit Kit de réparation d'enceinte 0,6 kg

Les images se trouvent dans zerodev-sound/web/img/items/. Vous n'avez jamais à deviner : dès que quelque chose manque, la console du serveur affiche les entrées exactes pour votre inventaire et nomme toute image qui n'est pas encore en place.

Quel inventaire avez-vous ?

Inventaire Ce que vous faites Les images vont dans
Inventaire ESX (ESX Legacy sans ox) Rien. Les items sont ajoutés à la table items au démarrage. Rien à copier
ox_inventory (ESX, Qbox ou standalone) Collez le bloc ox_inventory dans ox_inventory/data/items.lua, à l'intérieur de la table. Redémarrez ox_inventory, puis zerodev-sound. Rien à copier : les entrées chargent les images depuis zerodev-sound
qb-inventory, ps-inventory, lj-inventory (QBCore) Rien. Les items sont ajoutés aux items partagés de QBCore au démarrage. Copiez web/img/items/*.png dans <your inventory>/html/images/
qs-inventory Sur QBCore, collez le bloc QBCore dans qb-core/shared/items.lua. Sur ESX, collez les mêmes entrées dans qs-inventory/shared/items.lua. qs-inventory/html/images/
codem-inventory Ajoutez les 12 items à codem-inventory/config/itemlist.lua avec les noms, libellés et poids du bloc QBCore. Sur QBCore, effectuez aussi l'étape d'installation propre à codem-inventory qui fait pointer QBCore.Functions.UseItem vers codem-inventory, sinon les items ne peuvent pas être utilisés. Le dossier d'images d'items de codem-inventory
core_inventory Rien. Les items sont ajoutés pour vous aux items partagés de QBCore ou à la table items d'ESX. Le dossier d'images d'items de core_inventory
origen_inventory Ajoutez les 12 items à origen_inventory/config/items.lua avec les noms, libellés et poids du bloc QBCore. Le dossier d'images d'items d'origen_inventory
tgiann-inventory Ajoutez les 12 items à tgiann-inventory/items/items.lua avec les noms, libellés et poids du bloc QBCore. inventory_images/images/
Aucun inventaire Rien. Les enceintes achetées et rangées attendent dans /sound sous Your speakers, avec un bouton Set up. Rien à copier

Pour ajouter les items à qb-core à la main au lieu de laisser le script le faire, collez le bloc QBCore dans qb-core/shared/items.lua.

Un autre inventaire qui reprend l'une de ces API : définissez Config.Inventory sur celle-ci (voir la section 5). Un inventaire maison peut être connecté dans server/bridge.lua, qui est lisible : chaque inventaire y tient en trois petites fonctions (compter, ajouter, retirer).

Bloc ox_inventory

Collez à l'intérieur de la table return { ... } de 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' } },

Bloc QBCore

Le format d'item QBCore, que lisent qb-, ps-, lj- et 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.' },

Si vous avez modifié un libellé, un prix ou un poids dans config/catalogue.lua, copiez plutôt les entrées depuis votre propre console : elle les affiche à partir de vos réglages.

4. Premier démarrage : ce que vous devez voir

Dans la console du serveur

ZeroDev Sound affiche un encadré de vérification (tapez soundcheck dans la console du serveur pour l'afficher à nouveau) : base de données et schéma, framework, argent, inventaire et items, table des garages, système de target, Pulse Phone, modèles, ateliers d'installation et réglages modifiés en jeu. Chaque ligne qui n'est pas OK indique quoi faire ; docs/SETUP.md montre un exemple et docs/TROUBLESHOOTING.md explique chaque ligne.

  • La ligne du framework nomme ce qui a été trouvé. Si c'est faux, définissez Config.Framework ou Config.Inventory dans config/config.lua.
  • Une ligne jaune Add these to ox_inventory/data/items.lua ... (ou ... if these items are not in ... yet, add them) suivie d'entrées d'items : faites la section 3 pour votre inventaire, puis redémarrez. Le message d'ox_inventory disparaît une fois les items ajoutés. Sur qs-, codem-, origen- et tgiann-inventory, les entrées sont affichées à chaque démarrage comme rappel, que vous les ayez ajoutées ou non.
  • Une ligne jaune Copy zds_....png from zerodev-sound/web/img/items into ... : ces images ne sont pas encore dans le dossier d'images de votre inventaire. Elle nomme le dossier.
  • Pulse Phone app not registered: ... : Pulse Phone tourne mais a refusé l'app. Voir la section 9.

En jeu (cinq vérifications)

  1. La carte affiche un blip ZeroDev Sound à Legion Square et un blip Car audio bay chez Benny's.
  2. À la boutique, un vendeur se tient près d'un stand où les enceintes sont exposées. Ciblez le vendeur (ou appuyez sur E s'il n'y a pas de ressource de target) et achetez une Roam Portable Speaker.
  3. Utilisez-la depuis votre inventaire. Elle sort dans vos mains. Appuyez sur E, ouvrez Library et lancez Night Drive (un morceau de démo fourni avec le script). Les personnes autour de vous l'entendent.
  4. Montez dans une voiture. Les premières fois, le coin de l'écran indique quelle touche ouvre l'autoradio (K par défaut).
  5. Entrez dans l'atelier d'installation audio en tant que conducteur et appuyez sur E. L'installateur s'ouvre sur votre voiture.

5. Les réglages les plus souvent modifiés

En jeu : /soundadmin > Settings modifie les réglages courants en direct pour tout le monde (ateliers d'installation, qui peut installer, quelles voitures, prix, volume maximum, heures calmes, limites, boutique, police et dégâts). Ils sont enregistrés dans la base de données et priment sur config.lua jusqu'à ce que vous appuyiez sur Reset to config dans le panneau.

Tout se trouve dans config/config.lua, sauf indication contraire. Les produits, prix et pièces audio sont dans config/catalogue.lua ; le son d'origine de chaque voiture est dans config/vehicles.lua.

Ce que vous voulez Réglage
Forcer le framework ou l'inventaire Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none)
Changer la commande de la télécommande Config.Command (par défaut sound, donc /sound)
Changer la touche de l'autoradio Config.HeadUnitKey (par défaut K). Les joueurs peuvent la réassigner eux-mêmes dans les réglages de GTA > Key Bindings > FiveM.
Enceintes par joueur Config.MaxPlacedPerPlayer (8 par défaut). Les admins n'ont pas de limite.
Enceintes dans un même groupe relié Config.MaxLinkedPerGroup (16 par défaut)
Distance pour se connecter, distance pour contrôler Config.PairRange (15 m), Config.ControlRange (80 m)
Déplacer la boutique ou ajouter d'autres boutiques Config.Shop.locations. Chacune prend label, coords, blip, et en option heading (l'orientation du stand) et clerk (un modèle de ped). Config.Shop.account vaut bank ou cash. Config.Shop.enabled = false supprime la boutique.
Prix des enceintes price sur chaque produit dans config/catalogue.lua > Catalogue.Speakers. Le prix du kit de réparation est Config.Damage.repairPrice.
Où l'audio embarqué est installé Config.Install.bays (chacun avec label, coords, radius, blip). Par défaut : un atelier chez Benny's.
Permettre aux propriétaires d'équiper leur voiture n'importe où Config.Install.anywhere = true. Ajoute un bouton Install sur l'autoradio et la commande /caraudio (Config.Install.command).
Quelles voitures peuvent être équipées Config.Install.vehicles : 'owned' (par défaut) ou 'any'. Voir la section 7.
Seuls les mécaniciens peuvent installer Config.Install.anyone = false et listez les métiers dans Config.Install.jobs (ils doivent être en service).
Pièces audio gratuites Config.Install.chargeParts = false. Config.Install.account vaut bank ou cash.
Prix des pièces audio et kits prêts à l'emploi Catalogue.CarParts et Catalogue.CarKits dans config/catalogue.lua
Le son d'origine d'une voiture Vehicles.ByClass et Vehicles.ByModel dans config/vehicles.lua (basic, premium, reference, bike, none)
Bibliothèque activée ou désactivée Config.Sources.library. Voir la section 8.
Vos propres morceaux Config.Library (fichiers dans web/library/)
Heures calmes Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (heure locale du serveur)
Métiers et pouvoirs de la police Config.Police (voir la section 10)
Enceintes qui cassent quand on tire dessus Config.Damage.enabled
Limites de performances Config.Streaming.propRange (modèles affichés dans un rayon de 90 m), maxAudibleSessions (6 morceaux différents entendus à la fois), maxMovingParts (24 cônes animés par image)
Lignes de console supplémentaires pour le support Config.Debug (mettez-le à true pendant que vous traquez un problème)

Noms d'items. Si un autre script utilise déjà l'un des noms d'items zds_, renommez la clé de ce produit dans Catalogue.Speakers (par exemple zds_roam = { ... }), puis utilisez le nouveau nom dans votre inventaire et renommez son image en conséquence.

6. Commandes

Quoi Comment
Ouvrir la télécommande /sound, ou E devant une enceinte, ou l'app Sound dans Pulse Phone
Autoradio K une fois assis dans une voiture (réassignable dans les réglages de GTA)
Poser une enceinte Utilisez son item. Visez l'endroit où elle doit aller : elle s'affiche en vert là où elle tient. La molette ou Q / E la fait pivoter. Entrée ou clic gauche la pose ; Retour arrière ou clic droit annule.
Empiler un line array Pendant la pose, Flèche haut / Flèche bas le monte ou le descend
Porter une Roam Elle sort dans vos mains et continue de jouer pendant que vous marchez. E musique, G poser, H ranger. Monter dans une voiture ou entrer dans l'eau la range.
Déplacer ou ranger une enceinte qui vous appartient Ciblez-la et choisissez Move ou Pack up, ou sans ressource de target, placez-vous à côté : G déplacer (sur une Roam : la reprendre en main), H ranger. L'onglet Speakers de la télécommande permet aussi de ranger.
Relier des enceintes Connectez-vous à l'une des vôtres, ouvrez l'onglet Speakers de la télécommande et appuyez sur Link à côté de vos autres enceintes à proximité. Les portables se relient aux portables, l'intérieur à l'intérieur, le concert au concert (dans un rayon de 40 m, 60 m et 250 m respectivement).
Installateur audio embarqué Entrez dans l'atelier en tant que conducteur et appuyez sur E (ou le bouton Install de l'autoradio / /caraudio quand l'installation partout est activée). Faites glisser une pièce pour la déplacer sur les surfaces de la voiture, Alt + glisser la déplace à plat à sa hauteur (sans magnétisme), Shift + glisser la soulève, Q / E ou Shift + molette la fait pivoter.
Chanter dans les enceintes À la table de mixage DJ ou à un pied de micro (vendu dans la boutique, à relier comme une enceinte) des enceintes auxquelles vous êtes connecté, ou au pied de micro d'une installation embarquée : /soundmic prend le micro, /soundmic à nouveau le repose
Signaler de la musique trop forte /noise
Liste admin /soundadmin
Donner un item (console du serveur) givespeaker <player id> <item name>
Griller un caisson pour montrer l'effet (staff) /soundblow dans la voiture, ou soundblow <plate> dans la console

Dans la télécommande : Music (la bibliothèque de votre serveur), Queue (à suivre, playlists enregistrées), Speakers (alimentation et volume de chaque enceinte, liaison, rangement) et Tune (six modes de son, un égaliseur trois bandes, qui choisit la musique, horaires d'ouverture et « Real distance » pour les installations de concert). Qui choisit la musique : Only me ; Party, où toute personne à proximité peut demander des morceaux que le propriétaire approuve ; ou Anyone, où les personnes à proximité peuvent lire, mettre en pause, passer, mettre en file et avancer. Opening hours lance tout seul l'une des playlists du propriétaire entre deux heures, pour une boutique ou un club.

Le micro (nécessite pma-voice). Tant que vous le tenez, toute personne proche d'une enceinte de ce système entend votre voix à travers elle, avec un son de sono, aussi fort que cette enceinte joue la musique et aussi loin qu'elle porte ; éloignez-vous de 4 m de la table de mixage ou du pied de micro, déconnectez-vous ou reposez le micro, et votre voix redevient normale. Seul le propriétaire du système (et les admins, pour une voiture) peut chanter à travers lui ; donnez l'ace zds.mic aux autres joueurs pour qu'ils puissent utiliser n'importe quel système. Votre voix ne part pas de l'emplacement de chaque enceinte : le chat vocal ne peut pas placer une voix à cet endroit, donc les personnes proches d'une enceinte vous entendent au volume de cette enceinte. Réglages : Config.Mic.

7. Audio embarqué

Comment les joueurs équipent leur voiture

  1. Entrez dans l'atelier d'installation audio (Benny's par défaut) et appuyez sur E en tant que conducteur.
  2. Partez d'un kit prêt à l'emploi (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) ou choisissez vos pièces : caissons de basses (8" à 18"), caisses, amplificateurs, haut-parleurs de portière, tweeters, pods, faux planchers, panneaux, plexi, condensateur, seconde batterie, bande LED et autoradio.
  3. Faites glisser chaque pièce à sa place dans la voiture. Les caissons se logent dans les découpes de leur caisse. Chaque pièce reçoit une finition (huit couleurs), et les caissons et haut-parleurs une grille et un anneau lumineux. Mirror copie une pièce de l'autre côté ; Fine position la déplace par petits pas. Cinq vues caméra : coffre, habitacle, côté, avant, dessus. Taille : les caissons existent en 8", 10", 12", 15" et 18" (tous les caissons d'une même caisse ont la même taille et la caisse est construite autour d'eux, jusqu'à 30 % plus grande ou plus petite que prévu à l'origine) ; les haut-parleurs de portière en 5.25", 6.5" et 6x9" ; toutes les autres pièces de 80 % à 130 % par pas de 5 % (l'autoradio a une taille standard). Les caisses et panneaux plus grands coûtent plus cher ; une pièce rendue plus petite ne coûte rien. Les cônes ont plus de débattement sur les plus grands haut-parleurs, et un haut-parleur de portière plus grand descend plus bas.
  4. Appuyez sur Test system pour écouter l'installation jouer dans la voiture avant de payer. Elle lance le premier morceau de Config.Library (le morceau de démo fourni, sauf si vous l'avez changé).
  5. Appuyez sur Install. Seules les pièces nouvelles pour la voiture sont facturées ; les pièces conservées de la dernière installation ne sont pas facturées une deuxième fois.

L'installation est enregistrée avec la plaque et revient chaque fois que la voiture revient : depuis n'importe quel garage, fourrière ou réapparition. Rien à modifier dans votre script de garage.

Ce que les joueurs entendent

  • Chaque voiture a déjà un son d'origine selon sa classe et son modèle : un système à 4 haut-parleurs, un système premium à 10 haut-parleurs ou un système de référence à 13 haut-parleurs, des haut-parleurs de carénage sur les motos ; les vélos, avions et trains n'en ont pas. Les haut-parleurs installés remplacent les haut-parleurs d'origine les plus proches ; les caissons s'y ajoutent.
  • À l'extérieur de la voiture, ce sont surtout les basses qui traversent la carrosserie. Les portières ouvertes, les vitres ouvertes et un coffre ouvert laissent chacun sortir davantage de son, du côté vers lequel ils sont orientés.
  • Une voiture avec des caissons rebondit doucement sur ses suspensions avec les basses quand elle est garée ou roule au pas (jamais en roulant), et tous ceux à bord sentent le kick.
  • L'autoradio (K) a le volume, le niveau du caisson, le fader et la balance.
  • Les caissons poussés bien au-delà de ce que permettent leur ampli et leur puissance nominale, près du volume maximum, pendant un moment, peuvent griller. Tout le monde près de la voiture voit un mince filet de fumée sortir de ce caisson et entend un pop sourd. Un caisson grillé ne bouge plus, les basses baissent, et son cône reste carbonisé jusqu'à son remplacement à l'atelier (un nouveau caisson se paie ; effacer la trace n'est pas une réparation gratuite). Le staff peut le montrer : /soundblow dans la voiture, ou soundblow <plate> dans la console du serveur.

Quelles voitures peuvent être équipées (Config.Install.vehicles)

  • 'owned' (par défaut) : uniquement les voitures de la table des véhicules possédés de votre framework (owned_vehicles sur ESX, player_vehicles sur QBCore et Qbox).
  • 'any' : aussi les voitures qui n'appartiennent à personne (voitures de PNJ, voitures spawnées, locations).
  • Dans les deux cas, une voiture qui appartient à un autre joueur reste la sienne : seul son propriétaire, un mécanicien en service de Config.Install.jobs, ou un admin peut la modifier. Sur un serveur standalone, toutes les voitures comptent comme possédées.

Garages, plaques et fourrières

  • Les plaques sont comparées sans espaces superflus et en majuscules, donc les garages qui complètent ou changent la casse des plaques correspondent quand même.
  • Une voiture avec une fausse plaque ou une plaque changée ne retrouve son installation qu'une fois sa plaque enregistrée remise.
  • Les voitures qui n'existent que sur l'écran d'un seul joueur (aperçus de garage, certaines voitures de showroom) n'ont jamais d'installation : ce ne sont pas de vraies voitures pour les autres.

Autres scripts de son ou d'autoradio

ZeroDev Sound est une ressource à part avec ses propres commandes (/sound, /caraudio, ...), events et state bags de véhicule : il ne remplace ni ne modifie d'autres scripts (quand il joue dans une voiture, il coupe seulement la radio d'origine de GTA). Faire tourner deux scripts d'audio embarqué sur la même voiture en même temps n'a pas été testé : utilisez un seul autoradio par voiture.

8. Sources musicales

La musique est lue uniquement à partir de fichiers audio que vous ajoutez à la ressource. Les joueurs choisissent dans votre liste ; ils ne peuvent pas saisir de liens, et aucune adresse web n'est jamais lue. N'ajoutez que de l'audio dont vous êtes propriétaire ou dont vous détenez les droits d'utilisation et de diffusion.

  • Placez des fichiers mp3 ou ogg dans zerodev-sound/web/library/ et listez chacun dans Config.Library sous la forme { title = '...', artist = '...', file = 'name.mp3' }. Ils bénéficient de l'expérience complète : son 3D, pièces et murs, habitacles de voiture, modes de son, EQ et cônes qui bougent avec les vraies basses.
  • Config.Sources.library = false désactive la bibliothèque.
  • L'autoradio propre à GTA continue de fonctionner dans n'importe quelle voiture tant qu'aucun morceau de cette ressource n'y est lu.
  • La boîte de démarrage indique combien de morceaux les joueurs peuvent choisir et signale chaque entrée ignorée (un nom de fichier qui n'est pas un mp3 ou ogg dans web/library/).
  • Mise à jour depuis la 3.0.0 : les morceaux enregistrés, les morceaux récents et les entrées de playlist qui étaient des liens ne sont plus affichés ni lus. Les morceaux de la bibliothèque continuent de fonctionner.

9. Pulse Phone

Rien à configurer. Quand Pulse Phone tourne sur le serveur (nom de ressource phone, quelle que soit l'édition) :

  • Chaque téléphone reçoit une app Sound sur son écran d'accueil. C'est la même télécommande que /sound : se connecter à une enceinte ou à la voiture, choisir la musique, gérer tout le groupe. Les joueurs peuvent la supprimer et la récupérer depuis App Hub.
  • Ce qui joue sur l'enceinte ou la voiture connectée, avec le temps restant, s'affiche sur l'Island et l'écran verrouillé. Un appui ouvre l'app Sound.
  • Pulse Drive (l'écran de voiture de Pulse, F10 par défaut) affiche l'autoradio de la voiture dans laquelle vous êtes assis : morceau, artiste et pochette, avec lecture, pause, précédent, suivant et volume, ainsi qu'un bouton Open pour l'app Sound. Cela nécessite Pulse Phone 1.2.9 ou plus récent ; les versions plus anciennes ne l'affichent tout simplement pas.

Les joueurs sans téléphone utilisent /sound et K, qui font tout ce que fait l'app.

Si vous avez renommé le dossier du téléphone, ajoutez cette ligne à config/config.lua avec son nom :

Lua
Config.PulseResource = 'phone'

10. Police, voisins et admins

Quoi Comment Réglage
Signaler de la musique trop forte /noise envoie l'enceinte en lecture la plus proche (dans un rayon de 60 m) à la police en service sous forme de blip clignotant pendant 3 minutes. Un signalement par joueur toutes les 2 minutes. Config.Police.complaints, complaintRange
Éteindre une enceinte Police en service : ciblez l'enceinte > Turn off (police), ou l'onglet Tune de la télécommande > Police. À 12 m maximum. Config.Police.canSilence, silenceMinutes (15)
Saisir une enceinte Police en service, à 4 m maximum : ciblez > Seize (police), ou Tune > Police > Seize. L'enceinte revient à l'agent. Config.Police.canSeize
Métiers de la police Les joueurs ayant ces métiers, en service Config.Police.jobs
Enceintes cassées Tirer sur une enceinte posée la casse : elle grésille et s'arrête. Un Speaker Repair Kit (vendu à la boutique dans Accessories) la répare : utilisez le kit à côté d'elle. Config.Damage
Liste admin /soundadmin : chaque enceinte du serveur, ce qu'elle joue et à qui elle appartient, avec des boutons pour placer un point de passage, arrêter la musique ou supprimer l'enceinte. Config.AdminAce (zerodev.sound.admin)
Donner un item Console du serveur : givespeaker <player id> <item name>

11. Langues

Le script est livré dans les mêmes 25 langues que Pulse Phone. Choisissez-en une dans config/config.lua :

Code Langue Code Langue Code Langue
en Anglais 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', par exemple. La valeur par défaut, 'auto', suit Pulse Phone : le serveur reprend le Config.Locale de Pulse, et chaque joueur reçoit Sound dans la langue choisie sur son téléphone. Sans Pulse, c'est en anglais. Les messages du jeu, les invites de touche, les noms d'objets et le nom de la touche de l'autoradio sont dans locales/<code>.lua ; l'interface (télécommande, autoradio, magasin, installateur, app Pulse) est dans locales/<code>_ui.lua. Tout ce qui manque s'affiche en anglais.

Pour modifier une ligne, éditez-la dans le fichier de cette langue. Gardez chaque %s, %d, %.1f, %% et ~a~ tels quels. Pour ajouter votre propre langue, copiez locales/en.lua vers locales/xx.lua, remplacez Locales['en'] par Locales['xx'] (aux deux endroits), traduisez le texte entre les guillemets et mettez Config.Locale = 'xx'. locales/ui_strings.txt liste toutes les clés d'interface pour un xx_ui.lua.

12. Dépannage

Les joueurs ne peuvent pas utiliser les items d'enceintes

  • ox_inventory : les entrées doivent être dans ox_inventory/data/items.lua avec leur ligne client, et ox_inventory doit être redémarré après le collage. Le dossier doit toujours s'appeler zerodev-sound (les entrées appellent zerodev-sound.useItem).
  • QBCore / ESX : zerodev-sound doit démarrer après votre framework dans server.cfg.
  • codem-inventory sur QBCore : effectuez l'étape propre à codem-inventory qui fait pointer QBCore.Functions.UseItem vers lui.
  • Aucun inventaire : les enceintes ne sont pas des items. Les joueurs ouvrent /sound et appuient sur Set up sous Your speakers.

Les images des items manquent

  • ox_inventory : rien à copier ; le chemin de l'image pointe vers zerodev-sound. Si elles sont vides, vérifiez la ligne image = 'nui://zerodev-sound/...' de l'entrée et le nom du dossier.
  • Autres inventaires : lisez la ligne de console Copy ... into ... : elle liste les images manquantes et le dossier où elles vont. Copiez-les depuis zerodev-sound/web/img/items/ et redémarrez l'inventaire.

C'est voulu : les joueurs ne choisissent que dans votre bibliothèque. Ajoutez le morceau à Config.Library (section 8).

Aucun son

  • Le navigateur intégré de FiveM lance le son sans clic, donc les joueurs n'ont jamais besoin d'appuyer sur quoi que ce soit pour « autoriser » l'audio. Si un joueur n'entend rien alors que les autres entendent, vérifiez FiveM dans son mélangeur de volume Windows.
  • Vérifiez l'enceinte dans l'onglet Speakers de la télécommande : elle est peut-être éteinte, ou Broken.
  • La police l'a peut-être éteinte (pendant Config.Police.silenceMinutes), ou les heures calmes plafonnent peut-être le volume (Config.QuietHours).
  • Un joueur entend au maximum Config.Streaming.maxAudibleSessions morceaux différents à la fois (6), les plus proches en premier.
  • Test system dans l'installateur reste silencieux quand Config.Library est vide ou Config.Sources.library = false : il lance le premier morceau de la bibliothèque.

La boutique n'est pas là

  • Config.Shop.enabled doit valoir true.
  • Le vendeur et le stand n'apparaissent que lorsqu'un joueur est à environ 70 m de Config.Shop.locations, et uniquement sur l'écran de ce joueur. Vérifiez les coordonnées que vous avez définies.
  • Avec ox_target ou qb-target, ciblez le vendeur. Sans eux, placez-vous devant le vendeur : E Browse speakers.

Une enceinte apparaît comme une simple enceinte GTA, ou pas du tout

Le dossier stream/ manque ou a été renommé, ou le joueur s'est connecté avant le démarrage de la ressource. Redémarrez le serveur et reconnectez-vous.

Messages de l'audio embarqué et leur signification

Message Pourquoi Solution
Drive into a car audio bay to build. L'installation partout est désactivée et la voiture n'est pas dans un atelier. Entrez dans l'atelier (Config.Install.bays), ou définissez Config.Install.anywhere = true.
Stand next to your car to build its sound system. L'installation partout est activée et vous êtes à plus de 8 m de la voiture, ou /caraudio n'a trouvé aucune voiture à moins de 4 m. Placez-vous à côté de la voiture ou asseyez-vous dedans.
Stop the car first. La voiture est en mouvement. Arrêtez-vous.
Car audio can only be fitted to a car you own. Config.Install.vehicles = 'owned' et cette plaque n'est pas dans votre table des véhicules possédés. Ce message s'affiche aussi pour tout le monde sauf les admins quand cette table ne peut pas être lue : la console affiche alors une ligne rouge could not read the owned-vehicles table. Utilisez une voiture possédée, définissez 'any', ou corrigez l'erreur de base de données nommée par la console.
Only the owner can change this car's audio. La voiture appartient à un autre joueur. Ce message s'affiche aussi quand Config.Install.anyone = false et que le joueur n'a aucun métier en service de Config.Install.jobs. C'est le propriétaire qui l'équipe, ou un mécanicien en service, ou un admin.
Not enough money. Les nouvelles pièces coûtent plus que ce que le joueur possède dans Config.Install.account. Retirez des pièces, ou définissez Config.Install.chargeParts = false.
A subwoofer blew. It needs replacing. Les caissons ont été poussés trop fort trop longtemps, près du volume maximum. Remplacez le caisson à l'atelier ; un ampli plus puissant aide.

La police ne voit pas ses options

Ajoutez les noms de vos métiers de police à Config.Police.jobs. Les joueurs doivent être en service.

13. Mise à jour

Passage de la 1.x à la 2.0 : lisez UPGRADING.md. Entre deux versions 2.x :

  1. Sauvegardez votre dossier config/, locales/ si vous l'avez traduit, et tous les morceaux que vous avez ajoutés à web/library/.
  2. Arrêtez le serveur. Remplacez le dossier zerodev-sound par le nouveau (gardez le nom).
  3. Remettez vos fichiers config/. Si les notes de mise à jour mentionnent de nouveaux réglages, copiez ces lignes des nouveaux fichiers dans les vôtres.
  4. Démarrez le serveur et lisez la console. Les nouveaux items éventuels sont affichés pour votre inventaire.

Les enceintes posées, les installations embarquées et les playlists sont conservées dans la base de données (zds_speakers, zds_car_builds, zds_playlists, zds_stash) et ne sont pas touchées par une mise à jour.

Revenir en arrière : gardez l'ancien dossier zerodev-sound en dehors de resources jusqu'à ce que la nouvelle version tourne bien, et sauvegardez la base de données avant la mise à jour. Pour revenir en arrière, arrêtez le serveur, remettez l'ancien dossier et votre config/, puis démarrez-le. Le retour de la 3.0 à la 2.x sur la même base de données n'a pas été testé, donc restaurez la sauvegarde de la base si quelque chose semble anormal.

Traduit de l'anglais. En cas de désaccord entre cette page et la page en anglais, c'est la page en anglais qui fait foi. English