Перейти к контенту

[CoP] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Доброй ночи всем. 
Интересен следующий вопрос - а есть ли в ЗП возможность вызывать gui-окна через логику, например, физических объектов? Ну, то есть, как привязать гуи к "съедобному" предмету путем правки bind_stalker я знаю, но мне интересно, можно ли заставить динамический объект в схеме on_use выводить на экран gui? Если да, то правка каких скриптов требуется? xr_effects или понадобится погружаться ещё глубже? Заранее спасибо

Поделиться этим сообщением


Ссылка на сообщение

Всем привет. Подскажите, пожалуйста, как правильно создать сквад из двух человек, чтобы они не бормотали под нос дефолтные фразы? Или всё-таки нужно делать два сквада, каждый из одного человека, и прописывать эксклюзивную логику? Спасибо.

Поделиться этим сообщением


Ссылка на сообщение

@warwer, спасибо, но не, не работает. Всё равно стоят и себе под нос бурчат про аномалии и хабар. Причём, когда я ради теста их спавнил вне сквада, а поодиночке, то таких проблем не было, т.е. они тупо по логике действовали.

Всё, разобрался. Нужно прописать [exclusive] в логике смарта, там -- ссылку на эксклюзивную логику (вида unique_work = zaton\unique_stalker_logic.ltx), а затем исправить саму логику:

 

Скрытый текст

 

[logic@unique_work] ;-- здесь обязательно должно быть название из логики смарта;
active = walker@unique_work_first_step ;-- и во всех остальных секциях (как я понял), её тоже надо выносить вперёд, а уж потом писать своё название схемы;

 

[walker@unique_work_first_step]
path_walk = walker_1_walk ;-- а это очень важный момент, потому что я два дня ловил вылеты stack trace из-за него. Несмотря на то, что way_point'ы в SDK нужно обзывать с префиксом смарта (unique_smar_walker_1_walk, например);
path_look = walker_1_look ;-- то здесь их нужно указывать без префикса;
on_signal = unique_stop| remark@unique_work_phrase ;-- опять суём название работы из смарта в название схемы;

 

[remark@unique_work_phrase] 
no_move = true

 


Возможно кому-то будет полезно, т.к. ни в одном гайде по созданию NPC через сквад на CoP я подобных уточнений не нашёл, а ведь именно из-за них вылетает/не работает. 

Поделиться этим сообщением


Ссылка на сообщение

Всем привет. Такой вопрос - а что вообще нужно прописывать в логике монстров в ЗП, чтоб не атаковали актора? 
Ну, то есть, в ТЧ хватало (насколько я помню) braindead = true, а здесь перепробовал десяток оверрайдов и секций, и ничего не работает. 
И под спойлером есть пара вопросов, буду благодарен, если вы ответите:

 

Скрытый текст

 

[logic@snork_work]
active = mob_walker@snork_work
suitable = check_npc_name(snork_normal)} true ;-- тут у меня скорее всего неправильно, т.к. я не совсем понимаю, откуда берётся имя в скобках. Из секции в all.spawn? Но обычные NPC работают с именем из character_desc;
 

[mob_walker@snork_work]
path_walk = walker_1_walk
path_look = walker_1_look
combat_ignore_cond = true ;-- ВЕЗДЕ пишут именно так, но разве не должно быть combat_ignore_cond = always? Впрочем, не работает ни так, ни так.
aggressive = false 
friendly = true

 

 

Иными словами, снорк должен спавниться в своём смарте, после чего он забивает на игрока и бежит по патрульному пути. Но вместо этого он спавнится и тут же бросается на игрока (потому что триггер спавна срабатывает неподалёку от позиции снорка). Вопрос - как быть? Что можно изменить, чтобы заставить его игнорировать присутствие игрока? Спасибо.

Поделиться этим сообщением


Ссылка на сообщение

@Expropriator, да, смотрел именно её. Интересовала секция monster_job = true, потому что при её добавлении я хотя бы начинал ловить безлоговые вылеты. Сейчас стёр "suitable" из своей логике (потому что, подозреваю, очень неграмотно я её добавил) -- всё заработало. Сложновато-таки после ТЧ с максимально простецкими и очевидными секциями логики перетекать на ЗП, где даже спавн по инфопоршням потёрли и приходится плясать с бубном и создавать сквады для одного человека/монстра.

Поделиться этим сообщением


Ссылка на сообщение

Добрый день, джентльмены. Есть вопрос касательно логики. 
 

Что нужно: персонаж отыгрывает анимацию choose, затем по таймеру переходит в другую ремарковую схему, где вызывается затемнение экрана и пси-эффект, после чего отыгрывает анимацию suicide. Затем - опять затемнение экрана, отключение пси-эффекта, и персонаж уже сидит в анимации hide (дескать, ГГ всё это примерещилось). 

Скрытый текст

 

