sampvoice - é um Kit de Desenvolvimento de Software (SDK) para implementação de sistemas de comunicação de voz na linguagem Pawn para servidores SA:MP.
Para que o plugin funcione, ele deve ser instalado pelos jogadores e no servidor. Existe uma parte cliente e servidor do plugin para isso.
Os jogadores têm acesso a 2 opções de instalação: automática (através do instalador) e manual (através do arquivo).
releases
e escolha a versão desejada do plugin.releases
e baixe o arquivo com a versão do cliente desejada.releases
a versão desejada do plugin para sua plataforma.Para começar a usar o plugin, leia a documentação que acompanha o servidor. Para fazer isso, abra o arquivo sampvoice .chm usando a referência do Windows. (Se a documentação não abrir, clique com o botão direito no arquivo de documentação e depois em Propriedades -> Desbloquear -> OK)
Para começar a usar a funcionalidade do plugin, inclua o arquivo de cabeçalho:
#include < sampvoice >
Você precisa saber que o plugin usa seus próprios tipos e sistema constante. Apesar de ser apenas um wrapper sobre os tipos básicos de Pawn, ajuda a navegar pelos tipos do plugin em si e a não confundir ponteiros.
Para redirecionar o tráfego de áudio do player A para o player B, você precisa criar um stream de áudio (usando SvCreateStream ), anexá-lo ao canal de alto-falante do player A (usando SvAttachStream ) e, em seguida, anexar o player B ao stream de áudio (usando SvAttachListener ) . Pronto, agora quando o microfone do jogador A estiver ativado (por exemplo, com a função SvPlay ), seu tráfego de áudio será transmitido e depois ouvido pelo jogador B.
Fluxos de som são muito úteis. Eles podem ser visualizados usando o exemplo do Discord:
Os jogadores podem ser falantes e ouvintes ao mesmo tempo. Neste caso, o tráfego de áudio do player não será encaminhado para ele.
Vamos dar uma olhada em alguns recursos do plugin com um exemplo prático. Abaixo criaremos um servidor que vinculará todos os jogadores conectados ao stream global, e também criaremos um stream local para cada jogador. Assim, os jogadores poderão se comunicar através de chats globais (ouvidos igualmente em qualquer ponto do mapa) e locais (ouvidos apenas perto do jogador).
#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;
}
}
O plug-in compila para plataformas Win32 e Linux x86 . Os arquivos compilados estarão no diretório sampvoice /binaries .
Abaixo estão mais instruções:
Clone o repositório em seu computador e vá para o diretório do plugin:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
Para compilar o lado cliente do plugin, você precisa do DirectX 9 SDK . Por padrão, a parte do cliente é compilada para a versão SA: MP 0.3.7 (R1) , mas você também pode informar explicitamente ao compilador a versão da compilação usando as macros SAMP_R1 e SAMP_R3 . Para construir as partes cliente e servidor do plugin para a plataforma Win32 , abra o projeto sampvoice .sln no Visual Studio 2019 (ou superior) e compile-o:
Construir -> Construir Solução (F7)
Certifique-se de ter todas as dependências instaladas:
sudo apt install build-essential gcc-multilib g++-multilib
Para construir o servidor de controle para a plataforma Linux x86 , siga estas instruções:
cd control
make
cd ..
Para construir o servidor de voz para a plataforma Linux x86 , siga estas instruções:
cd voice
make
cd ..