Под этим солнцем и небом мы тепло приветствуем Вас, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Бухта 2.0. Тёплая. Ламповая. Твоя.

  • AnvilBay Forum »
  • Мастерская TES »
  • Обсуждение программ »
  • Программы для работы со скриптами »
  • [Skyrim] Особенности скриптинга

Страницы: [1] 2 3 Вниз

Автор Тема: [Skyrim] Особенности скриптинга (Прочитано 21767 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Страницы: [1] 2 3 Вверх

Источник: anvilbay.net

Обзор

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

  • Основные конструкции скриптов, и то, как они работают, а так же присоединение их к объектам в Creation Engine
  • Как реагировать на события в новом скриптовом языке

(Для еще более простого введения в Скрипты см. учебник «Hello, World».)

КАК ОТКРЫТЬ ВСЕ ЗАКЛИНАНИЯ, КРИКИ И ТАЛАНТЫ В SKYRIM

Papyrus

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

Новая система похожа на старую TESScript, но требует несколько иной образ мышления. Вы больше не можете напрямую управлять объектами в мире; она теперь является поточной так что ваш скрипт может быть прерван в середине выполнения; и в ней чаще используются такие вещи, как круглые скобки. Вкратце, она больше похожа на «настоящий» язык программирования, как например Lua или Python. Если вы знакомы с TESScript, советуем вам посмотреть руководство по переходу на Papyrus.

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

Добавление Скриптов

Откройте актера GSQThief, которого мы создали ранее. Обратимся к секции «Papyrus Scripts» окна Actor.

ActorWindowScriptsArea.png

Нажмите кнопку «Add». Это выводит список скриптов, которые, возможно, мы могли бы добавить к этому актеру. Однако, напишем новый скрипт, двойной щелчок по «[New Script]» в верху списка.

AddScriptWindow.png

Это вызовет ещё одно окошко, в котором вы можете указать имя вашего скрипта. Задайте ему имя «GSQThiefScript» и нажмите «OK».

Creation Kit. Устанавливаем и настраиваем.

AddNewScriptWindow.png

Теперь ваш скрипт добавлен актеру. Но, как и следовало ожидать, он пока ничего не делает, но это пока что.

ScriptAdded.png

Свойства

Двойной щелчок по названию скрипта, чтобы вызвать окно Properties Window для выбранного скрипта. Сами по себе скрипты не знают о каких-либо объектах в игре, кроме того, к которому они прикреплены. Мы используем свойства для сцепления объектов вместе, чтобы они могли воздейстWowать друг на друга. В нашем случае, мы хотим установить этап квеста GSQ01 равный 20, когда вор был убит, поэтому нам нужно сообщить скрипту с каким квестом мы работаем.

Читайте также:  Скайрим если заглючил квест

EmptyPropertiesWindow.png

Нажмите на кнопку «Add Property» в нижней левой части этого окна. Тут мы и будем создавать свойство. В поле Type, либо выберите «Quest» из выпадающего списка, либо начните набирать слово «Quest» на клавиатуре. Вставьте «TutorialQuest» в поле Name, а все остальное оставьте пустым и нажмите «ОК».

AddScriptPropertyWindow.png

Теперь мы сообщили скрипту, что он будет уделять внимание «TutorialQuest», но скрипт не знает что это за квест. В списке нажмите по свойству которое мы только что сделали , и щёлкните по «Edit Value» в правой части окна. Появится новое выпадающее меню, где перечислены все квесты в игре. Выберите «GSQ01» из этого меню и нажмите «OK».

PropertyWindowFilled.png

Написание скрипта

Теперь, после того, как мы добавили свойство, мы должны добавить какой-нибудь актуальный скрипт, чтобы сделать в нем какие-либо дальнейшие действия! Правый щелчок по названию скрипта и выберите «Edit Source» чтобы вызвать редактор скриптов.

ScriptWindowWithPropertyAdded.png

Верхняя строка ( Scriptname GSQThiefScript extends ObjectReference ), это шаблон, который редактор сделал для нас, когда мы создали скрипт. Несколькими строчками ниже находится текстовая версия свойства, которое мы сделали.

Под этим текстом, скопируйте и вставьте следующий фрагмент кода.

Event OnDeath(Actor killer) TutorialQuest.SetObjectiveDisplayed(20) TutorialQuest.SetStage(20) EndEvent

Снова не обращайте внимание, что значит SetObjectiveDisplayed(20)

Если вы достаточно знакомы с программированием или скриптингом, то вы поймете что делает тот код, что вы только что вставили, не бойтесь, пропустите то, что идет далее до пункта «Привязка Скрипта к Амулету «. Для всех остальных, мы пройдемся по коду построчно.

  • Event OnDeath(Actor killer)
  • Это строка обозначает, что скрипт будет производить ответ при смерти актера. Когда актер умирает, игра начнется выполнение кода с этой точки. Игра записывает в переменную «killer» того, кто убил данного актера, но эта часть сейчас не имеет для нас значения.
  • Как и когда мы вызывали SetStage при получении квеста в учебнике по созданию диалога, эта команда устанавливает этап квеста равный 20, для квеста, который мы задали в свойстве TutorialQuest.
  • Мы сделали отступ для удобства чтения.
  • Это означает конец обработки этого события(смерти актера).

Выберите «Save» из меню «File» (или нажмите Ctrl-S) и редактор попробует скомпилировать ваш скрипт. Выскочит окно Compiler Output — если ваш скрипт синтаксически правильный, то оно будет выглядеть так:

CompilerOutputGood.png

Если вы увидите здесь что-либо другое, значит вы что-то написали неверно. Попробуйте снова!

Как закончите, закройте окно редактирования скрипта и окно Actor, и сохраните ваш плагин. Теперь пришло время заскриптить сам амулет.

Привязка Скрипта к Амулету

Откройте предмет «GSQAmulet», который мы создали в предыдущем учебнике. В акне Armor, секция Scripts находится справа снизу.

ArmorWindowScriptArea.png

Создайте новый скрипт, так же ка мы делали ранее, и назовите его GSQAmuletScript. Добавьте ему свойство Quest, но, чтобы увидеть изящный трюк, назовите его в этот раз «GSQ01» вместо «TutorialQuest».

Читайте также:  Где в Скайриме обитают вампиры

AutofilledProperty.png

Он автоматически установит значение свойства для вас, так как вы задали свойству имя, совпадающее с существующими ID. Если вы объявляете много свойств, этот трюк поможет сэкономить вам кучу времени.

Откройте скрипт, теперь мы собираемся добавить к нему событие. Амулет не может умереть (очевидно), но мы хотим знать, когда игрок подберет его. Событие в нашем скрипте будет выглядеть вот так:

Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer) if (newContainer == Game.GetPlayer()) GSQ01.SetObjectivedisplayed(30) GSQ01.SetStage(30) endif EndEvent

