Перейти к содержимому


Фотография

Проигрывание своего аудио скриптом


Лучший Ответ vlad333000 , 14 June 2014 - 11:23

Сначало в файле Description.ext прописываешь свой звук/речь (cfgSounds) звук долженбыть в формате .ogg
Затем в нужно скрипте прописываешь строчку:
playSound "Название звука"

 

Description.ext:

class CfgSounds
{
    sounds[] = {};
    class Название звука // имя использующиеся для вызова в скриптах
    {
        // имя звука в редакторе (пример: эффекты в триггере)
        name = "Название звука";
        // путь до звука (относительно файла с миссией), громкость, тон
        sound[] = {"звуки\звук1.ogg", 1, 1};
        // время субтитров (секунды), текст субтитров (если это речь при использовнии команды say)
        titles[] = {1, "бла-бла-бла"};
    };
};

Что бы добавить еще звуки просто в этом же файле еще раз вставляешь строчки с 4 по 12:

class CfgSounds
{
    sounds[] = {};
    class звук1
    {
    };
    class звук2
    {
    };
};
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 63

#21 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 18:59

И так , что бы приатачить звук к объекту, надо создать из звука, класс OBJECT

class CfgVehicles {
	class All;
	class Sound: All {};
	
	class Sound_Generator1: Sound
	{
		scope = public;
		sound = "Generator1";
		displayName = "Generator";
	};

	class Sound_FMradio_static: Sound
	{
		scope = public;
		sound = "FMradio_radio_static";
		displayName = "FMradio_radio_static";
	};
	
	class Sound_FMradio_radio1: Sound
	{
		scope = public;
		sound = "FMradio_radio1";
		displayName = "FMradio_radio1";
	};

	class Sound_FMradio_Alarm: Sound
	{
		scope = public;
		sound = "FMradio_Alarm";
		displayName = "FMradio_Alarm";
	};
};

Далее

// Создаём объект _sound
_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

// Атачим созданый объект _sound, к чему там нужно
_sound attachTo [player,[0,0,1]];

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#22 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 19:42

И так , что бы приатачить звук к объекту, надо создать из звука, класс OBJECT

class CfgVehicles {
	class All;
	class Sound: All {};
	
	class Sound_Generator1: Sound
	{
		scope = public;
		sound = "Generator1";
		displayName = "Generator";
	};

	class Sound_FMradio_static: Sound
	{
		scope = public;
		sound = "FMradio_radio_static";
		displayName = "FMradio_radio_static";
	};
	
	class Sound_FMradio_radio1: Sound
	{
		scope = public;
		sound = "FMradio_radio1";
		displayName = "FMradio_radio1";
	};

	class Sound_FMradio_Alarm: Sound
	{
		scope = public;
		sound = "FMradio_Alarm";
		displayName = "FMradio_Alarm";
	};
};

Далее

// Создаём объект _sound
_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

// Атачим созданый объект _sound, к чему там нужно
_sound attachTo [player,[0,0,1]];

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Спасибо) Сейчас буду разбираться) Таких объектов может быть сколько угодно?

То есть получается 

_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

Эта строка запускает звук, а

_sound attachTo [player,[0,0,1]]; определяет за кем он закреплен? 

И если это unit то так _sound attachTo [unit,[0,0,1]];?

А в дескрипшене каждый класс означает пользовательский звук = объект? 

Только вот чуть не понятно где имя звука там. 


Сообщение отредактировал Djon: 19 June 2014 - 20:15

  • 0

#23 OFFLINE   aleksei_544

aleksei_544

    Рядовой

  • Пользователи
  • 12 сообщений

Отправлено 19 June 2014 - 19:49

Что то вы тут лишнего написали)), просто создаешь юнит и пишешь ему в инициализации или в любом триггере или скрипте   radiotower say3D "sovietradio";   где radiotower название юнита , а в кавычках название этого файла в дискрипшине  :                                                                                               class CfgSounds
{
sounds[] = {};
class sovietradio
{

name = "sovietradio";

sound[] = {"sound\sovietradio.ogg", 0.04, 1};
titles[] = {};
};
};                                                                                                                                                                                                                                                                      в Дескрипшене 0.04 - это громкость... если поставить на 1 то будет оч громко).. метров на 300-400 слышно


  • 0

#24 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 20:24

Что то вы тут лишнего написали)), просто создаешь юнит и пишешь ему в инициализации или в любом триггере или скрипте   radiotower say3D "sovietradio";   где radiotower название юнита , а в кавычках название этого файла в дискрипшине  :                                                                                               class CfgSounds
{
sounds[] = {};
class sovietradio
{

name = "sovietradio";

sound[] = {"sound\sovietradio.ogg", 0.04, 1};
titles[] = {};
};
};                                                                                                                                                                                                                                                                      в Дескрипшене 0.04 - это громкость... если поставить на 1 то будет оч громко).. метров на 300-400 слышно

