sampvoice - คือชุดพัฒนาซอฟต์แวร์ (SDK) สำหรับการนำระบบการสื่อสารด้วยเสียงไปใช้ในภาษาจำนำสำหรับเซิร์ฟเวอร์ SA:MP
เพื่อให้ปลั๊กอินทำงานได้ จะต้องติดตั้งโดยผู้เล่นและบนเซิร์ฟเวอร์ มีส่วนไคลเอนต์และเซิร์ฟเวอร์ของปลั๊กอินสำหรับสิ่งนี้
ผู้เล่นสามารถเข้าถึงตัวเลือกการติดตั้ง 2 แบบ: อัตโนมัติ (ผ่านตัวติดตั้ง) และด้วยตนเอง (ผ่านไฟล์เก็บถาวร)
releases
แล้วเลือกเวอร์ชันของปลั๊กอินที่ต้องการreleases
และดาวน์โหลดไฟล์เก็บถาวรพร้อมเวอร์ชันไคลเอนต์ที่ต้องการreleases
หากต้องการเริ่มต้นใช้งานปลั๊กอิน โปรดอ่านเอกสารประกอบที่มาพร้อมกับฝั่งเซิร์ฟเวอร์ ในการดำเนินการนี้ ให้เปิดไฟล์ sampvoice .chm โดยใช้การอ้างอิง Windows (หากเอกสารไม่เปิดขึ้น ให้คลิกขวาที่ไฟล์เอกสาร จากนั้นคลิก Properties -> Unblock -> OK)
หากต้องการเริ่มใช้ฟังก์ชันปลั๊กอิน ให้รวมไฟล์ส่วนหัวด้วย:
#include < sampvoice >
คุณจำเป็นต้องรู้ว่าปลั๊กอินใช้ประเภทของตัวเองและระบบคงที่ แม้ว่านี่จะเป็นเพียงส่วนสรุปของ Pawn ประเภทพื้นฐาน แต่ก็ช่วยนำทางประเภทต่างๆ ของปลั๊กอินได้ และไม่ทำให้พอยน์เตอร์สับสน
ในการเปลี่ยนเส้นทางการรับส่งข้อมูลเสียงจากเครื่องเล่น A ไปยังเครื่องเล่น B คุณต้องสร้างสตรีมเสียง (โดยใช้ SvCreateStream ) จากนั้นแนบเข้ากับช่องลำโพงของเครื่องเล่น A (โดยใช้ SvAttachStream ) จากนั้นแนบเครื่องเล่น B เข้ากับสตรีมเสียง (โดยใช้ SvAttachListener ) . เสร็จสิ้น ตอนนี้เมื่อเปิดใช้งานไมโครโฟนของผู้เล่น A (เช่น ด้วยฟังก์ชัน SvPlay ) การรับส่งข้อมูลเสียงของเขาจะถูกส่งต่อจากนั้นผู้เล่น B จะฟัง
สตรีมเสียงมีประโยชน์มาก สามารถมองเห็นได้โดยใช้ตัวอย่างของ Discord:
ผู้เล่นสามารถเป็นทั้งผู้พูดและผู้ฟังได้ในเวลาเดียวกัน ในกรณีนี้ การรับส่งข้อมูลเสียงของผู้เล่นจะไม่ถูกส่งต่อไปยังเขา
ลองมาดูคุณสมบัติบางอย่างของปลั๊กอินพร้อมตัวอย่างที่ใช้งานได้จริง ด้านล่างนี้ เราจะสร้างเซิร์ฟเวอร์ที่จะเชื่อมโยงผู้เล่นที่เชื่อมต่อทั้งหมดเข้ากับสตรีมทั่วโลก และยังสร้างสตรีมท้องถิ่นสำหรับผู้เล่นแต่ละคนด้วย ดังนั้น ผู้เล่นจะสามารถสื่อสารผ่านการแชททั่วโลก (ได้ยินเท่ากันทุกจุดบนแผนที่) และแชทท้องถิ่น (ได้ยินเฉพาะใกล้ผู้เล่นเท่านั้น)
#include < sampvoice >
# define GLOBAL_CHANNEL 0
# define LOCAL_CHANNEL 1
new SV_UINT: gstream = SV_NONE;
new SV_UINT: lstream[MAX_PLAYERS] = { SV_NONE, ... };
public OnPlayerConnect (playerid)
{
if ( SvGetVersion (playerid) == 0 ) // Checking for plugin availability
{
SendClientMessage (playerid, - 1 , " Failed to find plugin. " );
}
else if ( SvHasMicro (playerid) == SV_FALSE) // Checking for microphone availability
{
SendClientMessage (playerid, - 1 , " Failed to find microphone. " );
}
else
{
if (gstream != SV_NONE)
{
SvSetKey (playerid, 0x 5A , GLOBAL_CHANNEL); // Z key
SvAttachStream (playerid, gstream, GLOBAL_CHANNEL);
SvAttachListener (gstream, playerid);
SvSetIcon (gstream, " speaker " );
SendClientMessage (playerid, - 1 , " Press Z to talk to global chat. " );
}
if ((lstream[playerid] = SvCreateStream ( 40 . 0 )) != SV_NONE)
{
SvSetKey (playerid, 0x 42 , LOCAL_CHANNEL); // B key
SvAttachStream (playerid, lstream[playerid], LOCAL_CHANNEL);
SvSetTarget (lstream[playerid], SvMakePlayer (playerid));
SvSetIcon (lstream[playerid], " speaker " );
SendClientMessage (playerid, - 1 , " Press B to talk to local chat. " );
}
}
}
public OnPlayerDisconnect (playerid, reason)
{
// Removing the player's local stream after disconnecting
if (lstream[playerid] != SV_NONE)
{
SvDeleteStream (lstream[playerid]);
lstream[playerid] = SV_NONE;
}
}
public OnGameModeInit ()
{
// Uncomment the line to enable debug mode
// SvEnableDebug();
gstream = SvCreateStream ();
}
public OnGameModeExit ()
{
if (gstream != SV_NONE)
{
SvDeleteStream (gstream);
gstream = SV_NONE;
}
}
ปลั๊กอินคอมไพล์สำหรับแพลตฟอร์ม Win32 และ Linux x86 ไฟล์ที่คอมไพล์จะอยู่ในไดเร็กทอรี sampvoice /binaries
ด้านล่างนี้เป็นคำแนะนำเพิ่มเติม:
โคลนพื้นที่เก็บข้อมูลลงในคอมพิวเตอร์ของคุณและไปที่ไดเร็กทอรีปลั๊กอิน:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
หากต้องการคอมไพล์ฝั่งไคลเอ็นต์ของปลั๊กอิน คุณต้องมี DirectX 9 SDK ตามค่าเริ่มต้น ส่วนของไคลเอ็นต์จะถูกคอมไพล์สำหรับเวอร์ชัน SA: MP 0.3.7 (R1) แต่คุณยังสามารถบอกคอมไพเลอร์ถึงเวอร์ชันสำหรับบิลด์ได้อย่างชัดเจนโดยใช้มาโคร SAMP_R1 และ SAMP_R3 ในการสร้างไคลเอนต์และเซิร์ฟเวอร์ส่วนของปลั๊กอินสำหรับแพลตฟอร์ม Win32 ให้เปิดโปรเจ็กต์ sampvoice .sln ใน Visual Studio 2019 (หรือสูงกว่า) แล้วคอมไพล์:
สร้าง -> สร้างโซลูชัน (F7)
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการอ้างอิงทั้งหมดแล้ว:
sudo apt install build-essential gcc-multilib g++-multilib
หากต้องการสร้าง เซิร์ฟเวอร์ควบคุม สำหรับแพลตฟอร์ม Linux x86 ให้ทำตามคำแนะนำเหล่านี้:
cd control
make
cd ..
หากต้องการสร้าง เซิร์ฟเวอร์เสียง สำหรับแพลตฟอร์ม Linux x86 ให้ทำตามคำแนะนำเหล่านี้:
cd voice
make
cd ..