วิธีติดตั้ง pma-voice FiveM แบบถูกต้อง ตั้งค่าเสียง Radio และ Voice Chat
การติดตั้ง pma-voice ใน FiveM ต้องทำมากกว่าการนำ Folder ไปใส่ใน resources เพราะระบบเสียงเกี่ยวข้องกับ OneSync, Mumble, Voice Convars, Keybinds, Radio, Phone และ Scripts อื่นที่อาจเข้ามาควบคุม Voice Natives ซ้ำ
โครงสร้างพื้นฐานคือ
FiveM / FXServer
↓
OneSync
↓
pma-voice
↓
Proximity Voice
Radio
Calls
↓
Radio / Phone / HUD Scripts
ถ้าใช้ Qbox หรือ QBCore อาจมีโครงสร้างประมาณ
Framework
↓
Radio / Phone
↓
pma-voice
↓
FiveM Internal Mumble
เป้าหมายของการติดตั้งที่ถูกต้องไม่ใช่แค่ให้ Resource ขึ้น started แต่ต้องทดสอบว่า ผู้เล่น 2 คนได้ยินกันตามระยะ, เปลี่ยน Voice Mode ได้, Radio ใช้งานได้ และ Phone Call ไม่ชนกับ Voice Resource ตัวอื่น
① pma-voice ต้องใช้อะไรบ้าง
สิ่งสำคัญคือ
FXServer ปัจจุบัน
OneSync
pma-voice
FiveM Voice/Mumble
สำหรับ Voice Core พื้นฐานไม่จำเป็นต้องมี
oxmysql
ox_lib
ox_target
ox_inventory
โดยตรง
แต่ Radio, Phone หรือ HUD ที่นำมาเชื่อมกับ pma-voice อาจมี Dependencies ของตัวเอง
② pma-voice ไม่ต้องใช้ Database โดยตรง
Voice Core ไม่ได้ต้อง Query Character หรือ Inventory Database เพื่อให้ Proximity Voice ทำงาน
ดังนั้น
pma-voice
≠ Database Resource
ถ้า Proximity Voice ใช้ไม่ได้ ไม่ควรเริ่มแก้ oxmysql
ให้ตรวจ
OneSync
pma-voice
FiveM Voice
Microphone
Voice Scripts
ก่อน
③ ต้องเปิด OneSync
Current fxmanifest.lua ของ pma-voice ประกาศ
/onesync
เป็น Dependency
ดังนั้น Server ต้องใช้ OneSync
อย่าเปิด Manifest แล้วลบ
/onesync
เพียงเพื่อบังคับ Resource ให้ Start
แนวทางที่ถูกคือแก้ FXServer Configuration ให้ตรง Requirement
④ ตรวจ Version ก่อนดาวน์โหลด
สถานะปัจจุบันมีเรื่องที่ควรรู้
Current main branch ระบุใน fxmanifest.lua
version 7.0.1
แต่ Project README เตือนว่า Main Branch มี
breaking changes
ขณะที่ GitHub Releases ที่ตรวจสอบยังแสดง Tagged Release สาย 6.6.2
ดังนั้น Production Server ไม่ควรคิดว่า
เลข Version สูงที่สุด
=
ดีที่สุดสำหรับ Server ปัจจุบันทันที
ต้องดู Radio/Phone/HUD Compatibility ด้วย
⑤ ควรใช้ Main หรือ Release
Server ใหม่ตาม Qbox/QBCore Recipe ปัจจุบัน
Current Recipes ของทั้ง Qbox และ QBCore ดาวน์โหลด
pma-voice
ref: main
ดังนั้น Server ใหม่ที่สร้างตาม Recipe ปัจจุบันจะได้ Main Branch
Existing Production Server
ควร
จด Version/Commit ปัจจุบัน
↓
Backup
↓
Test Main/Release ใหม่
↓
ทดสอบ Radio
↓
ทดสอบ Phone
↓
ทดสอบ HUD
↓
ค่อย Production
อย่า Update Voice Core แบบ Blind
⑥ ดาวน์โหลด pma-voice
หลังดาวน์โหลด Resource ต้องได้ Folder ชื่อ
pma-voice
ไม่ควรปล่อยชื่อเช่น
pma-voice-main
pma-voice-master
pma_voice
voice-new
เพราะ Resources ภายนอกอาจเรียก
exports['pma-voice']
โดยตรง
⑦ วาง Resource ไว้ที่ไหน
ตัวอย่าง
resources/
└── [voice]/
└── pma-voice/
หรือ
resources/
└── pma-voice/
ก็ได้
การใช้
[voice]
เป็นเพียง Category สำหรับจัด Resources
⑧ ตรวจ Folder ซ้อน
ตัวอย่างผิด
resources/
└── [voice]/
└── pma-voice/
└── pma-voice/
└── fxmanifest.lua
ควรเป็น
resources/
└── [voice]/
└── pma-voice/
├── fxmanifest.lua
├── shared.lua
├── client/
├── server/
└── ui/
fxmanifest.lua ต้องอยู่ Root ของ Resource
⑨ ตรวจ UI Files
Current Manifest ใช้
ui_page 'ui/index.html'
และโหลด Files จาก
ui/
ดังนั้นหาก Resource Package ไม่ครบ อาจเกิดปัญหากับ Built-in Voice UI หรือเสียงประกอบ
ควรใช้ Repository/Package ที่ครบชุด
⑩ ตั้ง Voice Config ก่อน Start pma-voice
Voice Convars ควรอยู่ก่อน
ensure pma-voice
ตัวอย่าง
setr voice_enableUi 1
setr voice_enableProximityCycle 1
setr voice_defaultCycle "F11"
setr voice_defaultVoiceMode 2
ensure pma-voice
ทำให้ Resource อ่าน Configuration ตั้งแต่เริ่มต้น
⑪ Config พื้นฐานที่แนะนำให้เริ่มทดสอบ
สามารถเริ่มด้วย
setr voice_enableUi 1
setr voice_enableProximityCycle 1
setr voice_defaultCycle "F11"
setr voice_defaultVoiceMode 2
setr voice_enableRadios 1
setr voice_enableCalls 1
setr voice_defaultRadioVolume 30
setr voice_defaultCallVolume 60
setr voice_debugMode 0
ensure pma-voice
จากนั้นค่อยปรับ Audio/Submix หลัง Voice พื้นฐานทำงานแล้ว
⑫ Voice Mode ค่า 1 2 3 คืออะไร
Current Configuration ใช้
1 = Whisper
2 = Normal
3 = Shouting
Default คือ
setr voice_defaultVoiceMode 2
ดังนั้นผู้เล่นจะเริ่มด้วย Normal Voice
⑬ ตั้งปุ่มเปลี่ยนระยะเสียง
Default ปัจจุบันคือ
setr voice_defaultCycle "F11"
Player สามารถ Cycle ระหว่าง
Whisper
Normal
Shouting
เมื่อ
setr voice_enableProximityCycle 1
⑭ เปลี่ยน Default Key แต่ Player เก่ายังใช้ปุ่มเดิม
นี่ไม่จำเป็นต้องเป็น Bug
Project ระบุว่า Default Key Changes มีผลกับ ผู้เล่นใหม่
Player ที่เคยเข้า Server แล้วอาจมี Key Mapping บันทึกอยู่
ให้เข้า
FiveM Settings
↓
Key Bindings
↓
FiveM
↓
pma-voice
แล้วแก้ปุ่มด้วยตนเอง
⑮ Radio ต้องเปิดไหม
ถ้าต้องการ Radio Module
setr voice_enableRadios 1
ถ้า Server ไม่มี Radio เลย สามารถปิดได้
setr voice_enableRadios 0
อย่าเปิด Module ที่ไม่ได้ใช้โดยไม่มีเหตุผล
⑯ Call ต้องเปิดไหม
Current Main ใช้ Convar
setr voice_enableCalls 1
สำหรับ Call Module
จุดนี้สำคัญมาก เพราะ Config เก่าอาจใช้
voice_enablePhones
ซึ่ง Main Branch ปัจจุบันเปลี่ยนเป็น
voice_enableCalls
⑰ Call Volume ใช้ชื่ออะไร
Current Main ใช้
setr voice_defaultCallVolume 60
แทนชื่อเก่า
voice_defaultPhoneVolume
ถ้า Update Server แล้ว Phone Voice ใช้ไม่ได้ ให้ตรวจ Config นี้ด้วย
⑱ ตั้ง Radio Volume
ตัวอย่าง
setr voice_defaultRadioVolume 30
ค่าอยู่ในช่วง Volume ที่ Resource รองรับ
Radio UI ภายนอกสามารถปรับ Volume ภายหลังผ่าน API ได้
ไม่จำเป็นต้องแก้ Source ของ pma-voice
⑲ Native Audio คืออะไร
เปิดด้วย
setr voice_useNativeAudio true
ช่วยใช้ Native Audio Features ของเกม
และจำเป็นสำหรับ Submix ตาม Current README
เหมาะเมื่อใช้ Effect เสียง Radio/Call ที่ต้องการ Character เสียงเฉพาะ
⑳ อย่าเปิด Audio Modes หลายตัวพร้อมกัน
Current Project เตือนว่าไม่ควรเปิด
Native Audio
+
3D Audio
พร้อมกัน
ควรเลือก Audio Architecture ชุดเดียว
ตัวอย่าง
setr voice_useNativeAudio true
setr voice_use3dAudio false
setr voice_use2dAudio false
อย่าสุ่มเปิดทุกค่าเป็น true
㉑ Submix คืออะไร
เปิดด้วย
setr voice_enableSubmix 1
Submix ทำให้เสียง Radio/Call มี Character แตกต่างจากเสียง Proximity ปกติ
แต่ Current README ระบุว่า Submix ต้องใช้ Native Audio
ดังนั้นถ้าจะเปิด Submix ควรตรวจ
setr voice_useNativeAudio true
ด้วย
㉒ Radio Animation
Current Config รองรับ
setr voice_enableRadioAnim 1
เพื่อแสดง Animation ขณะ Push-to-Talk
ถ้า Radio Script/HUD ของ Server มี Animation ของตัวเอง อาจปิดเพื่อไม่ให้ชนกัน
㉓ Radio Key
Current Default Radio Key ระบุเป็น
setr voice_defaultRadio "LMENU"
โดยทั่วไปหมายถึง Left Alt
แต่ Player สามารถ Remap ผ่าน FiveM Key Bindings ได้
ควรตรวจด้วยว่าปุ่มนี้ไม่ชน Target หรือ Gameplay Key อื่นของ Server
㉔ ระวัง Left Alt ชน ox_target
ox_target ก็มักใช้
Left Alt
เป็น Default Target Hotkey
ดังนั้นถ้า Server ใช้
ox_target
+
pma-voice Radio
พร้อมกัน ควรออกแบบ Keybind ให้ไม่ทำให้ UX สับสน
เช่นเปลี่ยน Radio PTT หรือ Target Key ตาม Server Design
㉕ voice_enableUi
ถ้าใช้ Built-in UI
setr voice_enableUi 1
ถ้ามี Custom HUD ที่จัด Voice UI เอง สามารถปิด
setr voice_enableUi 0
แต่ Custom HUD ต้องเชื่อม Voice Events/States ให้ครบ
㉖ voice_debugMode
ระหว่างแก้ปัญหาสามารถเปิด
setr voice_debugMode 1
เพื่อเพิ่ม Debug Information
ถ้าต้องการ Verbose Logging อาจมีระดับสูงกว่าใน Current Project
Production ปกติควรกลับเป็น
setr voice_debugMode 0
หลังตรวจเสร็จ
㉗ voice_useSendingRangeOnly ต้องตั้งอย่างไร
จุดนี้ควรระวังเป็นพิเศษใน Current Main
README ปัจจุบันยังมีคำแนะนำเกี่ยวกับ voice_useSendingRangeOnly แต่ Source/Recipes ปัจจุบันมีการเปลี่ยนแปลงและบาง Config ใช้
setr voice_useSendingRangeOnly false
เช่น Current QBCore Recipe
ดังนั้นอย่า Copy ค่านี้จาก Tutorial เก่าหรือบทความเก่าแบบตายตัว
ควรใช้ค่าที่ตรงกับ Version/Commit และ Recipe ที่คุณกำลังใช้อยู่จริง
㉘ ทำไม Current Main ต้องระวัง Config เก่า
เพราะ Project ระบุเองว่ามี Breaking Changes
ตัวอย่าง
voice_defaultPhoneVolume
→ voice_defaultCallVolume
voice_enablePhones
→ voice_enableCalls
และ State Bag
phone
→ call
ดังนั้นปัญหาหลัง Update อาจไม่ได้เกิดจากไมค์ แต่เกิดจาก Integration Script ยังใช้ API เก่า
㉙ เพิ่ม pma-voice ใน server.cfg
พื้นฐาน
ensure pma-voice
ถ้าใช้ Folder
[voice]
สามารถ ensure [voice] ได้ แต่สำหรับ Debug แนะนำให้ระบุ Resources สำคัญชัดเจน
เช่น
ensure pma-voice
ensure qbx_radio
ทำให้เห็น Start Order ชัดกว่า
㉚ Start Radio หลัง pma-voice
ถ้า Radio Resource ต้องเรียก Exports ของ pma-voice
ควรเป็น
ensure pma-voice
ensure my_radio
ไม่ควร
ensure my_radio
ensure pma-voice
ถ้า Radio Initialize Voice Channel ตั้งแต่ Start
㉛ Phone ก็ควรเริ่มหลัง Voice Core
แนวคิดเดียวกัน
pma-voice
↓
Phone Resource
โดยเฉพาะ Phone ที่เรียก
setCallChannel
setCallVolume
หรือ Events/Exports ของ Voice ตั้งแต่ Initialization
㉜ Qbox ติดตั้งอย่างไร
Current Qbox txAdmin Recipe ดาวน์โหลด
pma-voice
ไปที่
resources/[voice]/pma-voice
และติดตั้ง Radio Resource แยก
ดังนั้นถ้าสร้าง Qbox ผ่าน Official Recipe ส่วนนี้มักถูกจัดเตรียมให้อัตโนมัติแล้ว
ไม่ควรติดตั้ง pma-voice ซ้ำอีกชุด
㉝ QBCore ติดตั้งอย่างไร
Current QBCore txAdmin Recipe ก็ยังดาวน์โหลด
pma-voice
พร้อม
qb-radio
ดังนั้นถ้าสร้าง Server ด้วย Recipe ให้ตรวจใน
resources/[voice]/
ก่อน
อย่าดาวน์โหลดซ้ำแล้วมี
pma-voice
pma-voice-new
สองชุด
㉞ ESX ใช้ได้ไหม
ได้
หลักคือ
pma-voice
↓
Radio/Phone ที่รองรับ ESX
pma-voice Core ไม่ได้บังคับ Framework
สิ่งสำคัญคือ Radio/Phone Resource ที่ใช้ร่วมกันต้องรองรับ API ของ Version pma-voice ที่ติดตั้ง
㉟ ปิด Voice System อื่นก่อน
Current Project ระบุชัดว่า pma-voice ไม่ Compatible กับ Voice Systems อื่นที่เข้ามาควบคุม Voice พร้อมกัน
ดังนั้นค้นหา Resources เช่น
mumble-voip
toko-voip
tokovoip
Custom Voice
vMenu Voice
แล้วตรวจว่าไม่ได้ Active ซ้อนกัน
㊱ vMenu Voice ต้องปิด
ถ้า Server ใช้ Voice Chat ของ vMenu อยู่
ต้องปิด Voice Feature นั้นก่อนใช้ pma-voice
ไม่เช่นนั้นสองระบบอาจแย่งควบคุม
Voice Proximity
Voice Active
Mumble Routing
ทำให้เสียงผิดปกติ
㊲ ตรวจ Scripts ที่ Override Voice Natives
Current README เตือนไม่ให้ Resource อื่น Override Functions เช่น
NetworkSetTalkerProximity
MumbleSetTalkerProximity
MumbleSetAudioInputDistance
MumbleSetAudioOutputDistance
NetworkSetVoiceActive
หากมี Script อื่นเรียก Functions เหล่านี้ตลอดเวลา pma-voice อาจทำงานไม่ถูกต้อง
㊳ Server.cfg ตัวอย่างพื้นฐาน
ตัวอย่างสำหรับเริ่มทดสอบ
# pma-voice
setr voice_enableUi 1
setr voice_enableProximityCycle 1
setr voice_defaultCycle "F11"
setr voice_defaultVoiceMode 2
setr voice_enableRadios 1
setr voice_enableCalls 1
setr voice_defaultRadioVolume 30
setr voice_defaultCallVolume 60
setr voice_useNativeAudio true
setr voice_use2dAudio false
setr voice_use3dAudio false
setr voice_enableSubmix 1
setr voice_enableRadioAnim 1
setr voice_debugMode 0
ensure pma-voice
ส่วน voice_useSendingRangeOnly ควรตั้งตาม Release/Commit/Recipe ที่ใช้อยู่จริง เนื่องจาก Current Main มีการเปลี่ยนแปลงในส่วนนี้
㊴ เปิด Server แล้วดู Console
หลัง
ensure pma-voice
ตรวจว่าไม่มี
dependency error
OneSync error
script error
syntax error
ถ้ามี OneSync Error ให้แก้ Server Configuration
ไม่ควรไปแก้ Radio Script ก่อน Voice Core Start สำเร็จ
㊵ ทดสอบ Proximity ก่อน Radio
นี่เป็นขั้นตอนสำคัญ
อย่าติดตั้ง
pma-voice
Radio
Phone
HUD
พร้อมกันแล้วเริ่ม Debug ทั้งหมด
ให้เริ่มจาก
pma-voice
↓
ผู้เล่น 2 คน
↓
Proximity Test
ก่อน
㊶ วิธีทดสอบด้วยผู้เล่น 2 คน
ใช้ Player A และ Player B
ยืนใกล้กันประมาณระยะสนทนา
Player A พูด
A → B
ตรวจว่า B ได้ยิน
จากนั้นสลับ
B → A
ต้องได้ยินเช่นกัน
ถ้าได้ยินเพียงทางเดียว ให้ตรวจ Input/Output Device ของ Player ที่มีปัญหา
㊷ เดินออกจากระยะ
จากนั้นให้ Player B เดินออกไปไกล
เสียง Proximity ควรเบาลง/หายตาม Voice Mode และ Audio Configuration
ถ้ายังได้ยินกันทั่ว Map ให้สงสัย
Voice Resource อื่น
Proximity Native ถูก Override
Mumble/Audio Config
㊸ ทดสอบ Whisper Normal Shouting
เปลี่ยน Voice Mode
Whisper
↓
Normal
↓
Shouting
แล้วดูว่าระยะเปลี่ยนตามระบบหรือไม่
ถ้า Key ไม่ทำงานให้ตรวจ
voice_enableProximityCycle
voice_defaultCycle
FiveM Key Bindings
㊹ ถ้า F11 ไม่ทำงาน
Player ที่เคยเล่น Server มาก่อนอาจมี Keybind ของตัวเอง
เข้า
Settings
→ Key Bindings
→ FiveM
→ pma-voice
แล้วตรวจ
Cycle Proximity
Radio PTT
ก่อนแก้ Source
㊺ ทดสอบ Radio หลัง Proximity ผ่าน
จากนั้นค่อยเปิด Radio Resource
ให้ Player A และ B เข้า Channel เดียวกัน
เช่น
Channel 1
แล้วแยกตัวอยู่คนละพื้นที่
จากนั้น Push-to-Talk
ถ้ายังได้ยินกันผ่าน Radio แสดงว่า Radio Voice Routing ทำงาน
㊻ Radio UI เปิดได้แต่ไม่มีเสียง
แปลว่า UI/Framework Layer อาจทำงาน แต่ Voice Integration มีปัญหา
ตรวจ
Radio Script เรียก pma-voice หรือไม่
Channel ถูกตั้งจริงไหม
Radio Module เปิดไหม
PTT Key ถูกไหม
pma-voice Error ไหม
อย่า Reinstall Radio UI ทันที
㊼ ทดสอบ Phone Call
ถ้ามี Phone Script
ใช้ Player A โทร Player B
หลังรับสายให้เดินห่างกันจน Proximity ปกติไม่ได้ยิน
แต่ Call Voice ควรยังทำงาน
จากนั้นวางสาย
เสียง Call ต้องถูกตัด
㊽ ถ้ารับสายแล้วไม่มีเสียง
ตรวจ Version Compatibility โดยเฉพาะ Current Main ที่เปลี่ยน
Phone
→ Call
เช่น
voice_enableCalls
voice_defaultCallVolume
state.call
Phone Script รุ่นเก่าอาจยังเรียกชื่อเดิม
㊾ HUD Voice Icon ไม่ทำงาน
ถ้าเสียงทำงานแต่ HUD ไม่เปลี่ยน
Root Cause มักอยู่ HUD Integration
ไม่ใช่ Voice Transport
ตรวจ Events/States ที่ HUD ใช้ เช่น
Talking Mode
Radio Active
Voice State
ให้ตรงกับ pma-voice Version
㊿ ไมค์ไม่ติดต้องตรวจอะไร
ตรวจฝั่ง Player ก่อน
Windows Microphone
↓
Windows Privacy Permission
↓
FiveM Input Device
↓
FiveM Voice Enabled
↓
Input Volume
↓
pma-voice
ถ้า Player คนเดียวไม่มีเสียง แต่คนอื่นทั้ง Server ใช้ได้ ปัญหามีโอกาสสูงอยู่ Client มากกว่า Server Core
51. ได้ยินคนอื่นแต่คนอื่นไม่ได้ยินเรา
ตรวจ
Microphone Input Device
Push-to-Talk
Windows Permission
FiveM Input Level
Voice Activity
ถ้า Server-side Voice System เสียจริง มักกระทบผู้เล่นหลายคน ไม่ใช่คนเดียว
52. ไม่มีใครได้ยินใครทั้ง Server
ให้ตรวจ
pma-voice Start?
OneSync?
Voice Resource อื่นชน?
FiveM Voice Config?
Current Artifact?
นี่เป็น Scope ระดับ Server
อย่าไล่ตั้งไมค์ Player ทีละคนหากทุกคนพังพร้อมกัน
53. เสียงตัดหรือกระตุก
สาเหตุอาจมาจาก
Packet Loss
High Ping
Network Instability
Server Hitch
Mumble Connection
Player Internet
ไม่ใช่ pma-voice Code เสมอไป
ต้องดู Network Metrics ร่วมด้วย
54. เสียงดังเท่ากันทุกระยะ
ตรวจว่าเปิด
voice_use2dAudio
หรือไม่
2D Audio มี Behavior ต่างจาก Spatial Audio
ถ้าต้องการเสียงที่สัมพันธ์กับตำแหน่ง ต้องเลือก Audio Configuration ให้ตรง
55. Radio ไม่มี Effect เสียง
ถ้าเปิด
setr voice_enableSubmix 1
แต่ Radio ยังไม่มี Submix ให้ตรวจ
setr voice_useNativeAudio true
เพราะ Current Project ระบุว่า Submix ต้องใช้ Native Audio
และตรวจว่าไม่มี Audio Mode อื่นชนกัน
56. อย่า Restart pma-voice กลาง Server แบบสุ่ม
Voice เป็น Core Resource ที่
Radio
Phone
HUD
อาจพึ่งอยู่
การ Restart ระหว่างผู้เล่นออนไลน์อาจทำให้ Channel/Call/State ต้อง Initialize ใหม่
สำหรับ Production Update ควรทำใน Maintenance Window
57. ถ้าแก้ Radio Script ต้อง Restart pma-voice ไหม
ส่วนใหญ่ไม่จำเป็น
ถ้าแก้
qbx_radio
qb-radio
my_radio
ให้ Restart Radio Resource ก่อน
อย่า Restart Voice Core ทุกครั้งหากไม่ได้เปลี่ยน pma-voice
58. Update pma-voice ต้องระวังเป็นพิเศษ
เพราะ Current Main มี Breaking Changes
Workflow ที่เหมาะคือ
Backup
↓
จด Version/Commit
↓
Test Server
↓
Update pma-voice
↓
Test Proximity
↓
Test Radio
↓
Test Phone
↓
Test HUD
↓
Production
Voice Update ไม่ควรถูกมองเป็นเพียงการเปลี่ยน Folder เดียว
59. Qbox/QBCore Recipe ใช้ Main Branch
Current Qbox และ QBCore Recipes ที่ตรวจสอบดาวน์โหลด
AvarianKnight/pma-voice
ref: main
โดยตรง
ดังนั้น Server ใหม่ตาม Recipe จะติดตาม Current Main มากกว่า Tagged Release
สำหรับ Production ที่ต้องการความนิ่ง ควรบันทึก Commit ที่ผ่านการทดสอบไว้เสมอ
60. Checklist ติดตั้ง pma-voice
Files
Folder ชื่อ
pma-voiceไม่มี Folder ซ้อน
fxmanifest.luaอยู่ Rootui/มีครบ
FXServer
Artifact ปัจจุบัน
OneSync เปิด
Config
Voice UI
Proximity Cycle
Voice Mode
Radio
Call
Volume
Audio Mode
Submix
Radio Animation
Debug
ตั้งก่อน Start Resource
Compatibility
ปิด Voice System อื่น
ปิด vMenu Voice
ตรวจ Scripts ที่ Override Voice Natives
Test
Player A ได้ยิน B
B ได้ยิน A
ระยะเสียงเปลี่ยน
Whisper/Normal/Shouting ทำงาน
Radio ทำงาน
Call ทำงาน
HUD ทำงาน
Reconnect แล้วยังปกติ
วิธีติดตั้ง pma-voice แบบสั้นที่สุด
① เปิด OneSync
② ตรวจว่า Server ไม่มี Voice Resource ตัวอื่นชน
③ ดาวน์โหลด pma-voice Version/Commit ที่ต้องการ
④ ตั้ง Folder ชื่อ pma-voice
⑤ วางไว้ใน resources/[voice]
⑥ เพิ่ม Voice Convars ใน server.cfg
⑦ ตั้ง Convars ก่อน ensure pma-voice
⑧ เปิด Proximity
⑨ ตั้ง Default Voice Mode
⑩ ตั้ง Voice Cycle Key
⑪ เปิด Radio/Calls ถ้าใช้
⑫ เลือก Audio Mode เพียงชุดเดียว
⑬ เปิด Native Audio ถ้าใช้ Submix
⑭ ensure pma-voice
⑮ ตรวจ Console
⑯ เข้า Server ด้วยผู้เล่น 2 คน
⑰ ทดสอบ Proximity
⑱ ทดสอบ Voice Modes
⑲ ติดตั้ง Radio
⑳ ทดสอบ Radio
㉑ ติดตั้ง Phone
㉒ ทดสอบ Calls
㉓ ทดสอบ HUD
㉔ ปิด Debug
㉕ Backup Working Config/Commit
ตัวอย่าง Config สำหรับ Server RP
# Voice
setr voice_enableUi 1
setr voice_enableProximityCycle 1
setr voice_defaultCycle "F11"
setr voice_defaultVoiceMode 2
setr voice_enableRadios 1
setr voice_enableCalls 1
setr voice_defaultRadioVolume 30
setr voice_defaultCallVolume 60
setr voice_useNativeAudio true
setr voice_use2dAudio false
setr voice_use3dAudio false
setr voice_enableSubmix 1
setr voice_enableRadioAnim 1
setr voice_debugMode 0
ensure pma-voice
ค่านี้เป็น Base สำหรับอธิบายโครงสร้าง ไม่ใช่ Config ที่ต้องใช้เหมือนกันทุก Server เพราะ Current Main/Recipes ยังมีการเปลี่ยนแปลงบาง Convars
ตัวอย่าง Qbox Voice Stack
OneSync
↓
pma-voice
↓
qbx_radio / Radio Resource
↓
qbx_core permissions/groups
ส่วน
oxmysql
ox_lib
ox_inventory
อาจเป็นส่วนหนึ่งของ Qbox Server แต่ไม่ใช่ Dependencies โดยตรงทั้งหมดของ pma-voice
ตัวอย่าง QBCore Voice Stack
pma-voice
↓
qb-radio
↓
qb-core
Current QBCore Recipe ยังดาวน์โหลด pma-voice และ qb-radio อยู่
ดังนั้นก่อนลงเองให้ตรวจ [voice] ก่อนเสมอ
ตัวอย่าง ESX Voice Stack
pma-voice
↓
ESX-compatible Radio
↓
ESX-compatible Phone
↓
es_extended
Voice Core ยังคงทำหน้าที่ Voice Routing ส่วน Framework รับผิดชอบ Job/Item/Permission ตาม Integration
สิ่งที่ไม่ควรทำ
ไม่ควร
เปิด pma-voice + Voice Resource อื่นพร้อมกัน
เปิด vMenu Voice พร้อมกัน
Override Voice Natives จากหลาย Scripts
เปิด Native + 3D Audio พร้อมกัน
Update Main บน Production โดยไม่ทดสอบ
ใช้ Config Phone รุ่นเก่ากับ Main ปัจจุบันโดยไม่ตรวจ
Restart Voice Core กลางช่วงผู้เล่นเยอะ
สิ่งเหล่านี้เป็นสาเหตุของ Voice Error จำนวนมาก
สรุปวิธีติดตั้ง pma-voice FiveM
การติดตั้ง pma-voice ที่ถูกต้องเริ่มจาก
FXServer + OneSync
↓
pma-voice
↓
Proximity Voice
↓
Radio / Calls
↓
HUD / Phone / Framework Integration
Current pma-voice Main Branch ระบุ Version 7.0.1 และ Project เตือนว่ามี Breaking Changes โดยเฉพาะการเปลี่ยนชื่อจาก Phone ไปใช้ Call เช่น
voice_defaultPhoneVolume
→ voice_defaultCallVolume
และ
voice_enablePhones
→ voice_enableCalls
ดังนั้น Server ที่ใช้ Config หรือ Phone Script รุ่นเก่าต้องตรวจ Compatibility ก่อน Update
สิ่งสำคัญอีกข้อคือ Current Qbox และ QBCore txAdmin Recipes ยังดาวน์โหลด pma-voice จาก main โดยตรง จึงไม่ควรสมมติว่า Tagged Release กับ Server ที่ติดตั้งผ่าน Recipe จะเป็น Source ชุดเดียวกันเสมอ
หลังติดตั้งอย่าเริ่มทดสอบ Radio หรือ Phone ก่อน ให้พิสูจน์ Proximity Voice ด้วยผู้เล่น 2 คน ก่อน จากนั้นทดสอบ Whisper/Normal/Shouting แล้วจึงเพิ่ม Radio และ Call ทีละ Layer วิธีนี้จะบอกได้ทันทีว่าปัญหาอยู่ Voice Core หรือ Integration
แนวทางของ comsiam คือให้มี Voice Authority หลักเพียงหนึ่งตัว หากเลือก pma-voice แล้วควรปิด vMenu Voice และตรวจ Resources ที่เรียก Mumble/Voice Natives ซ้ำ เพราะเสียงหายหรือระยะเสียงผิดจำนวนมากเกิดจาก Voice Systems ชนกัน ไม่ใช่จากไมโครโฟนเสีย
สำหรับ Production comsiam แนะนำให้บันทึก Commit/Version ของ pma-voice ที่ผ่านการทดสอบไว้เสมอ และทุกครั้งที่ Update ให้ทดสอบ Proximity → Voice Modes → Radio → Phone → HUD ตามลำดับก่อนเปิดให้ผู้เล่นจริงใช้งาน
Comments
Post a Comment