Ещё раз не вдавайтесь в подробности, что тут написано. Это будет объяснено в разделе, посвященном целям.

Вот несколько вещей, которые хотелось бы отметить в этом скрипте:

  • Объявленные параметры ( newContainer и oldContainer ) заполняются игрой, когда она сообщает этому скрипту обработку события.
  • Потому что событие OnContainerChanged будет срабатывать каждый раз, когда этот объект меняет владельца, поэтому, мы должны убедиться в том, что мы устанавливаем этап квеста только тогда, когда именно игрок подбирает амулет, потому и используется блок if / endif .
  • Game.GetPlayer() это удобный способ получить ссылки на игрока без необходимости установки свойства, и newContainer был заполнен движком игры при срабатывании события, так что мы можем сделать сравнение во второй строке, чтобы убедиться, что предмет перемещается к игроку.
  • Из-за того, как написан скрипт, команда SetStage будет вызываться каждый раз, когда игрок подбирает амулет. Это не дело, потому что каждый этап квеста может произойти лишь раз — вызов команды SetStage(30) не имеет никакого эффекта после того, как она уже была вызвана в первый раз.

Ну что же, этот скрипт готов. Закройте окна script и armor, и сохраните ваш плагин.

Теперь вы можете поиграть и пройти квест от начала до конца, следите за изменением этапа квеста, введя в консоли SQV.

Игроки, которые не могут использовать консоль, научатся получать информацию о квесте в следующей главе.

