Аудио-плеер

Плагин используется для воспроизведения нескольких аудио-файлов. Его можно использовать для озвучки персонажей. За это отвечает класс AudioPlayer. Давайте рассмотрим пример использования:

using GTA;
using GTA.Plugins;

public partial class MAIN : Thread {

    // здесь будем хранить ссылку на аудио-плеер
    public static AudioPlayer AUDIO_PLAYER; 

    public override void START( LabelJump label ) {

        // ...
        create_thread<AUDIO>(); // запускаем поток с инициализацией плеера
        create_thread<TEST>(); // использовать плагин нужно только после инициализации!
        end_thread();

    }

    //----------------------------------------------------------------------------------------------------
	
    public class AUDIO : Thread {

        public override void START( LabelJump label ) {
            AUDIO_PLAYER = new AudioPlayer();
        }

    }

    public class TEST : Thread {

        public override void START( LabelJump label ) {

            // загружаем аудио-файлы
            AUDIO_PLAYER.load( 5 );

            wait( AUDIO_PLAYER.is_ready ); // ожидаем загрузки всех файлов

            for( int i = 0; i < AUDIO_PLAYER.count; i++ ) {
                AUDIO_PLAYER.play(); // воспроизводим аудиофайл, который сейчас в очереди
                wait( 5000 ); // ожидаем 5 секунд
            }

            AUDIO_PLAYER.unload(); // выгружаем все аудио-файлы

            wait( AUDIO_PLAYER.is_stopped ); // ожидаем завершения работы

            end_thread();
        }

    }
}

Метод загрузки load принимает 1 параметр: количество загружаемых файлов. Всего можно загрузить не больше 24 звуков. В нашем примере будут загружены файлы с именами: 0, 1, 2, 3 и 4. Метод play сначала начнёт воспроизводить трек 0. При повторном вызове: 1, далее 2 и т. п.

Если файл не найден, не загружен или отсутствует в очереди, то играть звук не будет. Метод play теперь имеет перегрузку, которая принимает 1 параметр: номер трека в очереди. Номера идентичны именам, что позволит воспроизвести звук не зависимо от его номеру в очереди.

Поиск нужного файла по умолчанию осуществляется в папке с игрой (где gta_sa.exe). Если нужно указать другую папку, то используем метод chdir:

chdir( "CLEO" );
AUDIO_PLAYER.load( 2 );

В этом случае будут загружены файлы 0.mp3 и 1.mp3, если они находятся в папке CLEO. Метод chdir нужно применять перед методом load каждый раз!

Плагин использует файлы с расширением mp3. А названия должны быть только числовыми!

Плагин может создаваться только один раз и в отдельном потоке (не MAIN)! Плагин рекомендуется использовать только в одном активном потоке!

Если в одном потоке использовать плагин вместе с плагином Аудио фон, то делать загрузку нужно после проверки is_ready или до метода load с проверкой is_ready.

Версия 7.5 позволяет использовать метод get_current_length_in_ms, который возвращает длительность звука в миллисекундах, что иногда полезно использовать в выводом текста или задержкой.

Int duration = local();
AUDIO_PLAYER.play();
wait( DefaultWaitTime )
AUDIO_PLAYER.get_current_length_in_ms( duration );
wait( duration );

Обратите внимание, что вызывать этот метод нужно после метода play, причём с небольшой задержкой. Это связано с тем, что длительность рассчитывается не сразу. Если файла не существует или с ним возникли проблемы, то метод возвращает 0.

Last updated