Difference between revisions of "Bethesda Tutorial Quest Loose Ends/ru"

no edit summary
imported>Vitamant
imported>Vitamant
Line 2: Line 2:


{{RussianPage|e}}
{{RussianPage|e}}
{{Inuse/ru}}


{{Tutorial Index/ru
{{Tutorial Index/ru
Line 13: Line 12:


=Краткий обзор=
=Краткий обзор=
Эта глава посвящена "работе напильником" над эпической историей Бенду Оло и его пропавшего амулета.
Эта глава посвящена над ошибками, допущенными при разработке эпической историей Бенду Оло и его пропавшего амулета.
Она завершает данную серию уроков. Предполагается, что ты всему необходимое ты уже освоил ранее. За руку тебя водить уже никто не будет. Если ты что-то забыл - обратись к предыдущим главам.
Она завершает данную серию уроков. Предполагается, что всё необходимое ты уже освоил ранее. Если ты что-то забыл - обратись к предыдущим главам.
<br><br>Итак, что ты узнаешь:
<br><br>Итак, что ты узнаешь:
* Что мы сделали неверно.
* Что мы сделали неверно.
Line 21: Line 20:
=Проблемы=
=Проблемы=
Вот список недоработок, которые приходят на ум:
Вот список недоработок, которые приходят на ум:
# Бэнду может... скоропостижно скончаться... после того, как квест будет принят. Сдать амулет, конечно же. будет уже некому.
# Бэнду может... скоропостижно скончаться... после того, как квест будет принят. Сдать амулет, конечно же, будет уже некому.
# Бэнду рассказал о том, где может скрывать вор, однако место на карте мы не отметили.
# Бэнду рассказал о том, где может скрывать вор, однако место на карте мы не отметили.
# Добыть амулет можно и не убивая вора, просто пошарив у него в карманах. Квест выполнить будет можно, но одна из целей так и будет висеть незавершенной.
# Добыть амулет можно и не убивая вора, просто пошарив у него в карманах. Квест выполнить будет можно, но одна из целей так и будет висеть незавершенной.
Line 34: Line 33:
=Смерть квестодателя=
=Смерть квестодателя=
У нас есть два варианта: мы можем либо отменить квест и убрать подальше от глаз, если Бэнду умрет, или же сделать его бессмертным. Оба варианта имеют свои достоинства и недостатки. Если квестодатель еще обязательно понадобится нам в будущем, то выбор очевиден.
У нас есть два варианта: мы можем либо отменить квест и убрать подальше от глаз, если Бэнду умрет, или же сделать его бессмертным. Оба варианта имеют свои достоинства и недостатки. Если квестодатель еще обязательно понадобится нам в будущем, то выбор очевиден.
{{InDepth|Старайся никогда не делать персонажей бессмертными. Такие персонажи нарушают баланс игрового мира и моментально разрушают атмосферу. Сильного НИП можно сделать еще сильнее, так, чтобы возможность его убить была исключительно гипотетической. Смерть слабого от рук игрока-бандита вполне закономерна. Воскресающее же или в принципе неубиваемое существо вызывает лишь раздражение. (прим. переводчика) }}


==Обработка смерти==
==Обработка смерти==
Ранее ты уже узнал, как пометить квест завершенным. Теперь предстоит сделать тоже самое, только вместо пометки "Выполнен", нужно будет использовать "Провален".
Ранее ты уже узнал, как пометить квест завершенным. Теперь предстоит сделать тоже самое, только вместо пометки "Выполнен", нужно использовать "Провален".


Создай новую стадию квеста с индексом 200. Создай запись в журнале с нижеследующим текстом:
Создай новую стадию квеста с индексом 200. Создай запись в журнале с нижеследующим текстом:
Line 60: Line 57:
Примечание: мы ввели проверку на то, что квест еще не завершен. Было бы нелогично засчитать проваленным однажды выполненный квест.
Примечание: мы ввели проверку на то, что квест еще не завершен. Было бы нелогично засчитать проваленным однажды выполненный квест.


You can auto-fill the GSQ01 property,
Конечно же не забудь создать свойство GSQ01.


==Бессмертный Бэнду==
==Бессмертие==
Альтернатива - сделать Бэнду неубиваемым. Если его здоровье опустится до 0, он не умрет, а упадет без чувств, но очнется, когда бой будет закончен.  
Альтернатива - сделать Бэнду неубиваемым. Если его здоровье опустится до 0, он не умрет, а упадет без чувств, но очнется, когда бой будет закончен.  


Сделать это очень просто. Открой окно персонажа GSQBenduOlo, и поставь флажок "Essential" (существенный). ("Protected" (защищенный) - это похожая опция, которая позволяет убить персонажа только игроку и никому больше.)
Сделать это очень просто. Открой окно персонажа GSQBenduOlo, и поставь флажок "Essential" (существенный). ("Protected" (защищенный) - это похожая опция, которая позволяет убить персонажа только игроку и никому больше.)
{{WarningBox|''Старайся никогда не делать персонажей бессмертными. Такие персонажи нарушают баланс игрового мира и моментально разрушают атмосферу. Сильного НИП можно сделать еще сильнее, так, чтобы возможность его убить была исключительно гипотетической. Смерть слабого от рук игрока-бандита вполне закономерна. Воскресающее же или в принципе неубиваемое существо вызывает лишь раздражение. (прим. переводчика)'' }}


=Маркер на карте=
=Маркер на карте=
Обычно, когда игроку становится о каком-нибудь месте в игре, на карту добавляется маркер, который позволяет легче сориентироваться и добраться до цели. Перейди к ячейке ReachwindEyrieExterior01 в пространстве Tamriel. (Для этого достаточно дважды щелкнуть по желтому маркеру двери в ReachwindEyrie01. [по которому не так-то просто попасть - прим. переводчика]) Прямо под дверью ты увидишь сине-зеленый прямоугольник с большой буквой М.  
Обычно, когда игроку становится известно о каком-нибудь месте в игре, на карту добавляется маркер, который позволяет легче сориентироваться и добраться до цели. Перейди к ячейке ReachwindEyrieExterior01 в пространстве Tamriel. (Для этого достаточно дважды щелкнуть по желтому маркеру двери в ReachwindEyrie01. [''по которому не так-то просто попасть - прим. переводчика'']) Прямо под дверью ты увидишь сине-зеленый прямоугольник с большой буквой М.  


[[File:ReachwindMapMarker.png|600px]]
[[File:ReachwindMapMarker.png|600px]]
Line 97: Line 96:
Не сложно заметить, что когда игрок подберет амулет, квест перейдет в 30ую стадию. Вне зависимости от того был убит вор или нет. А значит, если амулет будет украден, 20ая стадия квеста так и останется незавершенной.
Не сложно заметить, что когда игрок подберет амулет, квест перейдет в 30ую стадию. Вне зависимости от того был убит вор или нет. А значит, если амулет будет украден, 20ая стадия квеста так и останется незавершенной.


Исправить это не сложно. Достаточно немного подкорректировать наш старый скрипт. Выглядел он так:  
Исправить это несложно. Достаточно немного подкорректировать наш старый скрипт. Выглядел он так:  


<source lang="papyrus">
<source lang="papyrus">
Line 119: Line 118:
(Конечно, можно было бы и вовсе убрать стадию "Убить вора" и просто попросить игрока вернуть амулет. С определенной точки зрения это даже правильнее, так как не навязывает игроку какой-либо стиль игры.)
(Конечно, можно было бы и вовсе убрать стадию "Убить вора" и просто попросить игрока вернуть амулет. С определенной точки зрения это даже правильнее, так как не навязывает игроку какой-либо стиль игры.)


Если игрок убьет вора после кражи амулета, он получит дополнительный ориентир. В результате у нас появится две активные задачи.
Если игрок убьет вора после кражи амулета, он получит дополнительный ориентир. В результате у нас появятся две активные задачи.
Эта проблема также легко решается правкой скрипта {{ulink|Bethesda_Tutorial_Basic_Quest_Scripting|вора}}.
Эта проблема также легко решается правкой скрипта {{ulink|Bethesda_Tutorial_Basic_Quest_Scripting|вора}}.
<source lang="papyrus">
<source lang="papyrus">
Line 128: Line 127:
EndEvent
EndEvent
</source>
</source>
Мы добавили проверку, что стадия квеста меньше 30, прежде чем изменить ее на 20. Так что если игрок вначале завладеет амулетом, а затем убьет вора, стадия задания от этого не изменится.
Мы добавили проверку на то, что стадия квеста меньше 30, прежде чем изменить ее на 20. Так что если игрок вначале завладеет амулетом, а затем убьет вора, стадия задания от этого не изменится.


=Не по порядку=
=Не по порядку=
Разумеется, большой проблемой станет посещение Reachwind Eyrie до знакомства с Bendu. В результате будет завершена стадия 20 (но игрок этого не увидит) и отображена 30, с предложением вернуть амулет Бэнду. Большие круглые глаза и недоуменное "А это кто?" тебе гарантированы. И в журнале не появится никаких записей, пока квест не будет завершен.
Разумеется, большой проблемой станет посещение Reachwind Eyrie до знакомства с Бенду. В результате будет завершена стадия 20 (но игрок этого не увидит) и отображена 30, с предложением вернуть амулет Бэнду. Большие круглые глаза и недоуменное "А это кто?" тебе гарантированы. И в журнале не появится никаких записей, пока квест не будет завершен.


И вновь есть несколько возможных решений проблемы:
И вновь есть несколько возможных решений проблемы:
# Вместо инвентаря вора создать предмет в каком-нибудь недоступном хранилище. Когда игрок примет квест, воскресить вора (если необходимо) и перенести в его инвентарь амулет.
# Вместо инвентаря вора создать предмет в каком-нибудь недоступном хранилище. Когда игрок примет квест, воскресить вора (если необходимо) и перенести в его инвентарь амулет.
# Сделать амулет {{ulink|Traits_Tab_-_NPC|трофеем}} (в этом случае предмет не может быть украден и появится в инвентаре вора только после его смерти). При взятии квеста воскресить вора, если это необходимо.
# Сделать амулет {{ulink|Traits_Tab_-_NPC|трофеем}} (в этом случае предмет не может быть украден и появится в инвентаре вора только после его смерти). При взятии квеста воскресить вора, если это необходимо.
#* (The amulet would have to be set as a conditional death item, so it would only get placed there if we were at the appropriate quest stage.)
#* (А самому амулету задать условия, при котором он падает в качестве трофея, завязав его на стадию квеста.)
# Позволить игроку убить вора раньше времени и добавить соответствующую ветвь диалога Бэнду ("Здра... постой-ка! Это же мой амулет!") и завершить квест.  
# Позволить игроку убить вора раньше времени и добавить соответствующую ветвь диалога Бэнду ("Здра... постой-ка! Это же мой амулет!") и завершить квест.  
# Оставить всё как есть, но убрать подальше вора до наступления соответствующей стадии, тогда у игрока не будет возможности убить или обокрасть его раньше времени.
# Оставить всё как есть, но убрать подальше вора до наступления соответствующей стадии, тогда у игрока не будет возможности убить или обокрасть его раньше времени.
Line 166: Line 165:
* <code>Alias_Thief</code> - Это свойство, которое редактор создал и заполнил для нас. Каждый раз, создавая псевдоним, игра создает свойство в квесте под именем Alias_<ИмяПсевдонима>. Если опустить символ подчеркивания, то это довольно удобно.
* <code>Alias_Thief</code> - Это свойство, которое редактор создал и заполнил для нас. Каждый раз, создавая псевдоним, игра создает свойство в квесте под именем Alias_<ИмяПсевдонима>. Если опустить символ подчеркивания, то это довольно удобно.
* <code>GetReference()</code> - Псевдоним - это отнюдь не ссылка, а объект, содержащий разнообразную информацию. Указывать он может на что угодно - существо, стену, часть тела или предмет. Для того чтобы получить ссылку на его объект, используется эта функция.
* <code>GetReference()</code> - Псевдоним - это отнюдь не ссылка, а объект, содержащий разнообразную информацию. Указывать он может на что угодно - существо, стену, часть тела или предмет. Для того чтобы получить ссылку на его объект, используется эта функция.
** (Если тебе что-то не понятно, не отчаивайся - в будущем мы еще вернемся к псевдонимам и изучим их более полно. Можешь просто скопировать и вставить этот код. Ничего страшного.)
** (Если тебе что-то не понятно, не отчаивайся - в будущем мы еще вернемся к псевдонимам и изучим их более подробно. Можешь просто скопировать и вставить этот код. Ничего страшного.)
* <code>Enable()</code> - Разрешает объект.
* <code>Enable()</code> - Возвращает объект в игру.


Теперь, пока игрок не примет квест Бэнду, он не сможет найти вора и добыть амулет.
Теперь, пока игрок не примет квест Бэнду, он не сможет найти вора и добыть амулет.


=Передача амулета Бэнду=
=Передача предметов=
Теперь о передаче предмета от игрока к квестодателю после выполнения квеста. Сделать это, как обычно, очень просто.
Теперь о передаче предмета от игрока к квестодателю после выполнения квеста. Сделать это, как обычно, очень просто.


Line 182: Line 181:
</source>
</source>


Обрати внимание, что если в функцию <code>AddItem</code> передать базовый объект, то новый экземпляр будет создан "из воздуха". Если же мы передаем экземпляр объекта (ссылку на предмет), то он ''переместится'' из прежнего контейнера в новый. В нашем случае - из инвентаря игрока в инвентарь Бэнду Оло. Круто!
Обрати внимание, что если в функцию <code>AddItem</code> передать прототип, то новый экземпляр будет создан "из воздуха". Если же мы передаем экземпляр объекта (ссылку на предмет), то он ''переместится'' из прежнего контейнера в новый. В нашем случае - из инвентаря игрока в инвентарь Бэнду Оло. Классно!


Теперь о деньгах. Золото можно выдать точно также, как и любой другой предмет. Но для этого нам придется создать свойство в скриптах квеста, указывающее на золото. Щелкни по кнопке "Properties" и в списке слева увидишь автоматически созданные свойства псевдонимов. Добавь новое с типом "MiscObject" и именем "Gold001" - заполнится оно автоматически.
Теперь о деньгах. Золото можно выдать точно также, как и любой другой предмет. Но для этого нам придется создать свойство в скриптах квеста, указывающее на золото. Щелкни по кнопке "Properties" и в списке слева увидишь автоматически созданные свойства псевдонимов. Добавь новое с типом "MiscObject" и именем "Gold001" - заполнится оно автоматически.


{{InDepth|Back in the day, we used to have different base objects for different denominations of gold, hence the "001" appended to the name of the single gold piece.}}
{{InDepth|Давным давно мы использовали разные прототипы для различного количества монет. Отсюда "001" в имени - намек на то, что речь идет об одной монете.}}


Свойство есть, осталось добавить эту строчку:
Свойство есть, осталось добавить эту строчку:
Line 202: Line 201:
</source>
</source>


Вот теперь система сама проверит стоимость амулета, умножит ее на 2 и выдаст игроку полученную сумму.  
Вот теперь система сама проверит стоимость амулета, умножит ее на 2 и выдаст игроку требуемую сумму.  


{{InDepth|Обрати внимание - деньги появляются из воздуха, а не из инвентаря Бэнду. Это болезненный, но не смертельный пинок "реализма", чтобы жаждущие скорой наживы игроки не могли получить награду куда более простым и быстрым способом - убив или обокрав квестодателя.}}
{{InDepth|Обрати внимание - деньги появляются из воздуха, а не из инвентаря Бэнду. Это болезненный, но не смертельный пинок "реализма", дабы жаждущие скорой наживы игроки не могли получить награду куда более простым и быстрым способом - убив или обокрав квестодателя.}}


=Выбрасывание амулета=
=Потеря квестовых предметов=
Игроки в Elder Scrolls, как хомячки. Тащат к себе всё, что не приколочено, пока не заработают перегрузку. А после выбрасывают всё, что кажется мусором. Или могут повесить квестовый предмет дома, в качестве украшения. Или пытаются отвлечь сверкающими побрякушками гиганта, удирая от него со всех ног. (Спойлер: не поможет). В общем, причин выкинуть амулет может быть масса, а в результате: квест выполнить невозможно, и где искать амулет непонятно.
Игроки в Elder Scrolls, как хомячки. Тащат к себе всё, что не приколочено, пока не заработают перегрузку. А после выбрасывают всё, что кажется мусором. Или могут повесить квестовый предмет дома, в качестве украшения. Или пытаются отвлечь сверкающими побрякушками гиганта, удирая от него со всех ног (спойлер: не поможет). В общем, причин выкинуть амулет может быть масса, а в результате: квест выполнить невозможно, и где искать амулет непонятно.


Мы конечно же могли бы предусмотреть все возможные ситуации (изменять ориентиры, когда амулет выбрасывается на землю, добавить доброго самаритянина, который вернет игроку пропажу, и т.д.). У нас есть все необходимое для этого - можешь попробовать!
Мы конечно же могли бы предусмотреть все возможные ситуации (изменять задачи, когда амулет выбрасывается на землю, добавить доброго самаритянина, который вернет игроку пропажу, и т.д.). У нас есть все необходимое для этого - можешь попробовать!


Но проще всего сделать амулет квестовым объектом, который игрок не может ни продать, ни выбросить. И пока ты сам не уберешь его из инвентаря скриптом, никуда он от игрока не денется.
Но проще всего сделать амулет квестовым объектом, который игрок не может ни продать, ни выбросить. И пока ты сам не уберешь его из инвентаря скриптом, никуда он от игрока не денется.
Line 222: Line 221:


=Возвращение=
=Возвращение=
Поговорим о поразительно короткой памяти Бэнду и его нежелании признавать игрока при очередной встрече. В нашем случае, Бэнду произносит всего одну фразу, что смотрится не очень-то атмосферно, однако не создает ощутимых неудобств. Но если бы это был длинный диалог с множеством ветвлений, в процессе которого Бэнду вновь и вновь пересказывал бы нам свою трагичную судьбу, то выслушивать его рыдания во второй раз захотели бы немногие. Добавим альтернативную ветвь диалога для тех игроков, которые ответили "Нет", на его просьбу. но после вернулись.
Поговорим о поразительно короткой памяти Бэнду и его нежелании признавать игрока при очередной встрече. В нашем случае, Бэнду произносит всего одну фразу, что смотрится не очень-то атмосферно, однако не создает ощутимых неудобств. Но если бы это был длинный диалог с множеством ветвлений, в процессе которого Бэнду вновь и вновь пересказывал бы нам свою трагическую историю, то выслушивать его рыдания во второй раз захотели бы немногие. Добавим альтернативную ветвь диалога для тех игроков, которые ответили "Нет", на его просьбу, но после вернулись.


Вначале добавь новую стадию заданию - 5 (вот и пригодился оставленный между ними зазор). В журнал ничего добавлять не будем, потому что квест еще не принят. Это исключительно для внутреннего использования.
Вначале добавь новую стадию заданию - 5 (вот и пригодился оставленный между ними зазор). В журнал ничего добавлять не будем, потому что квест еще не принят. Это исключительно для внутреннего использования.
Line 238: Line 237:
Открой верхний монолог и измени условие GetStage с "< 10" на "== 5". Теперь, при первом обращении игрока к этой теме, игра проверит условие первого монолога, обнаружит, что оно неверно (потому что стадия равна 0) и перейдет к следующему, верному, который и отобразит.
Открой верхний монолог и измени условие GetStage с "< 10" на "== 5". Теперь, при первом обращении игрока к этой теме, игра проверит условие первого монолога, обнаружит, что оно неверно (потому что стадия равна 0) и перейдет к следующему, верному, который и отобразит.


Измени соответствующим образом текст фразы, отразив в ней, что игрок уже общался с Бэнду прежде и отказался помочь. Например: "Я уже рассказал вам о своем амулете. Вы все же решили мне помочь?"
Измени соответствующим образом текст реплики, отразив в ней, что игрок уже общался с Бэнду прежде и отказался помочь. Например: "Я уже рассказал вам о своем амулете. Вы все же решили мне помочь?"


Ты также можешь заполнить поле "Prompt" вверху окна. Если в нем содержится текст, он заменит собой текст темы. Используя это, можно писать более живые диалоги.
Ты также можешь заполнить поле "Prompt" вверху окна. Если в нем содержится текст, он заменит собой текст темы. Используя это, можно писать более живые диалоги.


Впиши туда: "Тебе что-нибудь нужно?"
Впиши туда: "Напомни - что тебе было нужно?"


Осталось нанести еще один штрих - в Скайриме у игрока есть возможность в любой момент прервать диалог с НИП. И это может означать какой-либо выбор, на который собеседник должен отреагировать (хорошим примером является уход от разговора со стражей, которая пытается арестовать игрока.)
Осталось нанести еще один штрих - в Скайриме у игрока есть возможность в любой момент прервать диалог с НИП. И это может означать какой-либо выбор, на который собеседник должен отреагировать (хорошим примером является уход от разговора со стражей, которая пытается арестовать игрока.)
Line 267: Line 266:
Это общие фразы для голоса MaleDarkElf, которые более-менее удачно смотрятся в любом диалоге. Правда, если ты решишь озвучить свой мод, то голоса окажутся разные (разве что сумеешь договориться с Китом Царабайкой [для английской версии]).  
Это общие фразы для голоса MaleDarkElf, которые более-менее удачно смотрятся в любом диалоге. Правда, если ты решишь озвучить свой мод, то голоса окажутся разные (разве что сумеешь договориться с Китом Царабайкой [для английской версии]).  


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


Открой окно квеста и перейди на вкладку Misc.
Открой окно квеста и перейди на вкладку Misc.
Line 300: Line 299:
Учти - указывая приветствия или прощания, ты полностью перекрываешь стандартные варианты. В будущем мы еще рассмотрим, как их можно смешивать.
Учти - указывая приветствия или прощания, ты полностью перекрываешь стандартные варианты. В будущем мы еще рассмотрим, как их можно смешивать.


=Хвосты=
=Послесловие=
Надеюсь, теперь ты представляешь какие возможные проблемы могут подстерегать тебя при разработке квестов. Как можно улучшить, сделать задание интереснее, а реплики разнообразнее. Конечно же, это только начало, и многое тебе предстоит познать на собственном опыте. Но основы ты теперь знаешь
Надеюсь, теперь ты представляешь какие возможные проблемы могут подстерегать тебя при разработке квестов. Как можно улучшить, сделать задание интереснее, а реплики разнообразнее. Конечно же, это только начало, и многое тебе предстоит познать на собственном опыте. Но основы ты теперь знаешь.


Будем надеяться, что это поможет тебе начать создавать собственные интересные задания, которые подарят много приятных мгновений игрокам со всего мира!
Будем надеяться, что это поможет тебе начать создавать собственные интересные задания, которые подарят много приятных мгновений игрокам со всего мира!


=Что дальше?=
=Что дальше?=
Это последняя глава в серии [[:Category:BT Основы квестописания|"Основы квестописания"]]. В вики есть еще множество интересных статей, с которыми тебе стоит ознакомиться. Если же ты хочешь незамедлительно продолжить изучение искусства создавать квесты, то стоит ознакомиться со статьей про [[Bethesda_Tutorial_Packages|пакеты]].  
Это последняя глава в серии [[:Category:BT Основы квестописания|"Основы квестописания"]]. В вики есть еще множество интересных статей, с которыми тебе стоит ознакомиться. Если же ты хочешь незамедлительно продолжить изучение искусства создавать квесты, то стоит начать со статьи про [[Bethesda_Tutorial_Packages|пакеты]].  


И удачи во всех начинаниях!
И удачи во всех начинаниях!
Anonymous user