Difference between revisions of "Bethesda Tutorial Basic Quest Scripting/ru"
Bethesda Tutorial Basic Quest Scripting/ru (edit)
Revision as of 16:28, 22 June 2015
, 16:28, 22 June 2015→Добавление скриптов
imported>Vitamant m |
imported>Cyrius |
||
(6 intermediate revisions by one other user not shown) | |||
Line 14: | Line 14: | ||
Эта глава посвящена использованию скриптов для продвижения квеста в зависимости от действий игрока. Ранее ты узнал, как использовать скрипты в диалогах. Теперь научишься присоединять их к персонажам и игровым объектам. | Эта глава посвящена использованию скриптов для продвижения квеста в зависимости от действий игрока. Ранее ты узнал, как использовать скрипты в диалогах. Теперь научишься присоединять их к персонажам и игровым объектам. | ||
<br><br>Ты узнаешь: | <br><br>Ты узнаешь: | ||
* Основы структуры скриптов и их присоединение к объектам в Creation Engine | * Основы структуры скриптов и их присоединение к объектам в Creation Engine. | ||
* Как взаимодействовать с событиями при помощи нового скриптового языка | * Как взаимодействовать с событиями при помощи нового скриптового языка. | ||
(Еще проще о скриптах ты можешь прочесть в статье {{ulink|Bethesda_Tutorial_Papyrus_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 31: | 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 42: | Line 42: | ||
[[Image:ScriptAdded.png]] | [[Image:ScriptAdded.png]] | ||
--Правка от Cyrius-- | |||
При добавлении скрипта может выпадать такая ошибка - | |||
[[file:Troble.png]] | |||
Для ее решения нужно открыть Steam - Инструменты - Creation Kit - Свойства - Локальные файлы. | |||
Нажмите на "Проверить целостность кэша" | |||
Если проверка найдет ошибки - исправит их автоматом и проблема будет решена. | |||
Должно помочь. | |||
=Свойства= | =Свойства= | ||
Дважды кликни по имени скрипта, чтобы открыть окно свойств (Properties Window) | Дважды кликни по имени скрипта, чтобы открыть его окно свойств (Properties Window). Сами по себе скрипты "не знают" о прочих объектах в игровом мире, за исключением тех, к которым присоединены. Чтобы поведать скрипту о других объектах, используются свойства. В нашем примере, нужно задать квесту GSQ01 стадию 20, когда вор будет убит, следовательно нужно "рассказать" скрипту, с каким именно квестом он должен взаимодействовать. | ||
[[File:EmptyPropertiesWindow.png]] | [[File:EmptyPropertiesWindow.png]] | ||
Line 52: | Line 60: | ||
[[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 74: | Line 82: | ||
Опять же, не обращай внимания на строчку <code>SetObjectiveDisplayed(20)</code> | Опять же, не обращай внимания на строчку <code>SetObjectiveDisplayed(20)</code> | ||
Если с программированием или скриптами ты на короткой ноге и тебе все ясно, как день, можешь пропустить этот отрывок и переходить к разделу " | Если с программированием или скриптами ты на короткой ноге и тебе все ясно, как день, можешь пропустить этот отрывок и переходить к разделу "Скрипт для амулета". Если же нет, разберем этот код построчно. | ||
* <code>Event OnDeath(Actor killer)</code> | * <code>Event OnDeath(Actor killer)</code> | ||
Line 84: | Line 92: | ||
** Конец обработки события. | ** Конец обработки события. | ||
Из меню "File" выбери пункт "Save" (или нажми Ctrl+S). Редактор сохранит и скомпилирует скрипт. | Из меню "File" выбери пункт "Save" (или нажми Ctrl+S). Редактор сохранит и скомпилирует скрипт. Всплывет окно вывода. Если код написан верно, оно будет выглядеть вот так: | ||
[[File:CompilerOutputGood.png]] | [[File:CompilerOutputGood.png]] | ||
Line 92: | Line 100: | ||
Как только все нормально скомпилируется, закрой окно скриптов, окно персонажа и сохрани плагин. Пришло время заняться непосредственно амулетом. | Как только все нормально скомпилируется, закрой окно скриптов, окно персонажа и сохрани плагин. Пришло время заняться непосредственно амулетом. | ||
= | =Скрипт для амулета= | ||
Открой настройки амулета GSQAmulet, который ты создал в [[Bethesda_Tutorial_Creating_an_Item|предыдущей главе]]. В открывшемся окне Armor секция скриптов находится в нижнем-правом углу. | Открой настройки амулета GSQAmulet, который ты создал в [[Bethesda_Tutorial_Creating_an_Item|предыдущей главе]]. В открывшемся окне Armor секция скриптов находится в нижнем-правом углу. | ||
Line 114: | Line 122: | ||
</source> | </source> | ||
Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь | Да, да, снова эта непонятная функция. Не волнуйся, в следующей главе ты, наконец, узнаешь, что она делает. | ||
Итак, разбираем скрипт: | Итак, разбираем скрипт: | ||
Line 126: | Line 134: | ||
Теперь квест можно начать, выполнить и закончить. Используй консольную команду {{ulink|ShowQuestVars|SQV}} чтобы увидеть, как изменяются стадии задания. | Теперь квест можно начать, выполнить и закончить. Используй консольную команду {{ulink|ShowQuestVars|SQV}} чтобы увидеть, как изменяются стадии задания. | ||
Но, в отличии от нас, игроки не будут пользоваться консолью, да и эти цифры им ничего не скажут, поэтому в следующей главе мы узнаем, как организовать более дружелюбный вывод подобной информации. | |||
{{ProTip|Скрипты в Skyrim - это просто текстовые файлы хранящиеся в каталоге data перед компиляцией в байт-код. Это позволяет использовать для их редактирования любые текстовые редакторы, которые вам нравятся. Ты можешь прочитать про настройку {{ulink|Sublime Text Setup|Sublime Text}} и {{ulink|Notepad++ Setup|Notepad++}}, которые позволяют включить подсветку синтаксиса, поддерживают некоторые функции автозавершения и горячие кнопки для компиляции. При написании больших сложных скриптов, эти инструменты существенно облегчат тебя жизнь!}} | {{ProTip|Скрипты в Skyrim - это просто текстовые файлы хранящиеся в каталоге data перед компиляцией в байт-код. Это позволяет использовать для их редактирования любые текстовые редакторы, которые вам нравятся. Ты можешь прочитать про настройку {{ulink|Sublime Text Setup|Sublime Text}} и {{ulink|Notepad++ Setup|Notepad++}}, которые позволяют включить подсветку синтаксиса, поддерживают некоторые функции автозавершения и горячие кнопки для компиляции. При написании больших сложных скриптов, эти инструменты существенно облегчат тебя жизнь!}} |