Difference between revisions of "Bethesda Tutorial Basic Quest Scripting/ru"
Bethesda Tutorial Basic Quest Scripting/ru (edit)
Revision as of 14:33, 13 April 2012
, 14:33, 13 April 2012no edit summary
imported>Vitamant m |
imported>Vitamant |
||
Line 2: | Line 2: | ||
{{RussianPage|e}} | {{RussianPage|e}} | ||
{{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, но требует несколько иного образа мышления. | {{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". Редактор немного подумает, после чего отобразит список всех возможных скриптов, которые можно прицепить к этому персонажу. Ты | Кликни по кнопке "Add". Редактор немного подумает, после чего отобразит список всех возможных скриптов, которые можно прицепить к этому персонажу. Ты создашь новый. Дважды щелкни по пункту "[New Script]" в верхней части списка. | ||
[[Image:AddScriptWindow.png]] | [[Image:AddScriptWindow.png]] | ||
Появится еще одно окошко, в котором ты можешь указать имя скрипта. | Появится еще одно окошко, в котором ты можешь указать имя скрипта. Напиши: "GSQThiefScript" и щелкни по "OK". | ||
[[Image:AddNewScriptWindow.png]] | [[Image:AddNewScriptWindow.png]] | ||
Line 45: | Line 44: | ||
=Свойства= | =Свойства= | ||
Дважды кликни по имени скрипта, чтобы открыть окно свойств (Properties Window) | Дважды кликни по имени скрипта, чтобы открыть его окно свойств (Properties Window). Сами по себе скрипты "не знают" о прочих объектах в игровом мире, за исключением тех, к которым присоединены. Чтобы поведать скрипту о других объектах, используются свойства. В нашем примере, нужно задать квесту GSQ01 стадию 20, когда вор будет убит, следовательно нужно "рассказать" скрипту, с каким именно квестом он должен взаимодействовать. | ||
[[File:EmptyPropertiesWindow.png]] | [[File:EmptyPropertiesWindow.png]] | ||
Line 53: | Line 52: | ||
[[File:AddScriptPropertyWindow.png]] | [[File:AddScriptPropertyWindow.png]] | ||
Ты только что сказал скрипту, что ему должен быть известен некий квест, который он будет | Ты только что сказал скрипту, что ему должен быть известен некий квест, который он будет узнавать по имени "TutorialQuest", но нигде не указал идентификатор этого квеста. Никаких проблем! Щелкни по свойству в списке слева, затем по кнопке "Edit Value" справа и выбери из списка "GSQ01" (как обычно можно набрать часть имени на клавиатуре для быстрого поиска). Затем нажми ОК. | ||
[[File:PropertyWindowFilled.png]] | [[File:PropertyWindowFilled.png]] | ||
=Написание скрипта= | =Написание скрипта= | ||
Теперь, когда ты добавил свойство, нужно написать сам скрипт, чтобы он его как-то использовал. ПКМ по имени скрипта и из менюшки | Теперь, когда ты добавил свойство, нужно написать сам скрипт, чтобы он его как-то использовал. ПКМ по имени скрипта и из менюшки выбери "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> | ||
Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь | Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь, что она делает. | ||
Итак, разбираем скрипт: | Итак, разбираем скрипт: |