Я уже проворачивал этот фокус сегодня, правда на 1 стояла громкость, так я и не отличил от кого звук идет, просто громкий звук, стоял от него метрах в 20, сейчас попробую убавить


  • 0

#25 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 20:36

Реально работает)))) Я на такой громкости видимо и не понял что это бот мой орет))) 

Я тут подсмотрел у SteelRat способ по прекращению анимации в случае обнаружения врага, его можно к остановке звука этого применить?

 

_unit = объект бот;
_enemy_detect = false;

WaitUntil {

    _enemy_detect = _unit call BIS_fnc_enemyDetected;

    if(_enemy_detect) then {

        _unit playActionNow "stop"; \\ Я так понимаю вместо этих двух строк нужно что-то прописать?
        _unit switchMove "";

    };

    sleep 0.5;

    _enemy_detect

}


  • 0

#26 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 21:15

 

И так , что бы приатачить звук к объекту, надо создать из звука, класс OBJECT

class CfgVehicles {
	class All;
	class Sound: All {};
	
	class Sound_Generator1: Sound
	{
		scope = public;
		sound = "Generator1";
		displayName = "Generator";
	};

	class Sound_FMradio_static: Sound
	{
		scope = public;
		sound = "FMradio_radio_static";
		displayName = "FMradio_radio_static";
	};
	
	class Sound_FMradio_radio1: Sound
	{
		scope = public;
		sound = "FMradio_radio1";
		displayName = "FMradio_radio1";
	};

	class Sound_FMradio_Alarm: Sound
	{
		scope = public;
		sound = "FMradio_Alarm";
		displayName = "FMradio_Alarm";
	};
};

Далее

// Создаём объект _sound
_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

// Атачим созданый объект _sound, к чему там нужно
_sound attachTo [player,[0,0,1]];

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Спасибо) Сейчас буду разбираться) Таких объектов может быть сколько угодно?

То есть получается 

_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

Эта строка запускает звук, а

_sound attachTo [player,[0,0,1]]; определяет за кем он закреплен? 

И если это unit то так _sound attachTo [unit,[0,0,1]];?

А в дескрипшене каждый класс означает пользовательский звук = объект? 

Только вот чуть не понятно где имя звука там. 

 

 

 

_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0];

Эта строка запускает звук

 

Эта строка создаёт объект, который мы создали из звука

 

 

 

Только вот чуть не понятно где имя звука там. 
// Сюда и прописываете имя класса, того звука который будет проигрываться
sound = "FMradio_radio1";

С начала создаёте в конфиге звук, это если делаете свои звуки, можно использовать и стандартные армовские, если в наличии подходящий.

Далее создаёте, как я уже описал, объект, скажем так, звук, который можно пощупать руками)

И дальше спавните это колдовство,этой командой

_sound = createSoundSource ["Sound_FMradio_static", [0,0,0], [], 0]; 

как спавните юнитов и технику, всё просто)

 

Только есть один нюанс, прокатит ли это

class CfgVehicles {
	class All;
	class Sound: All {};
	
	class Sound_Generator1: Sound
	{
		scope = public;
		sound = "Generator1";
		displayName = "Generator";
	};
};

в decription.ext

 

Если не сработает, то без вариантов, только через аддон.


Сообщение отредактировал SteelRat: 19 June 2014 - 21:19

  • 0

#27 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 21:26

 

 

 так я и не отличил от кого звук идет, просто громкий звук, стоял от него метрах в 20, сейчас попробую убавить

команда

say3D

будет вам не в помощь, понять откуда идёт звук, я уже ставил опыты, чем не устраимает просто

say

?


Реально работает)))) Я на такой громкости видимо и не понял что это бот мой орет))) 

Я тут подсмотрел у SteelRat способ по прекращению анимации в случае обнаружения врага, его можно к остановке звука этого применить?

 

_unit = объект бот;
_enemy_detect = false;

WaitUntil {

    _enemy_detect = _unit call BIS_fnc_enemyDetected;

    if(_enemy_detect) then {

        _unit playActionNow "stop"; \\ Я так понимаю вместо этих двух строк нужно что-то прописать?
        _unit switchMove "";

    };

    sleep 0.5;

    _enemy_detect

}

Да ни чего туда не пропишешь!) Звук всё равно отыграется до конца)

Через это дело можно прервать звук, который идёт в цикле.


Сообщение отредактировал SteelRat: 19 June 2014 - 21:28

  • 0

#28 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 21:33

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?


Сообщение отредактировал Djon: 19 June 2014 - 21:35

  • 0

#29 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 21:35

unit say3D "music"; Вот эта команда срабатывает как нужно))) И после убийства или уничтожения объекта прекращает воспроизводиться.

