Все посты %s в %S - AMK Team
Перейти к контенту

Создание квеста


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

Всех с Новым Годом!

@"StreloK", чтобы повесить на НПС отметку, нужно узнать его id. Чтобы выдать инфопоршен при поднятии предмета, загляни в bind_stalker.script, там есть функция on_item_take, это колбек на поднятие предмета, здесь поставь проверку на наличие нужного предмета в инвентаре и выдачу инфопорции, если он есть.

Изменено пользователем Куфзук

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


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

ДаркСайт, ну смотри, тебе нужно, либо просто поставить проверку через инфопоршен, для появления диалога, либо проверить через прекондишн.

Через проверку инфопоршна, реализация будет выглядеть так:

<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. Ты можешь использовать и первый и второй вариант одновременно. Так что выбирай...

 

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


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

ДаркСайт, подозреваю, что в НЛС6, некоторые задания представляют из себя только диалоги, плюс некоторые выдачи инфопоршней и выполнение скриптов, но есть и некоторые задания через таск. Так, что если хочешь чисто словесное описание - диалоги тебе в помощь!

Bот здесь о них

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


Ссылка на сообщение
RDS, ох и заслал же ты новичка. Может стоило для начала сюда: Stalkerin?

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


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

kiperenok, на самом деле не всё уж и так сложно, как может показаться на первый взгляд. В ЗП ПЫС всё же поняли всю прелесть логики поведения НПС и решили этим воспользоваться.

1. Передача происходит не в том смысле, в котором можно было бы подумать. На самом деле это всего лишь анимация одного персонажа, по завершении которой выдаётся инфопорция либо выполняется функция, где уже можно и передать предмет.

2. Тоже самое - лишь анимация. Стоит отыгрывает анимацию, по окончании которой выдаётся инфопорция, при наличии которой открываются двери лифта.

3. Это вряд ли... Хотя прямо таки утверждать не буду, но очень в этом сомневаюсь.

В целом для реализации качественного квеста, где бы можно было бы действительно увидеть слаженные действия НПС, не важно в коком образе - при взаимодействии с объектами или же с другими НПС, нужно использовать весь "арсенал", который нам предоставили разработчики. Но, как мне кажется, главным всё же в этом - это правильно продуманная логика поведения.

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


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

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 - инфопорция, которая будет свидетельствовать о выбрасывании сканера в зоне рестриктора.

Изменено пользователем ColR_iT

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


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

Свободник, тема вопроса уже давно разжёвана и заезжена, мог бы и поиском воспользоваться...

Вот тебе ссылки, читай:

SoC. Создание диалогов - >>Click Me<<

SoC. Создание новых веток диалогов - >>Click Me<<

Система сюжетной информации (InfoPortions) - >>Click Me<<

Создание диалогов (полный обзор) - >>Click Me<<

Диалоги. Часть 1. Форматы файлов, базовые сведения - >>Click Me<<

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


Ссылка на сообщение
Stalker_AleX333, у тебя в файле alex_mod_dialogs.xml нет диалога id у которого bar_barmen_sleep_dialog_start, а есть bar_barman_sleep_dialog_start.

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


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

volazar, ты не прав, точнее не до конца...

Установить стартовых диалогов можно сколько угодно, да хоть все, но вот использоваться будет только один, который первый пройдёт по условиям, порядок тот, в котором они прописаны в профиле.

На примере профиля BeeRseKа - если <start_dialog>dialog_lukash_proverka</start_dialog> не пройдёт по условиям, то будет установлен стартовый диалог <start_dialog>dialog_lukash_raciya</start_dialog>, если же в обоих не будет условий появления, то использоваться будет первый.

Кстати, в схеме логики meet можно также установить стартовый диалог НПС, причём приоритет его будет выше, нежели в профиле.

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


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

RDS, по всей видимости ты не правильно понял Magnus1.

Задания, которые отображаются в ПДА расписаны в файлах config\gameplay\tasks_xxx.xml и их структура не позволяет появление отдельного подзадания (словами Magnus1: "... часть квеста ...") при определённых условиях. Если быть точным условие на самом то деле есть - это выполнение предыдущего подзадания. "Приостановить" квест в ПДА, т.е. чтобы задание не завершилось, но и подзадание не появилось - не получится.

Magnus1, как вариант, могу посоветовать разделить твоё задания на два.

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


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

stalker_343, полистать тему не судьба?

Для диалога ставишь precondition, где вписываешь вызов функции, которая будет проверять наличие предмета. Примеров подобных функций - пруд пруди, диалогов и подавно.

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


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

riddik121, причина в том, что инфопоршень не выдаётся. Выдачу инфопорции нужно было делать в непосредственно в работе смарта, а не так, как сделал ты. Когда НПС находится под управлением гулага, то его логика при этом работать не будет.

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


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

riddik121, всё верно. В универсальном гулаге работа составляются исходя из названия точек путей. Все параметры берутся по умолчанию, обязательными, как правило, являются точки пути, но поскольку их мы и пишем, то с этим проблем не возникает. Чего не могу сказать о возможности работы снайпера, где обязательным условием является значение true для параметра sniper, а также организации лидера в схеме patrol.

В общем, универсальные гулаги могут показаться легче в плане реализации, но влекут за собой массу минусов, самый значительный из которых - это невозможность в последствии просто менять/править схемы. Я бы не рекомендовал использовать их для НПС, единственную их выгоду в простоте я лишь вижу в случае использования для мобов, где создавать что-то исключительное требуется гораздо реже. Но... решать и выбирать, конечно же тебе.

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


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

AutoGnom, безлоговый вылет происходит по причине того, что ты пишешь непосредственно сам текст в структуру диалога, вместо того, чтобы указывать id на нужный текст в файлах локализации. Сделай "правильно" и вылетов не будет, во всяком случае безлоговых.

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


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

Хемуль36рус, причина возникновения такой ошибки в том, что неправильно передан параметр для оператора for. Например, если в качестве "верхней" границы передать не число, а что-то другое:

for i=1, "error" do
end

Изменено пользователем ColR_iT

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


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

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