Новое на сайте:
Новости:
Файлы:
Статьи:
Топ пользователей:
Обновления сайта:
Группа "Гости" не имеет право просмотра модуля
Модератор форума: romale |
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Поиск по теме "Разборочная комната ТЧ" |
Разборочная комната ТЧ |
Дата: Среда, 28.08.2013, 14:15
Сообщение #21
Цитата (butrikA) Как сделать его бессмертным? Раз уж зашёл вопрос о бессмертии НПС, то расскажу, как сделать в ТЧ НПС бессмертным или смертным по какому-то условию. Возможно это уже где-то и кем-то писалось, но раз вопрос задан, значит не все видели. Если унаследовать секцию Сахарова, то НПС будет бессмертным на протяжении всей игры. А если У вас в моде, например, в конце игры появится желание выдать задание на уничтожение этого персонажа? Что будете делать? Или наоборот ( как это частенько бывает в ТЧ) у Вас в середине игры задание на уничтожение НПС, а он уже погиб либо в аномалии, либо от мутантов, либо от вражеского НПС. Т.е. у модмейкера всегда должна быть возможность в любое время сделать НПС неуязвимым ( бессмертным) и наоборот. В ЗП есть движковая функция, которая переключает неуязвимость НПС. В ТЧ такой функции нет. Но можно попробовать это сделать скриптами. Терпение...... И все получится! Сообщение отредактировал makdm - Среда, 28.08.2013, 14:35 |
Дата: Понедельник, 16.09.2013, 15:28
Сообщение #22
Цитата (butrikA) сделать нейтрала другом через функцию не сложно, но врага (причем целую группировку), чтобы был не агрессивным На сколько мне известно, это делается через логику конкретного непися - логика для него и его соратников, если они под одной логикой или через логику гулага, где эти неписи находятся. Для лёгкого примера - простенькая логика непися-врага, где он красненький, но не пуляет-не убегает, а может даже разговаривать с ГГ, собранная на remark, что вполне годится для "мясных" ситуаций: Кому дополнить и поправить всегда найдутся, главное - "размочить ситуацию с молчанием на вопрос". ЗЫ Опаньки. Уже Андрей ответил, но я чуть по другому. Сообщение отредактировал Korpus - Понедельник, 16.09.2013, 15:35 |
Дата: Суббота, 28.09.2013, 00:39
Сообщение #23
Всем, привет!
Цитата (Giznyhvatit) раз нпс нельзя удалить при разговоре с ним самим Это почему Вы так решили? Попробуйте вот так. Терпение...... И все получится! Сообщение отредактировал makdm - Суббота, 28.09.2013, 07:51 |
Дата: Суббота, 28.09.2013, 17:00
Сообщение #24
--мой диалог--
<phrase id="33333"> <text>otdai_33333</text> <give_info>otdai_info_done</give_info> <action>moi_dialog.otdai</action> <action>end_dialog</action> -------------!!!! <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> здесь нужно выдавать инфопоршень а не вызывать функцию. пробуй так: --мой диалог-- <phrase id="33333"> <text>otdai_33333</text> <give_info>otdai_info_done</give_info> <action>moi_dialog.otdai</action> <give_info>end_dialog</give_info> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> |
Дата: Воскресенье, 10.11.2013, 13:47
Сообщение #25
Giznyhvatit, сделайте проще, чтобы не искать объект путём перебора.
В логике НПС пишите on_info = {-поршень} %+поршень =hit_my_npc% А в файл xr_effects.script в конец файла пишите свою функцию function hit_my_npc(actor, npc) local h = hit() h.power = 0 h.direction = npc:direction() h.bone = "bip01_spine" h.draftsman = npc h.impulse = 0 h.type = hit.wound npc:hit(h) end Только подберите правильно impulse и power Вот и всех делов то. Терпение...... И все получится! |
Дата: Воскресенье, 10.11.2013, 14:51
Сообщение #26
С точки зрения выдачи инфопорции и вызова функции - всё правильно. Вам просто нужно подобрать h.power Начнём всё сначала У вас после окончания даилога спавнится НПС. Вы хотите, чтобы он заспавнился раненым. Тогда поршень окончания диалога не должен быть в логике НПС. Потому что строка on_info = {-Osoznay2} %+Osoznay2 =hit_my_npc% переводится так: Если поршень не выдан, то выдать поршень и исполнить функцию А у вас поршень выдан в диалоге, поэтому функция не выполняется Пропишите в логике другой поршень. Например on_info = {-Osoznay3} %+Osoznay3 =hit_my_npc% А затем подбирайте значение h.power Я бы сразу дал 50 и посмотрел. Если помрёт, то снижайте на 10 пока не найдёте значение, когда он будет ранен. Кстати, чем вас не устраивает раненый в схеме remark, я так и не понял, честно говоря Терпение...... И все получится! Сообщение отредактировал makdm - Воскресенье, 10.11.2013, 15:53 |
Дата: Понедельник, 11.11.2013, 17:28
Сообщение #27
Giznyhvatit, я Вам пишу готовую логику, которая работает. Без всяких хитов, костей и т.д.
Делается симуляция раненого бойца. На самом деле он здоров, как Бык, но будет стонать и ныть, что всё у него плохо. Подходите к нему, разговариваете, даёте аптечку, ставите укол и делаете массаж ( по выбору ). После диалога он встаёт на ноги. Логика Пропишите ему в стартовый диалог dolg_dialog, сделайте с ним диалог и в конце диалога выдадите поршень dolg_dialog_end. Соответственно поршень зарегистрируйте. Терпение...... И все получится! |
Дата: Суббота, 16.11.2013, 11:24
Сообщение #29
Giznyhvatit, по последнему спойлеру: собственно вам нужен в логике сам диалог. На основе вашеей логики:
Когда в диалоге с НПС отработаете эту часть: Код <text>Osoznay3_8</text> <action>****_Dialog.cherep</action> сработает Ваш поршень и запустит функцию. Если не прав, то исправьте... Сообщение отредактировал alen-fantom - Суббота, 16.11.2013, 12:13 |
Дата: Суббота, 16.11.2013, 13:01
Сообщение #30
А я что, трогал ваши диалоги? Поршень и выдаётся из диалога. Рестриктор его только обрабатывает. Запуск работает, проблема с проигрыванием звука после загрузки сохранения, он накладывается по верх вновь включенного... В скриптах, что я вам написал - такой проблемы нет. Терпение...... И все получится! |
Дата: Пятница, 27.12.2013, 17:48
Сообщение #32
Egeny, если по Шныре, то нужный Вам поршень - "kalinin_zadan_done"
Сообщение отредактировал alen-fantom - Пятница, 27.12.2013, 17:54 |
Дата: Суббота, 18.01.2014, 00:39
Сообщение #33
istomin хочет сделать античит, игра наверное ж Сталкер, а мод в принципе без разницы. Как уже сказано было выше, универсального "рецепта" нет, но информацию к размышлению, можно предоставить, например: проверяем параметр актора Код if ( ltx:r_float("actor_condition","health_hit_part") ~= 1.0 ) then "перевод" - "если в файле actor параметр health_hit_part не равен 1.0 - то..." что сделать, и куда это "спрятать" зависит от фантазии... или еще момент, например при получении нужного итема(т.е. при обыске именно нужного тайника), выдается инфопоршень, а мы не хотим, чтоб игрок не найдя тайник, тупо заспавнил этот итем, то можно сделать проверку на наличие нужного инфопоршня и итема: "если у ГГ есть итем, но нет инфопоршня, то..." Код if db.actor:object("итем") ~= nil and (not has_alife_info("инфопоршень")) then можно проверку связать с логикой, как это сделано в "Альянсе"... В общем нужно немного фантазии, и знание скриптов, логики.... |
Дата: Понедельник, 27.01.2014, 21:04
Сообщение #34
Пробуй поршень запустить, чтоб улетел. Как я писал тебе здесь: http://stalker-gamers.ru/forum/23-520-42197-16-1389251109 Вставить это: db.actor:give_info_portion("atp_vert_vzlet") Вроде должно получиться. Вы ленивы, следовательно вы изобретательны.. (Граф Де Гиш) |
Дата: Понедельник, 27.01.2014, 21:24
Сообщение #35
Роман опередил... И он прав, т.к. в НС есть уже "родные функции" Архары:
Код --' убираем Седого с атп function atp_sedoy_dell() local se_obj = alife():object("atp_mobil_torgovetz") if se_obj then alife():release(se_obj, true) end end --' убираем вертуху Седого с атп function atp_sedoy_heli_dell() local se_obj = alife():object("atp_sedoy_heli") if se_obj then alife():release(se_obj, true) end end все это отрабатывается из логики вертухи, но сам поршень выдается из логики рестриктора. Логика его довольно сложна, и в ней присутствует много секций on_timer =... в некоторых случаях много "таймеров" зависают и логика "сбивается"... |
Дата: Четверг, 29.05.2014, 20:54
Сообщение #36
Эсминец, насколько я помню, этот момент в солянке изначально криво запускается. Т.е. имеется внешне малозначительный набор фраз, отказавшись от которых можно потерять возможность запуска портов раз и на всегда.
Надо найти этот диалог с Костей и подсмотреть, какой поршень имеет место быть для запуска. Отсюда и отплясывать - куда его ещё можно подсунуть для реализации. У кого есть солянка и желание покопаться в потрохах, тот и подскажет. |
Дата: Среда, 18.06.2014, 21:25
Сообщение #37
Fagot, тогда ещё проще.
Откройте файл xr_combat_ignore.script В функции function is_enemy( obj, enemy, st ) пропишите if has_alife_info("ваш_инфопоршень_во_время_облёта_камеры") then return false end После облёта камеры сбросите инфопорцию. Терпение...... И все получится! |
Дата: Среда, 10.09.2014, 22:51
Сообщение #38
Можно сделать без рестриктора, т.е. ставишь под сигнал. Задаешь к примеру такой путь нпс:
Только это тот вариант, где нпс прибегает в свой walk первый раз, если он там был, то не пойдет. Тогда в рестрикторе используешь для нпс логику on_npc_in_zone Если нпс приходит в свой walk_ и для ГГ включается диалог принудительно, то можно попробовать так: "Заставляем диалог появиться самому на примере Волка (подходим к Волку и диалог появляется сам)" --Спавним рестриктор на координатах Волка с радиусом метра 2.Делаем логику рестриктору: [logic] active = sr_idle [sr_idle] on_actor_inside = %+esc_on_talk% ;Выдача поршня ;Или так(Выбрать одно): on_actor_inside = %=on_talk%" ;Функция --Если выбрали поршень, то создаем его: <info_portion id="esc_on_talk"> <action>СКРИПТ.on_talk</action> </info_portion> --Вызываем функцию и видим диалог: function on_talk() local npc = level_object_by_sid(006) db.actor:run_talk_dialog(npc) end Вместо актора в зоне, вставить нпс с сидом on_npc_in_zone, т.е. [sr_idle] on_npc_in_zone = 006 |name_restrictor| nil %=on_talk% Как здорово быть тёртым сталкером! Не бояться каждого шороха, оружия не носить с собой много! Сообщение отредактировал dimak - Среда, 10.09.2014, 23:17 |
Дата: Пятница, 12.09.2014, 15:58
Сообщение #39
Привет сталкеры!!! А не проще сделать так:
Прибежал НПС на свое место(в рестриктор) получил поршень, например proba_dial, а в логику добавить строчку: [walker@g] path_walk = byk_walk3 path_look = byk_look3 on_actor_dist_le = 2| nil {+proba_dial} %=on_talk% meet = meet и все дела.... (Во всяком случае - работает нормально ) |
Дата: Вторник, 28.10.2014, 10:36
Сообщение #40
|
| |||