SEA_CAT 106 Опубликовано 1 Апреля 2011 (изменено) Прошу помощи в поиске ошибки: Вновь созданные НПС по выдаче инфопоршня спавнятся в разных районах локации, 1-я группа которая возле ГГ передают сообщение по рации 2-й группе (суть ситуации напоминает ту когда при входе ГГ на Дикую Территорию снайперы вызывают Волкодава): дополнительная строчька в script_sound: [pri_killer_taras_hello_rnd] stalker = 0,scenario\pri\naymit_taras_racia сами звуки: sounds\characters_voice\scenario\pri\naymit_taras_racia.ogg sounds\ambient\random\naymit_taras_racia.ogg 1. [logic] active = walker@zasada_pripyat active = remark [walker@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 ;-- soundgroup = pri_killer_taras_hello (пробовал подключать эту строку толку нет, был вылет без лога) def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always [remark] no_move = true target = actor snd = pri_killer_taras_hello anim = claim on_signal = sound_end | walker1@zasada_pripyat %play_snd(characters_voice\scenario\pri\naymit_taras_racia)% meet = no_meet [walker1@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always [danger_ignore] ignore_distance = 5 [smart_terrains] none = true 2. [logic] active = walker@zasada_pripyat active = sr_sound_act [walker@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [sr_sound_act] snd = pri_killer_taras_hello delay = 2 delay_max = 4 on_signal = sound_end | walker1@zasada_pripyat [walker1@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [danger_ignore] ignore_distance = 5 [smart_terrains] none = true 3. [logic] active = walker@zasada_pripyat active = sr_sound_act [walker@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [sr_sound_act] snd = characters_voice\scenario\pri\naymit_taras_racia delay = 2 delay_max = 4 on_signal = sound_end | walker1@zasada_pripyat [walker1@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [danger_ignore] ignore_distance = 5 [smart_terrains] none = true 4. [logic] active = walker@zasada_pripyat active = sr_sound_act [walker@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [sr_sound_act] snd = ambient\random\naymit_taras_racia - как в примере 3.9.3. Секция [sr_sound] delay = 2 delay_max = 4 on_signal = sound_end | walker1@zasada_pripyat [walker1@zasada_pripyat] path_walk = wave1_bomber_walk2 path_look = wave1_bomber_look2 def_state_moving1 = assault def_state_moving2 = assault meet = no_meet danger = danger_ignore combat_ignore_cond = {!check_fighting(808) !fighting_actor} ;always show_spot = true [danger_ignore] ignore_distance = 5 [smart_terrains] none = true В результате всех экспериментов при приближении к этой группе логика не отрабатывается должным образом, и звук не произносится. Возможно, им надо прописать в профиль диалог <start_dialog>hello_dialog</start_dialog> (ели это как то влияет)? Или задать какой нибудь дополнительный поршень или рестриктор (помимо того, что уже есть в логике)? Изменено 1 Апреля 2011 пользователем SEA_CAT Поделиться этим сообщением Ссылка на сообщение
SEA_CAT 106 Опубликовано 2 Апреля 2011 Arhara Спасибо за поправку - с особым уважением отношусь к Вашим работам, кое что с годами успел и для себя перенять. В данной [logic] хотел вместо второго active поставить danger = danger_condition, но как то не придал этому особо значения - приоритет задачи был иной), ведь на ожидаемый результат это не повлияло, в своих рабочих [logic] для других засад под walker и снайперов под camper второго active пока не ставил (пока на время роста) 1. Но, для этого товарища логика бралась из (невымышленного) гулага BOMBER: WAVE на локации Припять (gamedata\config\misc\gulag_pripyat, строка 402 с небольшой корректировкой). Главная суть этих экспериментов была не создать логику поведения для нового НПС, а именно отыграть звуковой эффект при входе ГГ в рестиктр, то и по совету других при тестировании их на локации Кардон посадил его на [remark] no_move = true - дабы не убежал пока я до него иду 2. Для данного "старта" вроде и выбрал walker с подключением "]3.9.9. Sr_sound_act Итого, схема, которая играет саунд в голове актера. Всякие там переговоры по ПДА и прочие фейки [sr_sound_act] snd = ambient\random\new_drone1 --имя звукового файла * delay = 2000 --задержка перед проигрыванием * delay_max = 4000 -- между проигрыванием звука будет взят случайный промежуток между delay и delay_max. * on_signal = sound_end | nil --по сигналу можно перейти в другую секцию. theme = <имя темы из ph_sound_themes> http://stalkerin.gameru.net/wiki/index.php...1%D1%82%D1%8C_3 хотя подозреваю если попробую какого нибудь из новых или существующих в оригинале снайперов пол camper то результат будет тот же - подозреваю тут причина в другом Поделиться этим сообщением Ссылка на сообщение
SEA_CAT 106 Опубликовано 2 Апреля 2011 Более менее разобрался выдачей звуковых схем из логики НПС http://www.amk-team.ru/forum/index.php?showtopic=6458&view=findpost&p=260737 хотя вот с секцией http://stalkerin.gameru.net/wiki/index.php/%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3 - так до конца и не ясно, запустить её не получилось, а ссылку на её применение видел лишь http://www.amk-team.ru/forum/index.php?showtopic=6458&view=findpost&p=481827 как видно при записи её в alife (через all.spawn)? Поделиться этим сообщением Ссылка на сообщение
SEA_CAT 106 Опубликовано 10 Апреля 2011 (изменено) Я прописал им простую логику: [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true Но когда они встречают врагов они приседают и начинают стрелять а потом не встают Это "не логика", такую я обычно использую только для тестов (так как при малейшей опасности НПС теряют управление прописанное в remark1 и переходят на пародию "универсального комбата"). Поэтому, ты определись чего от них хочешь (патруль - walker или снайпер - camper) и можешь им прописать в кастомдате эти "универсальные для всех локаций" (только снайпер там одноразовый - из расчёта, что ты всё же дашь ему бой при первой встрече иначе вставляй ему свои пути path_walk = ... path_look = ... ) 1. Патруль который при виде врага или друга сперва говорит по рации (в зависимости от дистанции) и после атакует (бывает сразу): [logic] active = remark@raciya danger = danger_condition meet = meet [remark@raciya] anim = backoff2 snd = killer_vrag_enemy no_move = true target = actor meet = meet@raciya on_signal = sound_end| walker@patrol danger = danger_condition [meet@raciya] meet_state = 35|guard_rac@killer_vrag_enemy meet_state_wpn = 45|guard_rac@killer_vrag_enemy victim = 35|actor victim_wpn = 35|actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog [walker@patrol] path_walk = bar_dolg_veterans_guard_bunker_1_walk path_look = bar_dolg_veterans_guard_bunker_1_look def_state_moving1 = patrol_fire def_state_moving2 = patrol_fire def_state_moving3 = patrol_fire on_info = {=npc_distance_to_waypoint(bar_dolg_veterans_guard_bunker_1_walk:60)} nil danger = danger_condition show_spot = false ;true [danger_condition] ignore_distance_corpse = 0 ignore_distance = 0 [smart_terrains] none = true 2. Снайпер (сидячий-стоячий), тоже при виде врага говорит по рации (от дистанции к цели), затем атакует - да и постоянно держит ГГ на мушке [smart_terrains] none = true [logic] active = remark@start combat_ignor = combat_ignore meet = meet [remark@start] no_move = true radius = 0 anim = hide snd = cit_jail_guard_sneer target = actor ;on_info = {=health_le(0.5)} remark@search ;on_timer = 80000| remark@search on_signal = sound_end| remark@search wounded = wounded@work meet = meet danger = danger_condition [remark@search] anim = hide target = actor on_info = {=see_actor} camper@snyper wounded = wounded@work [meet] meet_state = 28|hide_s_left@wait| 4|hide_s_right@wait meet_state_wpn = 28|hide_rac@mil_ara_ambush victim = 28|actor victim_wpn = 28|actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog [wounded@work] hp_state = 0|wounded_heavy@help_heavy hp_state_see = 0|wounded_heavy@help_heavy hp_victim = 0|nil hp_fight = 0|false hp_cover = 0|false [camper@snyper] path_walk = mil_zomb_stalker_walk1 path_look = mil_zomb_stalker_look1 sniper = true def_state_moving = assault def_state_campering = hide_na ;threat_na def_state_campering_fire = threat_sniper_fire radius = 60 no_retreat = true shoot = always danger = danger_ignore show_spot = false ;true [combat_ignore] combat_ignore_cond = {!actor_enemy} combat_ignore_keep_when_attacked = false [danger_ignore] ignore_distance = 5 [danger_condition] ignore_distance_corpse = 0 ignore_distance = 0 Изменено 10 Апреля 2011 пользователем SEA_CAT Поделиться этим сообщением Ссылка на сообщение