Difference between revisions of "Bethesda Tutorial Quest Aliases/ru"
imported>Vitamant |
imported>Vitamant |
||
Line 1: | Line 1: | ||
{{PageTitle|Псевдонимы}} | {{PageTitle|Псевдонимы}} | ||
{{RussianPage| | {{RussianPage|e}} | ||
{{Tutorial Index/ru | {{Tutorial Index/ru |
Latest revision as of 09:21, 14 April 2012
Псевдонимы
На русском языке Требуется помощь редактора |
Псевдонимы | |
---|---|
Серия: Продвинутое квестописания, глава 2 | |
К другим учебникам | |
Предыдущая статья | Следующая статья |
Краткий обзор[edit | edit source]
Эта глава расскажет немного больше о псевдонимах, и почему же они так важны.
Ты узнаешь:
- Как использовать условные псевдонимы.
- Как правильно построить логику квеста, используя псевдонимы.
Мы делали это неправильно[edit | edit source]
То, что мы делали прежде - неверно.
Ну, не всё, конечно, но логика нашего квеста разнесена по всему мастер-файлу, что очень затрудняет ее изменение (в программировании это называется плохой инкапсуляцией).
Вот смотри: На Бэнду висит скрипт, который переводит стадию квеста GSQ01 на 200, когда тот умирает. Для изолированного случая, все как будто бы нормально. Но представь, что кто-то еще решил использовать Бэнду для своего квеста. Разработчик может изменить наш скрипт, или добавить собственный. Если это нормальный персонаж, без приставки "GSQ" в имени, то будет довольно сложно отследить и узнать, что же стало причиной внезапных багов в нашем квесте.
Та же проблем с амулетом и вором. Конечно, пока мы еще помним - где и что писали, и всё работает корректно, но будет намного лучше, если все будет лежать в одном месте, не правда ли? Вот тут нам и помогут псевдонимы!
Наложение псевдонимов[edit | edit source]
Думайте о псевдонимах, как об участниках нашей истории. Мы используем их, пока квест выполняется. Когда же они нам больше не нужны, мы можем с чистой совестью от них избавиться. При таком подходе, получится чистая, намного лучше организованная структура квеста. Удобная и менее ресурсоемкая.
Открой окно персонажа GSQBenduOlo, которого мы создали ранее. После главы про "хвосты", он обзавелся скриптом обработки собственной смерти или был отмечен флажком "Essential". В любом случае, это избыточная и в большинстве случаев ненужная информация. Спроси себя: если квест GSQ01 не существует, есть ли какие-либо причины следить за дальнейшей судьбой Бенду? Правильный ответ: "нет". Очистим прототип от этого мусора. Убери флажок "Essential", если он стоит, и кнопкой "Remove" удали скрипт, если такой имеется.
А теперь открой псевдоним "Bendu", созданный на этапепостановки задач. В тот раз мы проигнорировали большую часть всевозможных настроек, а теперь присмотримся к ним повнимательнее. Не пугайся раньше времени.
Что уже у нас здесь есть? Много всего. Панель скриптов. Набор пакетов. Инвентарь. Эт кетера. Все эти элементы ты можешь рассматривать, как его собственные. Как только у персонажа появляется псевдоним, тот принимает в себя все его параметры и использует, как свои собственные. Более того - стоит квесту завершиться, как все это бесследно исчезнет.
Это очень важный аспект, поэтому повторим еще раз: Персонаж использует данные псевдонима только, пока выполняется квест, и существует этот псевдоним. Когда квест завершится, персонаж избавится от псевдонима и всех его свойств. Кроме того, псевдоним можно снять и самостоятельно (en), во время выполнения квеста.)
Вот несколько очевидных преимуществ:
- Наши скрипты не будут смешиваться с чужими, и будут относиться только к конкретному квесту, а потому останутся простыми и легко отлаживаемыми.
- Мы можем задать индивидуальные пакеты поведения на время выполнения задания. (Примечание: пакеты псевдонимов будут расположены над обычными пакетами, а значит получат приоритет при выполнении.)
- Мы можем применять заклинания (включая пассивные способности) или задавать фракции персонажам на время выполнения задания, что несомненно повлияет на поведение персонажа (особенно в бою).
- Если квест изменится и мы решим использовать другого персонажа, нам будет необходимо изменить лишь ссылку, к которой привязан псевдоним, и все будут работать. Восхитительно, правда?
Одно маленькое "но": все предметы, которые персонаж получит через свой псевдоним, останутся у него и после отключения псевдонима. Если тебе все же понадобится убрать такие предметы, следует сделать это при помощи скриптов. Помни об этом.
Исправление Бенду[edit | edit source]
Но довольно теории. Давайте изменим псевдоним Бенду так, чтобы вернуть то, что мы только что испортили:
Бессмертие[edit | edit source]
Нет ничего проще - просто отметь флажок "Essential" вверху окна псевдонима и Бэнду будет невозможно убить, пока он обладает этим псевдонимом. Когда квест будет завершен, он вновь станет смертным.
Обработка смерти[edit | edit source]
Что же касается провала квеста в случае смерти нашего квестодателя, то и тут нет ничего сложного. Точно также, как мы писали скрипт для прототипа Бенду, напишем и для его псевдонима. Обрати внимание, что первая строчка изменилась, так как скрипт будет принадлежать уже не персонажу, а псевдониму. Назовем же мы его "GSQQuestgiver" (квестодатель).
Scriptname GSQQuestgiver extends ReferenceAlias
Event OnDeath(Actor akKiller)
if (!GetOwningQuest().IsCompleted())
GetOwningQuest().SetStage(200)
endif
EndEvent
Также заметь, что в этот раз мы не стали устанавливать свойство для связи с квестом. Любой псевдоним (ReferenceAlias) знает, какому квесту принадлежит, и мы можем сослаться на него, вызвав функцию GetOwningQuest()
.
Однако, это можно сделать и иным способом, без создания нового скрипта. Установить стадию квеста, если умрет персонаж - это настолько распространенная задача, что она вынесена в список стандартных задач. Когда ты добавляешь новый скрипт псевдониму, то видишь список скриптов. Найди те, что начинаются с "default". Выбери "defaultSetStageOnDeathRefAlias" и установи свойства:
- myQST: GSQ01
- preReqStage: <оставь пустым>
- StageToSet: 200
Использование стандартных скриптов позволяет сократить их общее число и сэкономить немного памяти. Не то что бы это было архиважно, но лучше использовать их, если есть такая возможность.
Изменение имени[edit | edit source]
В финале еще одно замечание: ты можешь изменить имя объекта, через его псевдоним. Определи любое сообщение (en) с любым текстом, и выбери его из списка "Display Name" вверху окна псевдонима.
По-умолчанию, имя не изменяется на прежнее, после того, как псевдоним перестанет существовать. Это сделано для того, чтобы вернувшийся после сдачи квеста в очищенное подземелье игрок, не обнаружил груду трупов с совершенно другими именами. Но ты можешь изменить это, отметив флажок "Clears Name When Removed" в верхнем-правом углу.
Пакеты[edit | edit source]
Пакеты, определенные в псевдониме, располагаются выше стандартных для их эффективного перекрытия.
Предыдущая статья | К другим учебникам | Следующая статья |
Language: | English • français • русский |
---|