Озвучивание событий через XML [FS9] — Панели и приборы

Спасибо за терпение и разъяснения. Пробую разобраться. Что не получится-обращусь, если вы не против?

Если можно, то покажите хоть один пример прибора, где прописан звук на показания прибора. Например, прописать звуковой файл на падение давления двигателя.

С подключением звука на переключение тумблера понятно вроде.

Я циклические звуки включал через Сишную библиотеку NamedVar, в ХМЛ нужно просто установить переменную в 1 когда, включаешь звук, и в 0 когда выключаешь. Посмотрю как нить как время будет переведу код на ХМЛ. Нужно только пометить описание как Reset=0 и звук должен удовлетворять условию:

post-2548-1182745711_thumb.jpg


Edited by Bor

Это я про циклические звуки написал, а то что тебе надо, ну как, тут проблема только в знании XML приборов для сима, читай доки. Проверяешь условия и выставляешь переменные для звука, и все.

Всё ясно. Документация есть, буду изучать.

Игорь, хочу выразить БОЛЬШУЮ БЛАГОДАРНОСТЬ ! за прибор и содержательное, и подробное разьяснение по теме.


Edited by Virpil

Хотелось бы слегка посоветовать 🙂

 

Если хотите длать универсальное решение для звуков в симуляторе — рекомендую написать утилиту как модуль (чтобы всегда была доступна для сторонних разработчиков без указывания некоего отдельного прибора в панели) и ввод информации (события/назначение звуков и тому подобное) оформлять как интерфейсы. Для тех же, кто использует не XML, а С++ — выделять либо NamedVar’s либо вообще оформлять это как lib файл и .h header для включения в кастомный проект.

 

Если есть интерес — в принципе (по свободному времени разумеется) я могу проконсультировать по модулям и интерфейсам, дело нехитрое в общем-то, один раз сделал — дальше само пошло. Единственно на майл пишите (на форум не то чтобы ходок, да и в почте удобнее что-то приаттачить и тому подобное).

 

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

Хотелось бы слегка посоветовать 🙂

 

Если хотите длать универсальное решение для звуков в симуляторе — рекомендую написать утилиту как модуль (чтобы всегда была доступна для сторонних разработчиков без указывания некоего отдельного прибора в панели) и ввод информации (события/назначение звуков и тому подобное) оформлять как интерфейсы. Для тех же, кто использует не XML, а С++ — выделять либо NamedVar’s либо вообще оформлять это как lib файл и .h header для включения в кастомный проект.

 

Если есть интерес — в принципе (по свободному времени разумеется) я могу проконсультировать по модулям и интерфейсам, дело нехитрое в общем-то, один раз сделал — дальше само пошло. Единственно на майл пишите (на форум не то чтобы ходок, да и в почте удобнее что-то приаттачить и тому подобное).

 

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

 

Получилось как раз наоборот, сперва я писал библиотеку для своего «внутреннего» использования (именно как lib), но более универсальным оказалось сделать ее реагирующей на переменные XML. В виде модуля я не стал оформлять ее по из-за того, что исповедую принцип: не нужна — не использую — не загружаю, насколько я помню модуль в симе загружается с любой моделью.

А тут появляется принципиальная возможность людям делающим панели на XML прикручивать к ним свои звуки не пользуясь компилятором вообще.

Да и я в своих «долгостроях» пошел по пути озвучки через XML. Из сишных приборов управляю озвучкой как раз через named vars.

Хотя если есть потребность именно в библиотечном оформлении (и работе из сишного прибора — для более гибкого управления, ведь все таблицы и функции под рукой можно любой звук прервать, задержать, изменить громкость) можно и так реализовать — необходимо только конструктивное обоснование.

 

Кстати сейчас (все для FS2004) сделал маленькое изменение в приборе — при переключении видов, внутрикабинные звуки гасятся.

Есть потребность выложу в разделе файлы.


Edited by Bor

Кстати сейчас (все для FS2004) сделал маленькое изменение в приборе — при переключении видов, внутрикабинные звуки гасятся.

Есть потребность выложу в разделе файлы.

Потребность такая есть! Совершенно согласен с вашим взглядом на модуль vs прибор.

Был бы вам очень признателен за обновлённую версию!

Спасибо! :)

Хотелось бы поблагодарить Игоря за создание такого чудесного прибора — получилось реализовать замечательные вещи.

 

Есть вопрос.

Я, вероятно, чего-то очень сильно не понимаю, так как программер из меня совершенно нубский, но я понял так, что параметр Reset в xss.cfg предназначен для того, чтобы L-переменной автоматически присвоить значение 0 после того, как она получила 1, таким образом проигрывание звука становится однократным, и он больше не проигрывается, пока условие, в результате выполнения которого в L-переменную записывается 1, не будет сначала отменено, а затем выполнено снова. У меня же значение переменной остаётся равным 1 до тех пор, пока не отменишь условие. Как результат, щелчок переключателя зацикливается.

 

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

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

 

В конфигурационном файле xss.cfg, в секции нужного вам звука, напротив Reset = пропишите true , гауга автоматом сбросит в false и звук прекратится сразу после переключения галетника.

Ну до этого-то я додумался :) В том и дело, что прописал. Не сбрасывает.

А я вот чет никак не разберусь :):)

Может я диградирую :rolleyes: ?

Ребят помогите а.

Я панельку такую симпотную сделал для Ми-8 терь охото чтоб там экипаж ботал

