ColR_iT 171 Опубликовано 1 Января 2011 (изменено) Всех с Новым Годом! @"StreloK", чтобы повесить на НПС отметку, нужно узнать его id. Чтобы выдать инфопоршен при поднятии предмета, загляни в bind_stalker.script, там есть функция on_item_take, это колбек на поднятие предмета, здесь поставь проверку на наличие нужного предмета в инвентаре и выдачу инфопорции, если он есть. Изменено 1 Января 2011 пользователем Куфзук Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 5 Января 2011 ДаркСайт, ну смотри, тебе нужно, либо просто поставить проверку через инфопоршен, для появления диалога, либо проверить через прекондишн. Через проверку инфопоршна, реализация будет выглядеть так: <dialog id="твой диалог"> <has_info>agroprom_military_case</has_info> <phrase_list> <phrase id="0"> ... </phrase> ... </phrase_list> </dialog> Здесь, agroprom_military_case это и есть инфопоршен, который получает актор при получении квеста на кейс на НИИ от Сидора. Т.е. твой диалог появиться тогда и только тогда, когда ( :ny_wacko: ) ты получишь этот инфопоршен, а в оригинале ты его получишь вместе с заданием на кейс. Вообще-то, ты получаешь два инфопоршня этот и esc_find_railroad_passage_start, но последний нужен, для подквестика с переходом ж\д насыпи. Какой выберешь ты, особой роли не играет, но на всякий случай выбери первый. Через прекондишн, так: <dialog id="твой диалог"> <precondition>твой_файл.твоя_функция</precondition> <phrase_list> <phrase id="0"> ... </phrase> ... </phrase_list> </dialog> Здесь в файле твой_файл.script должна ноходиться функция вида: function твоя_функция() local actor = db.actor if actor and actor:has_info("agroprom_military_case") then return true end end Принцип остаеться тот же, новый диалог будет доступен, если у актора, будет инфопоршен agroprom_military_case. Ты можешь использовать и первый и второй вариант одновременно. Так что выбирай... Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 6 Января 2011 ДаркСайт, подозреваю, что в НЛС6, некоторые задания представляют из себя только диалоги, плюс некоторые выдачи инфопоршней и выполнение скриптов, но есть и некоторые задания через таск. Так, что если хочешь чисто словесное описание - диалоги тебе в помощь! Bот здесь о них Создание диалогов Создание диалогов (полный обзор) Создание квеста(полный разбор) Создание квестов Создание квестов 2 Создание квестов (базовый уровень) Скрипты: Диалоги. Часть 1 Диалоги. Часть 2 Диалоги. Часть 3 Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 4 Марта 2012 RDS, ох и заслал же ты новичка. Может стоило для начала сюда: Stalkerin? Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 17 Мая 2012 kiperenok, на самом деле не всё уж и так сложно, как может показаться на первый взгляд. В ЗП ПЫС всё же поняли всю прелесть логики поведения НПС и решили этим воспользоваться. 1. Передача происходит не в том смысле, в котором можно было бы подумать. На самом деле это всего лишь анимация одного персонажа, по завершении которой выдаётся инфопорция либо выполняется функция, где уже можно и передать предмет. 2. Тоже самое - лишь анимация. Стоит отыгрывает анимацию, по окончании которой выдаётся инфопорция, при наличии которой открываются двери лифта. 3. Это вряд ли... Хотя прямо таки утверждать не буду, но очень в этом сомневаюсь. В целом для реализации качественного квеста, где бы можно было бы действительно увидеть слаженные действия НПС, не важно в коком образе - при взаимодействии с объектами или же с другими НПС, нужно использовать весь "арсенал", который нам предоставили разработчики. Но, как мне кажется, главным всё же в этом - это правильно продуманная логика поведения. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 22 Мая 2012 (изменено) Makaveli, спавнишь рестриктор с вот такой логикой: [logic] active = sr_idle@waiting_for_action [sr_idle@waiting_for_action] on_actor_inside = {=scanner_installed} %+scanner_is_installed% Где: scanner_installed - функция, которая проверяет выбросил ли актор нужный предмет и если да, то возвращает true; scanner_is_installed - инфопорция, которая будет свидетельствовать о выбрасывании сканера в зоне рестриктора. Изменено 22 Мая 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 4 Июня 2012 Свободник, тема вопроса уже давно разжёвана и заезжена, мог бы и поиском воспользоваться... Вот тебе ссылки, читай: SoC. Создание диалогов - >>Click Me<< SoC. Создание новых веток диалогов - >>Click Me<< Система сюжетной информации (InfoPortions) - >>Click Me<< Создание диалогов (полный обзор) - >>Click Me<< Диалоги. Часть 1. Форматы файлов, базовые сведения - >>Click Me<< Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 25 Июня 2012 Stalker_AleX333, у тебя в файле alex_mod_dialogs.xml нет диалога id у которого bar_barmen_sleep_dialog_start, а есть bar_barman_sleep_dialog_start. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 3 Июля 2012 volazar, ты не прав, точнее не до конца... Установить стартовых диалогов можно сколько угодно, да хоть все, но вот использоваться будет только один, который первый пройдёт по условиям, порядок тот, в котором они прописаны в профиле. На примере профиля BeeRseKа - если <start_dialog>dialog_lukash_proverka</start_dialog> не пройдёт по условиям, то будет установлен стартовый диалог <start_dialog>dialog_lukash_raciya</start_dialog>, если же в обоих не будет условий появления, то использоваться будет первый. Кстати, в схеме логики meet можно также установить стартовый диалог НПС, причём приоритет его будет выше, нежели в профиле. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 10 Сентября 2012 RDS, по всей видимости ты не правильно понял Magnus1. Задания, которые отображаются в ПДА расписаны в файлах config\gameplay\tasks_xxx.xml и их структура не позволяет появление отдельного подзадания (словами Magnus1: "... часть квеста ...") при определённых условиях. Если быть точным условие на самом то деле есть - это выполнение предыдущего подзадания. "Приостановить" квест в ПДА, т.е. чтобы задание не завершилось, но и подзадание не появилось - не получится. Magnus1, как вариант, могу посоветовать разделить твоё задания на два. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 12 Декабря 2012 stalker_343, полистать тему не судьба? Для диалога ставишь precondition, где вписываешь вызов функции, которая будет проверять наличие предмета. Примеров подобных функций - пруд пруди, диалогов и подавно. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 21 Декабря 2012 riddik121, причина в том, что инфопоршень не выдаётся. Выдачу инфопорции нужно было делать в непосредственно в работе смарта, а не так, как сделал ты. Когда НПС находится под управлением гулага, то его логика при этом работать не будет. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 23 Декабря 2012 riddik121, всё верно. В универсальном гулаге работа составляются исходя из названия точек путей. Все параметры берутся по умолчанию, обязательными, как правило, являются точки пути, но поскольку их мы и пишем, то с этим проблем не возникает. Чего не могу сказать о возможности работы снайпера, где обязательным условием является значение true для параметра sniper, а также организации лидера в схеме patrol. В общем, универсальные гулаги могут показаться легче в плане реализации, но влекут за собой массу минусов, самый значительный из которых - это невозможность в последствии просто менять/править схемы. Я бы не рекомендовал использовать их для НПС, единственную их выгоду в простоте я лишь вижу в случае использования для мобов, где создавать что-то исключительное требуется гораздо реже. Но... решать и выбирать, конечно же тебе. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 7 Января 2013 AutoGnom, безлоговый вылет происходит по причине того, что ты пишешь непосредственно сам текст в структуру диалога, вместо того, чтобы указывать id на нужный текст в файлах локализации. Сделай "правильно" и вылетов не будет, во всяком случае безлоговых. Поделиться этим сообщением Ссылка на сообщение
ColR_iT 171 Опубликовано 5 Февраля 2013 (изменено) Хемуль36рус, причина возникновения такой ошибки в том, что неправильно передан параметр для оператора for. Например, если в качестве "верхней" границы передать не число, а что-то другое: for i=1, "error" do end Изменено 5 Февраля 2013 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение