sampvoice : es un kit de desarrollo de software (SDK) para implementar sistemas de comunicación de voz en el lenguaje Pawn para servidores SA:MP.
Para que el complemento funcione, los jugadores y el servidor deben instalarlo. Hay una parte del cliente y del servidor del complemento para esto.
Los jugadores tienen acceso a 2 opciones de instalación: automática (a través del instalador) y manual (a través del archivo).
releases
y elija la versión deseada del complemento.releases
y descarga el archivo con la versión de cliente deseada.releases
la versión deseada del complemento para su plataforma.Para comenzar a usar el complemento, lea la documentación que viene con el lado del servidor. Para hacer esto, abra el archivo sampvoice .chm usando la referencia de Windows. (Si la documentación no se abre, haga clic derecho en el archivo de documentación, luego Propiedades -> Desbloquear -> Aceptar)
Para comenzar a utilizar la funcionalidad del complemento, incluya el archivo de encabezado:
#include < sampvoice >
Debe saber que el complemento utiliza sus propios tipos y sistema constante. A pesar de que esto es solo un resumen de los tipos básicos de Pawn, ayuda a navegar por los tipos del complemento en sí y no confundir los punteros.
Para redirigir el tráfico de audio del reproductor A al reproductor B, debe crear una transmisión de audio (usando SvCreateStream ), luego adjuntarla al canal de altavoz del reproductor A (usando SvAttachStream ), luego conectar el reproductor B a la transmisión de audio (usando SvAttachListener ) . Listo, ahora cuando se activa el micrófono del jugador A (por ejemplo, con la función SvPlay ), su tráfico de audio será transmitido y luego escuchado por el jugador B.
Las transmisiones de sonido son bastante útiles. Se pueden visualizar usando el ejemplo de Discord:
Los jugadores pueden ser tanto oradores como oyentes al mismo tiempo. En este caso, el tráfico de audio del reproductor no se le reenviará.
Echemos un vistazo a algunas de las características del complemento con un ejemplo práctico. A continuación crearemos un servidor que vinculará a todos los jugadores conectados a la transmisión global y también creará una transmisión local para cada jugador. Por lo tanto, los jugadores podrán comunicarse a través de los chats globales (que se escuchan por igual en cualquier punto del mapa) y locales (que se escuchan solo cerca del jugador).
#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;
}
}
El complemento se compila para plataformas Win32 y Linux x86 . Los archivos compilados estarán en el directorio sampvoice /binaries .
A continuación se muestran más instrucciones:
Clona el repositorio en tu computadora y ve al directorio de complementos:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
Para compilar el lado del cliente del complemento, necesita el SDK de DirectX 9 . De forma predeterminada, la parte del cliente se compila para la versión SA: MP 0.3.7 (R1) , pero también puede decirle explícitamente al compilador la versión para la compilación usando las macros SAMP_R1 y SAMP_R3 . Para crear las partes de cliente y servidor del complemento para la plataforma Win32 , abra el proyecto sampvoice .sln en Visual Studio 2019 (o superior) y compílelo:
Construir -> Construir solución (F7)
Asegúrese de tener todas las dependencias instaladas:
sudo apt install build-essential gcc-multilib g++-multilib
Para construir el servidor de control para la plataforma Linux x86 , siga estas instrucciones:
cd control
make
cd ..
Para construir el servidor de voz para la plataforma Linux x86 , siga estas instrucciones:
cd voice
make
cd ..