Кто-то разбирал предметно данный вопрос? Как именно она устроена.
Напомню, впервые введена была в Чистом Небе. Осталась и в Зове Припяти, изменив лишь композиции.
Однако до этого, ЕМНИП, засвечивалась в модах на ТЧ. Оттуда собственно была взята ПЫС и допилена.
UPD:
На примере Зова Припяти. Там за динамическую музыку отвечает:
gamedata\scripts\xrs_dyn_music.script
Если посмотреть на параметры в нём, то враг должен находится от игрока на расстоянии от 75 до 99 метров, чтобы музыка сработала. И от 100 метров, чтобы прекратилась.
UPD2:
За то какие композиции будут играть отвечает:
gamedata\scripts\xrs_dynamic_music_themes.script
Однако если посмотреть этот же файл в Чистом небе, то становится понятно, что тамошняя система более сложная.
Зов Припяти ограничен лишь 4 наборами разных тем по 3 файла:
->
Код
themes={
{
files={
"music\\combat\\theme1_part_1",
"music\\combat\\theme1_part_2",
"music\\combat\\theme1_part_3"
},
},
{
files={
"music\\combat\\theme2_part_1",
"music\\combat\\theme2_part_2",
"music\\combat\\theme2_part_3"
},
},
{
files={
"music\\combat\\theme3_part_1",
"music\\combat\\theme3_part_2",
"music\\combat\\theme3_part_3"
},
},
{
files={
"music\\combat\\theme4_part_1",
"music\\combat\\theme4_part_2",
"music\\combat\\theme4_part_3"
}
}
}
{
files={
"music\\combat\\theme1_part_1",
"music\\combat\\theme1_part_2",
"music\\combat\\theme1_part_3"
},
},
{
files={
"music\\combat\\theme2_part_1",
"music\\combat\\theme2_part_2",
"music\\combat\\theme2_part_3"
},
},
{
files={
"music\\combat\\theme3_part_1",
"music\\combat\\theme3_part_2",
"music\\combat\\theme3_part_3"
},
},
{
files={
"music\\combat\\theme4_part_1",
"music\\combat\\theme4_part_2",
"music\\combat\\theme4_part_3"
}
}
}
UPD3:
ЧН же задаёт для каждой локации определенный набор динамической музыки. Но не простой. Имеются условия для проигрывания той или иной темы:
->
Код
maps = "marsh, escape, garbage, darkvalley, agroprom, agroprom_u, yantar, red_forest, military, limansk, hospital",
files={
intro_1 = "music\\combat\\theme2_intro_1",
intro_2 = "music\\combat\\theme2_intro_2",
danger_1 = "music\\combat\\theme2_danger_1",
danger_1a = "music\\combat\\theme2_danger_1a",
danger_2 = "music\\combat\\theme2_danger_2",
danger_3 = "music\\combat\\theme2_danger_3",
danger_3a = "music\\combat\\theme2_danger_3a",
danger_3b = "music\\combat\\theme2_danger_3b",
danger_3c = "music\\combat\\theme2_danger_3c",
danger_4 = "music\\combat\\theme2_danger_4",
danger_5 = "music\\combat\\theme2_danger_5",
idle_1 = "music\\combat\\theme2_idle_1",
idle_2 = "music\\combat\\theme2_idle_2",
combat_1 = "music\\combat\\theme2_combat_1",
combat_2 = "music\\combat\\theme2_combat_2",
combat_3 = "music\\combat\\theme2_combat_3",
combat_4 = "music\\combat\\theme2_combat_4",
combat_5 = "music\\combat\\theme2_combat_5",
combat_6 = "music\\combat\\theme2_combat_6",
combat_7 = "music\\combat\\theme2_combat_7",
combat_8 = "music\\combat\\theme2_combat_8",
final_1 = "music\\combat\\theme2_final_1",
final_2 = "music\\combat\\theme2_final_2",
final_3 = "music\\combat\\theme2_final_3",
final_4 = "music\\combat\\theme2_final_4",
final_5 = "music\\combat\\theme2_final_5"
files={
intro_1 = "music\\combat\\theme2_intro_1",
intro_2 = "music\\combat\\theme2_intro_2",
danger_1 = "music\\combat\\theme2_danger_1",
danger_1a = "music\\combat\\theme2_danger_1a",
danger_2 = "music\\combat\\theme2_danger_2",
danger_3 = "music\\combat\\theme2_danger_3",
danger_3a = "music\\combat\\theme2_danger_3a",
danger_3b = "music\\combat\\theme2_danger_3b",
danger_3c = "music\\combat\\theme2_danger_3c",
danger_4 = "music\\combat\\theme2_danger_4",
danger_5 = "music\\combat\\theme2_danger_5",
idle_1 = "music\\combat\\theme2_idle_1",
idle_2 = "music\\combat\\theme2_idle_2",
combat_1 = "music\\combat\\theme2_combat_1",
combat_2 = "music\\combat\\theme2_combat_2",
combat_3 = "music\\combat\\theme2_combat_3",
combat_4 = "music\\combat\\theme2_combat_4",
combat_5 = "music\\combat\\theme2_combat_5",
combat_6 = "music\\combat\\theme2_combat_6",
combat_7 = "music\\combat\\theme2_combat_7",
combat_8 = "music\\combat\\theme2_combat_8",
final_1 = "music\\combat\\theme2_final_1",
final_2 = "music\\combat\\theme2_final_2",
final_3 = "music\\combat\\theme2_final_3",
final_4 = "music\\combat\\theme2_final_4",
final_5 = "music\\combat\\theme2_final_5"
Расшифровать скорее всего можно так:
intro - враг рядом, но ещё не видит игрока
danger - враг увидел игрока
idle - враг потерял игрока из виду
combat - враг вступил в бой
final - игрок победил врага