sampvoice - adalah Software Development Kit (SDK) untuk mengimplementasikan sistem komunikasi suara dalam bahasa Pawn untuk server SA:MP.
Agar plugin berfungsi, plugin harus diinstal oleh pemain dan di server. Ada bagian klien dan server dari plugin untuk ini.
Pemain memiliki akses ke 2 opsi instalasi: otomatis (melalui penginstal) dan manual (melalui arsip).
releases
dan pilih versi plugin yang diinginkan.releases
dan unduh arsip dengan versi klien yang diinginkan.releases
versi plugin yang diinginkan untuk platform Anda.Untuk mulai menggunakan plugin, baca dokumentasi yang disertakan dengan sisi server. Untuk melakukannya, buka file sampvoice .chm menggunakan referensi Windows. (Jika dokumentasi tidak terbuka, klik kanan pada file dokumentasi, lalu Properties -> Unblock -> OK)
Untuk mulai menggunakan fungsionalitas plugin, sertakan file header:
#include < sampvoice >
Perlu Anda ketahui bahwa plugin menggunakan tipe dan sistem konstannya sendiri. Meskipun ini hanyalah pembungkus tipe dasar Pion, ini membantu untuk menavigasi jenis plugin itu sendiri dan tidak membingungkan petunjuk.
Untuk mengalihkan lalu lintas audio dari pemutar A ke pemutar B, Anda perlu membuat aliran audio (menggunakan SvCreateStream ), lalu menyambungkannya ke saluran speaker pemutar A (menggunakan SvAttachStream ), lalu memasangkan pemutar B ke aliran audio (menggunakan SvAttachListener ) . Selesai, sekarang ketika mikrofon pemain A diaktifkan (misalnya dengan fungsi SvPlay ), lalu lintas audionya akan ditransmisikan dan kemudian didengarkan oleh pemain B.
Aliran suara cukup berguna. Mereka dapat divisualisasikan menggunakan contoh Discord:
Pemain dapat menjadi pembicara dan pendengar sekaligus. Dalam hal ini, lalu lintas audio pemutar tidak akan diteruskan kepadanya.
Mari kita lihat beberapa fitur plugin dengan contoh praktis. Di bawah ini kita akan membuat server yang akan mengikat semua pemain yang terhubung ke aliran global, dan juga membuat aliran lokal untuk setiap pemain. Dengan demikian, pemain akan dapat berkomunikasi melalui obrolan global (terdengar sama di mana pun di peta) dan lokal (hanya terdengar di dekat pemain).
#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;
}
}
Plugin dikompilasi untuk platform Win32 dan Linux x86 . File yang dikompilasi akan berada di direktori sampvoice /binaries .
Di bawah ini adalah instruksi lebih lanjut:
Kloning repositori ke komputer Anda dan buka direktori plugin:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
Untuk mengkompilasi sisi klien plugin, Anda memerlukan DirectX 9 SDK . Secara default, bagian klien dikompilasi untuk versi SA: MP 0.3.7 (R1) , tetapi Anda juga dapat secara eksplisit memberi tahu compiler versi build menggunakan makro SAMP_R1 dan SAMP_R3 . Untuk membangun bagian klien dan server plugin untuk platform Win32 , buka proyek sampvoice .sln di Visual Studio 2019 (atau lebih tinggi) dan kompilasi:
Bangun -> Bangun Solusi (F7)
Pastikan Anda telah menginstal semua dependensi:
sudo apt install build-essential gcc-multilib g++-multilib
Untuk membangun server kontrol untuk platform Linux x86 , ikuti petunjuk berikut:
cd control
make
cd ..
Untuk membangun server suara untuk platform Linux x86 , ikuti petunjuk berikut:
cd voice
make
cd ..