Скрипты для Skyrim это простые текстовые файлы, находящиеся в директории Data, перед тем как будут скомпилированы в байт-коды. Это значит, что если у вас есть любимый текстовый редактор, вы можете использовать его для работы со скриптами. Мы описали установку редакторов Sublime Text и Notepad++, которые поддерживают подсветку синтаксиса, некоторые базовые авто заполнения, и горячие клавиши для компиляции. Если вы планируете серьезно заниматься скриптами, эти инструменты могут облегчить вам жизнь.
Предыдущий учебник Вернуться в Учебный центр Следующий учебник
  • Учебники
  • New Users
  • Серия учебников по основам дизайна квестов от Bethesda
  • Новые возможности
  • Советы профессионала

Источник: tesck.ru

The Elder Scrolls 5: Skyrim: Совет (Руководство по использованию команд в пакетном файле)

Skyrim обеспечивает простой механизм обработки пакетных файлов. Таким образом Вы можете быстро изменить настройки игры без монотонного ввода консольных команд.

Читайте также:  Скайрим мечты об обливионе где находятся кристаллы карта

Пример: bat mybatchfile; запустит все консольные команды, содержащиеся в файле mybatchfile.

  • Создайте текстовой файл, содержащий нужные консольные команды (по одной на строку).
  • Поместите файл в директорию, где установлен Skyrim.
  • Запустите игру.
  • Откройте консоль.
  • Введите команду bat, а дальше имя вашего пакетного файла, чтобы получилось, например, bat mybatchfile.

В Skyrim пакетный файл представляет из себя список команд, которые будут запускаться последовательно, одна за другой. Они не имеют циклов, тестов и иной логики, поэтому не могут быть остановлены при ошибке или проблеме в одной из команд. Вы можете создать несколько пакетных файлов, предназначенных для различных нужд.

Руководство по использованию команд в пакетном файле

Большинство команд из Skyrim могут быть использованы для запуска из пакетного файла. Например:

  • Команды включения/выключения работают в пакетных файлах, включая такие команды, как показ/скрытие субтитров (ShowSubtitle), включение/отключение травы (TG), включение/выключение режима бога (TGM), и многие другие.
  • Адресные команды работают прекрасно, до тех пор, пока вы указываете цель. Например, вы можете использовать в пакетном файле код Additem f 1000, добавляющий 1000 золотых в ваш инвентарь. Если вы хотите дать Лидии 1000 золотых, используйте код A2C94.Additem F 1000(где A2C94 Reference ID для Лидии (Lydia)).
  • PRID (PrintReferenceID) показывает предметы и NPC.
  • Различные команды, такие как SetAV, FOV, FW и AddItem(с различными параметрами) все могут быть использованы для запуска из пакетного файла.
  • Команда COCне может быть запущена из пакетного файла (приводит в падению игры).
  • Сама команда BATне может быть запущена из пакетного файла.

Пример использования пакетного файла для создания альтернативного старта игры

При помощи запуска пакетного файла, с учетом вышеописанных ограничений, вы можете создать альтернативное начало игру. В дополнение к пакетному файлу, вам также нужно будет изменить файл Skyrim.ini, который может быть найден в вашей C:UsersYOUR_USER_NAMEDocumentsMy GamesSkyrim директории.

  1. Откройте ваш iniи добавьте в него строку SStartingCell=WhiteRiverWatch01 в раздел [General].
  2. Создайте пустой .txt-файл в папке со Skyrim (там же, где находится файл exe) и назовите его, например, bandit(не bandit.txt).
  3. Вставьте в него без изменения показанный ниже код.
  4. Начните новую игру и вы не увидите стартовый ролик (интро), а окажитесь в пещере Приречная Застава (White River Watch).
  5. Откройте консоль и введите bat bandit.
  6. Создайте своего персонажа.

Код для файла bandit:

;Leather Armor, Bracers and Boots

player.additem 3619e 1

player.additem 13921 1

player.additem 13920 1

;Steel Sword and Shield

player.additem 13989 1

player.additem 13955 1

;Hunting Bow and Iron Arrows

player.additem 13985 1

player.additem 1397D 25

;Gold and Lockpicks

player.additem f 100

player.additem a 15

;Bandit Ally Faction

player.addtofaction e0cd9 0

Используя этот метод, вы можете посетить Хелген (Helgen) до его разрушения.

Источник: www.playground.ru