توثيق 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. العناصر للـ inventory الخاص بك 4. التشغيل الأول: ما يجب أن تراه 5. الإعدادات الأكثر تغييرًا 6. أزرار التحكم 7. صوتيات السيارات 8. مصادر الموسيقى 9. Pulse Phone 10. الشرطة والجيران والأدمن 11. اللغات 12. حل المشاكل 13. التحديث
1. المتطلبات
| مطلوب | oxmysql. ينشئ ZeroDev Sound جداوله بنفسه عند أول تشغيل؛ ولا يوجد ملف SQL لاستيراده. |
| الـ Framework | ESX Legacy أو QBCore أو Qbox أو بدون (standalone). يُكتشف تلقائيًا. |
| الـ Inventory | ox_inventory، أو qb-inventory (وأيضًا ps- وlj-inventory)، أو qs-inventory، أو codem-inventory، أو core_inventory، أو origen_inventory، أو tgiann-inventory، أو inventory الخاص بـ ESX، أو بدون. يُكتشف تلقائيًا. |
| اختياري | ox_target أو qb-target (بدون أي منهما، يحصل اللاعبون على تلميح مفتاح على الشاشة بدلًا من ذلك). Pulse Phone 1.2.9 أو أحدث (يضيف تطبيق Sound وستيريو السيارة على Pulse Drive). pma-voice للميكروفون: بدونه يمكن حمل الميكروفون والغناء فيه، لكن لا أحد يسمعه عبر السماعات. |
لا شيء آخر: بدون ox_lib، وبدون مفتاح API، وبدون حساب Google.
سيرفرات Linux
سيرفرات Linux: استخدم server artifact الموصى به (Recommended)، وليس الأحدث (Latest). في صفحة تحميل سيرفر FiveM (docs.fivem.net/docs/server-download/) اختر Linux وفرع التحديث Recommended. سيرفر على أحدث artifact لـ Linux تعطّل أثناء التحميل (طبع FXServer تفريغ /proc/self/maps)، والانتقال إلى الـ artifact الموصى به أصلح المشكلة. هذا هو البلاغ الوحيد لدينا عن Linux؛ ولم نشغّل ZeroDev Sound على سيرفر Linux بأنفسنا بعد.
سيرفرات Linux: استخدم server artifact الموصى به (Recommended)، وليس الأحدث (Latest). في صفحة تحميل سيرفر FiveM (docs.fivem.net/docs/server-download/) اختر Linux وفرع التحديث Recommended. سيرفر على أحدث artifact لـ Linux تعطّل أثناء التحميل (طبع FXServer تفريغ /proc/self/maps)، والانتقال إلى الـ artifact الموصى به أصلح المشكلة. هذا هو البلاغ الوحيد لدينا عن Linux؛ ولم نشغّل ZeroDev Sound على سيرفر Linux بأنفسنا بعد.
على سيرفر standalone (بدون framework) كل شيء مجاني: المتجر وقطع السيارات لا تكلف شيئًا.
2. التثبيت
الخطوة 1. ضع المجلد. ضع مجلد zerodev-sound في مجلد resources (أي مجلد فرعي لا بأس به، مثلًا resources/[zerodev]/zerodev-sound). أبقِ اسم المجلد zerodev-sound: إدخالات عناصر ox_inventory تستدعيه بهذا الاسم.
الخطوة 2. أضفه إلى server.cfg، بعد قاعدة البيانات والـ framework والـ 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-soundالخطوة 3. امنح الأدمن صلاحية الإدارة (بلا حد للسماعات، وقائمة /soundadmin، والإيقاف والإزالة عن بُعد):
add_ace group.admin zerodev.sound.admin allowالخطوة 4. أعدّ العناصر للـ inventory الخاص بك: القسم 3. على inventory الخاص بـ ESX وعلى QBCore يتم ذلك لك.
الخطوة 5. أعِد تشغيل السيرفر (إعادة تشغيل كاملة، وليس الريسورس فقط، حتى يحمّل كل لاعب الموديلات) وراجع الكونسول: القسم 4.
3. العناصر للـ inventory الخاص بك
يوجد 12 عنصرًا: عشر سماعات وحامل الميكروفون وطقم التصليح.
| اسم العنصر | التصنيف | الوزن |
|---|---|---|
zds_roam |
سماعة Roam المحمولة | 2 kg |
zds_room_shelf |
سماعة رف | 4 kg |
zds_room_tower |
سماعة برج | 10 kg |
zds_room_ceiling |
سماعة سقف | 2 kg |
zds_room_sub |
Subwoofer منزلي | 8 kg |
zds_stage_pa |
سماعة PA | 10 kg |
zds_stage_sub |
Subwoofer للحفلات | 15 kg |
zds_stage_array |
سماعة Line Array | 12 kg |
zds_stage_monitor |
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/. لن تحتاج إلى التخمين أبدًا: كلما كان شيء ناقصًا، يطبع كونسول السيرفر الإدخالات الدقيقة للـ inventory الخاص بك ويذكر أي صورة ليست في مكانها بعد.
أي inventory لديك؟
| الـ Inventory | ما تفعله | الصور تذهب إلى |
|---|---|---|
| inventory الخاص بـ 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) | لا شيء. تُضاف العناصر إلى العناصر المشتركة في 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 | لا شيء. تُضاف العناصر إلى العناصر المشتركة في 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/ |
| بدون inventory | لا شيء. السماعات المشتراة والمحزومة تنتظر في /sound تحت Your speakers، مع زر Set up. |
لا شيء لنسخه |
لإضافة العناصر إلى qb-core يدويًا بدلًا من ترك السكربت يفعل ذلك، الصق كتلة QBCore في qb-core/shared/items.lua.
inventory آخر يحاكي أحد هذه الـ APIs: اضبط Config.Inventory عليه (راجع القسم 5). ويمكن ربط inventory خاص بك في server/bridge.lua، وهو قابل للقراءة: كل inventory هناك عبارة عن ثلاث دوال صغيرة (العدّ، والإضافة، والإزالة).
كتلة 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 في كونسول السيرفر لطباعته مجددًا): قاعدة البيانات والمخطط، والـ framework، والأموال، والـ inventory والعناصر، وجدول الكراج، والـ targeting، وPulse Phone، والموديلات، وورش التركيب، والإعدادات التي تغيّرت داخل اللعبة. كل سطر ليس OK يوضح ما يجب فعله؛ ويعرض docs/SETUP.md مثالًا ويشرح docs/TROUBLESHOOTING.md كل سطر.
- سطر الـ framework يذكر ما تم العثور عليه. إذا كان خاطئًا، اضبط
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 للـ inventory الخاص بك، ثم أعِد التشغيل. رسالة ox_inventory تتوقف بمجرد إضافة العناصر. على qs- وcodem- وorigen- وtgiann-inventory تُطبع الإدخالات عند كل تشغيل كتذكير، سواء أضفتها أم لا. - سطر أصفر
Copy zds_....png from zerodev-sound/web/img/items into ...: تلك الصور ليست في مجلد صور الـ inventory لديك بعد. ويذكر اسم المجلد. Pulse Phone app not registered: ...: Pulse Phone يعمل لكنه رفض التطبيق. راجع القسم 9.
داخل اللعبة (خمسة فحوصات)
- تُظهر الخريطة علامة ZeroDev Sound في Legion Square وعلامة Car audio bay عند Benny's.
- في المتجر، يقف بائع عند منصة تُعرض عليها السماعات. استهدف البائع (أو اضغط E عند عدم وجود ريسورس target) واشترِ Roam Portable Speaker.
- استخدمها من الـ inventory. ستخرج في يديك. اضغط E، وافتح Library وشغّل Night Drive (مقطع تجريبي يأتي مع السكربت). من حولك يسمعونه.
- اركب سيارة. في المرات الأولى، تُظهر زاوية الشاشة أي مفتاح يفتح ستيريو السيارة (K افتراضيًا).
- ادخل بسيارتك إلى ورشة صوتيات السيارات كسائق واضغط E. تنفتح أداة التركيب على سيارتك.
5. الإعدادات الأكثر تغييرًا
داخل اللعبة: /soundadmin > Settings يغيّر الإعدادات الشائعة مباشرةً للجميع (ورش التركيب، ومن يستطيع التركيب، وأي سيارات، والأسعار، وأعلى مستوى صوت، وساعات الهدوء، والحدود، والمتجر، والشرطة، والتلف). وتُحفظ في قاعدة البيانات ولها الأولوية على config.lua حتى تضغط Reset to config في اللوحة.
كل شيء موجود في config/config.lua ما لم يُذكر غير ذلك. المنتجات والأسعار وقطع السيارات في config/catalogue.lua؛ وصوت المصنع لكل سيارة في config/vehicles.lua.
| ما تريده | الإعداد |
|---|---|
| فرض الـ framework أو الـ inventory | 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 (موديل ped). قيمة 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 = { ... })، ثم استخدم الاسم الجديد في الـ inventory لديك وأعِد تسمية صورته لتطابقه.
6. أزرار التحكم
| ماذا | كيف |
|---|---|
| فتح جهاز التحكم | /sound، أو E عند السماعة، أو تطبيق Sound في Pulse Phone |
| ستيريو السيارة | K أثناء الجلوس في سيارة (يمكن تغيير ربطه في إعدادات GTA) |
| وضع سماعة | استخدم العنصر الخاص بها. وجّه إلى المكان الذي يجب أن توضع فيه: تظهر باللون الأخضر حيث تناسب. عجلة الماوس أو Q / E تديرها. Enter أو النقر الأيسر يضعها؛ وBackspace أو النقر الأيمن يلغي. |
| تكديس line array | أثناء وضعها، Arrow Up / Arrow Down يرفعها أو يخفضها |
| حمل سماعة Roam | تخرج في يديك وتستمر في التشغيل أثناء المشي. E للموسيقى، وG للوضع، وH للحزم. ركوب سيارة أو دخول الماء يحزمها. |
| نقل أو حزم سماعة تملكها | استهدفها واختر Move أو Pack up، أو بدون ريسورس target قف بجانبها: 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> |
| حرق sub لعرض التأثير (للطاقم) | /soundblow داخل السيارة، أو soundblow <plate> في الكونسول |
في الريموت: Music (مكتبة السيرفر)، وQueue (التالي، والقوائم المحفوظة)، وSpeakers (طاقة كل سماعة ومستواها، والربط، والتجميع)، وTune (ستة أوضاع صوت، ومعادل صوت بثلاثة نطاقات، ومن يختار الموسيقى، وساعات العمل، و"Real distance" لتجهيزات الحفلات). من يختار الموسيقى: Only me؛ أو Party، حيث يمكن لأي شخص قريب طلب أغانٍ ليوافق عليها المالك؛ أو Anyone، حيث يمكن للقريبين التشغيل والإيقاف المؤقت والتخطي والإضافة إلى قائمة الانتظار والتقديم. Opening hours تشغّل تلقائيًا إحدى قوائم المالك بين ساعتين، لمتجر أو نادٍ.
الميكروفون (يحتاج pma-voice). أثناء حملك له، يسمع كل من هو قرب أي سماعة في ذلك النظام صوتك عبرها، بصوت يشبه نظام PA، وبنفس علو الموسيقى التي تشغلها تلك السماعة وإلى نفس المسافة التي تصل إليها؛ ابتعد 4 m عن الميكسر أو حامل الميكروفون، أو افصل الاتصال، أو أعد الميكروفون، فيعود صوتك طبيعيًا. صاحب النظام وحده (والمشرفون، في حالة السيارة) يمكنه الغناء عبره؛ امنح اللاعبين الآخرين صلاحية ace zds.mic ليستخدموا أي نظام. صوتك لا يُسمع من موضع كل سماعة: الدردشة الصوتية لا تستطيع وضع الصوت هناك، لذا يسمعك من هم قرب السماعة بعلو تلك السماعة بدلًا من ذلك. الإعدادات: Config.Mic.
7. صوتيات السيارات
كيف يركّب اللاعبون
- ادخل بسيارتك إلى ورشة صوتيات السيارات (Benny's افتراضيًا) واضغط E كسائق.
- ابدأ من طقم جاهز (Daily thump، Competition، Trunk wall، Sound quality، Clean and hidden) أو اختر القطع: سبووفرات (من 8" إلى 18")، وصناديق، وأمبليات، وسماعات أبواب، وتويترات، وpods، وأرضيات مزيفة، وألواح، وبليكسي، ومكثّف، وبطارية ثانية، وشريط LED، ووحدة رأس (head unit).
- اسحب كل قطعة إلى مكانها في السيارة. الـ subs تستقر في فتحات صندوقها. كل قطعة تأخذ تشطيبًا (ثمانية ألوان)، والـ subs والسماعات تأخذ شبكة وحلقة إضاءة. Mirror ينسخ القطعة إلى الجهة الأخرى؛ وFine position يحرّكها بخطوات صغيرة. خمسة مناظر للكاميرا: Boot وCabin وSide وFront وTop. الحجم: الـ subs متوفرة بقياس 8" و10" و12" و15" و18" (كل الـ subs في صندوق واحد بنفس الحجم والصندوق يُبنى حولها، حتى 30% أكبر أو أصغر مما صُنع له)؛ وسماعات الأبواب بقياس 5.25" و6.5" و6x9"؛ وكل قطعة أخرى من 80% إلى 130% بخطوات 5% (وحدة الرأس بحجم قياسي). الصناديق والألواح الأكبر تكلف أكثر؛ والقطعة التي تُصغَّر لا تكلف شيئًا. المخاريط تتحرك أكثر في السماعات الأكبر، وسماعة الباب الأكبر تصل إلى ترددات أخفض.
- اضغط Test system لسماع التركيب يعمل في السيارة قبل الدفع. يشغّل أول أغنية في
Config.Library(المقطع التجريبي المرفق ما لم تغيّره). - اضغط Install. تُحسب فقط القطع الجديدة على السيارة؛ والقطع المحتفظ بها من التركيب السابق لا تُحسب مرة أخرى.
يُحفظ التركيب مرتبطًا باللوحة ويعود كلما عادت السيارة: من أي كراج أو حجز أو إعادة ظهور. لا شيء يُعدَّل في سكربت الكراج لديك.
ما يسمعه اللاعبون
- كل سيارة لديها مسبقًا صوت مصنع حسب الفئة والموديل: نظام بأربع سماعات، أو نظام premium بعشر سماعات، أو نظام reference بثلاث عشرة سماعة، وسماعات في هيكل الدراجات النارية؛ أما الدراجات الهوائية والطائرات والقطارات فليس لها صوت. السماعات المركّبة تحل محل سماعات المصنع الأقرب إليها؛ والـ subs تُضاف إليه.
- خارج السيارة، يمر الباص غالبًا عبر الهيكل. الأبواب المفتوحة والنوافذ المفتوحة والصندوق المفتوح كل منها يُخرج المزيد من الصوت، نحو الجهة التي يواجهها.
- السيارة التي فيها subs تهتز برفق على نوابضها مع الباص وهي متوقفة أو تسير ببطء شديد (وليس أثناء القيادة أبدًا)، ويشعر كل من بداخلها بالـ kick.
- الستيريو (K) فيه مستوى الصوت، ومستوى الـ sub، والـ fader، والـ balance.
- الـ subs التي تُدفع لفترة أبعد بكثير مما يسمح به الأمبلي وتصنيفها، قرب أعلى مستوى صوت، قد تحترق. يرى كل من بالقرب من السيارة خيطًا رفيعًا من الدخان من ذلك الـ sub ويسمع فرقعة مكتومة. الـ sub المحروق يتوقف عن الحركة، وينخفض الباص، ويبقى مخروطه متفحمًا حتى يُستبدل في الورشة (الـ sub الجديد يُدفع ثمنه؛ وإزالة الأثر ليست تصليحًا مجانيًا). يمكن للطاقم عرض ذلك:
/soundblowداخل السيارة، أوsoundblow <plate>في كونسول السيرفر.
أي سيارات يمكن التركيب فيها (Config.Install.vehicles)
'owned'(الافتراضي): فقط السيارات الموجودة في جدول المركبات المملوكة في الـ framework لديك (owned_vehiclesفي ESX، وplayer_vehiclesفي QBCore وQbox).'any': أيضًا السيارات التي لا يملكها أحد (سيارات الـ NPC، والسيارات المُستدعاة، والمستأجرة).- في الحالتين، السيارة التي يملكها لاعب آخر تبقى له: فقط مالكها، أو ميكانيكي في الدوام من
Config.Install.jobs، أو أدمن يمكنه تغييرها. على سيرفر standalone كل سيارة تُعتبر مملوكة.
الكراجات واللوحات والحجز
- تُطابَق اللوحات بعد إزالة المسافات وبالأحرف الكبيرة، لذا فالكراجات التي تضيف مسافات أو تغيّر حالة الأحرف تبقى متطابقة.
- السيارة ذات اللوحة المزيفة أو المتغيرة لا تجد تركيبها حتى تعود لوحتها المحفوظة.
- السيارات الموجودة فقط على شاشة لاعب واحد (معاينات الكراج، وبعض سيارات المعارض) لا تحصل على تركيب أبدًا: فهي ليست سيارات حقيقية بالنسبة لأي شخص آخر.
سكربتات صوت أو ستيريو أخرى
ZeroDev Sound ريسورس مستقل بأوامره الخاصة (/sound، /caraudio، ...) وأحداثه و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 دقائق. بلاغ واحد لكل لاعب كل دقيقتين. |
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بعد الـ framework فيserver.cfg. - codem-inventory على QBCore: أكمل الخطوة الخاصة بـ codem-inventory التي توجّه
QBCore.Functions.UseItemإليه. - بدون inventory: السماعات ليست عناصر. يفتح اللاعبون
/soundويضغطون Set up تحت Your speakers.
صور العناصر مفقودة
- ox_inventory: لا شيء لنسخه؛ مسار الصورة يشير إلى zerodev-sound. إذا كانت فارغة، تحقق من سطر
image = 'nui://zerodev-sound/...'في الإدخال ومن اسم المجلد. - أنظمة inventory أخرى: اقرأ سطر الكونسول
Copy ... into ...: فهو يسرد الصور الناقصة والمجلد الذي تذهب إليه. انسخها منzerodev-sound/web/img/items/وأعِد تشغيل الـ inventory.
لا يستطيع اللاعب تشغيل رابط
هذا مقصود: يختار اللاعبون من مكتبتك فقط. أضف الأغنية إلى
Config.Library (القسم 8).
لا يوجد صوت إطلاقًا
- المتصفح المدمج في FiveM يبدأ الصوت بدون نقرة، لذا لا يحتاج اللاعبون أبدًا إلى الضغط على أي شيء "للسماح" بالصوت. إذا كان لاعب واحد لا يسمع شيئًا بينما يسمع الآخرون، تحقق من FiveM في خالط مستوى الصوت (volume mixer) في 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 لتصفح السماعات.
السماعة تظهر كسماعة 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. (احترق subwoofer. يجب استبداله.) | الـ subs دُفعت بقوة زائدة لفترة طويلة قرب أعلى مستوى صوت. | استبدل الـ sub في الورشة؛ والأمبلي الأكبر يساعد. |
الشرطة لا ترى خياراتها
أضف أسماء وظائف الشرطة لديك إلى Config.Police.jobs. يجب أن يكون اللاعبون في الدوام.
13. التحديث
عند الانتقال من 1.x إلى 2.0: اقرأ UPGRADING.md. وبين إصدارات 2.x:
- خذ نسخة احتياطية من مجلد
config/، وlocales/إذا كنت قد ترجمته، وأي أغانٍ أضفتها إلىweb/library/. - أوقف السيرفر. استبدل مجلد
zerodev-soundبالجديد (احتفظ بالاسم). - أعِد ملفات
config/الخاصة بك. إذا ذكرت ملاحظات التحديث إعدادات جديدة، انسخ تلك الأسطر من الملفات الجديدة إلى ملفاتك. - شغّل السيرفر واقرأ الكونسول. العناصر الجديدة، إن وُجدت، تُطبع للـ inventory الخاص بك.
السماعات الموضوعة وتركيبات السيارات وقوائم التشغيل محفوظة في قاعدة البيانات (zds_speakers، zds_car_builds، zds_playlists، zds_stash) ولا يمسّها التحديث.
العودة إلى الإصدار السابق: احتفظ بمجلد zerodev-sound السابق خارج resources حتى يعمل الإصدار الجديد جيدًا، وخذ نسخة احتياطية من قاعدة البيانات قبل التحديث. للعودة، أوقف السيرفر، وأعد المجلد السابق وconfig/ الخاص بك إلى مكانهما، ثم شغّله. لم تُختبر العودة من 3.0 إلى 2.x على نفس قاعدة البيانات، لذا استعد النسخة الاحتياطية لقاعدة البيانات إذا بدا أي شيء غير سليم.