Центральные темы





Статистика Форума
Последние обновленные темы Самые популярные темы Самые активные / 6-ка лучших Новые участники / 6-ка новичков
Первые шаг...   Ответов [ 7 ]
Архив ссыл...   Ответов [ 0 ]
Персональн...   Ответов [ 4 ]
Склад с ун...   Ответов [ 0 ]
РП-шим в F...   Ответов [ 12 ]
Создание /...   Ответов [ 6 ]
Бар FireZ...   Ответов [ 89 ]
Игра в гор...   Ответов [ 61 ]
Считаем до...   Ответов [ 49 ]
Скрипт зал...   Ответов [ 21 ]
История зо...   Ответов [ 21 ]
Бар [ Св.О...   Ответов [ 19 ]
Dosegear   Постов [ 9483 ]
Крестоносец   Постов [ 426 ]
CM_Punk   Постов [ 256 ]
Воробей   Постов [ 170 ]
XemorDio   Постов [ 160 ]
Бармен   Постов [ 106 ]
vovankalugin87  [29.11.2023]
taranenkonikita74  [02.05.2023]
artem23096  [04.04.2023]
Stalker228  [26.03.2022]
gkbnk  [24.01.2022]
vbh7820  [07.12.2021]
  • Страница 1 из 1
  • 1
Форум » S.T.A.L.K.E.R Shadow of Chernobyl » Модостроение / Создание модов » Создание нового квеста (Добавление в игру нового квеста.)
Создание нового квеста
Dosegear Дата: Воскресенье, 27.04.2014, 20:30 | Сообщение # 1

Thorin Oakenshield
DoseMan
О-Сознание
Сообщений: 9483
Карма:
537
Небольшое отступление. ПРОЧИТАТЬ ВСЕМ!
Если вы хотите стать толковым квестером, то НЕ ТОРОПИТЕСЬ! Настоятельно НЕ рекомендую вам читать данный материал, если вы не имеете никаких основ. Чтобы делать квесты нужно как минимум хорошее знание диалогов и свободная работа с конфигами! В идеале желательно знать так же и скрипты, так как используются в квестах они очень часто! Быть квестером не означает создать запись о нем в ПДА. Вы должны уметь создавать полноценные квесты с диалогами, передачей наград, предметов, выполнения каких-либо функций и т.д. Учитывайте это.

Ну а теперь собственно создание квестов.
Все квесты прописываются в файлах типа tasks_локация. Структура каждого квеста очень похожа на структуру диалогов, но обо всем по-порядку.
Сам квест выглядит так:
Код
<game_task id="tutorial_find_artefact">
         <title>tutorial_find_artefact</title>
         <objective>
                 <text>tutorial_find_artefact_0</text>
                 <icon>ui_iconsTotal_tutorial_find_artefact</icon>
                 <infoportion_complete>tutorial_artefact_done</infoportion_complete>
         </objective>
         <objective>
                 <text>tutorial_find_artefact_1</text>
                 <map_location_type hint="tutorial_artefact">green_location</map_location_type>
                 <object_story_id>Escape_Tutorial_Artefact</object_story_id>
                 <infoportion_complete>tutorial_artefact_gain</infoportion_complete>
         </objective>
         <objective>
                 <text>tutorial_find_artefact_2</text>
                 <map_location_type hint="escape_trader">blue_location</map_location_type>
                 <object_story_id>Escape_Trader</object_story_id>
                 <infoportion_complete>tutorial_artefact_done</infoportion_complete>
         </objective>
</game_task>

Разберем более подробно.
Код
<game_task id="tutorial_find_artefact">
</game_task>

Это собственно и есть наш квест. Так же здесь содержится его id. Внутри него помещается все остальное.
Код
<title></title>

Это название нашего квеста, которое будет отображаться в ПДА.
Код
<objective>
</objective>

Представляет собой под-задание. К примеру возьмем первое задание от Бармена: Добыть флешку. Оно состоит из нескольких под-заданий: Поговорить с Волком, Встретится с людьми Волка и т.д.
Код
<text></text>

Здесь указывается название под-задания.
Код
<icon></icon>

В этом тэге должна быть ссылка на изображение, которое будет отображаться в ПДА (иконка задания). ВНИМАНИЕ: указывать обязательно, иначе будет происходить вылет при входе в ПДА.
Код
<object_story_id></object_story_id>

Ссылается на sid из файла со всеми story id (config/game_story_ids.ltx)
Код
<infoportion_complete></infoportion_complete>

При выдаче указанного здесь инфопоршня, под-задание будет выполнятся.
Код
<infoportion_fail></infoportion_fail>

Следовательно, если будет выдан данный инфопоршень, то под-задание будет провалено.
green_location
Этот тэг позволяет нам добавить отметку на карте (к примеру при взятии задания у Сидорыча, то в ПДА на карте изображена такая бледная отметка). hint ссылается на определенного НПС или предмет, а green_location указывает какая должна быть отметка (gren_location - зеленая, blue_location - как над НПС-Квестодателями).

Ничего сложного как мне кажется нет. Но я не написал еще один тэг, потому что пользуюсь им очень редко:

Код
<function_complete></function_complete>

Как не сложно догадаться, по аналогии с предыдущими, этот тэг вызывает какую-либо функцию (если вы читали статью о создании диалогов, то должны знать как указать файл и название функции). Если все условия функции выполняются, то подзадание выполняется.

Теперь на готовом примере разберем создание квеста.
За основу я взял диалог из статьи по созданию диалогов. Попытаемся сделать квест на поиск водки для Сидорыча.

Открываем файл task_escape и создаем базовую структуру нашего квеста, названия и подзадания (их будет два - найти водку и отдать ее):
Код
<game_task id="quest_vodka">
         <title>Принести водку Сидору</title>
         <objective>
                 <text>Найти водку</text>
         </objective>
         <objective>
                 <text>Отдать ее Сидорычу</text>
         </objective>
</game_task>

Далее создадим два инфопоршня (для старта и для окончания квеста):
Код
<info_portion id="quest_vodka_start">
         <task>quest_vodka</task>
</info_portion>

Код
<info_portion id="quest_vodka_finish"></info_portion>

И пропишем второй инфопоршень для завершения второго подзадания:
Код
<game_task id="quest_vodka">
         <title>Принести водку Сидору</title>
         <objective>
                 <text>Найти водку</text>
         </objective>
         <objective>
                 <text>Отдать ее Сидорычу</text>
                 <infoportion_complete>quest_vodka_finish</infoportion_complete>
         </objective>
</game_task>

Один момент я упустил. Незнаю почему так, но для работоспособности квеста нужно скопировать последнее подзадание в самый верх, т.е.:
Код
<game_task id="quest_vodka">
         <title>Принести водку Сидору</title>
         <objective>
                 <text>Отдать ее Сидорычу</text>
                 <infoportion_complete>quest_vodka_finish</infoportion_complete>
         </objective>
         <objective>
                 <text>Найти водку</text>
         </objective>
         <objective>
                 <text>Отдать ее Сидорычу</text>
                 <infoportion_complete>quest_vodka_finish</infoportion_complete>
         </objective>
</game_task>

Уж незнаю особенность это движка или еще что то, но без этого квест работать не будет!

Чтобы не происходило вылета при заходе в ПДА, нужно прописать квесту иконку, которая будет отображаться в списке заданий. Пропишем ее в первое подзадание:
Код
<game_task id="quest_vodka">
         <title>Принести водку Сидору</title>
         <objective>
                 <text>Отдать ее Сидорычу</text>
                 <icon>ui_iconsTotal_find_item</icon>
                 <infoportion_complete>quest_vodka_finish</infoportion_complete>
         </objective>

Далее прописываем выдачу инфопоршней в диалоге с Сидором.

Начало квеста прописываем после фразы ГГ "Договорились.":
Код
<dialog id="prinesi_vodky">
<dont_has_info>info_new_vodka</dont_has_info>
         <phrase_list>
                 <phrase id="0">
                         <text>prinesi_vodky_0</text>
                         <next>1</next>
                 </phrase>
                 <phrase id="1">
                         <text>prinesi_vodky_1</text>
                         <next>2</next>
                 </phrase>
                 <phrase id="2">
                         <text>prinesi_vodky_2</text>
                         <next>3</next>
                 </phrase>
                 <phrase id="3">
                         <text>prinesi_vodky_3</text>
                         <next>4</next>
                 </phrase>
                 <phrase id="4">
                         <text>prinesi_vodky_4</text>
                         <give_info>info_new_vodka</give_info>
                         <give_info>quest_vodka_start</give_info>
                 </phrase>
         </phrase_list>
</dialog>

А завершение квеста после фразы "Держи. Разливай… ":
Код
<dialog id="oday_vodky">
<has_info>info_new_vodka</has_info>
<dont_has_info>info_new_vodka2</dont_has_info>
         <phrase_list>
                 <phrase id="0">
                         <text>oday_vodky_0</text>
                         <next>1</next>
                 </phrase>
                 <phrase id="1">
                         <text>oday_vodky_1</text>
                         <next>21</next>
                         <next>22</next>
                 </phrase>
                 <phrase id="21">
                         <text>oday_vodky_21</text>
                         <precondition>dialogs.have_a_vodka</precondition>
                         <action>dialogs.transfer_vodka</action>
                         <give_info>quest_vodka_finish</give_info>
                         <next>31</next>
                 </phrase>
                 <phrase id="22">
                         <text>oday_vodky_22</text>
                         <next>32</next>
                 </phrase>
                 <phrase id="31">
                         <text>oday_vodky_31</text>
                         <action>dialogs.transfer_2000</action>
                         <give_info>info_new_vodka2</give_info>
                 </phrase>
                 <phrase id="32">
                         <text>oday_vodky_32</text>
                 </phrase>
         </phrase_list>
</dialog>

Мы почти закончили. Осталось прописать завершение среднего подзадания (следовательно в игре оно будет первым). Для этого мы будем использовать ту же функцию, что применяли, для появления диалога:
Код
function have_a_vodka (stalker, player)
         return db.actor:object ("vodka") ~= nil
end

Пропишем ее здесь:
Код
<objective>
         <text>Найти водку</text>
         <function_complete>dialogs.have_a_vodka</function_complete>
</objective>

Вот и все. Вы сделали свой первый квест. Поздравляю и удачи в квестостроении smile Вы можете выложить сюда свой созданный квест, мы оценим его и будем обсуждать в другой теме =)


Say my name, falles!
Форум » S.T.A.L.K.E.R Shadow of Chernobyl » Модостроение / Создание модов » Создание нового квеста (Добавление в игру нового квеста.)
  • Страница 1 из 1
  • 1
Поиск:
20:12
Обновить
Пользователи, посетившие форум за текущий день




Design by Dosegear
Бесплатный конструктор сайтов - uCoz © 2014
Любое копирование графических материалов форума
Приведет в быстрому или медленному наказанию!

Яндекс.Метрика