Difference between revisions of "Bethesda Tutorial Quest Objectives/ru"
Bethesda Tutorial Quest Objectives/ru (edit)
Revision as of 15:50, 13 April 2012
, 15:50, 13 April 2012no edit summary
imported>Vitamant |
imported>Vitamant m |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{PageTitle| | {{PageTitle|Задачи}} | ||
{{RussianPage| | {{RussianPage|e}} | ||
{{Tutorial Index/ru | {{Tutorial Index/ru | ||
|titlename= | |titlename=Задачи | ||
|Prev=Bethesda_Tutorial_Basic_Quest_Scripting/ru | |Prev=Bethesda_Tutorial_Basic_Quest_Scripting/ru | ||
|Next=Bethesda_Tutorial_Quest_Loose_Ends/ru | |Next=Bethesda_Tutorial_Quest_Loose_Ends/ru | ||
Line 11: | Line 11: | ||
}} | }} | ||
= | =Краткий обзор= | ||
В этой главе ты научишься задавать цели задания и пользоваться маркерами, ведя беспомощных игроков по огромному миру игры. Заодно, разберешься что делать после завершения квеста, чтобы он не висел в списке текущих заданий до конца времен. | В этой главе ты научишься задавать цели задания и пользоваться маркерами, ведя беспомощных игроков по огромному миру игры. Заодно, разберешься что делать после завершения квеста, чтобы он не висел в списке текущих заданий до конца времен. | ||
<br><br>Ты узнаешь: | <br><br>Ты узнаешь: | ||
* Как создавать | * Как создавать задачи и что такое псевдонимы. | ||
* Как изменять активность | * Как изменять активность задач. | ||
* Как завершить квест | * Как завершить квест. | ||
* | * Немного о дополнительных возможностях стадий квеста. | ||
= | =Задачи= | ||
В процессе выполнения | В процессе выполнения квестов, игроки могут заглянуть в журнал, чтобы определиться, куда им нужно идти и что сделать, чтобы завершить текущую стадию задания. Для этого и существуют задачи. | ||
И первым шагом на пути к | И первым шагом на пути к ним, будет определение цели и погружение в удивительный мир ''Псевдонимов''. | ||
=Псевдонимы= | =Псевдонимы= | ||
Псевдонимы - это своего рода участники нашей истории. Различные существа, места, предметы, которые будут играть какую-либо роль в задании. Каждый псевдоним указывает на конкретную ссылку или место в игровом мире. В нашем случае, своими псевдонимами обзаведутся: квестодатель Бенду, вор и амулет. | Псевдонимы - это своего рода участники нашей истории. Различные существа, места, предметы, которые будут играть какую-либо роль в задании. Каждый псевдоним указывает на конкретную ссылку или место в игровом мире. В нашем случае, своими псевдонимами обзаведутся: квестодатель Бенду, вор и амулет. | ||
Вернемся к | Вернемся к нашему заданию. Открой окно квеста и перейди на вкладку {{ulink|Quest_Alias_Tab|Quest Aliases}}. Посередине ты увидишь большую таблицу. Щелкни ПКМ по ней и выбери "New Reference Alias", чтобы открыть еще большее окошко. К счастью, большая часть элементов этого окна нас не интересует. О ней ты прочитаешь позже, в {{ulink|Bethesda_Tutorial_Quest_Aliases|посвященной псевдонимам статье}}). | ||
Напечатай в поле "Alias Name" имя "Bendu". Ниже, в группе Fill Type, выбери "Unique Actor" и из списка - "GSQBenduOlo". В итоге окно должно выглядеть так: | Напечатай в поле "Alias Name" имя "Bendu". Ниже, в группе Fill Type, выбери "Unique Actor" и из списка - "GSQBenduOlo". В итоге окно должно выглядеть так: | ||
Line 46: | Line 46: | ||
Как и прежде создай новый псевдоним. Назови его "Amulet" и измени тип на "Create Reference to Object". Идем слева направо: | Как и прежде создай новый псевдоним. Назови его "Amulet" и измени тип на "Create Reference to Object". Идем слева направо: | ||
* Выбираем "GSQAmulet" из списка - | * Выбираем "GSQAmulet" из списка - прототип нашего амулета. | ||
* Уровень сложности оставляем без изменений (поскольку мы имеем дело с предметом, а не персонажем, он ни на что не | * Уровень сложности оставляем без изменений (поскольку мы имеем дело с предметом, а не персонажем, он ни на что не влияет). | ||
* Изменяем режим на "Create '''In'''" | * Изменяем режим на "Create '''In'''" | ||
* Выбираем Thief из последнего списка. | * Выбираем Thief из последнего списка. | ||
Line 55: | Line 55: | ||
Как ты можешь догадаться, мы создали новую ссылку на амулет и поместили ее в инвентарь вора... Правильно, там теперь два амулета. Открываем GSQThief и удаляем амулет из инвентаря. | Как ты можешь догадаться, мы создали новую ссылку на амулет и поместили ее в инвентарь вора... Правильно, там теперь два амулета. Открываем GSQThief и удаляем амулет из инвентаря. | ||
=Создание | =Создание задач= | ||
Снова открываем окно квеста и идем на вкладку Quest Objectives. Вот здесь и создаются видимые игроку цели задания. | Снова открываем окно квеста и идем на вкладку Quest Objectives. Вот здесь и создаются видимые игроку цели задания. | ||
У | У каждой задачи есть индекс (номер, по которому на нее можно сослаться); текст, демонстрируемый игроку; и список целей, на которые будут указывать стрелки на компасе, в игре. | ||
Что бы создать | Что бы создать новую задачу щелкни ПКМ по верхней таблице и выбери "New" из меню. В группе "Quest Objective Data" под таблицей измени индекс на 10 и отображаемый текст на "Убить вора." | ||
{{InDepth|Обычно, индекс | {{InDepth|Обычно, индекс задачи задают такой же, как и индекс стадии квеста, которой она соответствует. В больших и сложных квестах это не всегда удобно, но в нашем случае, как мы скоро увидим, это существенно упростит жизнь.}} | ||
Наконец, в таблице ниже щелкаем ПКМ и выбираем "New", чтобы задать цель квеста. Появится новая строка с большим и страшным "NO TARGET" в первой колонке. В списке "Target Alias", чуть ниже, выбери "Thief". (Страшная надпись изменится только после того, как ты щелкнешь | Наконец, в таблице ниже щелкаем ПКМ и выбираем "New", чтобы задать цель квеста. Появится новая строка с большим и страшным "NO TARGET" в первой колонке. В списке "Target Alias", чуть ниже, выбери "Thief". (Страшная надпись изменится только после того, как ты щелкнешь куда-нибудь еще [н.п. по той же самой таблице]) | ||
Теперь | Теперь создадим другую задачу: | ||
* '''Index:''' 20 | * '''Index:''' 20 | ||
* '''Display Text:''' Добудьте амулет Бенду Оло | * '''Display Text:''' Добудьте амулет Бенду Оло | ||
* '''Target Alias:''' Amulet | * '''Target Alias:''' Amulet | ||
И еще | И еще одну: | ||
* '''Index:''' 30 | * '''Index:''' 30 | ||
* '''Display Text:''' Верните амулет Бенду Оло. | * '''Display Text:''' Верните амулет Бенду Оло. | ||
Line 80: | Line 80: | ||
[[Image:ObjectiveWindowFilled.png|600px]] | [[Image:ObjectiveWindowFilled.png|600px]] | ||
Теперь, когда | Теперь, когда задачи определены, нам осталось "сказать" игре, когда она должна их отобразить. | ||
=Установка | =Установка задач= | ||
Помнишь ту страшную функцию <code>SetObjectiveDisplayed()</code>? Вот тут то она | Помнишь ту страшную функцию <code>SetObjectiveDisplayed()</code>? Вот тут то она и используется. Если по какой-либо причине первая функция не вызовет обновление задач, то эта гарантирует, что они все-таки будут обновлены. Советую указывать обе. (''а я советую корректно настраивать стадии квеста (см.ниже) - прим.переводчика'') | ||
Вернись на вкладку Quest Stages. Сейчас мы усложним квест, добавив в него немного логики. | Вернись на вкладку Quest Stages. Сейчас мы усложним квест, добавив в него немного логики. | ||
Для того чтобы добавить скрипты или запись в журнал, необходимо иметь хотя бы один элемент в таблице "Log Entry" (справа), соответствующий нужной стадии. Выбери 10ую стадию, щелкни ПКМ по таблице "Log Entry" и выбери "New." | |||
Записанные здесь фрагменты текста будут появляться в журнале игрока. Отображаться будет только последняя запись, поэтому можешь использовать его для обновления задач, когда это необходимо. В поле ввода "Log Entry" запиши следующее: | |||
<blockquote><i> | <blockquote><i>Я встретил Бенду Оло. Он рассказал, что у него украли амулет. Он обещает заплатить двойную цену тому, кто вернет ему пропажу.</i></blockquote> | ||
Щелкни в поле справа (на вкладке Papyrus Fragment). | |||
Вводи: <code>SetObjectiveDisplayed(10)</code>. Нажми кнопку "Compile", чтобы убедиться, что все введено корректно. Как ты, наверное, догадался, это изменит текущую задачу на 10, поставив перед игроком новые цели. Поскольку, это первая задача, отображаемая в квесте, это вызовет всплывающее сообщение о том, что задание начато. | |||
[[Image:SettingObjective10.png|600px]] | [[Image:SettingObjective10.png|600px]] | ||
{{InDepth| | {{InDepth|Ты спросишь - зачем же нужна эта таблица, если мы записали в ней всего одну строчку? Дело в том, что в более сложных квестах, может быть задействовано несколько таких строк, часть из которых (или все), связаны с определенными условиями, определяющими - отобразятся они в журнале или нет. (н.п. ветвление квеста в зависимости от того, как поступил игрок на предыдущих стадиях). В нашем случае всё просто и линейно, поэтому нам не нужны ни условия, ни дополнительные элементы.}} | ||
Теперь выбери стадию 20 из списка слева и создай новую строку справа. Как ты помнишь, эта стадия наступает, когда игрок убивает вора, но еще не взял амулет. Что мы хотим? Хотим мы сказать игроку две вещи: что предыдущая цель (убить вора) успешно выполнена, и что надо порыться в останках усопшего. Для этого нам потребуется всего две строчки скрипта: | |||
<source lang="papyrus"> | <source lang="papyrus"> | ||
SetObjectiveCompleted(10) | SetObjectiveCompleted(10) ; Успешно завершаем 10ую стадию | ||
SetObjectiveDisplayed(20) | SetObjectiveDisplayed(20) ; Отображаем 20ую | ||
</source> | </source> | ||
{{ | {{InDepth|Ты ведь внимательно на них посмотрел и заметил различия, верно? Одна функция заканчивается на "Completed" (завершена), другая на "Displayed" (отображена) - будь внимателен, а не то завершишь задачу, которую игрок еще в глаза не видел!}} | ||
Log Entry можно оставить пустым, так как общий сюжет квеста не изменился. | |||
Сделай тоже самое для стадии 30, с той лишь разницей, что завершенной нужно сделать задачу 20, а отобразить - 30. | |||
Наконец, в стадии 40 заверши задачу 30. Кроме того, отметь флажок "Complete Quest" под полем "Log Entry". Теперь, достигнув последней стадии, появится сообщение о том, что квест успешно завершен. (А задание переместится в соответствующий раздел журнала, дабы не мозолило глаза.) | |||
Последняя запись в журнале должна подвести итог нашего приключения. Например так: | |||
<blockquote><i> | <blockquote><i>Мой новый знакомый, Бенду Оло, сторицей вознаградил меня за возвращение похищенного амулета.</i></blockquote> | ||
=Проверка результата= | =Проверка результата= |