OKStyle
Эксперт
Как-то при обсуждении возможностей разных мультиплееров (последствием которого стала тема), мне сказали, что в SA-MP я не смогу запустить 4 разных аудиопотока. Действительно, встроенными возможностями можно работать только с одним. Но тут на помощь приходит Audio Plugin от Incognito.
Скачать плагин можно в ресурсах.
Пример использования:
Для клиента:
1) Закидываем папку libraries и плагин audio.asi в директорию с GTA SA. Файлы vorbisFile.dll и vorbisHooked.dll уже будут установлены, если вы ранее использовали SAMPFUNC или CLEO.
Для сервера:
1) В директории сервера создаём папку audiopacks, в ней создаём 2 папки с наборами аудио-файлов: default_pack и other_pack
2) В нужную папку закидываем необходимые звуки. Для упрощения я переименовал аудио-файлы в формат: file1, file2 etc.
3) audio.inc в pawno\include
4) audio.(dll/so) в plugins
5) audio.ini оставляем в корневой директории сервера (там будем указывать имена файлов для паков)
6) Пишем код:
Вот и всё: развеян ещё один миф о превосходстве одного мп над другим.
Скачать плагин можно в ресурсах.
Пример использования:
Для клиента:
1) Закидываем папку libraries и плагин audio.asi в директорию с GTA SA. Файлы vorbisFile.dll и vorbisHooked.dll уже будут установлены, если вы ранее использовали SAMPFUNC или CLEO.
Для сервера:
1) В директории сервера создаём папку audiopacks, в ней создаём 2 папки с наборами аудио-файлов: default_pack и other_pack
2) В нужную папку закидываем необходимые звуки. Для упрощения я переименовал аудио-файлы в формат: file1, file2 etc.
3) audio.inc в pawno\include
4) audio.(dll/so) в plugins
5) audio.ini оставляем в корневой директории сервера (там будем указывать имена файлов для паков)
6) Пишем код:
PHP:
#include <audio>
public OnGameModeInit()
{
Audio_SetPack("default_pack", true, true); // выберем пак для чтения аудио-файлов
AddStaticVehicle(470, 227.3117, 1913.2104, 17.64, 180.0, 43, 0);
AddStaticVehicle(470, 226.3958, 1878.1952, 17.64, 180.0, 43, 0);
AddStaticVehicle(470, 202.2110, 1878.1952, 17.64, 0.0, 43, 0);
AddStaticVehicle(470, 201.9433, 1913.2104, 17.64, 0.0, 43, 0);
return 1;
}
public OnGameModeExit()
{
Audio_DestroyTCPServer(); // удалим аудио-сервер
return 1;
}
public Audio_OnClientConnect(playerid)
{
Audio_TransferPack(playerid); // укажем на выбранный пак клиенту при подключении
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/giness", true))
{
audio_sound[playerid][0] = Audio_Play(playerid, 1, false, false, false); // запустим 4 аудио-потока из окон патриотов на военной базе на расстоянии 10 единиц
Audio_Set3DPosition(playerid, audio_sound[playerid][0], 227.3117, 1913.2104, 17.64, 10.0);
audio_sound[playerid][1] = Audio_Play(playerid, 2, false, false, false);
Audio_Set3DPosition(playerid, audio_sound[playerid][1], 226.3958, 1878.1952, 17.64, 10.0);
audio_sound[playerid][2] = Audio_Play(playerid, 3, false, false, false);
Audio_Set3DPosition(playerid, audio_sound[playerid][2], 202.2110, 1878.1952, 17.64, 10.0);
audio_sound[playerid][3] = Audio_Play(playerid, 4, false, false, false);
Audio_Set3DPosition(playerid, audio_sound[playerid][3], 201.9433, 1913.2104, 17.64, 10.0);
return 1;
}
if(!strcmp(cmdtext, "/disco", true))
{
Audio_Set3DPosition(playerid, audio_sound[playerid][0], 227.3117, 1913.2104, 17.64, 50.0); // увеличим расстояние слышимости потоков до 50 единиц
Audio_Set3DPosition(playerid, audio_sound[playerid][1], 226.3958, 1878.1952, 17.64, 50.0);
Audio_Set3DPosition(playerid, audio_sound[playerid][2], 202.2110, 1878.1952, 17.64, 50.0);
Audio_Set3DPosition(playerid, audio_sound[playerid][3], 201.9433, 1913.2104, 17.64, 50.0);
return 1;
}
if(!strcmp(cmdtext, "/okstyle", true))
{
Audio_Remove3DPosition(playerid, audio_sound[playerid][0]); // удалим точки воспроизведения звука и остановим воспроизведение
Audio_Stop(playerid, audio_sound[playerid][0]);
Audio_Remove3DPosition(playerid, audio_sound[playerid][1]);
Audio_Stop(playerid, audio_sound[playerid][1]);
Audio_Remove3DPosition(playerid, audio_sound[playerid][2]);
Audio_Stop(playerid, audio_sound[playerid][2]);
Audio_Remove3DPosition(playerid, audio_sound[playerid][3]);
Audio_Stop(playerid, audio_sound[playerid][3]);
return 1;
}
return 1;
}
