Skyrim CK:Руководство по созданию новых рецептов для кузницы (без CK)

Материал из Tiarum
Перейти к: навигация, поиск


Skyrim CK:Руководство по созданию новых рецептов для кузницы (без CK)
45px-Scroll.png
автор: Samutz
переводчик: Boblen
вики-редакция: Garin
ccылка на оригинал: Tutorial: Making New Smithing Recipes (pre-CK) without the Creation Kit
дата оригинала: 22.11.2011
дата перевода: 4.12.2011


Skyrim CK:Руководство по созданию новых рецептов для кузницы (без CK)


Без использования редактора игры Creation Kit


Что нужно знать для начала работы


  • У вас должно быть базовое понимание шестнадцатеричных чисел. Все упоминаемые здесь числа без знака, если не указано иное.
  • Вы также должны знать, что конвертирование числа или ID в необработанные данные (raw data) требует обратного порядка байтов. Например, ID 01234567 станет 67 45 23 01 в raw data. (Когда я пишу данные, разделенные пробелами, типа 67 45 23 01, это raw data.)
  • НЕ сохраняйте свой файл esp, если у вас запущен Skyrim. Это приведет к закрытию TESsnip и потере всех измененных данных до последнего сохранения.
Skyrim CK Durin fomm.jpg

Часть 1: Установка и конфигурирование Fallout Mod Manager

Так как пока не вышел Skyrim Mod Manager или CK, мы будем использовать последнюю версию FOMM. С некоторыми настройками он работает со Skyrim.

  • Откройте папку с установленной игрой Skyrim и сделайте копию TESV.exe. Переименуйте ее в falloutnv.exe.
  • Скачайте и установите FOMM.
  • После установки запустите FOMM, он попросит выбрать игру. Выберите New Vegas.
  • Когда FOMM спросит о директории игры, выберите свою папку со Skyrim (где вы скопировали falloutnv.exe).
/От переводчика. Возможно, при установленном Fallout NV, FOMM сам выберет директорию установки. Чтобы поменять ее на нужную нам, в главном окне жмем Settings, идем на закладку Fallout New Vegas и выбираем директорию с установленной игрой Skyrim в строке New Vegas Directory)
  • Иногда может появится сообщение об отсутствующих INI-файлах. Можете проигнорировать его и продолжать.

Часть 2: Создание базового файла плагина (ESP)

  • В FOMM выберите TESsnip из меню Tools.
  • В TESsnip, выберите New из меню File.
  • По умолчанию, новый плагин содержит лишь одну запись. Дважды кликните на нее и переименуйте в TES4, если там написано что-то иное.
  • Из меню Edit, выберите Add Master и выберите Skyrim.esm. (Возможно, понадобится выбрать тип файла Master Files в окне диалога выбора файла.)
  • Выберите запись TES4. При выбранной записи TES4 в нижней левой панели будут перечислены некоторые Субзаписи. Первая называется HEDR.
  • Дважды кликните на ней и смените file version на 0.94.
  • Оставьте record count как есть. Мы изменим ее позже.
  • Измените 3-е поле (Unknown) на 2048.
  • Субзапись CNAM - это имя автора. Можете вписать туда свое имя.
  • Рекомендую сохранить этот файл как шаблон для будущего использования.

Часть 3: Создание записи рецепта (Recipe Record)

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

