База модов


Популярные моды




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

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

Автором этого туториала является Povuholo, последняя
модификация 2006-12-17 07:00:50.

Добро пожаловать в туториал Povuholo по
созданию квестов. Это я smile Я знаю насколько сложным выглядит Construction Set, особенно
система квестов. Когда Обливион был выпущен и я посмотрел на эту систему, я не
имел представления, что делать. Но после прочтения туториала (в котором между
прочим были ошибки :P )
я постепенно начал ее понимать. На первых этапах я держал открытой страницу туториала,
поэтому я мог сверять, что я делал правильно, но неожиданно я просто понял как
это делается.

Как бы то ни было, это не история обо мне, а туториал по созданию квеста. Вот
то, что мы будем делать с помощью этого туториала:

  • Добавление диалогов NPC (Non Playable Character
    (не играемый персонаж), все кроме вас в Обливионе)
  • Создание обновлений журнала
    путем собирания предметов или разговоров с NPC.
  • Получение предмета (ключа) от
    NPC, чтобы вы могли найти предмет, который он потерял.
  • Получение награды от NPC, за возвращение ему предмета.
  • Добавление квестовых
    маркеров, чтобы игрок знал, куда ему нужно направляться.

Перед тем, как мы начнем, я хочу быть уверенным что вы знаете
несколько базовых вещей, которые я не буду объяснять в этом руководстве:

  • Вы должны уметь создавать
    новых NPC и
    новые предметы изменяя их ID.
  • Вы должны уметь размещать этих
    NPC и предметы в ячейках.
  • Вы должны уметь создавать
    новый контейнер (сундук) и размещать предметы в нем.
  • Вы должны уметь читать
    по-английски (читающие данный перевод этот пункт могут опустить J)

И совет перед началом: СОХРАНЯЙТЕСЬ ЧАСТО. Сonstruction Set часто вылетает, когда вы делаете
что-то неправильно или даже когда вы делаете что-то правильно! Поэтому
сохраняйтесь почаще!

Создание NPC который дает квест

Хорошо, начнем с создания предметов, которые нам понадобятся. Добавляем нового
NPC в ячейку. Убедитесь, что сделали новый
ОРИГИНАЛЬНЫЙ и УНИКАЛЬНЫЙ ID.

Так неправильно:

NPC1

MyNPC

Quest

А так правильно:

povtutAlex1 (pov означает
Povuholo, то есть меня.
Помещайте это перед всеми вашими ID чтобы сделать их
уникальными, это также позволит легче находить их в списке объектов. Tut означает Tutorial, это название моего мода. Поэтому мои ID всегда
выглядят так: мое имя+имя моего мода+мой объект, или мое имя+ имя моего мода+имя
владельца предмета+мой объект.

Конечно это всего лишь моя точка зрения как делать ID, вы
можете делать собственные ID. Главное убедитесь, что
они уникальны, ведь мы не хотим, чтобы кто-нибудь использовал тот же ID для своего квеста, что может привести к неработоспособности
обоих модов.

Теперь добавьте нового NPC (я своего назвал Alex) в ячейку. Например в
торговый район Имперского города. Двойной клик на него, отметьте окошко persistent reference (если
возможно) и сделайте новую reference ID. У меня - povtutAlexref2.

Добавление необходимых для квеста предметов

Перейдите в Object Window (окно объектов) и найдите закладку key (ключ). Создайте новый ключ с
новым IDID моего ключа povtutalexkey1. Сейчас выберите, какой
предмет потерял Alex. Возможно свою железную броню? Идите в закладку armor (броня) и возьмите iron armor (железную броню), измените ее имя на Alex's iron armor и измените ее ID. Мой ID - povtutalexarmor1. Вы также
можете отметить окошко Quest Item, тогда игрок не сможет выбросить этот предмет.

Сейчас добавьте новый контейнер, например, сундук (chest). Вы можете
изменить его имя, но если его название всегда будет Сундук, вам будет легче
запомнить его. Или вы можете изменить его на Alex's chest (Сундук Алекса), это уже как пожелаете. Мой ID - povtutAlexchest1. Теперь
поместите iron armor (железную броню) в сундук, и
перейдите в закладку lock (замок) сундука. Измените lock на "needs a key", и выберите ключ, который вы перед этим создали
(теперь сундук можно будет открыть только этим ключом). Теперь разместите
сундук в пещере или в любом другом месте, где пожелаете. Затем кликните на сундуке
выберите окошко 'persistent reference' и
добавьте ссылку ID. У меня - povtutarmorchestref

Общая информация о квесте (Quest data)

Фуф... Это был этап создания предметов. Сейчас мы переходим к той части, которая
находится по важности на первом месте для нас, это непосредственно сам квест! Нажмите
на кнопку Q в меню
вверху слева, чтобы открыть окно квестов (или в меню выберите Character > Quests). С левой стороны
вы можете найти все квесты, вы также можете просмотреть некоторые, чтобы
ознакомится с тем, как они работают. Только ничего не изменяйте wink

Когда вы будете готовы, кликните правой клавишей
мыши на одном из квестов в окне Editor ID, и в появившемся меню выберите "new" Откроется
маленькое окно, где вы сможете ввести ID вашего квеста. И опять
же, он должен быть уникальным. У меня povtutAlexarmorquest. (1)

Теперь, выберите ID, который вы только что создали. Введите
название своего квеста (quest name), у меня Броня Алекса. Измените значение приоритета (priority) на какое-нибудь повыше, 60 будет нормально. В
условиях квеста (quest conditions), найдите и выберите в condition function GetisPlayableRace (не нажимайте enter, это закроет окно квестов), value поставьте
1. Я не знаю почему GetisPlayableRace находится здесь, но каждый квест содержит это условие, другие
туториалы содержат подобные рекомендации, это не несет каких-либо побочных
эффектов, поэтому не имеет смысла не делать этого.

Этапы квеста (Quest Stages)

Это все для закладки quest data, и теперь мы переходим к закладке quest stages. В окошке Index, кликните правой клавишей мыши и выберите new. Наберите 10. Текст, который вы введете в окошке Log Entry, это
текст, который вы увидите после обновления журнала. Я написал "Я встретил
Алекса, который потерял свою броню. Он попросил меня найти ее. Предположительно
броня находится в замкнутом сундуке в [впишите название ячейки, где вы разместили
сундук]. Он дал мне ключ. Я должен попытаться найти этот сундук, и вернуть ему
броню" Опять, не
нажимайте enter, это
закроет окно квестов.

Теперь, опять сделайте новый индекс, но со стадией 15. На этот раз, вы говорите:
"Я нашел броню Алекса и теперь должен ему ее
вернуть". Теперь
сделайте еще один индекс, с номером 20, и наберите "Алекс был доволен, когда
я вернул ему броню и наградил меня 200 золота." Так же отметьте здесь
окошко "complete quest".

Темы квеста (Quest Topics)


Далее разберемся с темами (topics). Перейдите в
закладку topics (темы).
Кликните правой клавишей мыши на пустом месте в editor ID, и выберите в появившемся меню add topic
(добавить тему). Затем выберите GREETING. Нажмите OK.

 

Правый клик мышью на одном из пустых полей в окне info, и в
появившемся меню выбираем new .
Набираем: "Привет, ты можешь мне помочь? Я потерял свою броню, и хотел бы ее вернуть."
Добавьте другую тему выбрав add topic в editor ID, правый клик на topic и кликните на 'new'. Назовите ее как-нибудь. У меня povtutlostmyarmor.

Справа, есть несколько пустых полей с надписью сверху add topic (добавить
тему). НЕ ИСПОЛЬЗУЙТЕ это для добавления тем. Это баг в CS который
приводит к конфликтам в сложных модах, если добавлять темы этим путем, поэтому они
не будут работать. Вместо этого, в result script наберите: "addtopic povtutlostmyarmor" без кавычек.

Что мы только что сделали? Когда Алекс приветствует вас, используя свое
приветствие (greeting), тема povtutlostmyarmor будет
добавлена в его список тем, и вы сможете спросить его об этом.

Теперь, в окне условий (conditions), кликните
правой клавишей мыши и выберите в появившемся меню new. В  Condition function выберите getisID. В Function
parameters, кликните на INVALID. Откроется длинный список. Помните NPC, которого вы
создали? Наберите
начальные буквы его ID (я набрал POVtutalex) и вы найдете его. Убедитесь,
что выбрали NPC, а не броню
или что-нибудь еще. Нажмите OK. Теперь это должно выглядеть так: getisID povtutAlex1 = = 1. 1 означает да, 0 означает нет. Это означает, что когда ID персонажа который с вами говорит povtutAlex1, он выберет это приветствие.
Если вы этого не сделаете, каждый NPC в
мире будет говорить это приветствие!

Конечно, мы не хотим, чтобы он говорил это, когда его броня уже будет
возвращена! Поэтому опять выберите new в
окне Conditions. На этот раз выберите function getstage.
Кликните на Invalid, и найдите ID вашего квеста. В comparion, выберите символ < . В value, наберите
10. Это означает, что Алекс будет говорить это только если этап квеста меньше (<)
чем 10!

Добавьте новое приветствие (greeting) с текстом
"Пожалуйста найди мою броню". Перейдите в условия (conditions) и сделайте так же как в последний раз с GetisID. Для getstage, выберите тот же квест,
но выберите равнение (comparison) = =, и выберите значение
(value) 10. Поэтому, когда он будет спрашивать вас о поиске
брони, но вы ее еще не нашли, он скажет эту фразу. = = означает "равен"
Следовательно, использоваться это приветствие будет когда уровень квеста равен
10, ни меньше, ни больше.

Сейчас добавим еще одно приветствие с текстом "еще раз спасибо за то,
что нашел мою броню". Опять тот же getisID. Для GetStage,
выберите = = 20. Конечно не забудьте ID квеста!

Теперь, в Editor ID тем (где находится тема GREETINGS) правый клик, и выберите add topic (добавить тему). Выберите тему,
которую вы создали как первое приветствие (greeting), у меня это
было povtutlostmyarmor.
Измените текст темы на "Потеря моей брони", потому, что вы не хотите,
чтобы игрок увидел povtutlostmyarmor в качестве названия темы, верно? В info, правый
клик и выберите new (новый).


Теперь вы будете вводить текст, который будет показан, когда вы выберите эту
тему. Наберите что-то вроде "Я потерял свою броню, когда охотился в [напишите
название ячейки, в которой вы поместили сундук]. Я положил ее в сундук и запер его,
на случай, если какой-нибудь бандит решит ее украсть. Но после этого я был атакован,
и бежал прочь, не захватив с собой броню! Ты ее мог бы мне вернуть? Это ключ от
сундука."

Если ваш текст слишком длинный, он может не поместиться в окне. Просто нажмите
ok (убедитесь, что вы закончили предложение), правый клик
мышью на чистом поле в response text и наберите остальную часть
текста.

В result script, наберите "setstage povtutalexarmorquest
10"
без кавычек. Затем нажмите enter и наберите player.additem povtutalexkey1 1

Сначала идет ID персонажа,
которому добавляется предмет (для игрока, просто player) затем
ставится точка, затем additem.
Затем пробел, после чего ID который
вы хотите дать, в данном случае ключ, и затем количество (сколько этих
предметов вы хотите дать игроку).

Таким образом, когда это будет сказано, обновятся записи квеста в вашем журнале
до уровня 10, в которой будет сказано: "Я встретил Алекса, который потерял
свою броню…." И остальная часть текста… а также ключ будет добавлен в ваш
инвентарь.

В окне условий (conditions), еще раз выберите getisID с
тем же ID что и в
приветствиях. Это ID Алекса!

Теперь, правый клик  в пустом месте поля
info и в появившемся меню выбираем new. Наберите: "Я надеюсь ты найдешь мою броню" Выберите
тот же ID как и в
приветствиях, и поставьте getstage
= = 10. Таким образом, этот текст будет показан, когда вы выберете в темах диалога
тему Потеря моей брони, Алекс всегда будет говорить вам о своей потерянной
броне, пока вы ее не вернули.


Мы уже почти здесь… Правый клик и выберите new (новый) в info опять,
и наберите "Вау! Ты нашел ее, спасибо! Вот твоя награда!"

Тот же getisID, в getstage ставим = = 15.

В result script, наберите setstage povtutalexarmorquest 20 и наберите player.additem gold001 200 . Gold001 это
ID золота, набирая 200 позади его вы
получаете 200 золота! И конечно наберите player.removeitem povtutalexarmor1
1 и таким образом вы вернете ему его броню назад!

Добавьте еще одну линию в поле info и
наберите "Больше ничего не пропадало!"

Тот же getisID, для getstage делаем = = 20.

Это текст, который будет показываться, если вы спросите о потерянной
броне, после ее возвращения. Выйдете из окна квестов нажав ok.

 

Скрипт (The script)

Теперь кликните на кнопку с изображением карандаша, которая откроет окно
редактора скриптов. Не волнуйтесь, это будет быстро и безболезненно. wink

Кликните на script, и выберите new.

Это ( ; ) символ, который можно использовать для вставки описания после линии скрипта,
все что идет после этого символа игнорируется и не меняет скрипт. Например
(описание выделено курсивом):

scn povtutalexarmorscript; This
is the ID of the script. SCN means script name. This should always be on top of
your scripts.

Begin OnAdd; When the
item this script is placed on (we will do that next) is added to the players
inventory, the following thing will happen.

if ( getstage
povtutalexarmorquest == 10 ); If the quest stage is at 10

SetStage povtutalexarmorquest 15; Set it to 15.

Endif; Just a standard thing you have to type when you used "if"

endif

End

Нажмите save (сохранить)
и выйдите из окна.

Если по какой-то причине ваш скрипт не работает (появляется ошибка, когда вы
пытаетесь его сохранить), удалите весь текст после знака ; . Это должно помочь,
и еще: Не нажимайте enter в
середине любой из линий скрипта. Теперь, найдите броню Алекса (в окне объектов (object window), а
не в сундуке). В окошке scripts должно
стоять NONE. Прокрутите список, пока не
найдете ваш скрипт. Выберите его и нажмите OK.

С этого места, если вы начнете играть в свой квест, он будет работать. Но я покажу
одну вещь, благодаря которой можно сделать квест легче: Маркеры квеста.

Маркеры квеста (Quest Markers)

Откройте окно квестов. И выберите закладку quest targets. В target ref, правый клик мыши и выберите в
появившемся меню new. В conditions добавьте getstage povtutalexarmorquest == 10.

В quest target data, выберите cell, в
которой вы поместили сундук с броней Алекса. Для ref, выберите ref сундука, который вы сделали. У меня был povtutarmorchestref  Если его нет в списке, перейдите в ячейку
с сундуком, выберите его и посмотрите, чтобы окошко "persistent reference" было отмечено, и
сделали ли вы reference ID. Если нет, сделайте сейчас. Теперь, когда этап квеста равен 10, маркер
будет указывать на сундук, и игрок сможет найти его.

Создайте новую линию в quest target ref. В conditions (условиях), поставьте getstage povtutalexarmorquest = = 15. В
reference, прокрутите до ячейки в которой находится Алекс, и
выберите эту ссылку (reference). Теперь, когда вы
добудете броню, и сообщения в журнале обновятся до 15 уровня квеста, маркер будет
показывать местоположение Алекса, таким образом вы сможете найти его.

Конец!

Вот и все. Вы только
что создали квест. Помните, что все, что вы создали, не появится в игре до тех пор,
пока вы не выберите свой мод в data files когда загружаете Oblivion, поэтому сделайте
это перед началом тестирования! Начинайте просто поговорив с Алексом.

Возможно, вы попробуете сделать другой квест, и не будете заглядывать в туториал
слишком часто. Это хороший путь для того, чтобы чему-нибудь научится. И я скажу
это опять: ЧАЩЕ СОХРАНЯЙТЕСЬ! Если вы создавали мод в течении нескольких часов
без сохранения и Конструктор вылетит, думаю вас это сильно расстроит.

Если у вас есть какие-нибудь вопросы о системе квестов или что-нибудь еще,
просто отправьте мне сообщение на форумах Tessource.

Удачного моддинга!

-Povuholo

 

Оригинал: http://planetelderscrolls.gamespy.com/View.php?view=Tutorials.Detail&id=65

 

Перевод: IgorLutiy (Igor_Ra). Меня можно найти по мылу VIZ222@mail.ru или
на форуме
www.modder.3bb.ru (под ником Igor_Ra).

Скачать The Elder Sccrolls 4 Construction Set



Скачать статью с сервера

Источник: http://modder.ucoz.ru/
VoidWalker
Администраторы
Всего материалов: 8393
16 891
24
Всего комментариев: 1
  1. А не трудно в статью вставить картинки?
    10 января 2011 22:44 Like | 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.