Ну до этого-то я додумался :) В том и дело, что прописал. Не сбрасывает.

 

А покажите пожалуйста свой XML код. И краткий комментарий, что он должен делать.


Edited by Bor

А я вот чет никак не разберусь :):)

Может я диградирую :) ?

Ребят помогите а.

Я панельку такую симпотную сделал для Ми-8 терь охото чтоб там экипаж ботал

Никита Константинов выполнил похожую работу при озвучке Ту-144, модель есть на сайте, можно скачать и использовать как пример, честно говоря я сам не ожидал такого на ХМЛ увидеть. Круто.

А покажите пожалуйста свой XML код. И краткий комментарий, что он должен делать.

Спасибо за отклик :)

Я покажу обязательно как только доберусь до него (это на другом компе).

Панэль готова и довольно симпатично выглядит. Как только звуки приверну. Выложу для общей оценки любителям Ми-8

Теперь главное разобраться. :umnik2: Буду сегодня пыхтеть


Edited by kit862008

А покажите пожалуйста свой XML код. И краткий комментарий, что он должен делать.

Выкладываю код.

 

Идея в том, чтобы переключение баков происходило с характерным звуком перемещения крана. Я не хотел привязывать звук к <Click>, так как в этом случае, как я понимаю, звучание будет происходить только при работе мышью с клик-зонами прибора, а в модели в ВК используется не прибор, а трёхмерный рычаг переключения баков, и если завязать звук на <Click>, то его не будет при переключении.

 

Я не знаю, как можно дать L-переменной значение 1, а затем сразу 0, а вот к инструкции к xss написано, что Reset=true делает это сам, поэтому идея была в том, чтобы при переключении крана в любое положение в переменную L:FUEL_SELECTOR_SOUND записывалась 1, звук проигрывался бы однократно, а затем xss автоматически бы записывала в переменную 0 до следующей смены положения крана.

 

<Gauge Name="FuelSelector" Version="1.0">
   <Element>
       <Select>
    <Value>(A:RECIP ENG FUEL TANK SELECTOR:1, enum) 0 == if{ 1 (>L:FUEL_SELECTOR_SOUND,bool) } els{ 1 (>L:FUEL_SELECTOR_SOUND,bool) }</Value>
       </Select>
   </Element>
</Gauge>

 

Я понимаю, какую чушь я могу писать, поэтому прошу прощения, если мои слова и «код» вызовут ужас :) Я очень плохой программер, но не считаю, что могу просить людей заниматься работой над самолётом, который им неинтересен, поэтому пытаюсь разобраться сам, но этот тот случай, когда без помощи уже ничего не получается. Поэтому буду очень признателен за разъяснения.

Насколько я понимаю, конфигурационный файл это просто .txt , потом переименованный в .cfg? Или с ним еще какие действия надо совершить?

Конфигурационный файл — это конфигурационный файл, никто ничего в нем не переименовывает

А если нужно в нем что-то исправить — вполне достаточно простого блокнота

ilya1502, вот смотрите, сразу навскидку:

Вы кладете на стек значение переменной A:RECIP ENG FUEL TANK SELECTOR, затем кладете на стек 0, затем сравниваете эти два значения на верхушке стека, потом идет ветвление и в зависимости от результата и если A:RECIP ENG FUEL TANK SELECTOR равно нулю и если не равно нулю (то есть в любом случае!) устанавливаете L:FUEL_SELECTOR_SOUND в 1. То есть при любом значении переменной RECIP… у вас должен проигрываться щелчок, вот поэтому он и зацикливается, он сбрасывается xss, но тут же вновь устанавливается вашим прибором. Наверное в этом случае нужно завести вспомогательную переменную, в которой хранить прежнее значение RECIP…, сравнивать с текущим значением RECIP… и в случае изменения запоминать новое значение и вот только тогда устанавливать 1 для переменной озвучки.

 

<Gauge Name="FuelSelector" Version="1.0">
  <Element>
     <Select>
       <Value>(A:RECIP ENG FUEL TANK SELECTOR:1, enum) (L:RECIP ENG FUEL TANK SELECTOR:1, enum)  == 
               if{ (A:RECIP ENG FUEL TANK SELECTOR:1, enum) (>L:RECIP ENG FUEL TANK SELECTOR:1, enum)
                   1 (>L:FUEL_SELECTOR_SOUND,bool) }
       </Value>
    </Select>
  </Element>
</Gauge>

 

ну где то так…. я так думаю.


Edited by Bor

Насколько я понимаю, конфигурационный файл это просто .txt , потом переименованный в .cfg? Или с ним еще какие действия надо совершить?

Михаил прав.

Это просто обыкновенный текстовый файл в кодировке CP1251 или Windows-1251, ну кому как нравится. Впрочем и расширение у него может быть любым, так как имя файла полностью задается в фале Panel.cfg, кстати Panel.cfg в русскоязычных Виндах пишется в такой же кодировке. Поэтому для примера я и для xss выбрал такое же расширение.


Edited by Bor

Михаил прав.

Это просто обыкновенный текстовый файл в кодировке CP1251 или Windows-1251, ну кому как нравится. Впрочем и расширение у него может быть любым, так как имя файла полностью задается в фале Panel.cfg, кстати Panel.cfg в русскоязычных Виндах пишется в такой же кодировке. Поэтому для примера я и для xss выбрал такое же расширение.

 

Спасибо. Как раз это я и имел в виду.