Я не об этом, сам звук не получится прервать, пока он не отыграет до конца.

Собствено я не о этой команде).

 

Сам движёк, вполне вероятно и отанавливает воспроизведение звука, при наступлении неких обстаятельств, но вот команды по остановке воспроизведения трека, скажем так, на середине, одним словом, было как то нужно реализовать это, способа так и не нашёл.


Сообщение отредактировал SteelRat: 19 June 2014 - 21:41

  • 0

#30 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 21:40

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?

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


  • 0

#31 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 21:44

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?

say3D, это тупо эффект создания объёмного звука, я по началу тоже, было, подумал что это типа многоканальной акустики)


  • 0

#32 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 21:45

Понятно


Сообщение отредактировал Djon: 19 June 2014 - 21:46

  • 0

#33 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 21:47

 

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?

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

 

А с say разве не так?


  • 0

#34 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 21:49

Я ваш способ опробую, если что-то не получится выложу сюда, поправите? А то совсем еще недавно начал скриптами заниматься :pardon:


Нет я имею введу стоит собирать ваш способ если эффект один и тот же. Если в вашем четко слышно звук откуда он и т.д. то безусловно буду пользоваться только им


  • 0

#35 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 22:04

Прошу прощения, вовремя не сообразил о какой команде say идет речь. Сейчас опробовал, действительно гораздо реалистичнее чем say3D работает. С рассеиванием звука пусть тоже не все идеально, но зато четко слышно откуда он идет. Благодарю, что помогли разобраться, ну а с остановкой воспроизведения, не беда.  А если не секрет то как прервать звук который еще не включился. В скриптах я слабоват, по этому пример приведу: сидят два бота у костра и разговаривают, а тут появляюсь в поле зрения я (враг их). Разговор ботов состоит из множества звуковых файлов и как сделать чтобы после того как они меня спалили, следующие файлы разговора не воспроизводились?)


  • 0

#36 OFFLINE   aleksei_544

aleksei_544

    Рядовой

  • Пользователи
  • 12 сообщений

Отправлено 19 June 2014 - 22:12

 

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?

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

 

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

c=true; //написать где нить например в тригере что "с правда" пока жив обьект "o1" ps команду не помню как то (!(alive o1))

if (c=true) then {o1 say3d "myzika"; //если с правда то играет музыка

if (c=false) then {o1 say3d "";//если с ложь (игрок мертв)то ничего не играет


И вот встречный вопрос можно ли как нибудь сделать звук слышимый только внутри машины?


  • 0

#37 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 22:39

 

 

а между вашим способом и say3D ощутимая разница в плане рассеивания звука и определения откуда он идет?

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

 

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

c=true; //написать где нить например в тригере что "с правда" пока жив обьект "o1" ps команду не помню как то (!(alive o1))

if (c=true) then {o1 say3d "myzika"; //если с правда то играет музыка

if (c=false) then {o1 say3d "";//если с ложь (игрок мертв)то ничего не играет


И вот встречный вопрос можно ли как нибудь сделать звук слышимый только внутри машины?

 

Если пользоваться say то не придется бороться с остановкой музыки, так как умирает бот, умирает источник. А вот в случае палева как быть.

 

А на счет машины при помощи say точно не получится да и вообще мне кажется ни как, если только не добраться до радиуса или дистанции слышимости звука и ограничить ее радиусом машины))) 


Представьте такую картину, сидит бот поет песню, двое других разговариваю между собой, тут начинается перестрелка, боты разбигаются и в итоге один как пел песню так и поет а те двое уже разговаривают сами с собой в разных местах острова))))


  • 0

#38 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 19 June 2014 - 22:44

Есть команды срабатывающие когда игрок садится в машину, но нет команды прерывающей трек когда он выйдет и нее, вот если бы была, то выход можно было найти


  • 0

#39 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 20 June 2014 - 20:16

 

 

И вот встречный вопрос можно ли как нибудь сделать звук слышимый только внутри машины?

Syntax: unit say [sound, maxTitlesDistance,speed]

Parameters:

  unit:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

  [sound, maxTitlesDistance,speed]:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

  sound:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

classname. Defined in

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

  maxTitlesDistance:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

  speed:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

.

 Optional Return Value:

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 

Вот этот параметр в вызове команды

maxTitlesDistance

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


Сообщение отредактировал SteelRat: 20 June 2014 - 20:18

  • 1

#40 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 20 June 2014 - 21:04

 

Представьте такую картину, сидит бот поет песню, двое других разговариваю между собой, тут начинается перестрелка, боты разбигаются и в итоге один как пел песню так и поет а те двое уже разговаривают сами с собой в разных местах острова))))

Вот намутил вариант)

http://arma3.ru/foru...ukovykh-trekov/


  • 1




Яндекс.Метрика