Документація ZeroDev Sound
ZeroDev Sound: посібник зі встановлення
Цей ресурс не містить і не надає жодних сторонніх інтеграцій аудіо чи музики. Музика відтворюється лише з аудіофайлів, які власник сервера додає до ресурсу, та через вбудоване радіо GTA. Гравці не можуть вводити посилання. Додавайте лише те аудіо, яке належить вам або на використання та поширення якого ви маєте права; потокова трансляція контенту без дозволу може порушувати Cfx.re Creator Platform License Agreement і закон.
Колонки, які гравці купують, носять, ставлять і об'єднують, та автозвук, який вони збирають у власних авто. Це повний довідник. Коротку версію читайте в docs/SETUP.md (5 кроків); проблеми — у docs/TROUBLESHOOTING.md; при переході з 1.x — UPGRADING.md.
Зміст 1. Вимоги 2. Встановлення 3. Предмети для вашого інвентаря 4. Перший запуск: що ви маєте побачити 5. Налаштування, які змінюють найчастіше 6. Керування 7. Автозвук 8. Джерела музики 9. Pulse Phone 10. Поліція, сусіди та адміністратори 11. Мови 12. Усунення несправностей 13. Оновлення
1. Вимоги
| Обов'язково | oxmysql. ZeroDev Sound створює власні таблиці під час першого запуску; SQL-файлу для імпорту немає. |
| Фреймворк | ESX Legacy, QBCore, Qbox або жодного (standalone). Визначається автоматично. |
| Інвентар | ox_inventory, qb-inventory (а також ps- і lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, інвентар ESX або жодного. Визначається автоматично. |
| Необов'язково | ox_target або qb-target (без них гравці натомість бачать підказку з клавішею на екрані). Pulse Phone 1.2.9 або новіший (додає застосунок Sound і автомагнітолу в Pulse Drive). pma-voice для мікрофона: без нього мікрофон можна тримати й співати в нього, але через колонки ніхто нічого не почує. |
Більше нічого: ні ox_lib, ні API-ключа, ні акаунту Google.
Сервери на Linux
Сервери на Linux: використовуйте серверний артефакт Recommended, а не Latest. На сторінці завантаження сервера FiveM (docs.fivem.net/docs/server-download/) оберіть Linux і гілку оновлень Recommended. Сервер на найновішому Linux-артефакті падав під час завантаження (FXServer виводив дамп /proc/self/maps), а перехід на рекомендований артефакт це виправив. Це єдине повідомлення щодо Linux, яке ми маємо; самі ми ZeroDev Sound на Linux-сервері ще не запускали.
Сервери на Linux: використовуйте серверний артефакт Recommended, а не Latest. На сторінці завантаження сервера FiveM (docs.fivem.net/docs/server-download/) оберіть Linux і гілку оновлень Recommended. Сервер на найновішому Linux-артефакті падав під час завантаження (FXServer виводив дамп /proc/self/maps), а перехід на рекомендований артефакт це виправив. Це єдине повідомлення щодо Linux, яке ми маємо; самі ми ZeroDev Sound на Linux-сервері ще не запускали.
На standalone-сервері (без фреймворку) усе безкоштовно: магазин і деталі для авто нічого не коштують.
2. Встановлення
Крок 1. Покладіть папку. Покладіть папку zerodev-sound у свою папку resources (підійде будь-яка підпапка, наприклад resources/[zerodev]/zerodev-sound). Залиште папці назву zerodev-sound: записи предметів ox_inventory звертаються до неї за цією назвою.
Крок 2. Додайте її в 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Крок 3. Надайте своїм адміністраторам адміністраторський дозвіл (без ліміту колонок, список /soundadmin, дистанційна зупинка й видалення):
add_ace group.admin zerodev.sound.admin allowКрок 4. Налаштуйте предмети для свого інвентаря: розділ 3. На інвентарі ESX і на QBCore це зроблено за вас.
Крок 5. Перезапустіть сервер (повністю, а не лише ресурс, щоб кожен гравець завантажив моделі) і перевірте консоль: розділ 4.
3. Предмети для вашого інвентаря
Предметів 12: десять колонок, мікрофонна стійка та ремкомплект.
| Назва предмета | Позначка | Вага |
|---|---|---|
zds_roam |
Портативна колонка Roam | 2 kg |
zds_room_shelf |
Полична колонка | 4 kg |
zds_room_tower |
Підлогова колонка | 10 kg |
zds_room_ceiling |
Стельова колонка | 2 kg |
zds_room_sub |
Домашній сабвуфер | 8 kg |
zds_stage_pa |
PA-колонка | 10 kg |
zds_stage_sub |
Концертний сабвуфер | 15 kg |
zds_stage_array |
Колонка лінійного масиву | 12 kg |
zds_stage_monitor |
Сценічний монітор | 6 kg |
zds_stage_mixer |
DJ-мікшер | 5 kg |
zds_stage_mic |
Мікрофонна стійка | 3 kg |
zds_repair_kit |
Ремкомплект для колонок | 0.6 kg |
Зображення лежать у zerodev-sound/web/img/items/. Вгадувати ніколи не доведеться: щойно чогось бракує, консоль сервера виводить точні записи для вашого інвентаря й називає кожне зображення, яке ще не на місці.
Який у вас інвентар?
| Інвентар | Що робите ви | Куди кладуться зображення |
|---|---|---|
| Інвентар ESX (ESX Legacy без ox) | Нічого. Предмети додаються в таблицю items під час запуску. |
Нічого копіювати не треба |
| ox_inventory (ESX, Qbox або standalone) | Вставте блок для ox_inventory у ox_inventory/data/items.lua, усередину таблиці. Перезапустіть ox_inventory, потім zerodev-sound. |
Нічого копіювати не треба: записи завантажують зображення із zerodev-sound |
| qb-inventory, ps-inventory, lj-inventory (QBCore) | Нічого. Предмети додаються в shared items QBCore під час запуску. | Скопіюйте web/img/items/*.png у <your inventory>/html/images/ |
| qs-inventory | На QBCore вставте блок для QBCore у qb-core/shared/items.lua. На ESX вставте ті самі записи в qs-inventory/shared/items.lua. |
qs-inventory/html/images/ |
| codem-inventory | Додайте 12 предметів у codem-inventory/config/itemlist.lua, узявши назви, підписи та вагу з блоку для QBCore. На QBCore також виконайте власний крок встановлення codem-inventory, який спрямовує QBCore.Functions.UseItem на codem-inventory, інакше предмети не можна буде використовувати. |
Папка зображень предметів codem-inventory |
| core_inventory | Нічого. Предмети додаються за вас у shared items QBCore або в таблицю items ESX. |
Папка зображень предметів core_inventory |
| origen_inventory | Додайте 12 предметів у origen_inventory/config/items.lua, узявши назви, підписи та вагу з блоку для QBCore. |
Папка зображень предметів origen_inventory |
| tgiann-inventory | Додайте 12 предметів у tgiann-inventory/items/items.lua, узявши назви, підписи та вагу з блоку для QBCore. |
inventory_images/images/ |
| Без інвентаря | Нічого. Куплені й складені колонки чекають у /sound у розділі Your speakers із кнопкою Set up. |
Нічого копіювати не треба |
Щоб додати предмети в qb-core вручну замість скрипту, вставте блок для QBCore у qb-core/shared/items.lua.
Інший інвентар, що копіює один із цих API: задайте його в Config.Inventory (див. розділ 5). Власний інвентар можна підключити в server/bridge.lua, який відкритий для читання: кожен інвентар там — це три невеликі функції (count, add, remove).
Блок для ox_inventory
Вставте всередину таблиці return { ... } у 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
Формат предметів QBCore, який читають qb-, ps-, lj- і 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.' },Якщо ви змінили підпис, ціну чи вагу в config/catalogue.lua, натомість скопіюйте записи з власної консолі: вона виводить їх за вашими налаштуваннями.
4. Перший запуск: що ви маєте побачити
У консолі сервера
ZeroDev Sound виводить один блок перевірки (введіть soundcheck у консолі сервера, щоб вивести його знову): база даних і схема, фреймворк, гроші, інвентар і предмети, таблиця гаража, таргет-система, Pulse Phone, моделі, бокси встановлення й налаштування, змінені в грі. Кожен рядок, що не OK, пояснює, що робити; docs/SETUP.md показує приклад, а docs/TROUBLESHOOTING.md пояснює кожен рядок.
- Рядок фреймворку називає те, що знайдено. Якщо це неправильно, задайте
Config.FrameworkабоConfig.Inventoryуconfig/config.lua. - Жовтий рядок
Add these to ox_inventory/data/items.lua ...(або... if these items are not in ... yet, add them), за яким ідуть записи предметів: виконайте розділ 3 для свого інвентаря, потім перезапустіть. Повідомлення ox_inventory зникає, щойно предмети додано. На qs-, codem-, origen- і tgiann-inventory записи виводяться під час кожного запуску як нагадування, незалежно від того, чи ви їх додали. - Жовтий рядок
Copy zds_....png from zerodev-sound/web/img/items into ...: цих зображень ще немає в папці зображень вашого інвентаря. Він називає папку. Pulse Phone app not registered: ...: Pulse Phone працює, але відхилив застосунок. Див. розділ 9.
У грі (п'ять перевірок)
- На мапі є мітка ZeroDev Sound на Legion Square і мітка Car audio bay біля Benny's.
- У магазині продавець стоїть біля стенда з виставленими колонками. Наведіться на продавця (або натисніть E, якщо ресурсу таргету немає) і купіть Roam Portable Speaker.
- Використайте її з інвентаря. Вона з'являється у вас у руках. Натисніть E, відкрийте Library і ввімкніть Night Drive (демо-трек, що постачається зі скриптом). Люди навколо вас це чують.
- Сядьте в авто. Перші кілька разів у кутку екрана показується, яка клавіша відкриває автомагнітолу (K за замовчуванням).
- Заїдьте в бокс встановлення автозвуку як водій і натисніть E. Інсталятор відкриється на вашому авто.
5. Налаштування, які змінюють найчастіше
У грі: /soundadmin > Settings змінює основні налаштування наживо для всіх (бокси встановлення, хто може встановлювати, які авто, ціни, максимальна гучність, тихі години, ліміти, магазин, поліція та пошкодження). Вони зберігаються в базі даних і мають пріоритет над config.lua, доки ви не натиснете Reset to config на панелі.
Усе міститься в config/config.lua, якщо не вказано інше. Продукти, ціни й деталі для авто — у config/catalogue.lua; заводський звук кожного авто — у config/vehicles.lua.
| Що вам потрібно | Налаштування |
|---|---|
| Примусово задати фреймворк чи інвентар | Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none) |
| Змінити команду пульта | Config.Command (за замовчуванням sound, тобто /sound) |
| Змінити клавішу автомагнітоли | Config.HeadUnitKey (за замовчуванням K). Гравці можуть самі перепризначити її в налаштуваннях GTA > Key Bindings > FiveM. |
| Колонок на гравця | Config.MaxPlacedPerPlayer (за замовчуванням 8). Для адміністраторів ліміту немає. |
| Колонок в одній об'єднаній групі | Config.MaxLinkedPerGroup (за замовчуванням 16) |
| Наскільки близько підключатися, наскільки далеко керувати | Config.PairRange (15 m), Config.ControlRange (80 m) |
| Перенести магазин або додати ще магазини | Config.Shop.locations. Кожен приймає label, coords, blip і за бажанням heading (куди повернутий стенд) та clerk (модель педа). Config.Shop.account — це bank або cash. Config.Shop.enabled = false прибирає магазин. |
| Ціни на колонки | price для кожного продукту в config/catalogue.lua > Catalogue.Speakers. Ціна ремкомплекту — Config.Damage.repairPrice. |
| Де встановлюється автозвук | Config.Install.bays (кожен із label, coords, radius, blip). За замовчуванням: один бокс біля Benny's. |
| Дозволити власникам збирати біля свого авто будь-де | Config.Install.anywhere = true. Додає кнопку Install на автомагнітолі та команду /caraudio (Config.Install.command). |
| Які авто можна збирати | Config.Install.vehicles: 'owned' (за замовчуванням) або 'any'. Див. розділ 7. |
| Встановлювати можуть лише механіки | Config.Install.anyone = false і перелічіть роботи в Config.Install.jobs (вони мають бути на зміні). |
| Безкоштовні деталі для авто | Config.Install.chargeParts = false. Config.Install.account — це bank або cash. |
| Ціни на деталі для авто й готові набори | Catalogue.CarParts і Catalogue.CarKits у config/catalogue.lua |
| Заводський звук авто | Vehicles.ByClass і Vehicles.ByModel у config/vehicles.lua (basic, premium, reference, bike, none) |
| Бібліотека: увімкнути або вимкнути | Config.Sources.library. Див. розділ 8. |
| Ваші власні пісні | Config.Library (файли в web/library/) |
| Тихі години | Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (за місцевим часом сервера) |
| Поліцейські роботи та повноваження | Config.Police (див. розділ 10) |
| Колонки ламаються від пострілів | Config.Damage.enabled |
| Ліміти продуктивності | Config.Streaming.propRange (моделі відображаються в межах 90 m), maxAudibleSessions (6 різних пісень чутно одночасно), maxMovingParts (24 анімовані дифузори за кадр) |
| Додаткові рядки консолі для підтримки | Config.Debug (задайте true, поки шукаєте проблему) |
Назви предметів. Якщо інший скрипт уже використовує одну з назв предметів zds_, перейменуйте ключ цього продукту в Catalogue.Speakers (наприклад, zds_roam = { ... }), потім використайте нову назву у своєму інвентарі й перейменуйте його зображення відповідно.
6. Керування
| Що | Як |
|---|---|
| Відкрити пульт | /sound, або E біля колонки, або застосунок Sound у Pulse Phone |
| Автомагнітола | K, сидячи в авто (можна перепризначити в налаштуваннях GTA) |
| Поставити колонку | Використайте її предмет. Наведіться туди, де вона має стояти: там, де вона поміщається, підсвічується зеленим. Коліщатко миші або Q / E повертають її. Enter або ліва кнопка миші ставлять її; Backspace або права кнопка скасовують. |
| Скласти лінійний масив стосом | Під час встановлення Arrow Up / Arrow Down піднімають чи опускають її |
| Нести Roam | Вона з'являється у вас у руках і продовжує грати, поки ви йдете. E — музика, G — поставити, H — скласти. Коли ви сідаєте в авто чи заходите у воду, вона складається. |
| Перемістити або скласти свою колонку | Наведіться на неї й оберіть Move або Pack up, а без ресурсу таргету станьте поруч: G — перемістити (для Roam: знову взяти в руки), H — скласти. Складати можна й на вкладці Speakers пульта. |
| Об'єднати колонки | Підключіться до однієї зі своїх, відкрийте вкладку Speakers пульта й натисніть Link біля інших своїх колонок поблизу. Портативні об'єднуються з портативними, домашні з домашніми, концертні з концертними (у межах 40 m, 60 m і 250 m відповідно). |
| Інсталятор автозвуку | Заїдьте в бокс встановлення як водій і натисніть E (або кнопку Install на автомагнітолі / /caraudio, коли збирання будь-де ввімкнено). Перетягніть деталь, щоб ковзати нею по поверхнях авто, Alt + перетягування зсуває її рівно на її висоті (без прилипання), Shift + перетягування піднімає її, Q / E або Shift + коліщатко повертає її. |
| Співайте через колонки | Біля DJ-мікшера або мікрофонної стійки (продається в магазині, підключається як колонка) колонок, до яких ви підключені, або біля мікрофонної стійки зібраного авто: /soundmic бере мікрофон, повторний /soundmic кладе його назад |
| Поскаржитися на гучну музику | /noise |
| Список для адміністратора | /soundadmin |
| Видати предмет (консоль сервера) | givespeaker <player id> <item name> |
| Спалити саб, щоб показати ефект (персонал) | /soundblow в авто або soundblow <plate> у консолі |
У пульті: Music (бібліотека вашого сервера), Queue (що далі, збережені плейлисти), Speakers (живлення й гучність кожної колонки, зв'язування, згортання) і Tune (шість режимів звуку, триполосний еквалайзер, хто обирає музику, години роботи та «Real distance» для концертних установок). Хто обирає музику: Only me; Party, де будь-хто поруч може запропонувати пісні, які власник схвалює; або Anyone, де люди поруч можуть запускати, ставити на паузу, пропускати, додавати в чергу й перемотувати. Opening hours сам запускає один із плейлистів власника між двома годинами, для магазину чи клубу.
Мікрофон (потрібен pma-voice). Поки ви його тримаєте, усі поруч із будь-якою колонкою цієї системи чують через неї ваш голос з ефектом звукопідсилення, так само гучно, як ця колонка грає музику, і так само далеко, як її чути. Відійдіть на 4 м від мікшера чи мікрофонної стійки, відключіться або покладіть мікрофон, і ваш голос знову стане звичайним. Співати через систему може лише її власник (а для авто ще й адміни); видайте іншим гравцям ace zds.mic, щоб вони могли користуватися будь-якою системою. Ваш голос не лунає з місця, де стоїть кожна колонка: голосовий чат не може розмістити голос там, тому люди біля колонки чують вас із гучністю цієї колонки. Налаштування: Config.Mic.
7. Автозвук
Як гравці збирають
- Заїдьте в бокс встановлення автозвуку (за замовчуванням біля Benny's) і натисніть E як водій.
- Почніть із готового набору (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) або оберіть деталі: сабвуфери (від 8" до 18"), короби, підсилювачі, дверні динаміки, твітери, подіуми, фальшпідлоги, панелі, плексі, конденсатор, другий акумулятор, LED-стрічку та головний пристрій.
- Перетягніть кожну деталь на місце в авто. Саби встають у вирізи свого короба. Кожна деталь має оздоблення (вісім кольорів), а саби й динаміки — ще й решітку та кільце підсвічування. Mirror копіює деталь на інший бік; Fine position рухає її малими кроками. П'ять ракурсів камери: Boot, Cabin, Side, Front, Top. Розмір: саби бувають 8", 10", 12", 15" і 18" (усі саби в коробі одного розміру, а короб будується навколо них, до 30% більший чи менший, ніж був розрахований); дверні динаміки — 5.25", 6.5" і 6x9"; усі інші деталі — від 80% до 130% із кроком 5% (головний пристрій має стандартний розмір). Більші короби й панелі коштують дорожче; зменшена деталь нічого не коштує. На більших динаміках дифузори мають більший хід, а більший дверний динамік грає нижче.
- Натисніть Test system, щоб почути, як збірка звучить в авто, перш ніж платити. Грає перша пісня з
Config.Library(демо-трек із постачання, якщо ви її не змінили). - Натисніть Install. Оплачуються лише нові для авто деталі; деталі, збережені з попереднього встановлення, повторно не оплачуються.
Встановлення зберігається за номерним знаком і повертається щоразу, коли повертається авто: з будь-якого гаража, штрафмайданчика чи респауну. Нічого редагувати у вашому скрипті гаража не потрібно.
Що чують гравці
- Кожне авто вже має заводський звук за класом і моделлю: 4-динамічна система, преміальна 10-динамічна або референсна 13-динамічна, динаміки в обтічнику на мотоциклах; велосипеди, літаки й потяги звуку не мають. Встановлені динаміки замінюють найближчі до них заводські; саби додаються до системи.
- Поза авто крізь кузов проходить переважно бас. Відчинені двері, вікна й багажник випускають більше звуку в той бік, куди вони виходять.
- Авто із сабами м'яко погойдується на пружинах у такт басу, коли стоїть або ледь котиться (ніколи під час руху), і всі всередині відчувають удар.
- Магнітола (K) має гучність, рівень саба, фейдер і баланс.
- Саби, які довго ганяють далеко за межами можливостей їхнього підсилювача й номіналу, близько до повної гучності, можуть згоріти. Усі біля авто бачать тонку цівку диму з цього саба й чують глухий хлопок. Згорілий саб перестає рухатися, бас слабшає, а його дифузор залишається обвугленим, доки його не замінять у боксі (новий саб оплачується; прибрати слід — це не безкоштовний ремонт). Персонал може це показати:
/soundblowв авто абоsoundblow <plate>у консолі сервера.
Які авто можна збирати (Config.Install.vehicles)
'owned'(за замовчуванням): лише авто з таблиці власного транспорту вашого фреймворку (owned_vehiclesна ESX,player_vehiclesна QBCore і Qbox).'any': також авто, які нікому не належать (NPC-авто, заспавнені авто, орендовані).- У будь-якому разі авто, що належить іншому гравцеві, залишається його: змінити його може лише власник, механік на зміні з
Config.Install.jobsабо адміністратор. На standalone-сервері кожне авто вважається власним.
Гаражі, номери та штрафмайданчики
- Номери порівнюються без пробілів по краях і великими літерами, тож гаражі, що доповнюють номери пробілами чи змінюють регістр, однаково збігаються.
- Авто з фальшивим або зміненим номером не знайде свого встановлення, доки йому не повернуть збережений номер.
- Авто, що існують лише на екрані одного гравця (попередній перегляд у гаражі, деякі авто в шоурумі), ніколи не отримують встановлення: для інших це не справжні авто.
Інші скрипти звуку чи магнітол
ZeroDev Sound — окремий ресурс із власними командами (/sound, /caraudio, ...), events і state bags транспорту, тож він не замінює й не змінює інші скрипти (коли він грає в авто, він лише вимикає стандартне радіо GTA). Одночасну роботу двох скриптів автозвуку на одному авто разом не тестували: використовуйте одну магнітолу на авто.
8. Джерела музики
Музика відтворюється лише з аудіофайлів, які ви додаєте до ресурсу. Гравці обирають з вашого списку; вони не можуть вводити посилання, і веб-адреси ніколи не відтворюються. Додавайте лише те аудіо, яке належить вам або на використання та поширення якого ви маєте права.
- Покладіть файли mp3 або ogg у
zerodev-sound/web/library/і вкажіть кожен уConfig.Libraryу вигляді{ title = '...', artist = '...', file = 'name.mp3' }. Вони отримують повний набір можливостей: 3D-звук, приміщення і стіни, салони авто, режими звуку, EQ і конуси, що рухаються в такт справжньому басу. Config.Sources.library = falseвимикає бібліотеку.- Рідне автомобільне радіо GTA, як і раніше, працює в будь-якій машині, поки в ній не грає жодна пісня з цього ресурсу.
- Стартове вікно показує, скільки пісень можуть обрати гравці, і попереджає про кожен пропущений запис (ім'я
файлу, який не mp3 і не ogg, у
web/library/). - Оновлення з 3.0.0: збережені пісні, нещодавні пісні та записи плейлистів, що були посиланнями, більше не показуються й не відтворюються. Пісні з бібліотеки продовжують працювати.
9. Pulse Phone
Нічого налаштовувати не потрібно. Коли на сервері працює Pulse Phone (назва ресурсу phone, будь-яке видання):
- Кожен телефон отримує застосунок Sound на головному екрані. Це той самий пульт, що й
/sound: підключіться до колонки чи авто, оберіть музику, керуйте всією групою. Гравці можуть видалити його й повернути з App Hub. - Те, що грає на підключеній колонці чи в авто, разом із залишком часу, показується в Island і на екрані блокування. Натискання відкриває застосунок Sound.
- Pulse Drive (автомобільний екран Pulse, за замовчуванням F10) показує магнітолу авто, у якому ви сидите: пісню, виконавця й обкладинку, з кнопками відтворення, паузи, попереднього, наступного, гучністю та кнопкою Open для застосунку Sound. Для цього потрібен Pulse Phone 1.2.9 або новіший; старіші версії просто цього не показують.
Гравці без телефона використовують /sound і K, які вміють усе те саме, що й застосунок.
Якщо ви перейменували папку телефона, додайте цей рядок у config/config.lua з її назвою:
Config.PulseResource = 'phone'10. Поліція, сусіди та адміністратори
| Що | Як | Налаштування |
|---|---|---|
| Поскаржитися на гучну музику | /noise надсилає найближчу колонку, що грає (у межах 60 m), поліції на зміні як блимаючу мітку на 3 хвилини. Одна скарга на гравця раз на 2 хвилини. |
Config.Police.complaints, complaintRange |
| Вимкнути колонку | Поліція на зміні: наведіться на колонку > Turn off (police) або вкладка Tune пульта > Police. У межах 12 m. | Config.Police.canSilence, silenceMinutes (15) |
| Конфіскувати колонку | Поліція на зміні, у межах 4 m: наведення > Seize (police) або Tune > Police > Seize. Колонка переходить до офіцера. | Config.Police.canSeize |
| Поліцейські роботи | Гравці з цими роботами на зміні | Config.Police.jobs |
| Зламані колонки | Постріл у встановлену колонку ламає її: вона тріщить і замовкає. Speaker Repair Kit (продається в магазині в розділі Accessories) її лагодить: використайте набір поруч із нею. | Config.Damage |
| Список для адміністратора | /soundadmin: кожна колонка на сервері, що вона грає і кому належить, з кнопками, щоб поставити мітку маршруту, зупинити музику або видалити колонку. |
Config.AdminAce (zerodev.sound.admin) |
| Видати предмет | Консоль сервера: givespeaker <player id> <item name> |
11. Мови
Скрипт постачається тими самими 25 мовами, що й Pulse Phone. Мова задається в config/config.lua:
| Код | Мова | Код | Мова | Код | Мова |
|---|---|---|---|---|---|
en |
Англійська | 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'. За замовчуванням стоїть 'auto', і мова йде за Pulse Phone: сервер бере Config.Locale із Pulse, а кожен гравець отримує Sound мовою, яку обрав у телефоні. Без Pulse усе англійською. Ігрові повідомлення, підказки клавіш, назви предметів і назва клавіші магнітоли лежать у locales/<code>.lua; інтерфейс (пульт, автомагнітола, магазин, інсталятор, застосунок для Pulse) — у locales/<code>_ui.lua. Усе, чого бракує, показується англійською.
Щоб змінити рядок, відредагуйте його у файлі цієї мови. Залишайте всі %s, %d, %.1f, %% і ~a~ як є. Щоб додати власну мову, скопіюйте locales/en.lua у locales/xx.lua, замініть Locales['en'] на Locales['xx'] (в обох місцях), перекладіть текст у лапках і задайте Config.Locale = 'xx'. У locales/ui_strings.txt перелічено всі ключі інтерфейсу для xx_ui.lua.
12. Усунення несправностей
Гравці не можуть використати предмети колонок
- ox_inventory: записи мають бути всередині
ox_inventory/data/items.luaз рядкомclient, а після вставлення ox_inventory треба перезапустити. Папка має й далі називатисяzerodev-sound(записи викликаютьzerodev-sound.useItem). - QBCore / ESX:
zerodev-soundмає запускатися після вашого фреймворку вserver.cfg. - codem-inventory на QBCore: виконайте власний крок codem-inventory, який перенаправляє на нього
QBCore.Functions.UseItem. - Без інвентаря: колонки не є предметами. Гравці відкривають
/soundі натискають Set up у розділі Your speakers.
Немає зображень предметів
- ox_inventory: нічого копіювати не треба; шлях до зображення вказує на zerodev-sound. Якщо вони порожні, перевірте рядок запису
image = 'nui://zerodev-sound/...'і назву папки. - Інші інвентарі: прочитайте рядок консолі
Copy ... into ...: він перелічує відсутні зображення й папку, куди їх покласти. Скопіюйте їх ізzerodev-sound/web/img/items/і перезапустіть інвентар.
Гравець не може відтворити посилання
Так задумано: гравці обирають лише з вашої бібліотеки. Додайте пісню до
Config.Library (розділ 8).
Звуку немає взагалі
- Вбудований браузер FiveM запускає звук без кліку, тож гравцям ніколи не потрібно нічого натискати, щоб «дозволити» аудіо. Якщо один гравець нічого не чує, а інші чують, перевірте FiveM у його мікшері гучності Windows.
- Перевірте колонку на вкладці Speakers пульта: вона може бути вимкнена або Broken.
- Можливо, її вимкнула поліція (на
Config.Police.silenceMinutes), або тихі години обмежують гучність (Config.QuietHours). - Гравець чує щонайбільше
Config.Streaming.maxAudibleSessionsрізних пісень одночасно (6), найближчі першими. - Test system в інсталяторі мовчить, коли
Config.Libraryпорожній абоConfig.Sources.library = false: він грає першу пісню з бібліотеки.
Магазину немає
Config.Shop.enabledмає бутиtrue.- Продавець і стенд з'являються лише тоді, коли гравець перебуває приблизно в межах 70 m від
Config.Shop.locations, і лише на екрані цього гравця. Перевірте задані координати. - З ox_target чи qb-target наведіться на продавця. Без них станьте біля продавця: E Browse speakers.
Колонка показується як звичайна колонка GTA або не показується зовсім
Папки stream/ немає або її перейменовано, або гравець зайшов раніше, ніж запустився ресурс. Перезапустіть сервер і перепідключіться.
Повідомлення автозвуку та що вони означають
| Повідомлення | Чому | Рішення |
|---|---|---|
| Drive into a car audio bay to build. | Збирання будь-де вимкнено, а авто не в боксі. | Заїдьте в бокс (Config.Install.bays) або задайте Config.Install.anywhere = true. |
| Stand next to your car to build its sound system. | Збирання будь-де ввімкнено, а ви далі ніж за 8 m від авто, або /caraudio не знайшов авто в межах 4 m. |
Станьте біля авто або сядьте в нього. |
| Stop the car first. | Авто рухається. | Зупиніться. |
| Car audio can only be fitted to a car you own. | Config.Install.vehicles = 'owned', а цього номера немає у вашій таблиці власного транспорту. Також показується всім, крім адміністраторів, коли цю таблицю неможливо прочитати: тоді консоль показує червоний рядок could not read the owned-vehicles table. |
Використайте власне авто, задайте 'any' або виправте помилку бази даних, яку називає консоль. |
| Only the owner can change this car's audio. | Авто належить іншому гравцеві. Також показується, коли Config.Install.anyone = false, а гравець не має роботи на зміні з Config.Install.jobs. |
Збирає власник, механік на зміні або адміністратор. |
| Not enough money. | Нові деталі коштують більше, ніж гравець має на Config.Install.account. |
Приберіть деталі або задайте Config.Install.chargeParts = false. |
| A subwoofer blew. It needs replacing. | Саби надто довго й надто сильно ганяли майже на повній гучності. | Замініть саб у боксі; потужніший підсилювач допоможе. |
Поліція не бачить своїх опцій
Додайте назви своїх поліцейських робіт у Config.Police.jobs. Гравці мають бути на зміні.
13. Оновлення
Переходите з 1.x на 2.0: прочитайте UPGRADING.md. Між версіями 2.x:
- Зробіть резервну копію папки
config/,locales/, якщо ви її перекладали, і всіх пісень, які ви додали вweb/library/. - Зупиніть сервер. Замініть папку
zerodev-soundновою (зберігши назву). - Поверніть свої файли
config/. Якщо нотатки до оновлення згадують нові налаштування, скопіюйте ці рядки з нових файлів у свої. - Запустіть сервер і прочитайте консоль. Нові предмети, якщо вони є, виводяться для вашого інвентаря.
Розміщені колонки, встановлення в авто й плейлисти зберігаються в базі даних (zds_speakers, zds_car_builds, zds_playlists, zds_stash), і оновлення їх не зачіпає.
Відкат: тримайте попередню папку zerodev-sound поза resources, доки нова версія не працюватиме як слід, і перед оновленням зробіть резервну копію бази даних. Щоб відкотитися, зупиніть сервер, поверніть попередню папку й свій config/ і запустіть його. Відкат із 3.0 на 2.x на тій самій базі даних не тестувався, тож якщо щось виглядає не так, відновіть резервну копію бази.