Difference between revisions of "Bethesda Tutorial Quest Objectives/ru"

m
no edit summary
imported>Vitamant
imported>Vitamant
m
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{PageTitle|Цели задания}}
{{PageTitle|Задачи}}


{{RussianPage|t}}
{{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>Ты узнаешь:
* Как создавать цели задания и что такое псевдонимы
* Как создавать задачи и что такое псевдонимы.
* Как изменять активность целей
* Как изменять активность задач.
* Как завершить квест
* Как завершить квест.
* Как создать дополнительные стадии квеста
* Немного о дополнительных возможностях стадий квеста.


=Objectives=
=Задачи=
When a player goes through a quest in Skyrim, they're able to see the quest in their menu, see their current objective, and get an idea of where they need to go for the next part of the story.  
В процессе выполнения квестов, игроки могут заглянуть в журнал, чтобы определиться, куда им нужно идти и что сделать, чтобы завершить текущую стадию задания. Для этого и существуют задачи.


Our first step in making objectives is setting up their targets, which means our first dive into the world of Aliases.  
И первым шагом на пути к ним, будет определение цели и погружение в удивительный мир ''Псевдонимов''.


=Псевдонимы=
Псевдонимы - это своего рода участники нашей истории. Различные существа, места, предметы, которые будут играть какую-либо роль в задании. Каждый псевдоним указывает на конкретную ссылку или место в игровом мире. В нашем случае, своими псевдонимами обзаведутся: квестодатель Бенду, вор и амулет.


=Aliases=
Вернемся к нашему заданию. Открой окно квеста и перейди на вкладку {{ulink|Quest_Alias_Tab|Quest Aliases}}. Посередине ты увидишь большую таблицу. Щелкни ПКМ по ней и выбери "New Reference Alias", чтобы открыть еще большее окошко. К счастью, большая часть элементов этого окна нас не интересует. О ней ты прочитаешь позже, в {{ulink|Bethesda_Tutorial_Quest_Aliases|посвященной псевдонимам статье}}).
You can think of Aliases as the quest defining roles that various people and places will play in the course of its story. Each alias points to a specific reference or place in the game world. For our example quest, these roles include Bendu, the thief, and the amulet. Each of these has to get defined in a slightly different way.  


Open up your quest again and this time go over to the [[Quest_Alias_Tab|Quest Aliases tab]]. It's pretty much a big empty table at this point. Right-click in the table and select "New Reference Alias" to open up a large intimidating window. Thankfully we'll be ignoring almost all of it for now (most of this functionality will be explained later in [[Bethesda_Tutorial_Quest_Aliases|the tutorial devoted to aliases]]).
Напечатай в поле "Alias Name" имя "Bendu". Ниже, в группе Fill Type, выбери "Unique Actor" и из списка - "GSQBenduOlo". В итоге окно должно выглядеть так:
 
Fill in "Bendu" for the Alias Name field at the top, then check the "Unique Actor" radio button and select "GSQBenduOlo" from the pulldown menu it enables. When you're done, the window should look like this:  


[[Image:FilledFirstAliasWindow.png|600px]]
[[Image:FilledFirstAliasWindow.png|600px]]


{{WarningBox|If you cannot find "GSQBenduOlo" on the list, then go back to his base object properties and check if he has the Unique flag on. The list of Unique Actors will show only actors with "Unique" flag.}}
{{WarningBox|Если "GSQBenduOlo" отсутствует в выпадающем списке (а ID твоего Бенду именно такой), значит ты забыл пометить последнего флажком "Unique".}}


Hit OK to close this window. Right-click and select "New Reference Alias" again to open up a fresh new alias window. Put "Thief" for the Alias Name. Because the thief is not a unique actor (since it's created from a template), we have to use the Specific Reference fill type this time. Click the "Specific Reference" radio button, and click the large "Select Forced Reference" button to its right. We now have two ways of choosing the reference:
Щелкни по кнопке "ОК", чтобы закрыть окно. Теперь добавь псевдоним вору, назови его "Thief". Вор не является уникальным персонажем (поскольку создан по шаблону), поэтому используй тип Specific Reference. Щелкни по большой кнопке "Select Forced Reference" справа от выбранного режима. Есть два способа указать на ссылку:
# Select "ReachwindEyrie01" from the Cell dropdown, and then "GSQThief" from the Ref dropdown.  
# Выбрать "ReachwindEyrie01" в списке ячеек (Cell) и "GSQThief" в списке ссылок (Ref).  
# If you have Reachwind Eyrie loaded and visible in your render window, you can click the "Select Reference in Render Window" to turn your mouse pointer into a target. Double-click on the big green M to select it.  
# Или, если Reachwind Eyrie загружен и отображается в окне визуализации, ты можешь щелкнуть по кнопке "Select Reference in Render Window". В этом случае курсор примет форму мишени. После чего дважды щелкни ЛКМ по зеленой букве M, обозначающей нашего вора, чтобы выбрать его (или ПКМ для отмены).


Either way, click OK in that window and then the alias window to finish making our second alias.  
Каким бы путем ты не пошел, в итоге нажми кнопку "ОК" в этом окне и окне псевдонимов.


{{Template:InDepth|We could, of course, also use a specific reference to point to Bendu instead of choosing him from the Unique Actor list. For some rather complicated reasons, it's more memory efficient to use the Unique Actor type than the specific reference, when possible.}}
{{InDepth|Точно также мы могли бы выбрать и старину Бенду, вместо того, чтобы выбирать его из списка Unique Actor. Однако, по некоторым причинам, эффективнее использовать тип  Unique Actor, если это возможно.}}


Now it comes time to make our third alias (for the amulet), but this one is tricky. Only actors can be unique, so the Unique Actor type won't work. And we can't point to it as a specific reference because it only exists in the inventory of our thief. So what we'll do is have the alias itself create its own reference.  
Мы добрались до третьего псевдонима (для амулета), но тут есть свои особенности. Уникальными могут быть только персонажи. А Unique Actor конечно же не будет работать с предметами. И воспользоваться прямыми ссылками мы не можем, так как единственный экземпляр амулета находится в рюкзаке у вора. Так что попросим псевдоним самостоятельно создать ссылку на объект.


Create a new reference alias one more time. Give it the name "Amulet" and click the radio button for "Create Reference to Object" under Fill Type. Moving from left to right, then we want to:
Как и прежде создай новый псевдоним. Назови его "Amulet" и измени тип на "Create Reference to Object". Идем слева направо:
* Select "GSQAmulet" from the first pulldown menu.  
* Выбираем "GSQAmulet" из списка - прототип нашего амулета.
* Ignore the Level/Difficulty menu (since we aren't making an actor, there's no notion of the object's difficulty).
* Уровень сложности оставляем без изменений (поскольку мы имеем дело с предметом, а не персонажем, он ни на что не влияет).
* Click the radio button for "Create '''In'''"
* Изменяем режим на "Create '''In'''"
* Select Thief from the final pulldown.  
* Выбираем Thief из последнего списка.


[[Image:AmuletAlias.png]]
[[Image:AmuletAlias.png]]


As you might imagine, this will create a new reference to the amulet in the thief's inventory when the quest begins (at the start of the game). Right now this would give the thief ''two'' copies of the amulet, so open up GSQThief and remove the amulet from its inventory.
Как ты можешь догадаться, мы создали новую ссылку на амулет и поместили ее в инвентарь вора... Правильно, там теперь два амулета. Открываем GSQThief и удаляем амулет из инвентаря.


=Creating Objectives=
=Создание задач=
Now move over to the Quest Objectives tab in your quest window. This is where we'll actually set up the objectives as the player sees them.  
Снова открываем окно квеста и идем на вкладку Quest Objectives. Вот здесь и создаются видимые игроку цели задания.


Each objective has an index (a number we'll use to refer to it), text that will be displayed to the player, and a list of targets that will get arrows placed on them in the player's map and in-game interface.  
У каждой задачи есть индекс (номер, по которому на нее можно сослаться); текст, демонстрируемый игроку; и список целей, на которые будут указывать стрелки на компасе, в игре.


To make a new objective, right-click in the table at the top of the window and select "New" from the menu. In the "Objective Data" area below there, change the Index value to "10" and make the Display Text say "Kill the thief."
Что бы создать новую задачу щелкни ПКМ по верхней таблице и выбери "New" из меню. В группе "Quest Objective Data" под таблицей измени индекс на 10 и отображаемый текст на "Убить вора."


{{Template:InDepth|Generally, we try to match up the objective index number with stages where you would want to see that objective. For more complicated quests, things can get kind of wooly, but for straightforward ones, as we'll see, this makes things a lot easier to follow.}}
{{InDepth|Обычно, индекс задачи задают такой же, как и индекс стадии квеста, которой она соответствует. В больших и сложных квестах это не всегда удобно, но в нашем случае, как мы скоро увидим, это существенно упростит жизнь.}}


Finally, in the table below the Index and Display Text fields, right-click and select "New" to create a new quest target. This creates a big scary "NO TARGET" until you select something from the "Target Alias" pulldown below. In this list, you'll see all the aliases we defined earlier. Choose "Thief," and we can move on. (The "NO TARGET" will remain until we click away on something else.)
Наконец, в таблице ниже щелкаем ПКМ и выбираем "New", чтобы задать цель квеста. Появится новая строка с большим и страшным "NO TARGET" в первой колонке. В списке "Target Alias", чуть ниже, выбери "Thief". (Страшная надпись изменится только после того, как ты щелкнешь куда-нибудь еще [н.п. по той же самой таблице])


Now make another objective:
Теперь создадим другую задачу:
* '''Index:''' 20
* '''Index:''' 20
* '''Display Text:''' Retrieve Bendu Olo's amulet.
* '''Display Text:''' Добудьте амулет Бенду Оло
* '''Target Alias:''' Amulet
* '''Target Alias:''' Amulet


And one more:
И еще одну:
* '''Index:''' 30
* '''Index:''' 30
* '''Display Text:''' Return Bendu Olo's amulet.
* '''Display Text:''' Верните амулет Бенду Оло.
* '''Target Alias:''' Bendu
* '''Target Alias:''' Bendu


Your window should look something like this when we're done.
В итоге, окно должно выглядеть так:


[[Image:ObjectiveWindowFilled.png|600px]]
[[Image:ObjectiveWindowFilled.png|600px]]


Now we have our objectives made, we just have to tell the game when to show them.
Теперь, когда задачи определены, нам осталось "сказать" игре, когда она должна их отобразить.


=Setting Objectives=
=Установка задач=


Remember all of those <code>SetObjectiveDisplayed()</code>'s I told you ignore? This is where they come into play. Should the following NOT work for some odd reason, those are a safety net. They will do what this is supposed to do. I suggest doing both to have all the bases covered.
Помнишь ту страшную функцию <code>SetObjectiveDisplayed()</code>? Вот тут то она и используется. Если по какой-либо причине первая функция не вызовет обновление задач, то эта гарантирует, что они все-таки будут обновлены. Советую указывать обе. (''а я советую корректно настраивать стадии квеста (см.ниже) - прим.переводчика'')


Go back to the Quest Stages tab. We're going to add some logic in here as the quest advances.  
Вернись на вкладку Quest Stages. Сейчас мы усложним квест, добавив в него немного логики.


Click on stage 10 in the list on the left. In order to add script logic or a log entry to a quest stage, it needs to have at least one "[[Quest_Stages_Tab|quest stage item]]", so right-click in the table that says "Log Entry" at the top and select "New."  
Для того чтобы добавить скрипты или запись в журнал, необходимо иметь хотя бы один элемент в таблице "Log Entry" (справа), соответствующий нужной стадии. Выбери 10ую стадию, щелкни ПКМ по таблице "Log Entry" и выбери "New."  


Log entries are the bits of text that will appear in the player's journal. Only the most recent log entry will be visible, so you can use this to update the story of the quest as it changes. Down in the "Log Entry" area, put the following:
Записанные здесь фрагменты текста будут появляться в журнале игрока. Отображаться будет только последняя запись, поэтому можешь использовать его для обновления задач, когда это необходимо. В поле ввода "Log Entry" запиши следующее:


<blockquote><i>I've met Bendu Olo, who had a precious amulet stolen. He offered twice its value as a reward, since he has a sentimental attachment to it.</i></blockquote>
<blockquote><i>Я встретил Бенду Оло. Он рассказал, что у него украли амулет. Он обещает заплатить двойную цену тому, кто вернет ему пропажу.</i></blockquote>


Click over to the text field on the right (in the Papyrus fragment tab). Doing so will pop up the spell-check window, complaining that "Bendu" and "Olo" are not proper words. Ignore both "mistakes" and we'll add the script logic.  
Щелкни в поле справа (на вкладке Papyrus Fragment).


In the Papyrus area, put: <code>SetObjectiveDisplayed(10)</code>. Press the "Compile" button to make sure you did it right. As you might guess, this set the quest's current objective to 10, and give the player the appropriate quest targets. Because it's the first objective shown for this quest, it will also cause the "STARTED" banner to be shown to the player.  
Вводи: <code>SetObjectiveDisplayed(10)</code>. Нажми кнопку "Compile", чтобы убедиться, что все введено корректно. Как ты, наверное, догадался, это изменит текущую задачу на 10, поставив перед игроком новые цели. Поскольку, это первая задача, отображаемая в квесте, это вызовет всплывающее сообщение о том, что задание начато.


[[Image:SettingObjective10.png|600px]]
[[Image:SettingObjective10.png|600px]]


{{Template:InDepth|You might wonder why the extra step of creating the "stage item" is necessary - in more complicated quests, you can have multiple stage items, some or all of which use conditions to control whether or not they happen (for example, to allow variant log entries depending on a choice the player had made earlier in the quest). In this case, our quest is simple enough to only need one stage item in each stage.}}
{{InDepth|Ты спросишь - зачем же нужна эта таблица, если мы записали в ней всего одну строчку? Дело в том, что в более сложных квестах, может быть задействовано несколько таких строк, часть из которых (или все), связаны с определенными условиями, определяющими - отобразятся они в журнале или нет. (н.п. ветвление квеста в зависимости от того, как поступил игрок на предыдущих стадиях). В нашем случае всё просто и линейно, поэтому нам не нужны ни условия, ни дополнительные элементы.}}


Now select stage 20 from the list on the left, and create a new stage item for it. Remember, stage 20 is after we've killed the thief but before we've gotten the amulet. We have two things to do here -- tell the player that the previous objective (to kill the thief) has been accomplished, and set their next goal. We do that with two lines of script:  
Теперь выбери стадию 20 из списка слева и создай новую строку справа. Как ты помнишь, эта стадия наступает, когда игрок убивает вора, но еще не взял амулет. Что мы хотим? Хотим мы сказать игроку две вещи: что предыдущая цель (убить вора) успешно выполнена, и что надо порыться в останках усопшего. Для этого нам потребуется всего две строчки скрипта:


<source lang="papyrus">
<source lang="papyrus">
SetObjectiveCompleted(10)
SetObjectiveCompleted(10) ; Успешно завершаем 10ую стадию
SetObjectiveDisplayed(20)
SetObjectiveDisplayed(20) ; Отображаем 20ую
</source>
</source>


{{Template:InDepth|Note that "Completed" and "Displayed" are two different flags -- you can complete an objective that the player has never seen.}}
{{InDepth|Ты ведь внимательно на них посмотрел и заметил различия, верно? Одна функция заканчивается на "Completed" (завершена), другая на "Displayed" (отображена) - будь внимателен, а не то завершишь задачу, которую игрок еще в глаза не видел!}}


We can leave the journal entry here blank, because the overall story of the quest hasn't changed.
Log Entry можно оставить пустым, так как общий сюжет квеста не изменился.


Do the same thing for stage 30, except this time your logic should be completing objective 20 and displaying objective 30.  
Сделай тоже самое для стадии 30, с той лишь разницей, что завершенной нужно сделать задачу 20, а отобразить - 30.


Finally, in stage 40, we just need to complete objective 30. You should also check the "Complete Quest" checkbox below the Log Entry text field, so that the "COMPLETED" banner will be shown when stage 40 is set. (This will also move the quest to the inactive portion of the player's journal, keeping it somewhat tidy.)
Наконец, в стадии 40 заверши задачу 30. Кроме того, отметь флажок "Complete Quest" под полем "Log Entry". Теперь, достигнув последней стадии, появится сообщение о том, что квест успешно завершен. (А задание переместится в соответствующий раздел журнала, дабы не мозолило глаза.)


The final journal entry should sum up what happened in the quest, since it's now in the past. For example:
Последняя запись в журнале должна подвести итог нашего приключения. Например так:


<blockquote><i>I met Bendu Olo and was rewarded handsomely for retrieving his stolen amulet.</i></blockquote>
<blockquote><i>Мой новый знакомый, Бенду Оло, сторицей вознаградил меня за возвращение похищенного амулета.</i></blockquote>


=Trying it out=
=Проверка результата=
Now when you progress through the quest, your progress will be visible in your journal and you will have quest targets to the various plot points.  
Теперь, по мере выполнения квеста, ты будешь видеть, как изменяются цели в журнале заданий.


[[Image:ObjectivesInGame.png|500px]]
[[Image:ObjectivesInGame.png|500px]]
Anonymous user