[remark@balagur_to_zombie_work_loot]
anim = choose 
target = story|d_d_zombie_01
danger = danger_condition@balagur_to_zombie_work
combat_ignore_cond = true
on_timer = 6000| %=run_postprocess(black:111) =run_postprocess(psy_antenna:222) =disable_ui% remark@balagur_to_zombie_work_suicide -- включаю чёрный экран, пси-эффект и увожу его в схему "суицида"
meet = no_meet

 

[remark@balagur_to_zombie_work_suicide]
anim = zat_b22_medic_suicide
target = story|actor
danger = danger_condition@balagur_to_zombie_work
combat_ignore_cond = true
on_timer = 10000| %=run_postprocess(black:333)% remark@balagur_to_zombie_work_after_suicide -- вырубаю постпроцессы и увожу его в обычную схему
on_timer2 = 2500| %=stop_postprocess(111)%
meet = no_meet

 

[remark@balagur_to_zombie_work_after_suicide]
anim = hide
on_timer = 2000| %=stop_postprocess(333) =stop_postprocess(222) =enable_ui%
target = story|actor
danger = danger_condition@balagur_to_zombie_work
combat_ignore_cond = true
on_info = {+pogovoril_2} walker@balagur_to_zombie_work_basepath

 

 

Тем не менее, вместо этого он отыгрывает анимку choose, после чего сразу же переходит в последнюю схему, однако не садится в hide, а просто пялится на игрока. Кто знает, в чём может быть проблема? К слову, на ТЧ аналогичная схема (только с обычной анимацией suicide) работала отлично. На ЗП сначала работала, но через раз, сейчас вообще не срабатывает. 

Заранее спасибо.
https://pastebin.com/rktFuy0u -- на всякий случай, прикрепляю полный файл логики. 

Поделиться этим сообщением


Ссылка на сообщение

@naxac, спасибо, но такое написание приводит лишь к бесконечному зацикливанию (по кругу крутится пси-эффект, а персонаж стоит с пистолетом у подбородка). Но сдвиг есть, так что попробую расковырять. Наверное, лучше через рестриктор делать вызов постпроцессов. 

Поделиться этим сообщением


Ссылка на сообщение

Всем привет. Есть ещё такой вопрос.
Сцена, в которой бандит сначала разговаривает с ГГ, затем убивает с ружья двух наемников, которые стоят за ним на коленях. При разных ответах в диалоге -- разные условия (убить того или иного наемника либо же вступить в бой). 

 

Скрытый текст

 

[remark@bandit_leader]
anim = guard_na
target = story|actor
on_info = {+d_d_bandit_exodus} walker@bandit_leader_exodus
on_info2 = {+d_d_bandit_assault_fight} %=actor_enemy% -- если в диалоге выбран вариант "вступить в бой", то делаем бандита врагом ГГ;
on_info3 = {+d_d_bandit_assault_fight_with_merc} %=actor_enemy% -- то же самое, только по этому инфопоршню ещё и наёмники в бой срываются;
on_info4 = {+will_kill_balagur} remark@bandit_leader_kill_balagur -- при другом варианте уводим в схему "убить наёмника";
on_info5 = {+will_kill_ghost} remark@bandit_leader_kill_ghost -- то же самое, только другой наёмник;
danger = danger_condition@bandit_leader
combat_ignore_cond = {-d_d_bandit_assault_fight -d_d_bandit_assault_fight_with_merc} true -- игнорируем бой, чтоб не сагрился на наёмников, пока ГГ не выберет "вступить в бой";

 

[remark@bandit_leader_kill_balagur]
anim = guard_fire 
target = story|d_d_balagur_02 -- story_id из spawn_sections.ltx;
danger = danger_condition@bandit_leader
combat_ignore_cond = true
meet = no_meet
on_info = {+d_d_balagur_death_02} %+d_d_bandit_exodus% walker@bandit_leader_exodus

 

[remark@bandit_leader_kill_ghost]
anim = guard_fire 
target = story|d_d_ghost_02 -- story_id из spawn_sections.ltx;
danger = danger_condition@bandit_leader
combat_ignore_cond = true
meet = no_meet 
on_info = {+d_d_ghost_sniper_dead} %+d_d_bandit_exodus% walker@bandit_leader_exodus

 


И по этому спектаклю скопилась пара нерешённых вопросов:
1) При выборе варианта "убить такого-то наёмника" вся шайка бандитов, толпящаяся рядом становится друзьями, а оба наёмника - врагами; 
2) Бандит переходит в remark@bandit_leader_kill_***, но, несмотря на явно указанный story_id, не поворачивается в сторону наёмника, чтобы произвести по нему выстрел и вообще ведёт себя неадекватно. 

Впрочем, по второму вопросу есть пара идей - может, стоит подключать для связки промежуточный remark с анимкой guard, в которой бандит посмотрит на наёмника, а уж потом - remark с убийством? Или же пытаться увести его в walker, явно задать связку флагов walk-look, после чего приступить к убиению наёмника? Какой из этих способов вообще предпочтительнее и менее глючный в долгосрочной перспективе? 

Заранее спасибо!

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...