sampvoice – ist ein Software Development Kit (SDK) zur Implementierung von Sprachkommunikationssystemen in der Pawn-Sprache für SA:MP-Server.
Damit das Plugin funktioniert, muss es von Spielern und auf dem Server installiert werden. Dafür gibt es einen Client- und einen Server-Teil des Plugins.
Spieler haben Zugriff auf zwei Installationsoptionen: automatisch (über das Installationsprogramm) und manuell (über das Archiv).
releases
-Seite und wählen Sie die gewünschte Version des Plugins aus.releases
-Seite und laden Sie das Archiv mit der gewünschten Client-Version herunter.releases
-Seite die gewünschte Version des Plugins für Ihre Plattform herunter.Um mit der Verwendung des Plugins zu beginnen, lesen Sie die Dokumentation, die der Serverseite beiliegt. Öffnen Sie dazu die sampvoice -.chm- Datei mithilfe der Windows-Referenz. (Wenn die Dokumentation nicht geöffnet wird, klicken Sie mit der rechten Maustaste auf die Dokumentationsdatei und dann auf Eigenschaften -> Blockierung aufheben -> OK.)
Um mit der Nutzung der Plugin-Funktionalität zu beginnen, fügen Sie die Header-Datei ein:
#include < sampvoice >
Sie müssen wissen, dass das Plugin seine eigenen Typen und sein eigenes Konstantensystem verwendet. Trotz der Tatsache, dass dies nur ein Wrapper über die Grundtypen von Pawn ist, hilft es, durch die Typen des Plugins selbst zu navigieren und Zeiger nicht zu verwechseln.
Um den Audioverkehr von Player A zu Player B umzuleiten, müssen Sie einen Audiostream erstellen (mit SvCreateStream ), ihn dann an den Lautsprecherkanal von Player A anhängen (mit SvAttachStream ) und dann Player B an den Audiostream anhängen (mit SvAttachListener ). . Fertig, wenn nun das Mikrofon von Spieler A aktiviert ist (z. B. mit der SvPlay- Funktion), wird sein Audioverkehr übertragen und dann von Spieler B abgehört.
Soundstreams sind ziemlich praktisch. Sie lassen sich am Beispiel von Discord veranschaulichen:
Spieler können gleichzeitig Sprecher und Zuhörer sein. In diesem Fall wird der Audioverkehr des Players nicht an ihn weitergeleitet.
Werfen wir einen Blick auf einige Funktionen des Plugins anhand eines praktischen Beispiels. Im Folgenden erstellen wir einen Server, der alle verbundenen Spieler an den globalen Stream bindet und außerdem einen lokalen Stream für jeden Spieler erstellt. Auf diese Weise können Spieler über globale (an jedem Punkt der Karte gleichermaßen hörbare) und lokale (nur in der Nähe des Spielers hörbare) Chats kommunizieren.
#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 wird für Win32- und Linux x86- Plattformen kompiliert. Kompilierte Dateien befinden sich im Verzeichnis sampvoice /binaries .
Nachfolgend finden Sie weitere Anweisungen:
Klonen Sie das Repository auf Ihren Computer und gehen Sie in das Plugin-Verzeichnis:
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
Um die Client-Seite des Plugins zu kompilieren, benötigen Sie das DirectX 9 SDK . Standardmäßig wird der Client-Teil für die Version SA: MP 0.3.7 (R1) kompiliert, Sie können dem Compiler jedoch auch explizit die Version für den Build mitteilen, indem Sie die Makros SAMP_R1 und SAMP_R3 verwenden. Um die Client- und Serverteile des Plugins für die Win32 -Plattform zu erstellen, öffnen Sie das Projekt sampvoice .sln in Visual Studio 2019 (oder höher) und kompilieren Sie es:
Erstellen -> Lösung erstellen (F7)
Stellen Sie sicher, dass alle Abhängigkeiten installiert sind:
sudo apt install build-essential gcc-multilib g++-multilib
Befolgen Sie diese Anweisungen, um den Steuerungsserver für die Linux x86 -Plattform zu erstellen:
cd control
make
cd ..
Befolgen Sie diese Anweisungen, um den Sprachserver für die Linux x86 -Plattform zu erstellen:
cd voice
make
cd ..