sampvoice - SA:MP 서버용 Pawn 언어로 음성 통신 시스템을 구현하기 위한 SDK(소프트웨어 개발 키트)입니다.
플러그인이 작동하려면 플레이어와 서버에 플러그인이 설치되어 있어야 합니다. 이를 위한 플러그인의 클라이언트 및 서버 부분이 있습니다.
플레이어는 자동(설치 프로그램을 통해)과 수동(아카이브를 통해)의 두 가지 설치 옵션에 액세스할 수 있습니다.
releases
페이지로 이동하여 원하는 플러그인 버전을 선택하세요.releases
페이지로 이동하여 원하는 클라이언트 버전이 포함된 아카이브를 다운로드하세요.releases
페이지에서 귀하의 플랫폼에 맞는 플러그인의 원하는 버전을 다운로드하세요.플러그인 사용을 시작하려면 서버 측과 함께 제공되는 설명서를 읽어보세요. 이렇게 하려면 Windows 참조를 사용하여 sampvoice .chm 파일을 엽니다. (문서가 열리지 않으면 문서 파일을 마우스 오른쪽 버튼으로 클릭한 다음 속성 -> 차단 해제 -> 확인)
플러그인 기능 사용을 시작하려면 헤더 파일을 포함하십시오.
#include < sampvoice >
플러그인이 자체 유형과 상수 시스템을 사용한다는 것을 알아야 합니다. 이것이 Pawn의 기본 유형에 대한 래퍼일 뿐이라는 사실에도 불구하고 플러그인 자체의 유형을 탐색하는 데 도움이 되며 포인터를 혼동하지 않습니다.
플레이어 A에서 플레이어 B로 오디오 트래픽을 리디렉션하려면 오디오 스트림을 생성하고( SvCreateStream 사용) 이를 플레이어 A의 스피커 채널에 연결한 다음( SvAttachStream 사용) 플레이어 B를 오디오 스트림에 연결해야 합니다( SvAttachListener 사용). . 완료되었습니다. 이제 플레이어 A의 마이크가 활성화되면(예: SvPlay 기능) 그의 오디오 트래픽이 전송된 다음 플레이어 B에서 듣게 됩니다.
사운드 스트림은 매우 편리합니다. Discord의 예를 사용하여 시각화할 수 있습니다.
플레이어는 동시에 화자와 청취자가 될 수 있습니다. 이 경우 플레이어의 오디오 트래픽은 해당 플레이어에게 전달되지 않습니다.
실제 사례를 통해 플러그인의 일부 기능을 살펴보겠습니다. 아래에서는 연결된 모든 플레이어를 글로벌 스트림에 바인딩하고 각 플레이어에 대한 로컬 스트림을 생성하는 서버를 생성합니다. 따라서 플레이어는 전역(지도의 어느 지점에서나 동일하게 들을 수 있음) 및 로컬(플레이어 근처에서만 들을 수 있음) 채팅을 통해 통신할 수 있습니다.
#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;
}
}
플러그인은 Win32 및 Linux x86 플랫폼용으로 컴파일됩니다. 컴파일된 파일은 sampvoice /binaries 디렉토리에 있습니다.
다음은 추가 지침입니다.
저장소를 컴퓨터에 복제하고 플러그인 디렉터리로 이동합니다.
git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice
플러그인의 클라이언트 측을 컴파일하려면 DirectX 9 SDK가 필요합니다. 기본적으로 클라이언트 부분은 버전 SA: MP 0.3.7 (R1) 용으로 컴파일되지만 SAMP_R1 및 SAMP_R3 매크로를 사용하여 컴파일러에 빌드 버전을 명시적으로 알릴 수도 있습니다. Win32 플랫폼용 플러그인의 클라이언트 및 서버 부분을 빌드하려면 Visual Studio 2019(또는 그 이상)에서 sampvoice .sln 프로젝트를 열고 컴파일합니다.
빌드 -> 솔루션 빌드(F7)
모든 종속 항목이 설치되어 있는지 확인하세요.
sudo apt install build-essential gcc-multilib g++-multilib
Linux x86 플랫폼용 제어 서버를 구축하려면 다음 지침을 따르세요.
cd control
make
cd ..
Linux x86 플랫폼용 음성 서버를 구축하려면 다음 지침을 따르세요.
cd voice
make
cd ..