sampvoice - est un kit de développement logiciel (SDK) permettant d'implémenter des systèmes de communication vocale dans le langage Pawn pour les serveurs SA:MP.
Pour que le plugin fonctionne, il doit être installé par les joueurs et sur le serveur. Il existe une partie client et serveur du plugin pour cela.
Les joueurs ont accès à 2 options d'installation : automatique (via l'installateur) et manuelle (via l'archive).
releases
et choisissez la version souhaitée du plugin.releases
et téléchargez l'archive avec la version client souhaitée.releases
la version souhaitée du plugin pour votre plateforme.Pour commencer à utiliser le plugin, lisez la documentation fournie avec le côté serveur. Pour ce faire, ouvrez le fichier sampvoice .chm à l'aide de la référence Windows. (Si la documentation ne s'ouvre pas, faites un clic droit sur le fichier de documentation, puis Propriétés -> Débloquer -> OK)
Pour commencer à utiliser la fonctionnalité du plugin, incluez le fichier d'en-tête :
#include < sampvoice >
Vous devez savoir que le plugin utilise ses propres types et système de constantes. Malgré le fait qu'il ne s'agisse que d'un wrapper sur les types de base de Pawn, cela aide à naviguer dans les types du plugin lui-même et à ne pas confondre les pointeurs.
Pour rediriger le trafic audio du lecteur A vers le lecteur B, vous devez créer un flux audio (à l'aide de SvCreateStream ), puis l'attacher au canal haut-parleur du lecteur A (à l'aide de SvAttachStream ), puis attacher le lecteur B au flux audio (à l'aide de SvAttachListener ). . C'est fait, désormais lorsque le microphone du joueur A est activé (par exemple, avec la fonction SvPlay ), son trafic audio sera transmis puis écouté par le joueur B.
Les flux sonores sont très pratiques. Ils peuvent être visualisés à l’aide de l’exemple de Discord :
Les joueurs peuvent être à la fois orateurs et auditeurs. Dans ce cas, le trafic audio du lecteur ne lui sera pas transmis.
Jetons un coup d'œil à certaines fonctionnalités du plugin avec un exemple pratique. Ci-dessous, nous allons créer un serveur qui liera tous les joueurs connectés au flux global, et créera également un flux local pour chaque joueur. Ainsi, les joueurs pourront communiquer via les discussions globales (entendues également en tout point de la carte) et locales (entendues uniquement à proximité du joueur).
#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;
}
}
Le plugin se compile pour les plates-formes Win32 et Linux x86 . Les fichiers compilés seront dans le répertoire sampvoice /binaries .
Vous trouverez ci-dessous des instructions supplémentaires :
Clonez le référentiel sur votre ordinateur et accédez au répertoire du plugin :
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
Pour compiler le côté client du plugin, vous avez besoin du SDK DirectX 9 . Par défaut, la partie client est compilée pour la version SA : MP 0.3.7 (R1) , mais vous pouvez également indiquer explicitement au compilateur la version du build à l'aide des macros SAMP_R1 et SAMP_R3 . Afin de créer les parties client et serveur du plugin pour la plateforme Win32 , ouvrez le projet sampvoice .sln dans Visual Studio 2019 (ou supérieur) et compilez-le :
Construire -> Créer une solution (F7)
Assurez-vous que toutes les dépendances sont installées :
sudo apt install build-essential gcc-multilib g++-multilib
Pour créer le serveur de contrôle pour la plate-forme Linux x86 , suivez ces instructions :
cd control
make
cd ..
Pour créer le serveur vocal pour la plate-forme Linux x86 , suivez ces instructions :
cd voice
make
cd ..