Popular Post Polyacov_Yury Posted December 9, 2014 Popular Post Share Posted December 9, 2014 (edited) И снова здравствуйте. Без долгих разглагольствований: Загрузчик звуков (BanksLoader) Чисто технически, это автоматический редактор engine_config.xml и audio_mods.xml. Сделано, чтобы пользователям не приходилось самим править их при установке нескольких модов. Мод работает с копией конфига, которую сам же и помещает в res_mods/текущая_версия. Это позволяет обеспечить их бесперебойную работу в любых комбинациях. Создателю звукового мода достаточно включить в архив мой скрипт. Скрипт автоматически на машине пользователя обеспечит совместимость, к примеру, тех же "Громовых Орудий" с ПроТанками, Аннонсером, Гудками, звуком подрыва БК или чем-либо еще. Технические подробности использования при создании модов Для работы ремапнутых через audio_mods.xml событий переименуйте Ваш audio_mods.xml в имя, совпадающее с именем Вашего звукового банка (например, если банк имеет имя voiceover.bnk - новым именем будет voiceover.xml). Все блоки из таких файлов, кроме <loadBanks>, будут скопированы в общий audio_mods.xml автоматически. Если вы хотите, чтобы Ваш банк находился в секции engine_config, отличной от SFX_soundbanks_loadonce, например - в voice_soundbanks - милости просим. Создаём xml-файл, как указано выше (для банка my_mod.bnk требуется файл my_mod.xml), и записываем в него примерно следующее: <root> <!-- вместо root может быть написано что угодно --> <engine_config_section> SFX_soundbanks_arena </engine_config_section> </root> Да, тот же файл, что и для ивентов, RTPC и прочего. Да, параметры можно совмещать - <root> <engine_config_section>SFX_soundbanks_arena</engine_config_section> <events> <event> <name>wpn_main_extra_PC</name> <mod>wpn_main_extra_PC_mod</mod> </event> </events> </root> - и они будут корректно распознаны. ВНИМАНИЕ: если вашему банку для работы в audio_mods.xml требовалось только его наличие в блоке loadBanks, и он будет работать, будучи в секции SFX_soundbanks_loadonce, то xml-файл создавать НЕ нужно. И да. НЕ кладите engine_config.xml в ваш файл .wotmod. И audio_mods.xml, желательно, тоже. Пускай для последнего в моде и есть обработка, она там оставлена на случай мододелов, которые инструментом либо не пользуются, либо не прочитали данную инструкцию. Первый же сломает игру при первой возможности. Настройка mods/configs/PYmods/BanksLoader/BanksLoader.json { // соответствующие поля в engine_config.xml "defaultPool": 48, "lowEnginePool": 36, "preparedPool": 318, "streamingPool": 16, "IOPoolSize": 32, "max_voices": 310, // подробное сообщение при запросе перезагрузки "debug": true } Список изменений Ссылка на GitHub (там всегда свежее) 19.10.2018 Исправлена обработка .wotmod-пакетов, имеющих внутри audio_mods.xml. 07.10.2018 Ядро: подчищен код для вызова диалоговых окон. 02.10.2018 Ядро: код для вызова диалоговых окон вынесен из модов. Исправлена работа мода на 1.2.0. 30.08.2018 Исправлен запрос на перезапуск во время боя или воспроизведения реплея. 10.07.2018 Большой рефакторинг кода. 09.02, 19.03.2018 Правки под 1.0.0. 1.9.6 (26.12.2017) Косметические изменения в выводе сообщений в лог. Распознавание разделенных на части audioww.pkg Новые уменьшенные настройки пула памяти теперь стандартные. Откат на редактирование engine_config.xml. Экспойнт делает также, но, в отличие от него, я не заявляю, что не трогаю никаких файлов. Ремап ивентов и вот это все осталось как раньше, только секция loadBanks теперь не нужна и вычищается автоматически. Файлы .xml теперь не способны прокрасться в список загружаемых банков. Только .bnk и .pck. Ручные изменения engine_config.xml теперь уважаются. Если вы хотите, чтобы Ваш банк находился в voice_soundbanks - милости просим. Никакого редактирования JSON не требуется. Но в этом случае приложите свой engine_config к своему моду. 15.11.2017 Новая версия Ядра. 28.10.2017 Аналитика теперь сообщает дату компиляции мода. 1.9.5 (23.10.2017) В конфиге исправлено значение streamingPool. Должно помочь тем, у кого пропадает голосовая связь. Теперь запрос на перезапуск выдается также в бою/на реплее. 1.9.4 (18.06.2017) Новая версия Ядра. 1.9.3 (04.05.2017) Исправлена обработка озвучек, созданных заменой стандартных банков. Теперь мод официально является полноценной заменой mod_wg_load_custom_ekspont_banks.pyc (подтверждено Ekspoint) 1.9.2 (24.02.2017) Добавлено предложение закрыть клиент без перезапуска. Исправлен циклический ребут, если нет папки audioww в res_mods. Загрузчик больше не меняет даты изменения у отредактированных пакетов. 1.9.1 (02.03.2017) Бета-версия мёрджера audio_mods.xml Переезд в .wotmod-пакет. 1.1.0 (13.12.2016) Переход на modsCore 2.0. 08.12.2016 Добавлен "легкий режим": в запрос на перезапуск больше не выводится полный перечень изменений. Чтобы обратно включить перечень - меняем "debug" на true в конфиге. 25.11.2016 Фикс под 9.17. Исправлен не помещающийся в заголовок месседжбокса текст. 1.11.2016 Добавлена возможность прописывать в настройках мода, куда вписывать тот или иной банк. Добавлена сигнатура в заголовок запроса о перезапуске. Написано "от PY" - значит, мое. С разрешения Ekspoint добавлено автоматическое отключение mod_wg_load_custom_ekspont_banks.pyc путем изменения расширения файла на ".pyc1". 27.10.2016 Добавлен вывод месседжбокса в ангаре для пользователей автологина. Подредакировано сообщение в месседжбоксе. Должно стать понятнее. 26.10.2016 Добавлена настройка настроек пула памяти. 24.10.2016 Добавлен патч memoryManager'а в мод. Добавлен Ekspoint. (в список авторов ) 21.10.2016 Релиз. Скачать ЯндексДиск GoogleDrive Инъектор звуковых событий (SoundEventInjector) Достаточно небольшой по коду, но очень мощный по функционалу скрипт. Позволит авторам звуковых модификаций не править xml-скрипты с описаниями модулей техники и прочей системной информации, а проводить контролируемую инъекцию информации о звуковых событиях в клиент игры. Плюсы: Нет папки scripts/item_defs. Нечему ломаться при любом микрообновлении. Не используется gui/sound_notifications.xml. Вся настройка вынесена в отдельные от клиента игры настроечные файлы. Минусы: Если сломается питон-составляющая мода - рухнут все, кто от него зависят. Клиент игры запускается дольше. Где-то на 5 секунд. Довольно большой объем работы при переводе звукового мода со старого формата (xml-скрипты) на новый (JSON-конфиги для мода). Несмотря на минусы, перекрываемые (и довольно тесно связанные с) плюсами, модификация довольно быстро набирает популярность. Настройка Со стороны пользователя настройка сводится только к копированию/удалению конфиг-файлов, отвечающих за различные звуковые моды/их части. mods/configs/PYmods/SoundEventInjector/configs/*.json Мод поддерживает довольно гибкий формат настроек. Файлы как могут быть разбиты на сколь угодно мелкие отдельные части, так и весь Ваш звуковой мод может управляться одним цельным конфигом. Шаблон конфига: { "имя_xml_скрипта_из_папки_components": { "имя_нации": { // требуется ли - зависит от скрипта, смотрите ниже "ID_модуля": { "wwsoundPC": "my_event_1", "wwsoundNPC": "my_event_2" } } }, "имя_другого_скрипта": { // это просто показывает, что можно несколько xml-скриптов "отредактировать" через один конфиг. } } Понимаю, пока что не очень понятно. Дальше будут примеры того, как "редактировать" поддерживаемые на данный момент скрипты. scripts/item_defs/vehicles/nation/components/engines.xml В оригинале файл выглядит так: <engines.xml> <ids></ids> <!-- На самом деле в этом блоке куча текста, но нам он не важен --> <shared> <NORINCO_12150L7> <userString>#china_vehicles:NORINCO_12150L7</userString> <tags>diesel</tags> <level> 8 </level> <notInShop> true </notInShop> <price> 79290 </price> <wwsoundPC>russian_500_600</wwsoundPC> <!-- Обратите внимание вот на эти два поля. --> <wwsoundNPC>russian_500_600</wwsoundNPC> <power> 520 </power> <weight> 750 </weight> <maxHealth> 190 </maxHealth> <maxRegenHealth> 95 </maxRegenHealth> <repairCost> 7 </repairCost> <fireStartingChance>0.12</fireStartingChance> <rpm_min> 381 </rpm_min> <rpm_max> 2056 </rpm_max> </NORINCO_12150L7> <!-- Этих блоков тоже в файле куча, приведу два, чтобы было видно, как правильно склеить несколько. --> <_12150L-3_V-12> <userString>#china_vehicles:_12150L-3_V-12</userString> <tags>diesel</tags> <level> 5 </level> <notInShop> true </notInShop> <price> 17000 </price> <wwsoundPC>russian_400_500</wwsoundPC> <wwsoundNPC>russian_400_500</wwsoundNPC> <power> 430 </power> <weight> 700 </weight> <maxHealth> 105 </maxHealth> <maxRegenHealth> 52 </maxRegenHealth> <repairCost> 4 </repairCost> <fireStartingChance>0.12</fireStartingChance> <rpm_min> 208 </rpm_min> <rpm_max> 2283 </rpm_max> </_12150L-3_V-12> </shared> </engines.xml> В конфиге это будет выглядеть так: { "engines": { "china": { // в один конфиг можно впихнуть хоть все нации "NORINCO_12150L7": { // а вот записи о компонентах лучше забирать только те, которые у Вас отличаются от стандартного клиента. "wwsoundPC": "russian_500_600", "wwsoundNPC": "russian_500_600" }, "_12150L-3_V-12": { "wwsoundPC": "russian_400_500", "wwsoundNPC": "russian_400_500" } } //если добавите еще одну нацию - не забудьте добавить тут запятую! } // а тут - если добавите еще один вид редактируемых скриптов. } scripts/item_defs/vehicles/nation/components/guns.xml В оригинале файл выглядит так: <guns.xml> <ids></ids> <!-- На самом деле в этом блоке куча текста, но нам он не важен --> <shared> <_37mm_APX_SA18> <userString>#china_vehicles:_37mm_APX_SA18</userString> <tags></tags> <level> 1 </level> <price> 0 </price> <impulse>0.26</impulse> <recoil> <lodDist>MEDIUM</lodDist> <amplitude>0.1</amplitude> <recoilEffect>small</recoilEffect> </recoil> <effects>shot_small</effects> <!-- Из всего этого безобразия нам нужно только вот это поле. --> <reloadEffect>reload20_45</reloadEffect> <turretYawLimits>-180 180</turretYawLimits> <pitchLimits> <minPitch>0.0 -35.0 1.0 -35.0</minPitch> <maxPitch>0.0 20.0 1.0 20.0</maxPitch> </pitchLimits> <rotationSpeed>43.75</rotationSpeed> <reloadTime>2.51428571428571</reloadTime> <maxAmmo> 237 </maxAmmo> <aimingTime>2.51428571428571</aimingTime> <weight> 110 </weight> <maxHealth> 54 </maxHealth> <maxRegenHealth> 27 </maxRegenHealth> <repairCost> 1 </repairCost> <invisibilityFactorAtShot>0.1</invisibilityFactorAtShot> <shotDispersionRadius>0.537142857142857</shotDispersionRadius> <shotDispersionFactors> <turretRotation>0.16</turretRotation> <afterShot>4.0</afterShot> <whileGunDamaged>2.0</whileGunDamaged> </shotDispersionFactors> <shots> <_37mm_Odr_mle._1935> <defaultPortion>1.0</defaultPortion> <speed> 600 </speed> <gravity>9.81</gravity> <maxDistance> 720 </maxDistance> <piercingPower>29 22</piercingPower> </_37mm_Odr_mle._1935> <_37mm_FrtPrf1935> <defaultPortion>0.0</defaultPortion> <speed> 750 </speed> <gravity>9.81</gravity> <maxDistance> 720 </maxDistance> <piercingPower>46 34</piercingPower> </_37mm_FrtPrf1935> <_37mm_OE_mle._1916> <defaultPortion>0.0</defaultPortion> <speed> 600 </speed> <gravity>9.81</gravity> <maxDistance> 720 </maxDistance> <piercingPower>18 18</piercingPower> </_37mm_OE_mle._1916> </shots> </_37mm_APX_SA18> <!-- Этих блоков тоже в файле куча, приведу два, чтобы было видно, как правильно склеить несколько. --> <_37mm_APX_SA18_bot> <userString>#china_vehicles:_37mm_APX_SA18_bot</userString> <tags></tags> <level> 1 </level> <price> 0 </price> <notInShop> true </notInShop> <impulse>0.26</impulse> <recoil> <lodDist>MEDIUM</lodDist> <amplitude>0.1</amplitude> <recoilEffect>small</recoilEffect> </recoil> <effects>shot_small</effects> <!-- Из всего этого безобразия нам нужно только вот это поле. --> <reloadEffect>reload20_45</reloadEffect> <pitchLimits> <minPitch>0.0 -35.0 1.0 -35.0</minPitch> <maxPitch>0.0 20.0 1.0 20.0</maxPitch> </pitchLimits> <turretYawLimits>-180 180</turretYawLimits> <rotationSpeed>43.75</rotationSpeed> <reloadTime>2.51428571428571</reloadTime> <maxAmmo> 237 </maxAmmo> <aimingTime>2.51428571428571</aimingTime> <weight> 110 </weight> <maxHealth> 54 </maxHealth> <maxRegenHealth> 27 </maxRegenHealth> <repairCost> 1 </repairCost> <invisibilityFactorAtShot>0.1</invisibilityFactorAtShot> <shotDispersionRadius>0.537142857142857</shotDispersionRadius> <shotDispersionFactors> <turretRotation>0.16</turretRotation> <afterShot>4.0</afterShot> <whileGunDamaged>2.0</whileGunDamaged> </shotDispersionFactors> <shots> <_37mm_Odr_mle._1935_bot> <defaultPortion>1.0</defaultPortion> <speed> 600 </speed> <gravity>9.81</gravity> <maxDistance> 720 </maxDistance> <piercingPower>29 22</piercingPower> </_37mm_Odr_mle._1935_bot> </shots> </_37mm_APX_SA18_bot> </shared> </guns.xml> В конфиге это будет выглядеть так: { "guns": { "china": { // в один конфиг можно впихнуть хоть все нации "_76mm_54-76TG": { // а вот записи о компонентах лучше забирать только те, которые у Вас отличаются от стандартного клиента. "effects": "gun_76mm_shot_CH" }, "_76mm_54-76T": { "effects": "gun_76mm_shot_CH" } }, "china:CH_exampleTank_Mk1": { // Это если хотите подменить орудие для отдельного танка, но не для всей нации // содержимое полностью идентично } //если добавите еще одну нацию - не забудьте добавить тут запятую! } // а тут - если добавите еще один вид редактируемых скриптов. } Обратите внимание!! Для работы этой секции требуются измененные эффекты орудий (scripts/item_defs/vehicles/common/gun_effects.xml). Для него свой формат не предусмотрен, поэтому положите свой файл с эффектами неизмененным в папку с json-конфигами. Можете не бояться, мод его оттуда подхватит. scripts/item_defs/vehicles/common/shot_effects.xml В оригинале файл выглядит так: <shot_effects.xml> <autoArmorPiercing> <!-- Здесь многого не хватает, на самом деле там текста намного больше. --> <groundHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_ground</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </groundHit> <sandHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_sand</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </sandHit> <snowHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_snow</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </snowHit> <armorBasicRicochet> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_PC>armor_not_pierce_auto</impactNPC_PC> <!-- Нам нужно вот это. --> <impactPC_NPC>armor_not_pierce_auto</impactPC_NPC> <!-- Нам нужно вот это. --> <impactNPC_NPC>armor_not_pierce_auto</impactNPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_ricochet</SWITCH_ext_impact_type> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </armorBasicRicochet> <armorRicochet> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_PC>armor_not_pierce_auto</impactNPC_PC> <!-- Нам нужно вот это. --> <impactPC_NPC>armor_not_pierce_auto</impactPC_NPC> <!-- Нам нужно вот это. --> <impactNPC_NPC>armor_not_pierce_auto</impactNPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_ricochet</SWITCH_ext_impact_type> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </armorRicochet> <armorResisted> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_PC>armor_not_pierce_auto</impactNPC_PC> <!-- Нам нужно вот это. --> <impactPC_NPC>armor_not_pierce_auto</impactPC_NPC> <!-- Нам нужно вот это. --> <impactNPC_NPC>armor_not_pierce_auto</impactNPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_not_pierce</SWITCH_ext_impact_type> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </armorResisted> <armorHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_PC>armor_pierce_auto</impactNPC_PC> <!-- Нам нужно вот это. --> <impactPC_NPC>armor_pierce_auto</impactPC_NPC> <!-- Нам нужно вот это. --> <impactNPC_NPC>armor_pierce_auto</impactNPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_pierce</SWITCH_ext_impact_type> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </armorHit> <armorCriticalHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_PC>imp_auto_critical_AP_NPC_PC</impactNPC_PC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_auto_critical_AP_PC_NPC</impactPC_NPC> <!-- Нам нужно вот это. --> <impactNPC_NPC>imp_auto_critical_AP_NPC_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_pierce_crit</SWITCH_ext_impact_type> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </armorCriticalHit> <woodHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_wood</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </woodHit> <stoneHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_stone</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </stoneHit> <metalHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_metal</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </metalHit> <shallowWaterHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_water</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </shallowWaterHit> <deepWaterHit> <!-- Нам нужно вот это. --> <effects> <sound> <startKey>start</startKey> <impactNPC_NPC>imp_surface_automatic_NPC</impactNPC_NPC> <!-- Нам нужно вот это. --> <impactPC_NPC>imp_surface_automatic_PC</impactPC_NPC> <!-- Нам нужно вот это. --> <SWITCH_ext_impact_type>SWITCH_ext_impact_type_surface</SWITCH_ext_impact_type> <SWITCH_ext_impact_surface>SWITCH_ext_impact_surface_water</SWITCH_ext_impact_surface> <SWITCH_ext_shell_type>SWITCH_ext_shell_type_AP</SWITCH_ext_shell_type> </sound> </effects> </deepWaterHit> </autoArmorPiercing> <!-- Так и быть, второй блок приводить здесь не буду. --> </shot_effects.xml> В конфиге это будет выглядеть так: { "shot_effects": { "autoArmorPiercing": { // попадания по технике "armorBasicRicochet": { "impactNPC_PC": "armor_not_pierce_auto", "impactPC_NPC": "armor_not_pierce_auto", "impactNPC_NPC": "armor_not_pierce_auto" }, "armorRicochet": { "impactNPC_PC": "armor_not_pierce_auto", "impactPC_NPC": "armor_not_pierce_auto", "impactNPC_NPC": "armor_not_pierce_auto" }, "armorResisted": { "impactNPC_PC": "armor_not_pierce_auto", "impactPC_NPC": "armor_not_pierce_auto", "impactNPC_NPC": "armor_not_pierce_auto" }, "armorHit": { "impactNPC_PC": "armor_pierce_auto", "impactPC_NPC": "armor_pierce_auto", "impactNPC_NPC": "armor_pierce_auto" }, "projectile": { // трассер. "wwsoundPC": "tracer_small_GO", "wwsoundNPC": "tracer_small_GO" }, "groundHit": { // попадания по земле и прочим поверхностям. "impactNPC_NPC": "explosion_medium_ground", "impactPC_NPC": "explosion_medium_ground" } //все три вида в стандартном клиенте находятся в одном и том же файле. У меня их можно разделить. } // и это был один эффект. А их в игре 21 :) } } scripts/item_defs/vehicles/common/gun_reload_effects.xml В оригинале файл выглядит так: <gun_reload_effects.xml> <reload12_25> <type> SimpleReload </type> <duration>1150.0</duration> <sound>reload_1</sound> </reload12_25> <reload_automat_reloading_12_25> <type> BarrelReload </type> <duration> 6450 </duration> <shellDuration> 200 </shellDuration> <sound>gun_rld_automat_reloading_short_oneshell</sound> <startLong>gun_rld_automat_reloading_long_start</startLong> <startLoop>gun_rld_automat_reloading_long_loop</startLoop> <stopLoop>gun_rld_automat_reloading_long_loop_stop</stopLoop> <loopShell>gun_rld_automat_reloading_long_oneshell</loopShell> <loopShellDt>0.3</loopShellDt> <loopShellLast>gun_rld_automat_reloading_long_oneshell_last</loopShellLast> <loopShellLastDt>0.2</loopShellLastDt> <lastShellAlert>gun_rld_automat_reloading_short_lastshell</lastShellAlert> <ammoLow>gun_rld_automat_no_enough_shells</ammoLow> <caliber>SWITCH_ext_rld_automat_caliber_12_25mm</caliber> </reload_automat_reloading_12_25> </gun_reload_effects.xml> В конфиге это будет выглядеть так: { "gun_reload_effects": { "reload12_25": { "type": "SimpleReload", "duration": "1150.0", "sound": "reload_1" }, "reload_automat_reloading_12_25": { // для таких все параметры менять не обязательно "type": "BarrelReload", "duration": 6450, "shellDuration": 200, "sound": "gun_rld_automat_reloading_short_oneshell", "startLong": "gun_rld_automat_reloading_long_start", "startLoop": "gun_rld_automat_reloading_long_loop", "stopLoop": "gun_rld_automat_reloading_long_loop_stop", "loopShell": "gun_rld_automat_reloading_long_oneshell", "loopShellDt": 0.3, "loopShellLast": "gun_rld_automat_reloading_long_oneshell_last", "loopShellLastDt": 0.2, "lastShellAlert": "gun_rld_automat_reloading_short_lastshell", "ammoLow": "gun_rld_automat_no_enough_shells", "caliber": "SWITCH_ext_rld_automat_caliber_12_25mm" } } } gui/sound_notifications.xml В оригинале это выглядело так: <sound_notifications.xml> <gun_reloaded> <fx> <wwsound>gun_reloaded_GO_1</wwsound> <playRules> 0 </playRules> </fx> </gun_reloaded> </sound_notifications.xml> В конфиге это будет выглядеть вот так: { "sound_notifications": { "gun_reloaded": { "fx": "gun_reloaded_GO_1" } } } Список будет дополняться, рекомендации - добавляться, вопросы - отвечаться. Пишите в тему. Список изменений Ссылка на GitHub (там всегда свежее) 15.01, 05.02.2019 Правки под 1.4 02.10.2018 Весенняя уборка в коде. 29-30.08.2018 Исправлены проблемы с воспроизведением эффектов орудий и читаемостью кода. 29.07.2018 Переработан код инъекции звуковых событий. Ускорена загрузка клиента игры. 10.07.2018 Большой рефакторинг кода. 27.03.2018 Звук gun_reloaded больше не воспроизводится в режиме посмертия. 22.03.2018 Восстановлена работоспособность ивента, прописываемого в строку fx блока gun_reloaded секции sound_notifications звуковых конфигов. 18.11.2017 Исправлено возникшее после обновления Ядра ленивое поведение мода. 15.11.2017 Новая версия Ядра. 29.10.2017 Теперь можно назначать эффекты орудий не только для всей нации, но и для отдельных машин. 28.10.2017 Аналитика теперь сообщает дату компиляции мода. 1.0.1 (23.10.2017) Исправлены незаменяющиеся звуки у двигателей и орудий. 09.09.2017 Исправлено пропадание голосовых озвучек при использовании совместно с ПроТанками. 1.0.0 (29.09.2017) Первая версия. Добавлены: - двигатели - перезарядка - попадания/взрывы/трассера - голосовые оповещения - выстрелы Спасибки ed76na - за замечательный звуковой мод, который и сподвиг меня на сие творение :) Fedor_Saveliev - за дальнейшее тестирование мода и пинание меня Скачать Собственно сам мод: ЯндексДиск GoogleDrive Громовые Орудия, собранные на его основе: ЯндексДиск GoogleDrive Оповещение о количестве фрагов и окончании боя (UT_announcer) Технически, это - полная переработка вот этого модика. Только код переписан практически с нуля и добавлена пара приятных плюшек. Мод умеет в: Оповещение звуком о времени до конца боя: 15 минут (начало), 5 минут, 3 минуты, 2 минуты, 1 минута, 30 секунд, 10 секунд, 5 секунд, конец боя. Оповещение звуком и текстом о пролитой Первой Крови (самый первый, только игрок, игрок или союзник, игрок или противник, все три категории) Оповещение звуком о количестве фрагов (только игрок, игрок и те фраги, которые больше, чем у него, все фраги на поле боя) Оповещение звуком и текстом о полученных медалях за фраги (только игрок, игрок и союзник, противник, все вышеперечисленные) Оповещение звуком и текстом о взводных медалях (Братья по Оружию и Решающий Вклад), а также об отмене первой из них и об отмщении за взводного. Все пункты, кроме последнего, можно настроить или отключить. В том числе, можно оставить только текст или только звук. P.S. Модуль vxBattleFlash обязателен для работы, без него текста в бою не будет. PYmodsCore - просто обязателен. Настройка mods/configs/PYmods/UT_announcer/UT_announcer.json { // Глобальный триггер. "enabled": true, // Максимальное ограничение количества текстовых сообщений на экране. 0 - отключить текст. "textLength": 3, // Порядковый номер цвета текста. "textColour": 10, // Режим "цветовой слепоты" "colourBlind": false, // Блокировка движения "окошка" текстовых сообщений мышью. "textLock": true, // Время, на которое текстовое сообщение останется на экране. "delay": 3, // Первая Кровь. 0 - самая первая. 1 - только игрок. 2 - игрок и союзник. 3 - игрок и противник. 4 - все три группы. "firstOption": 4, // Оповещение о фраговых медалях. 0 - отключить. 1 - только игрок. 2 - игрок и союзник. 3 - игрок и противник. 4 - все три группы. "checkMedals": 4, // Оповещение о количестве фрагов (0 - только игрок, 1 - фраги, которые больше, чем у игрока, 2 - все фраги.) "allKill": 2, // Оповещение об окончании боя. "battleTimer": true, // Отключить стандартное голосовое оповещение о фраге (влияет на чужие голосовые моды!) "disStand": true, // Расширенный вывод в лог. "logging": false, "textStyle": { // Цвет текста в бою. "colour": "#2AB157", // Шрифт. "font": "$IMELanguageBar", // Размер (походу, в пикселях :D) "size": 25 }, // Положение текста. "textPosition": { // "Корневая точка" "окошка" текста - центральная точка первого текстового сообщения по горизонтали, верхняя граница по вертикали. // Выравнивание всего "окошка" по горизонтали (left, center, right). "alignX": "center", // Выравнивание окна по вертикали (top, center, bottom). "alignY": "top", // Координата слева направо в пикселях относительно выравнивания. "x": 0, // Координата сверху вниз в пикселях относительно точки выравнивания (чем меньше, тем выше). "y": 140 }, // Подложка под текстом. "textBackground": { // Можно отключить, но с ней красивее. "enabled": true, // Ссылка на картинку, используемую для подложки. Начинается из папки gui/flash. "image": "../../scripts/client/gui/mods/mod_UT_announcer.png", // Ширина как самой подложки, так и текста. "width": 530, // Их же высота. Не влияет на размеры текста, при маленьких значениях он будет обрезан. "height": 32 }, // Тень. "textShadow": { // Тоже можно отключить. "enabled": true, // Прозрачность, видимо, в процентах. "alpha": 100, // Угол. "angle": 90, // Цвет. "color": "#000000", // Расстояние от текста до тени. "distance": 0, // Размер в пикселях относительно самого текста. "size": 2, // Не в курсе, что это, я не дизайнер :P "strength": 200 }, // Пути к звуковым ивентам. Лучше не трогать. Перечислять, что каждый делает, не буду, их много. "sounds": { "firstBlood": "firstblood", "doubleKill": "doublekill", "tripleKill": "triplekill", "ultraKill": "ultrakill", "multiKill": "multikill", "monsterKill": "monsterkill", "killingSpree": "killingspree", "rampage": "rampage", "unstoppable": "unstoppable", "godlike": "godlike", "stormTech": "massacre", "jackHammer": "megakill", "combine": "flakmaster", "perforator": "topgun", "eagleEye": "unreal", "bia": "eradication", "crucial": "extermination", "denied": "denied", "payback": "payback", "kamikaze": "kamikaze", "ramKill": "ramkill", "sndStart": "", "snd5min": "t5min", "snd3min": "t3min", "snd2min": "", "snd1min": "t1min", "snd30sec": "t30secs", "snd10sec": "", "snd5sec": "t5secs", "sndFinish": "" } } mods/configs/PYmods/UT_announcer/i18n/ru.json (en.json) { // Всё, что не начинается на UI_message, трогать не стоит. По тексту в принципе понятно, что какой делает. "UI_description": "Оповещение о количестве фрагов и окончании боя", "UI_message_bia": "$attacker заработал нам Братьев по Оружию!", "UI_message_crucial": "$attacker заработал нам Решающий Вклад!", "UI_message_denied": "$attacker слил Братьев по оружию ($target слился)!", "UI_message_firstBlood": "$attacker пролил Первую Кровь!", "UI_message_firstBlood_ally": "$attacker первым слил врага!", "UI_message_firstBlood_enemy": "$attacker первым слил нашего!", "UI_message_frags_5": "$attacker просит Воина!", "UI_message_frags_6": "$attacker получил Воина!", "UI_message_frags_7": "$attacker просит Рэдли-Уолтерса!", "UI_message_frags_8": "$attacker получил Рэдли-Уолтерса!", "UI_message_frags_9": "$attacker просит Пула!", "UI_message_frags_10": "$attacker получил Пула!", "UI_message_frags_13": "$attacker просит героев Расейняя!", "UI_message_frags_14": "$attacker получил героев Рассейняя!", "UI_message_ramKill": "Таран!", "UI_message_kamikaze": "Камикадзе!", "UI_message_payback": "$attacker отомстил за $squadMan!", "UI_message_payback_own": "$squadMan отомстил за тебя!", // Вот про них я написал выше. "UI_setting_много_таких": "ТЕКСТ" } Список изменений Ссылка на GitHub (там всегда свежее) 09.09.2018 Снова выводится текст для игрока, пролившего первую кровь первым из своей команды и вторым за весь бой. 17.07.2018 Исправлены ошибки, допущенные во время рефакторинга. 10.07.2018 Большой рефакторинг кода. 22.03.2018 Исправлена ошибка при перезаходе в бой. 12.12.2017 Обновлен пакет vxBatleFlash. 15.11.2017 Новая версия Ядра. 28.10.2017 Аналитика теперь сообщает дату компиляции мода. 28.08.2017 Обновлено под 9.20.0. Добавлены обновленные требования для фраговых медалей в режиме Генерального Сражения. 2.4.2 (18.06.2017) Новая версия Ядра. 2.4.1 (02.03.2017) Переезд в .wotmod-пакет. 2.4.0 (13.12.2016) Переход на modsCore 2.0. Финальный фикс отображения текста. 08.12.2016 Обновлен модуль vxBattleFlash. 2.3.0 (25.11.2016) Исправлено неотображение текста и/или картинки в куче случаев. Исправлен вылет при игре взводом. Убрана утечка памяти и заглушение голосовой связи при продолжительной игре. Добавлена анимация текста. Сделана нормальная блокировка перемещения текста мышью. 10.11.2016 Исправлен форменный идиотизм в обработчике перетаскивания флешки. 06.11.2016 Обнаружена, стабилизирована, введена в боевую готовность и разблокирована возможность двигать "окошко с текстом" мышью. В настройки добавлен пункт, контролирующий, какие координаты у окошка можно менять в конфиге при перетаскивании. Наведен порядок в настройках: звук справа, текст слева. Убрана галочка для параметра "showText". Он заменен на выставление 0 строк в textLength'е. Разблокирована многоязычная интернационализация. 31.10.2016 Добавлена настройка цвета текста в настройки. Добавлена раскраска ников. Мелкие правки логики. 27.10.2016 (2) Исправлено появление пустых сообщений. 27.10.2016 Добавлены сообщения на начало и конец боя, а также 10 секунд и 2 минуты. 26.10.2016 Перекопана логика отслеживания медалей. Добавлен многострочный вывод сообщений как у Лент Боевой Эффективности. 22.10.2016 Переименован стандартный банк звуков (из UTAnnouncer.bnk в Announcer_Andre_V.bnk) 2.0 (21.10.2016) ЙА СНОВА ЖЫФ!! Кхм.. Переработка исходного кода. Убраны откровенные перлы и копирования целых блоков на ровном месте. Прикручена GUI и Аналитика. 1.5.1 (23.01.2016) И, видимо, не будут. Хотя все же скажу, что прикрутил медаль Пула и к ней (и Рэдлику) прицепил проверку уровня атакующего. 1.5 (15.07.2015) До этого момента изменения не записывались. Спасибки locastan и mooseyaka - за первые версии мода. Slava7572 и Команде Expromt_Max - за поддержку. Ekspoint - за то, что не дал моду умереть :) Andre_V - за звуки. Тысячи их. PolarFox - за vxBattleFlash, разработанную в рекордные сроки :) Скачать Сам мод: ЯндексДиск GoogleDrive Другие варианты звуковых банков: ЯндексДиск GoogleDrive (из нужного вам варианта копируем папку audioww в res_mods/version/). Гудки в Мире Танков (Horns) При нажатии на кнопку (настраивается, по умолчанию - G) раздаётся гудок, как при нажатии на клаксон. Дополнительно к этому, в чат выводится сообщение, читаемое из конфигурационного файла (3 типа сообщений в зависимости от типа цели: Союзник\Противник\Все остальное.). Настройка JSON { // Кнопка гудка "hotKey": ["KEY_G"], // Номер гудка "event": 4, // Включить модуль чата "chatEnable": true, // Время цикла воспроизведения звука (в секундах) "playTime": 2.6 } А фразы, отправляемые в чат, лежат в mods/configs/PYmods/Horns/i18n/язык.json. Хочу заметить, что {name} возвращает ник цели только при её наличии, иначе подставляется Ваш ник Список изменений Ссылка на GitHub (там всегда свежее) 02.10.2018 Весенняя уборка в коде. 12.07.2018 Ядро: обновлён код, отвечающий за хранение настроек горячих клавиш. 10.07.2018 Большой рефакторинг кода. 03.12.2017 Команды по хоткею больше не отправляются после гибели танка игрока. 15.11.2017 Обновление Ядра до версии 2.4.0. 28.10.2017 Аналитика отправляет дату компиляции скрипта. 09.09.2017 Точечная правка формата вывода сообщения об ошибке при нажатии на какую-либо клавишу. 18.06.2017 Совместимость с новым Ядром. 2.4.1 (02.03.2017) Убрана настройка длины звука (звук зациклен в самом банке) Переезд в .wotmod-пакет. 2.3.0 (13.12.2016) Переход на modsCore 2.0. В настройках добавлены кнопки для предпрослушивания звука гудка. 2.2.0 (25.11.2016) Заблокирован триггеринг мода при открытом чате. Исправлена работа с чатом. Теперь сообщения снова отправляются. Мелкие правки кода. 2.0 (15.08.2016) Интеграция с GUI. Переход на WWISE. 1.1.1 (10.01.2016) Слияние со скриптом Экспойнта (0.9.13) 1.1 (07.05.2015) Модуль работы с чатом восстановлен. 1.0 (09.12.2014) Первая версия мода. Бибикаем, матюкаемся, короче, тестируем Спасибки Товарищам-питонистам MakcT40 и spoter за уделённое внимание, tehHedger - за мод Боевой Розы (кто знает, тот поймёт) Dark_Knight_MiX (Ekspoint) - за подъем модика из пепла в мое отсутствие. Andre_V - за гиперпродуктивность в плане звуков :) Скачать ЯндексДиск GoogleDrive Edited September 17, 2021 by Polyacov_Yury Обновлено описание BanksLoader 40 1 @ Quote Link to comment Short link Share on other sites More sharing options...
TornadoCat Posted December 9, 2014 Share Posted December 9, 2014 Ржачно выглядит ) поставлю ) 2 @ Quote Link to comment Short link Share on other sites More sharing options...
BoBaH 13 Posted December 9, 2014 Share Posted December 9, 2014 Их будут слышать те у кого стоит этот мод? Или только самому кайфовать от клаксона? @ Quote Link to comment Short link Share on other sites More sharing options...
Jeka_kvalitet Posted December 9, 2014 Share Posted December 9, 2014 чёт не гудит @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 9, 2014 Author Share Posted December 9, 2014 (edited) Прошу извинить. В спешке забыл в архив собственно звуки положить :)) Архив перезалит. Их будут слышать те у кого стоит этот мод? Или только самому кайфовать от клаксона? От звука кайфовать самому. Именно для этого в мод и добавлены сообщения в чат :) Edited December 9, 2014 by Polyacov_Yury 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Andre_V Posted December 9, 2014 Share Posted December 9, 2014 (edited) Забавно!!! + Edited December 9, 2014 by Andre_V @ Quote Link to comment Short link Share on other sites More sharing options...
BoBaH 13 Posted December 9, 2014 Share Posted December 9, 2014 Тебе Юрий надо теперь статус прикрутить "Танкоэлектрик" Осталось реализовать поворотники и фонари заднего хода. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 9, 2014 Author Share Posted December 9, 2014 Осталось реализовать поворотники и фонари заднего хода. Уже были задумки, и даже код придуман, но есть проблема - цеплять их не к чему :( А добавление точек прикрепления потребует глобального ремоделинга всех танков (даже если будет он заключаться всего лишь в добавлении пары костей (кто модели делал, те поймут)) 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted December 9, 2014 Share Posted December 9, 2014 забавно 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Shumaherxxx Posted December 11, 2014 Share Posted December 11, 2014 чета не отправляет сообщения в чат @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 11, 2014 Author Share Posted December 11, 2014 Можно python.log и описание действий увидеть? @ Quote Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted December 11, 2014 Share Posted December 11, 2014 Кстати,в файле гуи_сеттингс давно есть параметр на гудки,т.е. они были задуманы еще давно самими вгшниками)) @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 12, 2014 Author Share Posted December 12, 2014 Это уже даавно известно) Товарищ даже скинул файлики (скрипт и банк со звуками), которые это всё включали обратно. Но есть одна проблема. Там используется жёстко зашитая в preferences.xml кнопка на гудок, которую можно поменять только ручным его редактированием. Поэтому уж лучше так :) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
KACTET Posted December 12, 2014 Share Posted December 12, 2014 Спасибо что не кодируешь скрипт. Интересно. Спс. @ Quote Link to comment Short link Share on other sites More sharing options...
KACTET Posted December 15, 2014 Share Posted December 15, 2014 Привет, перепроверь плиз. В чат не пишет. (у меня и у друга тоже) @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 17, 2014 Author Share Posted December 17, 2014 Я, конечно, дико извиняюсь, просто нет времени тестировать функционал. python.log скинуть можете? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted December 21, 2014 Author Share Posted December 21, 2014 Обнаружил баг. Из-за ошибки в кодировках не отправлялись в част русские буквы. Исправленный архив уже должен был улететь на сервера. Тестируем :) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
chis16 Posted January 19, 2015 Share Posted January 19, 2015 Подскажите, плз, куда установить папки из архива? спс. @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted January 20, 2015 Author Share Posted January 20, 2015 Прошу извинить, после патча не переименовал папки в архивах. Если кому-то важно, перекачайте их (ссылки те же)Относительно chis16. Перекачайте архив, там будут 2 папки: res и res_mods. Содержимое папки res - папка audio, её можно скопировать как в res, так и в res_mods/0.9.5. Но если у вас не скопированы все остальные файлы из res/audio в res_mods/0.9.5/audio, то если скопировать из архива папку audio в res_mods/0.9.5, то в игре пропадёт звук. В папке res_mods лежит скрипт, её можно просто скопировать в клиент. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Polyacov_Yury Posted April 28, 2015 Author Share Posted April 28, 2015 Не нравится мне тенденция к установлению тишины в форумных темах моих модификаций... Неужели все настолько надежно написано? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.