Привет всем! Предлагаю желающим повторить моё нововведение в СТАЛКЕРе.

Возле Волка на Кордоне (А) после согласия отбить Шустрого(Б) появляется приёмник «Горизонт» (В), исполняющий музыку, заранее сконвертированную Вами через СДК в .ogg и положенную в папку gamedata\sounds (Г). Наподобие матюгальника блокпоста, наш приёмник глохнет от меткого выстрела ГГ по нему (Д).В других вариациях это может быть и рупор (там, где его сроду не было), да хоть даже поющий холодильник, если прописать предмету «patefon» соответствующий visual.

А->: создать moi_mod.script:

function spawn_patefon()
    local item = "patefon"
    alife():create(item,vector():set(-203.64045715332,-20.349802017212,-147.30645751953),49119,57)
end

Б->: изменить escape_dialog.script:

function give_weapon_to_actor (trader, actor)
    dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
    dialogs.relocate_item_section(trader, "wpn_pm", "in")
    dialogs.relocate_item_section(trader, "wpn_knife", "in")
    moi_mod.spawn_patefon()
end

В->: создать новую секцию в config\misc\items.ltx:

[patefon]:identity_immunities
GroupControlSection     = spawn_group
discovery_dependency =
$spawn    = "food and drugs\patefon"
cform                   = skeleton
class    = P_DSTRBL
visual                  = physics\decor\priemnik_gorizont.ogf
custom_data             = scripts\esc_patefon_data.ltx
attach_angle_offset     = -1.651084, -1.341824, 1.200789
attach_position_offset = 0.077492, -0.030020, 0.090059
attach_bone_name = bip01_l_hand
auto_attach    = false
remove_time    = 60
script_binding          = bind_physic_object.init

Г->: создать в sound_theme.script по аналогии с существующими такую конструкцию:

ph_snd_themes["muzon"] = {  "название_вашего_трека",    -- в папке \sounds
                    "название_вашего_трека2",
                    "название_вашего_трека3"    -- и так далее.. (последний - без запятой)
                     }

Д->: создать в config\scripts\ файл esc_patefon_data.ltx:

[logic]
active = ph_sound@muzik
on_hit = hit

[ph_sound@muzik]
snd = muzon
on_signal = sound_end|ph_idle@wait
on_info = {+esc_patefon_off} nil

[ph_idle@wait]
on_timer = 5000| ph_sound@muzik
on_info = {+esc_patefon_off} nil

[hit]
on_info = %+esc_patefon_off%

Не забудьте добавить в config\gameplay\info_l01escape.xml вот это:

<info_portion id="esc_patefon_off"></info_portion>

Вроде ничего не забыл, удачи всем, J_DLRN.