-
Публикаций
1 848 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Тип контента
Профили
Форумы
Блоги
Календарь
Новости
Моды
Весь контент denis2000
-
No_data Насколько я понимаю, в движке ЗП убрали возможность перехода НПС между локациями. Решения проблемы соответсвенно будет два: 1. Восстановить движковые механизмы. 2. Реализовать механизм перехода скриптом. Сергей Шубин Реализовать предложенный вами механизм (не алгоритм!) вполне возможно. Но возникает ряд вопросов по механнике игры. Во первых, от наличия апгрейдов на стволах НПС ни холодно ни жарко их боевые возможности никак не изменяться. Во вторых, наличие установленных апгрейдов на стволах выпадаемых с НПС серьезно меняет экономику игры (игроку нет необходимости прокачивать стволы, он может найти ствол с необходимой прокачкой и заметно сэкономить). В третьих, наличие агрейдов на выпадающих стволах нивелирует ценность агрейдов в принципе, потому, что зачем их покупать если любой подобранный ствол будет работать у игрока лучше, чем у НПС. В результате получается, что апрейдов на конкретном стволе должно быть минимум (1-2), а процент стволов с апгрейдами невелико (5-10%), а это значит, что овчинка не будет стоить выделки. Вот поэтому модов с таким механизмом я вспомнить не могу.
-
Stgs Файл gulag_general.script код ниже метки XR_ANIMPOINT: if smart.base_on_actor_control ~= nil and smart.base_on_actor_control.ignore_zone ~= nil then job_ltx = job_ltx .."combat_ignore_cond = {=npc_in_zone(smart.base_on_actor_control.ignore_zone)} true \n".. "combat_ignore_keep_when_attacked = true \n" end Вывод: Если на смрте есть параметр smart_control, указывающий на соответсвующую секцию, в которой есть параметр ignore_zone, определяющий рестриктор в котором НПС должен инорировать бой, то НПС, занявший неэксклюзивную работу на смарте в смартковере, будет вести себя именно так как вы и описали.
-
liner Логика в кастом дате, в секции объекта. svi_042 Значит используйте пареметр meet_dialog. В такой редакции никаких файлов редактировать не нужно просто добавьте звуковой файл в папку/и gamedata\sounds\characters_voice\human_0*\***\talk\jokes с соотвествующим именем joke_***.ogg Все зависит от конкретных задач...
-
Paradox27kms <phrase id="3"> <text>st_wf_miklyha_meet_dialog_3</text> <next>41</next> <next>42</next> </phrase> <phrase id="41"> <dont_has_info>wf_a5_bandit_squad_death</dont_has_info> <text>st_wf_miklyha_meet_dialog_4_1</text> </phrase> <phrase id="42"> <has_info>wf_a5_bandit_squad_death</has_info> <text>st_wf_miklyha_meet_dialog_4_2</text> </phrase>
-
Сделайте отдельную секцию оружия с установленными апгрейдами (пример из w_ak74u.ltx) [wpn_ak74u_snag]:wpn_ak74u installed_upgrades = up_fiftha_ak74u И спавните это оружие НПС: <specific_character id="pri_a17_military_captain_tarasov" team_default = "1"> ... [spawn] \n wpn_ak74u_snag \n ... </specific_character>
-
Вы путаете там прописаны фразы, а не диалоги. А точнее в этом файле указано какие фразы могут появиться в диалогах НПС, с учетом уровня, группировки НПС и инфопорций. Схема такая: НПС прописывается в дескрипшен инклуд на файл character_dialogs.xml, сами диалоги прописаны в dialogs.xml. Они полностью динамические и формируются скриптом dialog_manager.script, а файл dialog_manager.ltx - конфиг этого скрипта с необходимыми параметрами. Да. function start_surge(p) local m = get_surge_manager() if(m:get_nearest_cover()) then m:start(true) else printf("Error: Surge covers are not set! Can't manually start") end end Нетрудно увидеть, что если функция get_nearest_cover (найти ближайшее укрытие) вернет nil, то выброс не запуститься, а в лог должно было бы отправиться сообщение об ошибке.
-
Ну во первых - это как раз в его природе (телепортация), а во вторых это будет незаметно (всего то доли секунды). Это нормально, у него есть некая аура, которая распространяется вокруг него в виде сферы игнорируя геометрию уровня и в ней он может наносить урон телекинезом. Он вообще довольно специфическое существо и к тому же сильно забагованное. В любом случае, я только предложил идею.
-
Как и любые Мутанты - не в курсе о ней, от слова совсем. Что естественно пройти не могут и упираются в нее. Как решение: сделать два рестриктора с обоих сторон решетки и в логике мутанта проверять если он задержался в одном из рестрикторов более чем на 2 сек, то телепортировать его на другую сторону.
-
AziatkaVictor Я же говорю - теоретически, сам не проверял. Пробуйте создать секцию объекта explosive_wallmark на базе класса S_EXPLO, там убрать все сопутствующие взрыву эффекты (партиклы, звуки, поражающий эффект и тд. и тп.) главное параметр wallmark_section = explosion_blood_marks - задающий секцию описывающую метку на месте взрыва. [explosion_blood_marks] wallmarks = wm\wm_blood_1 dist = 0.5 size = 0.6 max_count = 20 Затем заспавните этот объект и подорвите его: local s_obj = alife():create( "explosive_wallmark", ...position, ...level_vertex_id(), ...game_vertex_id() ) level.add_call( function () if s_obj.online then return true end end, function () level.object_by_id( s_obj.id ):explode(0) end ) И еще раз хочу обратить внимание, что метки после взрывов со временем исчезают. Поэтому метод сугубо костыльный и нетривиальный.