วิธีติดตั้ง 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 อยู่ Root

  • ui/ มีครบ

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

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด