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

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

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

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

Этапы квеста (Quest Stages) - student2.ru

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

Этапы квеста (Quest Stages) - student2.ru

Правый клик мышью на одном из пустых полей в окне 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 (новый).

Этапы квеста (Quest Stages) - student2.ru

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

Если ваш текст слишком длинный, он может не поместиться в окне. Просто нажмите 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. Таким образом, этот текст будет показан, когда вы выберете в темах диалога тему Потеря моей брони, Алекс всегда будет говорить вам о своей потерянной броне, пока вы ее не вернули.

Этапы квеста (Quest Stages) - student2.ru

Мы уже почти здесь… Правый клик и выберите 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)

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

Кликните на 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). Меня можно найти по мылу [email protected] или на форуме www.modder.3bb.ru (под ником Igor_Ra).

Наши рекомендации