Для этого руководства нам понадобятся ID:

  • Слитков железа (Iron Ingots).
  • Дров (Firewood).
  • Топора дровосека (Woodcutter's Axe).

Есть несколько способов найти нужные ID:

  • Самый простой – найти их на UESP wiki.
  • Или можете найти их сами, просмотрев файл Skyrim.esm с помощью TESsnip или Skyrim Viewer, но это более сложно.
  • Еще один способ - использовать консоль игры для поиска. Для этого используйте команду help "query" 0, где query – ваша строка поиска. Это даст вам список всех записей в игре, содержащих эту строку. Длинный список можете прокручивать клавишами PgUp и PgDn.

Итак, наши ID:

  • Железный слиток (Iron Ingot): 0005ace4
  • Дрова (Firewood): 0006f993
  • Колун (Woodcutter's Axe): 0002f2f4

Теперь, когда у нас есть ID, продолжим с FOMM...

  • В главном окне FOMM кликните ПКМ на Skyrim.esm и выберите TESsnip. Понадобится несколько минут, чтобы открыть файл.
  • В Skyrim.esm найдите группу записей GRUP (COBJ) и выберите ее.
  • В меню Edit выберите Copy.
  • Возвращайтесь в окно вашего нового файла и выбирайте корневую запись плагина (там написано New plugin или имя файла, если вы его уже сохранили).
  • В меню Edit выберите Paste.
  • Удалите все записи из группы GRUP (COBJ) (находясь в окне плагина). (Это единственный способ, который я знаю, чтобы создать группу в TESsnip. Если кто-то знает другой, без Copy/Paste, дайте мне знать.)
  • Выберите GRUP (COBJ) и выберите New Record из меню Edit.
  • Дважды кликните на NEW_ и измените ее на and change the new to COBJ.
  • Создайте form ID и введите ее в поле form ID (смотри Приложение A: Form ID в конце).
  • В поле Unknown 2 введите 000e6917.
  • В поле Unknown 3 введите 00020028. (Я не знаю, что делают эти записи, я взял их из существующих рецептов)
  • Нажмите Save.
  • Выберите запись COBJ и выберите New Subrecord из меню Edit.
  • Дважды кликните на Субзапись NEW_ и смените ее название на EDID.
  • В большом окне редактирования справа наберите editor ID, которое еще не используется. В этом руководстве наберем RecipeWeaponWoodcutterAxe
  • В левой части добавьте байты 00 в конец.
  • Нажмите Save.
  • Создайте новую Субзапись. Дважды кликните на нее и назовите COCT.
  • В шестнадцатеричной (левой) секции редактора введите число материалов, используемых для рецепта, как 4-х байтовое шестнадцатеричное число. Если вы используете группы (stacks) (например, 10 железных слитков (Iron Ingots)), группа считается, как 1.
  • В этом руководстве мы используем 2 материала: дрова (firewood) и железные слитки (iron ingots). Так что вводим 02 00 00 00
  • Создайте Субзапись CNTO для каждого материала. Данные для этих Субзаписей разбиты на два 4-байтовых целых. Первые 4 байта – это item id и последние 4 байта – это количество этого материала, которое необходимо.
  • Для этого руководства мы введем id для железных слитков (Iron Ingots) (0005ace4) и их количество (1) как E4 AC 05 00 01 00 00 00.
  • Затем для дров (Firewood) (0006f993) мы создадим вторую Субзапись CNTO с данными 93 F9 06 00 01 00 00 00.
  • (Опционально) Если хотите задать свои требования для рецепта, создайте Субзапись CTDA и введите данные.
  • Смотрите Приложение B: Субзаписи CTDA.
  • В этом рководстве мы не будем создавать эту субзапись.
  • Создайте субзапись CNAM. Это ID предмета, который мы хотим создать.
  • В этом руководстве это будет Колун (Woodcutter's Axe) ID (0002f2f4), так что введем F4 F2 02 00.
  • Создайте субзапись BNAM. Это ID аппаратов, нужных для создания предмета.
  • Плавильня (Smelter): CE 5C 0A 00
  • Кузница (Forge): 05 81 08 00 (используется в этом руководстве)
  • Небесная кузница (Skyforge): CE 46 0F 00
  • Котелок (Cooking Pot): B3 5C 0A 00
  • Дубильня (Tanning Rack): 6A 86 07 00
  • Создайте субзапись NAM1. Это итоговое число изготавливаемых предметов. Оно может быть 2-х байтовым или 4-х байтовым целым.
  • В этом руководстве введем 01 00.

Часть 4: Окончание и тест

Почти готово!

  • Возвращайтесь в TES4 в субзапись HEDR и смените Record Count на полное число записей, включая записи GRUPs и TES4.
  • Если вы следовали инструкции, то их будет 3: TES4, GRUP (COBJ) и COBJ.
  • Теперь сохраните свой плагин как файл esp file и включите его в Skyrim (Файлы (Data Files) в лаунчере или отредактируйте plugins.txt).
  • Загрузите игру и посетите кузницу. Вы найдете рецепт Колун (Woodcutter's Axe) разделе РАЗНОЕ (MISC) кузницы.

Если хотите узнать, как поместить рецепт в другую секцию, кроме РАЗНОЕ (MISC), следуйте следующей инструкции.

Часть 5: Перемещение рецептов в другое меню

В этой дополнительной части мы рассмотрим перемещение своего рецепта в другое меню.
Данные, определяющие, в каком меню кузницы появится рецепт, на самом деле содержатся в самом предмете, который мы изготавливаем, а не в рецепте.
Каждый предмет содержит ключевые слова (как теги или категории), которые влияют на его появление в различных меню (магазина, кузницы или инвентаря).
Так что для того, чтобы переместить рецепт в другое меню, нужно отредактировать ключевые слова для этого предмета, что также означает перезапись данных игры для этого предмета.

  • Откройте Skyrim.esm в TESsnip. Найдите предмет и скопируйте его и его группу записей в свой плагин.
  • В этом руководстве скопируйте группу записей GRUP (WEAP) и оставьте там только запись WEAP Axe01 (0002f2f4).
  • TESsnip неверно обращается со строковыми ссылками, что приводит к тому, что название предмета начинает отображаться как string ID, вместо нормального названия. Чтобы исправить это, поменяем субзапись FULL на нужное название. Оно понадобится, чтобы быть верно переведенным в локализованных версиях плагина.
(Примечание переводчика. У меня на Win7 Tessnip также некорректно работает с русским языком. Когда вы будете в окне переименования субзаписи, русское название отобразится нормально, но, после ее сохранения, оно станет нечитаемым. В игре, однако, все отображается верно).
  • В этом руководстве назовите субзапись FULL как Колун (Woodcutter's Axe).
  • Субзапись KWDA содержит ключевые слова для предмета. Аналогично, субзаписи CNTO для записи COBJ (рецепт), субзапись KWDA может содержать несколько значений. Каждые 4 байта – это ID ключевого слова, ссылающегося на запись KYWD.
  • Предметам, изготавливающимся по рецептам, нужно ключевое слово Material, чтобы появиться в одной из существующих секций меню кузницы. Без ключевого слова Material рецепт появится в секции РАЗНОЕ (MISC).
  • Большинство ключевых слов Material – это WeapMaterial или ArmorMaterial. Они могут быть найдены в записях KYWD.
  • В этом руководстве мы хотим добавить ключевое слово WeapMaterialIron, чей ID 0001e718.
  • Так что добавьте в конец субзаписи KWDA, после существующих ключевых слов, ID 18 E7 01 00.
  • Последняя субзапись, которую нужно поправить, это KSIZ. Эта субзапись – число, определяющее количество ключевых слов keyword ID, используемых в KWDA.
  • В этом руководстве у нас уже 2 ключевых слова, присвоенных предмету, так что меняем KSIZ на 02 00 00 00.

Вот и все!

Обновите значение record count, сохраните свой esp, загрузите в игру и проверьте.

Вы должны найти Колун (Woodcutter's Axe) в меню кузницы Железное.

Приложение A: Form ID

Поправьте меня, если я ошибаюсь, но пока это работает.

Я считаю, что обычно Form ID автоматически создаются CK. Но сейчас нам придется делать их самостоятельно.

  • Самый простой способ, который работает - ваши Form ID должны начинаться с 01.
  • Затем выберите число (в шестнадцатеричном формате) между 01 и FF для вашего использования, оно занимает 2 байта.
  • Поле этого используйте оставшиеся байты для нумерации ваших записей. Например, мои 0188xxxx. Здесь: 88 – это число, которое я выбрал для идентификации своих записей, а xxxx будут 0001, 0002, и т.д.

Отличие между 00 и 01 ID:


Первые две цифры в Form ID называются индексом мода.

  • Все в Skyrim.esm автоматически получает индекс 00.
  • Дополнительным esm/esp файлам будет присвоен индекс мода в соответствии с порядком загрузки. Так как Update.esm загружается после Skyrim.esm, он получает индекс 01.
  • Плагины, загружаемые после, получают 02, 03, 04, и т.д.
  • Каждое 01 id и ссылка на 01 id в вашем плагине автоматически поменяется на присвоенный индекс мода при загрузке.
  • Это изменение вы увидите лишь в игре. Сам плагин не изменится. Так что, пока вы начинаете новую запись с 01 id, все будет нормально. Используйте 00 id только, чтобы заменить существующие записи Skyrim.esm или ссылки на них.

Приложение B: Субзаписи CTDA

Субзаписи CTDA задают условия, которые должны быть выполнены, чтобы рецепт появился в меню кузницы. Они длинные и сложные.

Некоторые значения я узнал из записи на UESP CTDA_Field, но совпадает не всё.

Вот что мне известно на данный момент...

Обычно субзапись CTDA имеет длину 32 байта:

00 00 00 00 00 00 80 3F C0 01 54 00 66 AD 03 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF

Операторы и Флаги


Операторы и Флаги (Operator and Flags) занимают 2 байта и содержат два свойства.

Первое свойство – один оператор:


Возможные значения:

  • 00 - равно
  • 20 – не равно
  • 40 – больше
  • 60 – больше или равно
  • 80 – меньше
  • A0 – меньше или равно

Второе свойство – это флаг:


  • 01ИЛИ (OR). Используйте, если есть несколько субзаписей CTDA и вы хотите использовать совпадение любой из них, а не всех вместе.
  • 02Запущен на цели (Run on target). По умолчанию функции выполняются на игроке (как player.HasPerk). Не уверен, какая цель нужна в рецептах.
  • 04Использовать глобально (Use global). Пока не знаю, что означает.

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

Например:


  • 62 использует оператор "больше или равно" с флагом "запущен на цели".
  • 83 использует оператор "меньше" с флагами "ИЛИ" и "запущен на цели".
  • 40 использует оператор "больше" без флагов.

Заполнение 1 (00 00 00)


Заполнение (Padding) нулями, занимает 6 байтов, ничего не делает.

Значение для сравнения


Значение (Value), с которым будет сравниваться функция, используя оператор. Занимает 8 байт.

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

Используемая функция

Используемая функция, занимает 8 байт.

Список функций вы можете найти в статье Skyrim CK: Скриптовые Функции.

Чтобы получить значение функции, возьмите ее ID со страницы по ссылке выше, вычтите 4096 и сконвертируйте результат в шестнадцатеричный формат.

Заполнение 2 (54 00)


Еще одно заполнение (Padding), занимает 4 байта.

Похоже, это значение всегда 54 00.

Параметр 1


Параметр 1, если требуется функцией.

Занимает 8 байт.

Параметр 2


Параметр 2, если требуется функцией.

Занимает 8 байт.

Заполнение 3


Еще одно заполнение и ссылка на form id (form id reference)?

Еще одна странная часть. Судя по wiki, эта часть должна быть 4-байтовым заполнением, затем 4 байта для ссылки на id (reference id); всего 8 байт.

Но во всех CTDA, которые я видел, она длиной 12 байт, а не 8.

Так что я не знаю, какая часть reference id, или же последние 4 байта что-то совершенно иное.

Примеры субзаписей CTDA


Данные примеры были использованы мной при создании стрел (Arrowsmith).

Пример 1


Эта субзапись CTDA проверяет, есть ли у игрока перк «Стальные доспехи» (Steel Smithing).

00 00 00 00 00 00 80 3F C0 01 54 00 0D B4 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF

Здесь:

  • 00 - проверяет, равен ли 1.0 результат функции ( 00 00 80 3F )
  • C0 01 - функция HasPerk. Ее id 4544. Вычтите 4096 и сконвертируйте результат в шестнадцатеричное значение, получите 01c0.
  • 0D B4 0C 00 - это id перка (000cb40d) «Стальные доспехи» (Steel Smithing).

Пример 2


Эта субзапись CTDA проверяет, есть ли у игрока глобальная переменная, означающая, что он может изготавливать предметы Древних Нордов (Ancient Nord) и Геройских Нордов (Nord Hero) в Небесной кузнице (Skyforge) (разблокируется в квестах).

00 00 00 00 00 00 80 3F 4A 00 54 00 D1 46 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF

Здесь:

  • 00 проверяет, равен ли 1.0 результат функции ( 00 00 80 3F )
  • 4A 00 функция GetGlobalValue. Ее id 4170. Вычтите 4096 и сконвертируйте результат в шестнадцатеричное значение, получите 004a.
  • D1 46 0F 00 глобальное id (global id) (000f46d1) для работы в небесной кузнице (SkyForgeSmithing).

Пример 3


Эта субзапись CTDA проверяет, есть ли у игрока хотя бы одно Перо Ворожеи (Hagraven Feather) в инвентаре.

Различные рецепты кожи для дубильни используют похожие субзаписи.

Например, рецепт для создания Кожи из Шкуры лисы не появится в меню, пока у игрока не будет хотя бы одной такой шкуры в инвентаре.

Это позволяет не показывать абсолютно все рецепты шкур в меню дубильни.

60 00 00 00 00 00 80 3F 2F 00 54 00 66 AD 03 00 00 00 00 00 02 00 00 00 14 00 00 00 FF FF FF FF

Здесь:

  • 60 - проверяет, что результат функции ( 00 00 80 3F ) больше или равен 1.0.
  • 2F 00 - функция GetItemCount. Ее id 4143. Вычтите 4096 и сконвертируйте результат в шестнадцатеричное значение, получите 002f.
  • 66 AD 03 00 - это id предмета (0003ad66) Перо ворожеи (Hagraven Feathers).

В этой функции используется какое-то особое заполнение в конце, но я понятия не имею, что оно означает.