Это популярное сообщение. XMK 24 Опубликовано 18 Декабря 2009 Это популярное сообщение. Поделиться Опубликовано 18 Декабря 2009 (изменено) Разбор системы квестов в S.T.A.L.K.E.R. Зов Припяти Статья написана: Xmk[spoiler=Разбираем конкретно параметры:]icon - иконка квестаПример использования: icon = ui_inGame2_Put_v_pripyatprior - приоритет квестаПример использования: prior = 112storyline - флаг задания (true - сюжетное, false - несюжетное)Пример использования: storyline = truetitle - название задание (id из xml) - если брать название не из xml, то в игре оно будет отображаться без пробеловПример использования: title = zat_a9_way_gates_check_transport_workshop_nametitle_functor - функция-обработчик для заголовка (по умолчанию condlist)Примеры смотри в task_functor.scriptdescr - описание задания (id из xml) - если брать название не из xml, то в игре оно будет отображаться без пробеловПример использования: descr = zat_a9_way_gates_check_transport_workshop_textdescr_functor - функция-обработчик для описания (по умолчанию condlist)Примеры смотри в task_functor.scripttarget - цель на карте (метка)Примеры использования:target = zat_a2_stalker_barmen (ID объекта (в данном случае нпц), на которого будет поставлена метка)target = {условие}obj_id- если выполняется условие, метка будет поставлена на выбранный объект.descr_functor - функция-обработчик для цели (должна возвращать ID персонажа) (по умолчанию target_condlist)Примеры смотри в task_functor.scriptcondlist_x - группа параметров, позволяющая задавать условия выполнения, провала или отмены задания. Число в имени ключа позволяет задать несколько последовательно пронумерованных (начиная с нуля) параметров. Кондлист каждого параметра может возвращать следующие значения: complete (выполнить задание), fail (провалить задание), reversed (отменить задание).Примеры использования:condlist_0 = {условие} complete - если выполняется условие, задание выполнено.condlist_1 = {условие} reversed - есливыполняется условие, значит есть возможность повторить задание.condlist_2 = {условие} fail - есливыполняется условие, задание провалено.on_init - действия, которые выполняются, при выдаче заданияon_complete - действия, которые выполняются, если задание выполненоon_reversed - действия, которые выполняются, если задание проваленоПримеры использования:on_init = %+название_инфопоршня% -- выдаем опр.инфопоршеньon_complete = %=inc_faction_goodwill_to_actor(stalker:200)% -- повышаем репу у сталкеров (функция юзаются из xr_effect)on_reversed = {условие} %=inc_faction_goodwill_to_actor(stalker:200)% -- повышаем репу у сталкеров, только если есть выполняется условие.reward_money - денежная наградаreward_item - награда в виде предметаПримеры использования:reward_money = 5000 -- даем актору 5000.reward_item = wpn_ak74 -- даем актору АК-74Примечание: Награда выдается двумя методами: от НПЦ или просто свалиться с неба. Если не найден НПЦ, с которым мы в диалоге, то валится с неба.dont_send_update_news - булевое значение. При включении отключает новости при обновлении квеста. [spoiler=Создаем примитивный квест:]Используемые файлы:configs\gameplay\dialogs_zaton.xmlconfigs\gameplay\info_zaton.xmlconfigs\gameplay\character_desc_zaton.xmlconfigs\text\rus\st_quests_zaton.xmlconfigs\misc\tm_zaton.ltxscripts\dialogs_zaton.script Открываем файл dialogs_zaton.xml и добавляем перед </game_dialogs>: <dialog id="vodka_quest_dialog"> <dont_has_info>quest_vodka_done</dont_has_info> <dont_has_info>quest_vodka_give</dont_has_info> <phrase_list> <phrase id="1"> <text>Принеси бутылочку</text> <give_info>quest_vodka_give</give_info> <action>dialogs_zaton.give_vodka_quest</action> </phrase> <phrase id="0"> <text>Привет, тебе водки не принести?</text> <next>1</next> </phrase> </phrase_list> </dialog> <dialog id="vodka_quest_prines"> <dont_has_info>quest_vodka_done</dont_has_info> <has_info>quest_vodka_give</has_info> <precondition>dialogs_zaton.is_has_vodka_borode</precondition> <phrase_list> <phrase id="1"> <text>Спасибо, чувак. Выручил</text> <give_info>quest_vodka_done</give_info> </phrase> <phrase id="0"> <has_info>quest_has_vodka</has_info> <text>Вот твоя водяра</text> <action>dialogs_zaton.transfer_vodka_to_boroda</action> <next>1</next> </phrase> </phrase_list> </dialog> Далее добавляем наши диалоги Бороде.Открываем файл character_desc_zaton.xmlНаходим строчку <actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog> и под ней пишем <actor_dialog>vodka_quest_dialog</actor_dialog> <actor_dialog>vodka_quest_prines</actor_dialog> Сохраняем Открываем файл info_zaton.xml и добавляем перед </game_information_portions>: <info_portion id="quest_vodka_give"></info_portion> <info_portion id="quest_has_vodka"></info_portion> <info_portion id="quest_vodka_done"></info_portion> Открываем файл dialogs_zaton.script и в начало записываем: function give_vodka_quest() task_manager.get_task_manager():give_task("quest_vodka_give") end function is_has_vodka_borode() if db.actor:object("vodka") then return true end return false end function transfer_vodka_to_boroda(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") end Сохраняем Открываем файл tm_zaton.ltx и в конец пишем: [quest_vodka_give] icon = ui_inGame2_Put_v_pripyat prior = 2 storyline = false title = {=actor_has_item(vodka)}vodka_barmen_prinesti_name, vodka_barmen_naiti_name descr = vodka_barmen_descr target = {=actor_has_item(vodka)}zat_a2_stalker_barmen condlist_0 = {+quest_vodka_done} complete Открываем файл st_quests_zaton.xml и добавляем после <string_table> <string id="vodka_barmen_naiti_name"> <text>Найти водку для бармена</text> </string> <string id="vodka_barmen_prinesti_name"> <text>Принести водку бармену</text> </string> <string id="vodka_barmen_descr"> <text>Бармен в тестовых целях попросил найти и принести ему 2 бутылки водки</text> </string> Сохраняем Скачать пример квеста - по этой ссылке или по этойИсточник: link Создание квеста с использованием рестрикторов (Автор - @GEONЕZIS) Создание многоэтапного квеста на последовательный поиск предметов (Автор - @GEONЕZIS) Создание квеста с добавлением дополнительных внутриэтапных подзаданий. Особенности- отсутствие диалогов, использование рестрикторов. (Автор - @GEONЕZIS) Создание квеста с добавлением дополнительных внутриэтапных заданий. Особенности- отсутствие диалогов, использование физических объектов класса physic_destroyable_object в качестве квестовых предметов. (Автор - @GEONЕZIS) Создание квеста с добавлением дополнительных внутриэтапных заданий. Особенности- отсутствие диалогов, добавление тайников в качестве квестовых предметов. (Автор - @GEONЕZIS) Создание однотипного квеста на одновременный поиск двух разных предметов. Особенности- использование элементарных скриптовых функций actor_has_item() (Автор - @GEONЕZIS) Создание примитивного квеста на поиск двух различных предметов, с выдачей ачивмента. Особенности- способ написания задание с его обновлением по инфопорциям, добавление по завершении простого достижения (ачивмента). (Автор - @GEONЕZIS) Создание сложного квеста с использованием объекта класса inventory_box. Особенности- отсутствие диалогов, использование рестрикторов, выдача тайника в качестве награды. (Автор - @GEONЕZIS) Квест на убийство мутанта через туториал ("Press F To Win") (Автор - @FantomICW) Изменено 27 Июля 2014 пользователем FantomICW 3 5 2 Ссылка на комментарий
iDreD 5 Опубликовано 20 Декабря 2009 Поделиться Опубликовано 20 Декабря 2009 (изменено) Наконец-то хоть кто-то написал нормальный мануал... XMK респект и +. Изменено 20 Декабря 2009 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
ZeeK 57 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 (изменено) а будет продолжение? Очень интересно! Изменено 23 Декабря 2009 пользователем ZeeK Не соответствует. N6260 Ссылка на комментарий
Dead men 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Я не понял только одно, как сделать чтобы например ГГ отдаёт водку, а борода взамен ему давал арт, и где распологаються кодовые имена, вот например в квесте водка код бороды boroda! Ссылка на комментарий
Pihan13 9 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Dead men, по-русски пожалуйста опиши что тебе надо и что за кодовые имена? спавн-секции чтоли? Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
Dead men 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Ну я новичёк, поэтому незнаю как это точно называется, ну вот например код колбасы = st_kolbasa, а мне нужен код кардана и вообще где они храняться!!! :ny_unsure: хочу узнать!! :ny_ph34r_1: Я не понял только одно, как сделать чтобы например ГГ отдаёт водку, а борода взамен ему давал арт, и где распологаються кодовые имена, вот например в квесте водка код бороды boroda! Ну я новичёк, поэтому незнаю как это точно называется, ну вот например код колбасы = st_kolbasa, а мне нужен код кардана и вообще где они храняться!!! :ny_unsure: Ответьте плиз!!! Строгое предупреждение от модератора n6260 Рин одли на сутки за дублирование постов в теме. Ссылка на комментарий
XMK 24 Опубликовано 23 Декабря 2009 Автор Поделиться Опубликовано 23 Декабря 2009 а будет продолжение? Очень интересно! что именно? Задавайте вопросы, по возможности отвечу Dead men Если ты этого не знаешь, зачем лезешь в квестостроение? Ссылка на комментарий
Night_SH 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 XMK как я понял предмет который от нас требуется прописывается в скрипте? function give_vodka_quest() task_manager.get_task_manager():give_task("quest_vodka_give") end function is_has_vodka_borode() if db.actor:object("vodka") then return true end return false end function transfer_vodka_to_boroda(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") end Верно? Раньше квесты не писал... с конфигами дружу, попробую. Спасибо. Ссылка на комментарий
Guzerus 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Перво-наперво,спасибо огромное за статью по созданию квеста в ЗП. Буду читать,пробовать. И небольшой вопрос. На что влияет приоритет квеста и его сюжетность/не сюжетность? Мой ник читается гузерус. Ссылка на комментарий
Night_SH 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Строгое предупреждение от модератора Halford Не цитируем предыдущий пост. Это же примитивный квест, на сюжет он ни как не влияет. Репутация игрока скорее тоже не изменится. Так что... в общем грубо говоря такие квесты чисто для разнообразия игры. Ссылка на комментарий
ZeeK 57 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Вопросы: Как поставить ограничитель, что бы квест раньше н-времени не появлялся? Что бы было несколько ответов И как быть что бы квест сам появлялся как например сообщение от охотника на янове о появлении химеры? Не соответствует. N6260 Ссылка на комментарий
Guzerus 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Это же примитивный квест, на сюжет он ни как не влияет. Репутация игрока скорее тоже не изменится. Так что... в общем грубо говоря такие квесты чисто для разнообразия игры. Я имел в виду это. storyline - флаг задания (true - сюжетное, false - несюжетное) Мой ник читается гузерус. Ссылка на комментарий
РикошетТ 533 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 (изменено) Как поставить ограничитель, что бы квест раньше н-времени не появлялся? Вроде: <dont_has_info>jup_b15_zulus_b301_reward_dialog</dont_has_info> Это лепить надо после: <dialog id="ваше_название"> Теперь диалог появится после того как найдете Зулуса в Припяти и возьмете пулемет, но я могу ошибаться. Что бы было несколько ответов <dialog id="ваше_название"> <phrase_list> <phrase id="0"> <text>Косяк есть?</text> <next>1</next> </phrase> <phrase id="1"> <text>Нету</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>Лол!)</text> </phrase> <phrase id="3"> <text>Убью гад.</text> <!---<action>dialogs.break_dialog</action>---> </phrase> </phrase_list> </dialog> И как быть что бы квест сам появлялся как например сообщение от охотника на янове о появлении химеры? ХЗ) Ответьте плиз!!! www.google.ru Или http://www.stalkerin.gameru.net/wiki/index...%B8%D1%86%D0%B0 Изменено 24 Декабря 2009 пользователем Halford YouTube Shoker Team ShWM 2.1 РикошеТ aka LanceW Ссылка на комментарий
ZeeK 57 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Проверил да, ты был прав с проверкой на выдачу квеста! Спасибо! пойду шаманить над фриплеем... Не соответствует. N6260 Ссылка на комментарий
Guzerus 0 Опубликовано 23 Декабря 2009 Поделиться Опубликовано 23 Декабря 2009 Теперь диалог появится после того как найдете Зулуса в Припяти и возьмете пулемет, но я могу ошибаться. Если я не ошибаюсь,don't это отрицание,то есть проверка идёт на то,что поршня нет. То есть до диалога будет задание,а после-нет,не возьмёшь уже. Мой ник читается гузерус. Ссылка на комментарий
XMK 24 Опубликовано 24 Декабря 2009 Автор Поделиться Опубликовано 24 Декабря 2009 XMK как я понял предмет который от нас требуется прописывается в скрипте? да, это прекондишн для диалога на обновление задания стоит: title = {=actor_has_item(vodka)}vodka_barmen_prinesti_name, На что влияет приоритет квеста и его сюжетность/не сюжетность? после выполнения какого либо квеста, вероятность что игра переключится на этот Репутация игрока скорее тоже не изменится. чтоб изменить репу игрока у сталкеров при выполнении квеста (пример) надо дописать: on_complete = %=inc_faction_goodwill_to_actor(stalker:200)% Как поставить ограничитель, что бы квест раньше н-времени не появлялся? в диалог проверки на инфопоршни вставляй статья по диалогам: http://www.stalkerin.gameru.net/wiki/index...%D0%BE%D1%80%29 Guzerus <dont_has_info> проверка на отсутствие опр.инфопоршня <has_info> проверка на присутствие опр.инфопоршня <precondition>файл.функция</precondition> сюда можно запихать функцию, в которой можешь проверить всё что угодно Ссылка на комментарий
ZeeK 57 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 (изменено) Назрел уникальный вопрос: возможно что бы взятия квеста начился скриптовый музон?! Добавлено через 62 мин.: Сделал квест для Шульги но происходит вылет: Expression : false Function : CXml::Load File : D:\prog_repository\sources\trunk\xrXMLParser\xrXMLParser.cpp Line : 87 Description : XML file:gameplay\dialogs_jupiter.xml value: errDescr:Error reading end tag. Вот диалог <game_dialogs> <dialog id="arsenal_duty_dialog"> <give_info>jup_b207_sell_dealers_pda_freedom</give_info> <phrase_list> <phrase id="0"> <text>Здраствуй командир, чего грустный такой?</text> <next>1</next> <phrase> <phrase id="1"> <text>Да кто то сдал наш склад свободе, а там столько оружия было...теперь ситуация в лагере не в нашу пользу..Короче рядом есть старый склад, принеси нам оттуда оружия,сталкер, будь другом.</text> <next>2</next> <next>4</next> <phrase> <phrase id="2"> <text>Так и быть помогу.</text> <give_info>quest_arsenal_give</give_info> <action>dialogs_jupiter.give_arsenal_quest</action> <phrase> <phrase id="4"> <text>Я подумаю</text> <action>dialogs.break_dialog</action> <phrase> <dialog id="arsenal_duty_prines"> <has_info>arsenal_duty_give</has_info> <precondition>dialogs_jupiter.is_has_arsenal_duty</precondition> <phrase_list> <phrase id="1"> <text>Отлично теперь бойцы смогут сделать склад на подходах к Чернобылю-2</text> <next>2</next> </phrase> <phrase id="0"> <has_info>arsenal_has_duty</has_info> <text>Вот твой драный арсенал!Ух и тяжелый!</text> <next>1</next> </phrase> <phrase id="2"> <text>?!</text> <action>dialogs_zaton.transfer_arsenal_to_duty</action> <next>3</next> </phrase> <phrase id="3"> <text>Прости просто это оружие нужно было для нашей ударной группы, идущей к Чернобылю-2. У меня есть инфа что туда пытаются и бандосы попасть, а этого допустить нельзя!</text> <give_info>arsenal_duty_done</give_info> </phrase> <phrase_list> Добавлено: Скажите в чем проблема Сообщение от модератора Halford Не накрыл где-то тэг... Добавлено через 161 мин.: Эмм поясните поподробней про этот тег, что такое и с чем его едят? Изменено 24 Декабря 2009 пользователем Halford Не соответствует. N6260 Ссылка на комментарий
XMK 24 Опубликовано 24 Декабря 2009 Автор Поделиться Опубликовано 24 Декабря 2009 </dialog> Ссылка на комментарий
ZeeK 57 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 Нет диалог я написал просто не уместилось Добавлено через 62 мин.: Кажется нашел в чем проблема-не создается развлетвленный диалог с двумя и более вариантами ответа-если делать по схеме ТЧ Не соответствует. N6260 Ссылка на комментарий
Guzerus 0 Опубликовано 24 Декабря 2009 Поделиться Опубликовано 24 Декабря 2009 (изменено) Поправьте,если ошибаюсь,но у уважаемого ZeeK в первой части диалога написано. <game_dialogs> <dialog id="arsenal_duty_dialog"> <give_info>jup_b207_sell_dealers_pda_freedom</give_info> <phrase_list> <phrase id="0"> <text>Здраствуй командир, чего грустный такой?</text> <next>1</next> <phrase> И в других так же. В то время как надо ставить закрытие "/". Вот в этой части,везде просто <phrase>. <game_dialogs> <dialog id="arsenal_duty_dialog"> <give_info>jup_b207_sell_dealers_pda_freedom</give_info> <phrase_list> <phrase id="0"> <text>Здраствуй командир, чего грустный такой?</text> <next>1</next> <phrase> <phrase id="1"> <text>Да кто то сдал наш склад свободе, а там столько оружия было...теперь ситуация в лагере не в нашу пользу..Короче рядом есть старый склад, принеси нам оттуда оружия,сталкер, будь другом.</text> <next>2</next> <next>4</next> <phrase> <phrase id="2"> <text>Так и быть помогу.</text> <give_info>quest_arsenal_give</give_info> <action>dialogs_jupiter.give_arsenal_quest</action> <phrase> <phrase id="4"> <text>Я подумаю</text> <action>dialogs.break_dialog</action> <phrase> Изменено 24 Декабря 2009 пользователем Guzerus Мой ник читается гузерус. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти