Skip to content

Latest commit

 

History

History
132 lines (107 loc) · 9.01 KB

README.ru.md

File metadata and controls

132 lines (107 loc) · 9.01 KB

SAMPVOICE

English | Русский

Описание


SAMPVOICE - это набор разработчика для реализации голосовых систем на языке Pawn под сервера SA:MP. В данный момент плагин поддерживает только версию SA:MP 0.3.7-R1.

Основные возможности


  • Контролируемая передача голосового потока
  • Воспроизведение звуковых файлов
  • Запись голосового потока в буфер и его трансляция
  • Управление микрофоном игрока
  • Создание звуковых эффектов
  • Привязка голосового потока к игровым объектам
  • И ещё множество мелочей...

Установка


Для работы плагина, его необходимо установить игрокам и на сервер. Для этого есть серверная и клиентская версии плагина.

Для игроков


Игрокам доступны 2 вариант установки: автоматический(через установщик) и ручной(через архив).

Автоматический вариант

  1. Для того, чтобы скачать установщик перейдите по ссылке и выберите подходящую версию плагина.
  2. После скачивания запустите установщик, выберите язык установки, затем установщик автоматически определит директорию игры.
  3. Нажмите "ОК" и дождитесь конца установки.
Ручной вариант

  1. Перейдите по ссылке и скачайте архив с необходимой версией клиента.
  2. Распакуйте содержимое архива в корневую директорию игры с заменой файлов.

Для разработчиков


  1. Загрузите архив с необходимой версией плагина для вашей платформы по ссылке.
  2. Распакуйте архив в корневую директорию сервера.
  3. Добавьте в файл конфигурации сервера server.cfg строку "plugins sampvoice" для Win32 и "plugins sampvoice.so" для Linux x86 (Если у вас стоит плагин Pawn.RakNet обязательно разместите плагин в конфиге после него).

Использование


Для того, чтобы начать использовать плагин, прочтите документацию, которая входит в комплект с серверной частью. Для этого откройте файл sampvoice.chm с помощью справочника Windows.

Вам необходимо знать, что в плагине используется своя система типов и констант. Не смотря на то, что это всего лишь оболочка над базовыми типами Pawn, она помогает ориентироваться в типах самого плагина и не путать указатели.

Чтобы начать использовать функционал плагина, подключите заголовочный файл:

#include <sampvoice>

Для того, чтобы ваш скрипт принимал звуковые пакеты добавьте в него паблик OnPlayerVoice. Пакет невозможно отправить напрямую игроку, для этого в SV есть звуковые потоки. Так называемые "звуковые потоки" это абстрактные сущности, к которым можно подключать игроков и в которые можно отправлять звуковые пакеты. Так же в них можно создавать звуковые эффекты и воспроизводить звуковые файлы. Это довольно универсальная вещь.

Давайте рассмотрим некоторые возможности плагина на практическом примере. Ниже мы создадим сервер, который будет принимать пакет и отправлять его обратно игроку, тем самым игрок будет слышать сам себя.

#include <sampvoice>

new SV_GSTREAM:player_stream[MAX_PLAYERS];  // Массив глобальных потоков для каждого игрока

public OnGameModeInit() {
    sv_init(6000, SV_FREQUENCY_VERY_HIGH, SV_VOICE_RATE_100MS);  // Инициализируем настройки плагина
    return 1;
}

public OnPlayerConnect(playerid) {
    // Проверка наличия и актуальности клиентского плагина
    if(sv_get_version(playerid) == SV_NULL) {
        SendClientMessage(playerid, -1, "У вас не установлен плагин SampVoice.");
    } else if(sv_get_version(playerid) < SV_VERSION) {
        SendClientMessage(playerid, -1, "У вас устаревшая версия плагина, возможна несовместимость. Обновите её.");
    }
    // Проверка наличия микрофона у игрока
    if(!sv_has_micro(playerid)) {
        SendClientMessage(playerid, -1, "У вас отсутствует микрофон. Вы можете слышать, но не сможете общаться.");
    }
    // Создание глобального потока для игрока и подключения игрока к нему
    player_stream[playerid] = sv_gstream_create();
    sv_stream_player_attach(player_stream[playerid], playerid);
    // Установка клавиши активации микрофона игроку
    sv_set_key(playerid, 0x32); // 0x32 - это код клавиши '2'
    return 1;
}

public OnPlayerDisconnect(playerid) {
    sv_stream_delete(player_stream[playerid]);  // Удаляем глобальный поток игрока
    return 1;
}

public SV_BOOL:OnPlayerVoice(
    SV_UINT:playerid,   // ID игрока-отправителя
    SV_PACKET:packet,   // Дескриптор пакета
    SV_UINT:volume      // Уровень громкости звука [0-32768]
) {
    sv_send_packet(packet, player_stream[playerid]);    // Отправляем обратно игроку
	return SV_TRUE;     // Удалять ли пакет? (SV_TRUE - да, SV_FALSE - нет)
}

Для того, чтобы один игрок слышал другого, необходимо подключить его к потоку другого игрока функцией sv_stream_player_attach(stream, playerid).

Компиляция


Плагин компилируется под платформы Win32 и Linux x86. Ниже прилагаются подробные инструкции:

Склонируйте репозиторий себе на компьютер и перейдите в директорию плагина:

git clone https://github.com/CyberMor/sampvoice.git
cd sampvoice

Windows


Для компиляции клиентской версии плагина вам понадобится DirectX SDK. Для того, чтобы собрать клиентскую и серверную версию плагина под платформу Win32 откройте проект sampvoice.sln в MS Visual Studio 2017 и скомпилируйте его:

Build -> Build Solution

Linux (Server)


Для того, чтобы собрать серверную версию плагина выполните следующие инструкции:

cd ./server
make

Пожертвования


Вы можете мотивировать разработчика заниматься проектом, пожертвовав небольшую сумму денег.

PayPal