Difference between revisions of "Bethesda Tutorial Basic Quest Scripting/ru"

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


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


{{Tutorial Index/ru
{{Tutorial Index/ru
Line 15: Line 14:
Эта глава посвящена использованию скриптов для продвижения квеста в зависимости от действий игрока. Ранее ты узнал, как использовать скрипты в диалогах. Теперь научишься присоединять их к персонажам и игровым объектам.
Эта глава посвящена использованию скриптов для продвижения квеста в зависимости от действий игрока. Ранее ты узнал, как использовать скрипты в диалогах. Теперь научишься присоединять их к персонажам и игровым объектам.
<br><br>Ты узнаешь:
<br><br>Ты узнаешь:
* Основы структуры скриптов и их присоединение к объектам в Creation Engine
* Основы структуры скриптов и их присоединение к объектам в Creation Engine.
* Как взаимодействовать с событиями при помощи нового скриптового языка
* Как взаимодействовать с событиями при помощи нового скриптового языка.


(Еще проще о скриптах ты можешь прочесть в статье {{ulink|Bethesda_Tutorial_Papyrus_Hello_World|"Hello, World"}}.)
(Еще проще о скриптах ты можешь прочесть в статье {{ulink|Bethesda_Tutorial_Papyrus_Hello_World|"Hello, World"}}.)


=Papyrus=
=Papyrus=
Скриптовый язык, используемый Creation Kit зовется Papyrus (да-да, тот самый папирус, который использовался в качестве бумаги в древнем Египте). Скрипты, написанные на Пупирусе - это обычные текстовые файлы, которые компилируются в байт-код.  
Скриптовый язык, используемый Creation Kit зовется Papyrus (да-да, тот самый папирус, который использовался в качестве бумаги в древнем Египте). Скрипты, написанные на Папирусе - это обычные текстовые файлы, которые компилируются в байт-код.  


{{NewFeature|Новая система похожа на старую TESScript, но требует несколько иного образа мышления. Ты больше не можешь напрямую манипулировать объектами игрового мира; поток твоего скрипта может быть прерван посередине; куча синтаксического сахара, вроде всеми любимых скобок. В общем новый язык стал больше походить на [http://lua.org Lua] или, скажем, [http://python.org Python]. Если ты хорошо ориентируешься в TESScript, то ознакомься с {{ulink|Differences_from_Previous_Scripting|руководством по переходу}}.}}
{{NewFeature|Новая система похожа на старую TESScript, но требует несколько иного образа мышления. Теперь ты не можешь напрямую манипулировать объектами игрового мира; поток твоего скрипта может быть прерван посередине; куча синтаксического сахара, вроде всеми любимых скобок. В общем новый язык стал больше походить на [http://lua.org Lua] или, скажем, [http://python.org Python]. Если ты хорошо ориентируешься в TESScript, то ознакомься с {{ulink|Differences_from_Previous_Scripting|руководством по переходу}}.}}


Перво наперво, ты напишешь скрипт, который будет срабатывать при убийстве вора и соответствующим образом обновлять текущую стадию квеста.
Перво наперво, ты напишешь скрипт, который будет срабатывать при убийстве вора и соответствующим образом обновлять текущую стадию квеста.
Line 32: Line 31:
[[Image:ActorWindowScriptsArea.png|600px]]
[[Image:ActorWindowScriptsArea.png|600px]]


Кликни по кнопке "Add". Редактор немного подумает, после чего отобразит список всех возможных скриптов, которые можно прицепить к этому персонажу. Ты создаешь новый. Дважды щелкни по пункту "[New Script]" в верхней части списка.  
Кликни по кнопке "Add". Редактор немного подумает, после чего отобразит список всех возможных скриптов, которые можно прицепить к этому персонажу. Ты создашь новый. Дважды щелкни по пункту "[New Script]" в верхней части списка.  


[[Image:AddScriptWindow.png]]
[[Image:AddScriptWindow.png]]


Появится еще одно окошко, в котором ты можешь указать имя скрипта. Пиши: "GSQThiefScript" и щелкай по "OK".
Появится еще одно окошко, в котором ты можешь указать имя скрипта. Напиши: "GSQThiefScript" и щелкни по "OK".


[[Image:AddNewScriptWindow.png]]
[[Image:AddNewScriptWindow.png]]
Line 45: Line 44:


=Свойства=
=Свойства=
Дважды кликни по имени скрипта, чтобы открыть окно свойств (Properties Window) этого скрипта. Сами по себе скрипты "не знают" о прочих объектах в игровом мире, за исключением тех, к которым присоединены. Чтобы поведать скрипту о других объектах, используются свойства. В нашем примере, нужно задать квесту GSQ01 стадию 20, когда вор будет убит, следовательно нужно "рассказать" скрипту, с каким именно квестом он должен взаимодействовать.  
Дважды кликни по имени скрипта, чтобы открыть его окно свойств (Properties Window). Сами по себе скрипты "не знают" о прочих объектах в игровом мире, за исключением тех, к которым присоединены. Чтобы поведать скрипту о других объектах, используются свойства. В нашем примере, нужно задать квесту GSQ01 стадию 20, когда вор будет убит, следовательно нужно "рассказать" скрипту, с каким именно квестом он должен взаимодействовать.  


[[File:EmptyPropertiesWindow.png]]
[[File:EmptyPropertiesWindow.png]]
Line 53: Line 52:
[[File:AddScriptPropertyWindow.png]]
[[File:AddScriptPropertyWindow.png]]


Ты только что сказал скрипту, что ему должен быть известен некий квест, который он будет идентифицировать по имени "TutorialQuest," но нигде не указал идентификатор этого квеста. Никаких проблем! Щелкни по свойству в списке слева, затем по кнопке "Edit Value" справа и выбери из списка "GSQ01" (как обычно можно набрать часть имени на клавиатуре для быстрого поиска). Затем нажми ОК.
Ты только что сказал скрипту, что ему должен быть известен некий квест, который он будет узнавать по имени "TutorialQuest", но нигде не указал идентификатор этого квеста. Никаких проблем! Щелкни по свойству в списке слева, затем по кнопке "Edit Value" справа и выбери из списка "GSQ01" (как обычно можно набрать часть имени на клавиатуре для быстрого поиска). Затем нажми ОК.


[[File:PropertyWindowFilled.png]]
[[File:PropertyWindowFilled.png]]


=Написание скрипта=
=Написание скрипта=
Теперь, когда ты добавил свойство, нужно написать сам скрипт, чтобы он его как-то использовал. ПКМ по имени скрипта и из менюшки выбирай "Edit Source", чтобы перейти в редактор скриптов.  
Теперь, когда ты добавил свойство, нужно написать сам скрипт, чтобы он его как-то использовал. ПКМ по имени скрипта и из менюшки выбери "Edit Source", чтобы перейти в редактор скриптов.  


[[File:ScriptWindowWithPropertyAdded.png]]
[[File:ScriptWindowWithPropertyAdded.png]]
Line 75: Line 74:
Опять же, не обращай внимания на строчку <code>SetObjectiveDisplayed(20)</code>
Опять же, не обращай внимания на строчку <code>SetObjectiveDisplayed(20)</code>


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


* <code>Event OnDeath(Actor killer)</code>
* <code>Event OnDeath(Actor killer)</code>
Line 85: Line 84:
** Конец обработки события.  
** Конец обработки события.  


Из меню "File" выбери пункт "Save" (или нажми Ctrl+S). Редактор сохранит и скомпилирует скрипт. Всплывает окно вывода. Если код написан верно, оно будет выглядеть вот так:
Из меню "File" выбери пункт "Save" (или нажми Ctrl+S). Редактор сохранит и скомпилирует скрипт. Всплывет окно вывода. Если код написан верно, оно будет выглядеть вот так:


[[File:CompilerOutputGood.png]]
[[File:CompilerOutputGood.png]]
Line 93: Line 92:
Как только все нормально скомпилируется, закрой окно скриптов, окно персонажа и сохрани плагин. Пришло время заняться непосредственно амулетом.
Как только все нормально скомпилируется, закрой окно скриптов, окно персонажа и сохрани плагин. Пришло время заняться непосредственно амулетом.


=Скрипты для амулета=
=Скрипт для амулета=
Открой настройки амулета GSQAmulet, который ты создал в [[Bethesda_Tutorial_Creating_an_Item|предыдущей главе]]. В открывшемся окне Armor секция скриптов находится в нижнем-правом углу.
Открой настройки амулета GSQAmulet, который ты создал в [[Bethesda_Tutorial_Creating_an_Item|предыдущей главе]]. В открывшемся окне Armor секция скриптов находится в нижнем-правом углу.


Line 115: Line 114:
</source>
</source>


Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь что она делает.
Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь, что она делает.


Итак, разбираем скрипт:
Итак, разбираем скрипт:
Anonymous user