-
Notifications
You must be signed in to change notification settings - Fork 10
SoundEventInjector_RU_Settings
Со стороны пользователя настройка сводится только к копированию/удалению конфиг-файлов, отвечающих за различные звуковые моды/их части.
Мод поддерживает довольно гибкий формат настроек. Файлы как могут быть разбиты на сколь угодно мелкие отдельные части, так и весь Ваш звуковой мод может управляться одним цельным конфигом.
Шаблон конфига:
{
"имя_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).
Описание приведено ниже.
scripts/item_defs/vehicles/common/gun_effects.xml
Приведу здесь только то, как выглядит изменённый конфиг.
{
"gun_effects": {
"gun_100mm_shot_RU_4" : { // эффекты не делятся по нации, поэтому все можно сложить в один конфиг
"origin": "shot_main_mb", // исходный эффект, который нужно взять за основу (тот, который Вы бы скопипастили, чтобы сделать этот эффект)
"timeline": {
"soundplaystop": 20.0 // имена параметров те же, что и в стандартном конфиге. Ксли это значение не меняете - можете не писать этот блок.
},
"effects": {
"shotSound": { // собственно звуки.
"wwsoundPC": ["gun_100mm_shot_RU_4"], // можно прописать несколько, формат: ["event1", "event2", "event3"].
"wwsoundNPC": ["nps_gun_100mm_shot_RU_4"] // Количество может быть любым. Вопроизведение всех звуков начнётся одновременно.
}
}
},
"gun_100mm_shot_RU_5" : {
"origin": "shot_main_mb",
"timeline": {
"soundplaystop": 20.0
},
"effects": {
"shotSound": {
"wwsoundPC": ["gun_100mm_shot_RU_5"],
"wwsoundNPC": ["nps_gun_100mm_shot_RU_5"]
}
}
}
}
}
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"
}
}
}
Список будет дополняться, рекомендации - добавляться, вопросы - отвечаться. Пишите в топики на форумах или создавайте тикеты в issue tracker'е.