Учебник по созданию квестов и диалогов (by Wiki) (#2327)
Учебник по созданию квестов и диалогов (by Wiki)
Cоздание квеста
Автором этого туториала является Povuholo, последняя модификация от 17.12.2006 г.
Предисловие автора
Добро пожаловать в туториал Povuholo по созданию квестов. Это я :)
Я знаю, насколько сложным выглядит Construction Set, особенно система квестов. Когда Обливион был выпущен и я посмотрел на эту систему, я не имел представления, что делать. Но после прочтения туториала (в котором, между прочим, были ошибки) я постепенно начал его понимать. На первых этапах я держал открытой страницу туториала, поэтому я мог сверять, что я делал правильно, но неожиданно я просто понял как это делается.
Как бы то ни было, это не история обо мне, а туториал по созданию квеста. Вот то, что мы будем делать с помощью этого туториала: Добавление диалогов NPC (Non Playable Character (неигровой персонаж)), все, кроме вас в Обливионе)
Создание обновлений журнала путем собирания предметов или разговоров с NPC.
Получение предмета (ключа) от NPC, чтобы вы могли найти предмет, который он потерял.
Получение награды от NPC, за возвращение ему предмета.
Добавление квестовых маркеров, чтобы игрок знал, куда ему нужно направляться.
Перед тем, как мы начнем, я хочу быть уверенным что вы знаете несколько базовых вещей, которые я не буду объяснять в этом руководстве:
Вы должны уметь создавать новых NPC и новые предметы изменяя их ID.
Вы должны уметь размещать этих NPC и предметы в ячейках.
Вы должны уметь создавать новый контейнер (сундук) и размещать предметы в нем.
Вы должны уметь читать по-английски (читающие данный перевод этот пункт могут опустить.
И совет перед началом: СОХРАНЯЙТЕСЬ ЧАСТО. С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 (ключ).
Создайте новый ключ с новым ID… ID моего ключа 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…).
С левой стороны вы можете найти все квесты, вы также можете просмотреть некоторые, чтобы ознакомиться с тем, как они работают. Только ничего не изменяйте!
Кликните правой клавишей мыши на пустом месте в editor ID, и выберите в появившемся меню add topic (добавить тему).
Затем выберите GREETING. Нажмите OK.
Теперь вы будете вводить текст, который будет отображаться, когда вы выберете эту тему.
Наберите что-то вроде:
"Я потерял свою броню, когда охотился в [напишите название ячейки, в которой вы поместили сундук].Я положил ее в сундук и запер его, на случай, если какой-нибудь бандит решит ее украсть. Но после этого ябыл атакован, и бежал прочь, не захватив с собой броню! Ты ее мог бы мне вернуть? Это ключ от сундука."
Если ваш текст слишком длинный, он может не поместиться в окне. Просто нажмите 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. Таким образом, этот текст будет отображаться, когда вы выберете в темах диалога тему Потеря моей брони, Алекс всегда будет говорить вам о своей потерянной броне, пока вы ее не вернете.
Рис.1
Щелкаем по нему. Это упорядочит всех NPC в алфавитном порядке по классам. Спускаемся ниже, ищем класс «Farmer». см. рис 2.
Рис.3
Локация
Локации в данном случае нам выбирать не придется. Так как они уже есть - это ферма нашего фермера.
Изменяем мир
Итак, наступил ответственный момент. Начнем изменять мир.
Правым кликом на Мерилдоре вызываем контекстное меню, в котором выбираем Use Info. Рис 4
Рис.5
В таблице Used in these Cells:, выбираем BrindleHome02. В прочем выбирать то и не из чего. Двойной щелчок левой кнопкой и ячейка с персонажем загружена. Находим в Render Window, Мерилдора и дважды щелкаем по нему. Появится окно ссылки. Рис 6.
Рис.7
В появившемся окне Effect Item, вводим следующее: Effect – Высасывание параметра
ActorVal – Скорость
Magnitude – 100
Жмем «OK». Эффект добавлен. В окне Spell жмем «OK». См. рис. 8
Нужно создать новый квест, для этого правой кнопкой мыши щелкаем в списке квестов и выбираем New.
Рис.10
Рассмотрим подробнее окно квестов.
Рис.12
Вкладка «Quest Targets»
Следующая вкладка: Quest Targets. Создаем цель квеста. Это Мерилдор на стадии 30. Правый клик -> New. Появится «Bad Target», неопределенная цель. Выбираем цель в группе Quest Target Data. Выбираем ячейку – BrindleHome02 (именно в ней находится Мерилдор). Выбираем Мерилдора в поле Ref (как видите, он имеет установленную нами ссылку, значит, это именно тот Мерилдор, который нам нужен, а не близнец какой-нибудь).
Существует и другой вариант выбора ссылки, немного проще. Загружаете ячейку с нужным объектом, устанавливаете камеру так, чтобы он был виден. И нажимаете кнопку «Select Reference in Render Window», редактор автоматически переключится на указанное окно и вы сможете выбрать объект, просто ткнув в него мышей (если объект можно выбрать, курсор становится белым, в противном случае - красный. Выбрать можно только устойчивые объекты.) Далее нужно выбрать условие, нам ведь не нужно показывать на Мерилдора на протяжении выполнения всего квеста. Conditions, нажимаем КНОПКУ New. Появится новое условие. Справа от кнопки в списке выбираем функцию «GetStage», эта функция возвращает значение текущей стадии (индекс). Потом щелкаем по кнопке INVALID (бывают и другие подписи, в зависимости от функции, но означают они всегда одно - ОШИБКА) и выбираем параметр функции, наш квест из списка. Теперь нужно определит само условие Comparison. Нам нужно, чтобы показ осуществлялся только на 30-й стадии, значит, выбираем «= =», и в поле Value выставляем 30. Таким образом, получилось условие – «если стадия квеста aaaMyFirstQuest равна тридцати» или иначе «GetStage aaaMyFirstQuest = = 30.00». В других вариантах цель не подходит и не отображается. См. рис 13. Аналогично выполняются условия в диалогах. К ним и переходим.
Рис.14
Тема создана. Нужно ее как-то добавить игроку, иначе она никогда не появится в диалогах, хоть все условия будут тысячу раз истинны. Я не стал оригинальничать и решил добавить ее посредством приветствия «Greeting». Сделайте и Вы так же. Добавляйте тему (как в первом случае), но не создаете новую, а выбираете существующую. GREETING - это и есть всевозможные приветствия, которыми NPC встречают игрока. Как видите, таблица info сейчас пуста - это значит, что нет специальных вариантов для квеста и будут использоваться любые подходящие приветствия. Правым кликом создаем новый вариант приветствия. Я решил не приветствовать игрока, а прямо в лоб просить о помощи. :) В появившемся окне пишите «Помоги мне!». Здесь же можете выставить эмоции, на Ваше усмотрение, я ничего не менял. По завершении - ОК. Ответ создан, вернее приветствие. Это приветствие должно добавить тему для разговора. Делается это следующим образом. В поле Add Topics (находится в правой части) правый клик, Add Topic, и выбираем нужную тему. Конечно же, выбираем свою. Именно поэтому мы создали сначала ее. Теперь в поле Script Result вписываем следующее: «SetStage aaaMyFirstQuest 10» (сие есть старт квеста, а именно, функция SetStage устанавливает квест aaaMyFirstQuest в индекс 10, у нас это начало. Она же добавляет запись в журнал. Запись добавляется только один раз, повторные вызовы функции с этим индексом не добавят записей, а лишь изменят текущий индекс.)
Если не знаешь как, читай. Это условие позволяет использовать данное приветствие только Мерилдору, без этого условия все NPC будут просить о помощи :), что не есть гуд.
Второе условие: GetStage aaaMyFirstQuest < 20.00.
Это условие сужает возможность использования приветствия только до того момента, если стадия квеста меньше 20, (20 уже не пройдет). Зачем так? Поясню. Мерилдор должен просить о помощи лишь если он уже не договорился о ней, либо не получил отказ. В нашем случае это как раз стадия 10. Когда игрок делает запись о том, что встретил, но еще не сделал записи о соглашении или отказе в помощи. Эти стадии у нас имеют индекс от 20, но не меньше 20, именно поэтому при стадии 20 Мерилдор уже не будет просить о помощи, а, например, будет спрашивать, как продвигаются поиски лекарства (Это следующее приветствие). На этом создание варианта приветствия завершены. :) Можете отдохнуть, если хотите.
Следующий, уже упомянутый вариант, должен располагаться ниже предыдущего варианта. Создаем новый вариант щелчком ниже, в свободном поле. (Щелчок на варианте создаст новый вариант, но выше текущего.) С текстом «Ты достал лекарство?» создается он также, как и первый вариант. Но условия немного другие и отсутствуют темы в поле «Add Topics». Ведь, по логике, тема уже добавлена и игрок согласился помочь. Значит, добавлять темы нам не нужно.
Вот условие GetIsID Merildor = = 1.00 - это условие будет практически во всех вариантах тем, т.к. они относятся только к Мерилдору. Второе GetStage aaaMyFirstQuest >= 20.00 и третье GetStage aaaMyFirstQuest < 40.00. Надеюсь, Вам понятно, что второе и третье условия позволяют использовать вариант, только если стадия квеста больше или равна (>=) 20 и меньше (<) 40. Ведь наш квест заключается именно в пределах от 20 до 39. При стадии 40 квест уже завершен, и Мерилдор уже исцелен, поэтому спрашивать про лекарство в этом случае, по меньшей мере, глупо. (А вообще это был бы баг).
Теперь перейдем к третьему варианту. Еще ниже. Текст: «Я благодарен тебе за помощь. Позволь возместить твои убытки. Сколько ты потратил на свиток?» - этими словами Мерилдор будет приветствовать игрока, когда тот его исцелил, и сразу же будет выдаваться варианты ответов. Ответов мы еще не делали, поэтому давайте создадим условия варианта, потом создадим необходимые варианты ответов, и вернемся к этой теме. Условия: GetIsID Merildor = = 1.00 и GetStage aaaMyFirstQuest = = 40.00. Второе условие действительно лишь на стадии 40, когда Мерилдор уже излечен, но еще не отблагодарил игрока. Если Вы сделали все правильно, у Вас должна получиться примерно такая картинка:
Досрочно, если помните.
Условия: GetIsID Merildor == 1.00
И так далее.
Следующий вариант ответа:
«aaaSsarcomaChoice3»
Текст: «Да. Я покупаю.» - Игрок покупает свиток с заклинанием Info «Я знал, что ты возьмешь его. Это довольно редкое заклинание, не испорть его.»
Result Script:
Player.AddItem aaaMedicineForASsarcomaScroll 1
Player.RemoveItem Gold001 240
SetStage aaaMyFirstQuest 30
Этот ответ необходим при покупке свитка.
Первая строка добавляет(AddItem) игроку (Player), вещь (aaaMedicineForASsarcomaScroll) в количестве одной штуки (1).
Вторая строка удаляет (RemoveItem) у игрока (Player) вещь (Gold001 – золото) в количестве 240 (такую цену я определил для свитка, можете вписать свое значение, но оно должно быть в разумных пределах, если Вы хотите написать нормальный квест, а не что-то типа: «Вот моя шняга» :)
Третья строка устанавливает стадию квеста в 30. Единственное условие - это деньги. Игрок может так сказать только если у него есть необходимая сумма. «GetItemCount Gold001 >= 240». Другие условия здесь не нужны. Ведь продать нам его должен маг. (Любой, а не какой-то определенный). Для правильной работы условия поставьте галочку в «Run on Target», это переведет проверку условий на цель, то есть, на игрока. Ведь по умолчанию все условия проверяются на говорящего, а нам не важно, сколько денег у мага, важно, сколько у игрока.
«aaaSsarcomaChoice4»
Текст «Я подумаю над твоим предложением» - отказ от покупки свитка. Info «Только не долго. Вспомни того, для кого ты его покупаешь! Это очень болезненная зараза.»
На этом диалог завершается, и другие параметры не требуются.
«aaaSsarcomaChoice5»
Текст «Я потратил 240 золотых.» - честный ответ Мерилдору о потраченных средствах.
Info «Ты честный человек. И я поступлю по совести. Вот твои деньги. И еще, в знак благодарности прими это кольцо.»
ScriptResult:
Player.AddItem Gold001 240 ; добавляет золото игроку.
Player.AddItem EnchRingFortifyAttrSpeedSilverRuby 1 ; добавляет игроку кольцо.
SetStage aaaMyFirstQuest 50 ; завершает квест стадией 50.
ModDisposition Player 50 ; изменяет отношение к игроку +50 единиц.
Условия:
GetIsID Merildor = = 1.00
GetStage aaaMyFirstQuest = = 40
aaaSsarcomaChoice6
Текст «Я потратил 350 золотых.» - нечестный ответ Мерилдору о потраченных средствах.
Info «350! Мне говорили, что оно стоит 240 золотых. Забирай свои деньги и убирайся!»
ScriptResult:
Player.AddItem Gold001 240 ;добавляет золото игроку.
SetStage aaaMyFirstQuest 60 ; завершает квест стадией 60.
ModDisposition Player -35 ; изменяет отношение к игроку -35 единиц.
Условия:
GetIsID Merildor = = 1.00
GetStage aaaMyFirstQuest = = 40
aaaSsarcomaChoice7
Текст «Я потратил 540 золотых.» - нечестный ответ Мерилдору о потраченных средствах.
Info «540! Мне говорили оно стоит 240 золотых. Забирай свои деньги и убирайся, наглый лжец!»
ScriptResult:
Player.AddItem Gold001 240 ; добавляет золото игроку.
SetStage aaaMyFirstQuest 70 ; завершает квест стадией 70.
ModDisposition Player -54 ; изменяет отношение к игроку -54 единиц.
Условия:
GetIsID Merildor = = 1.00
GetStage aaaMyFirstQuest = = 40
Теперь у нас есть все необходимые варианты ответов. Займемся темой «Болезнь», которую мы создали самой первой.
Создание темы Болезнь
Известным способом создаем новое info (вариант темы) в теме «aaaSsarcomaTopic».
Текст info: «Я болен. Мне трудно передвигаться, мне нужно лекарство. Ты можешь достать его для меня?». После этого игроку должны быть выданы варианты ответов. У нас это «aaaSsarcomaChoice1» и «aaaSsarcomaChoice2». Сделать это можно так же, как мы добавляли тему игроку в приветствии. Но вставляем в поле Choices. См. рис. 16
Рис.17
Приветствие
Теперь пришло время вернуться к приветствию («Я благодарен тебе за помощь. Позволь возместить твои убытки. Сколько ты потратил на свиток?») и добавить в него варианты ответов игрока: «aaaSsarcomaChoice5», «aaaSsarcomaChoice6» и «aaaSsarcomaChoice7».
Условия:
GetIsClass MerchAlchemist = = 1.00 ; делает доступной тему только для алхимиков-продавцов.
GetStage aaaMyFirstQuest < 40
Если Вы все это сделали, позвольте Вас поздравить. С диалогами покончено. Но мы еще не сделали лекарство.
Скрипт для лекарства
Лекарство - это заклинание, которое исцеляет нашу болезнь. Будем делать скрипт-эффект (заклинание, возможности которого определяются сценарием). Приступим к разбору. Скрипты - это отдельная, обширная тема, и здесь я не буду ее разворачивать. Вот скрипт лекарства. Он проверяет, не подвергается ли объект воздействию определенного заклинания (наша болезнь). Если да, то заклинание удаляется, а стадия устанавливается в 40.
scn aaaMedicineForASsarcomaSCRIPT
Begin GameMode
if IsSpellTarget aaaSsarcoma == 1
removeSpell aaaSsarcoma
SetStage aaaMyFirstQuest 40
endif
end
Хочется надеяться, что Вы совладаете со сценариями. Окно редактирования сценариев вызывается нажатием на эту кнопку
Рис.18
Добавляется так же, как и для болезни, но параметры иные. Effect – Script Effect
Range – при касании
Area – 0
Duration – 1
Script – aaaMedicineForASsarcomaSCRIPT
effectName – Излечение саркомы
School – изменение
Visual Effect – Восстановление
И обязательно уберите галочку с Effect is Hostile (эффект враждебен), а то Мерилдор может на Вас кинуться, решив, что Вы его атакуете.
ВНИМАНИЕ: Это обширный, исчерпывающий туториал, детально описывающий каждый элемент процесса создания квеста. Это длительный и утомительный процесс. Но он того стоит.Используя в качестве образца данный туториал, вы свободно сможете создавать квесты, где игроку нужно найти предмет для NPC, и вернуть его за награду.Если следовать этому туториалу буквально, шаг за шагом, можно создать полностью функциональный квест, затрагивающий все грани игрового процесса. Можете менять NPC, предмет, который нужно найти, и/или награду за возвращение этого предмета так, как пожелаете.
Создание квеста – шаг за шагом:
Создание квестового фамильного меча Фарнадо
В Object Window (Окне объектов) раскройте закладку WEAPON.
Затем раскройте закладку "WEAPONS".
Кликните на слове "Iron".
Прокрутите вниз до WeapIronLongsword:
Вот что у нас в итоге получилось:
Затем в поле Quest Name вводим: Меч Варнадо. Это будет название квеста, которое будет отображаться в игре.
Чуть ниже, в графе Priority установите значение 60 (приоритет влияет на очередность выбора диалогов).
Жмите OK.
Размещение меча в игровой локации
Теперь нам нужно поместить меч где-то на просторах игрового мира.
(Для тестирования, я поместил его у стены, позади таверны Скатерть-самобранка (The Feed Bag), куда Варнадо идет есть каждый день после работы.)
Прямо из списка в окне объектов (Object Window) перетаскиваем меч и размещаем его где-нибудь на просторах мира игры (в окне просмотра – Render Window).
Перейдите к мечу, который мы только что разместили в окне просмотра (Render Window).
Двойной клик левой клавишей мыши, чтобы войти в режим его редактирования. Откроется окно настройки копии объекта – окно Reference.
В этом окне найдите и отметьте галочкой окошко Persistent Reference (это позволит работать с этой копией предмета в будущем):
Стадия 10
Выбираем стадию 10, затем правый клик в верхнем поле Log Entry и в появившемся меню выбираем NEW. Появится слово EMPTY.
Теперь кликайте внутри окошка Log Entry, расположенного ниже, и наберите:
"Варнадо попросил меня найти его фамильный меч за вознаграждение."
После этого кликните внутри верхнего окошка Log Entry, чтобы этот текст вступил в силу:
Затем, под Condition Function, в раскрывающемся списке найдите и выберите GetStage.
Теперь, под Function Parameters, кликните на кнопке INVALID и выберите AAitem.
После этого в колонке VALUE установите значение 10:
Перейдите к окошку Topic Text. Это название темы, которое будет отображаться в игре.
Измените MyFamilySword на Мой семейный меч:
Нажмите еще раз кнопку NEW под панелью Conditions.
Справа от этой кнопки расположено окошко Condition Function.
Используйте стрелку, чтобы вызвать раскрывающийся список, и выберите в нем GetStage.
В следующей кнопке справа – Function Parameters – появится надпись INVALID.
Нажмите на кнопку INVALID и в прокручивающемся списке выберите AAitem.
Еще правее, в колонке COMPARISON, прокрутите до символа "меньше чем" ( < ). Выберите его.
Еще правее, измените значение VALUE на 10.
Кликните где-нибудь за пределами поля Conditions, чтобы изменения вступили в силу:
INFO 2
И ВНОВЬ, правый клик на поле INFO, в появившемся меню выбираете NEW. Откроется окно текста для ответа (response text).
Наберите:
"Еще не нашел? Продолжай поиски."
Жмите ОК.
Выделите только что созданное INFO и нажмите на кнопку NEW ниже панели Conditions, слева.
Справа от этой кнопки расположено окошко Condition Function.
Используйте стрелку, чтобы вызвать раскрывающийся список, и выберите в нем GetIsId.
В следующей кнопке справа – Function Parameters – появится надпись INVALID.
Нажмите на кнопку INVALID и в прокручивающемся списке выберите Varnado.
Вновь нажмите на кнопку NEW ниже панели Conditions, слева.
Справа в окошке Condition Function используйте стрелку для раскрытия списка функций и выберите GetStage.
Еще правее, на кнопке Function Parameters, появится надпись INVALID.
Нажмите на эту кнопку и в списке выберите AAitem.
В окошке Value установите значение 10.
Кликните где-нибудь в поле Conditions, чтобы изменения вступили в силу:
Теперь перейдите к окошку Result Script, кликните в нем и наберите:
SetStage AAitem 30
Player.removeitem AAfamilysword 1
Player.additem OrcishBoots 1
Правее нажимаем на кнопку Compile (компилируем скрипт).
Вы можете изменить OrcishBoots на Editor ID того предмета, который вы хотите использовать в качестве награды.
INFO 4
Вновь правый клик в поле INFO и в появившемся окне выбираете NEW. Откроется окно текста для ответа (response text).
Введите:
"Спасибо за возвращение моего фамильного меча. "
Жмите ОК.
Выделите только что созданное INFO и нажмите на кнопку NEW ниже панели Conditions, слева.
Справа от этой кнопки расположено окошко Condition Function.
Используйте стрелку, чтобы вызвать раскрывающийся список, и выберите в нем GetIsId.
В следующей кнопке справа – Function Parameters – появится надпись INVALID.
Нажмите на кнопку INVALID и в прокручивающемся списке выберите Varnado.
Еще раз нажмите на кнопку NEW ниже панели Conditions, слева.
Справа в окошке Condition Function используйте стрелку для раскрытия списка функций и выберите GetStage.
В следующей кнопке справа – Function Parameters – появится надпись INVALID.
Нажмите на кнопку INVALID и в прокручивающемся списке выберите AAitem.
Правее, измените значение VALUE на 30.
Кликните где-нибудь в поле Conditions, чтобы изменения вступили в силу.
Теперь перейдите к окошку Result Script и наберите в нем:
Stopquest AAitem
Правее нажимаем на кнопку Compile (компилируем скрипт).
OK. Закройте редактор квестов.
Фильтрация диалогов
В главном меню перейдите Character -> Filtered Dialogue.
Вверху слева, в окошке Filter выберите Varnado.
Перейдите на закладку TOPICS:
Правый клик на только что созданном нами INFO, и выберите Move To Quest:
Ниже, в секции Quest Target Data, найдите окошко Cell, и в раскрывающемся списке выберите ячейку, в которой вы поместили AAfamilysword или свой квестовый предмет.
Еще ниже найдите окошко Ref, и в раскрывающемся списке выберите свой квестовый предмет - AAfamilysword:
И ЕЩЕ РАЗ правый клик в колонке Target Ref и в появившемся меню выберите NEW. В списке появится BadTarget.
Выберите BadTarget, в секции Quest Target Data найдите окошко Cell и в раскрывающемся списке выберите ICMarketDistrictTheBestDefense.
Затем, ниже, в окошке Ref, выберите в раскрывающемся списке "Varnado" "VarnadoRef".
Теперь, в нижнем левом углу, под Conditions, нажмите на кнопку NEW.
Справа от этой кнопки расположено окно Condition Function.
В раскрывающемся списке выберите GetStage.
Затем кликните на кнопке INVALID ниже Function Parameters и выберите AAitem.
Затем, справа, в колонке VALUE, установите значение 15.
Кликните где-нибудь в поле Conditions, чтобы изменения вступили в силу.
Закрывайте окно редактирования квеста и сохраняйте плагин.
Вот и все. Вы справились с этим!
Тестирование в игре
Отметьте ваш плагин в лаунчере и запускайте игру.
Идите в «Лучшую защиту» в торговом районе Имперской столицы и поговорите с Варнадо, чтобы получить квест.
Или, идите сначала к фамильному мечу, и Варнадо все равно отблагодарит вас и предложит награду за найденный меч.
Я надеюсь, что этот туториал в какой-то степени поможет вам всем. Я знаю, что это было немного утомительно и очень обширно, но я хотел сделать что-то для полных новичков, чтобы они могли что-то сделать, пусть даже следуя инструкциям буквально шаг за шагом.
Удачи и отличной игры!
1345 Прочтений • [Учебник по созданию квестов и диалогов (by Wiki) (#2327)] [16.05.2012] [Комментариев: 0]