Перейти к содержанию

Статьи и руководства


Рекомендуемые сообщения

Инструкция по созданию новых рецептов для кузницы без Creation Kit

1. У Вас должно быть базовое понимание шестнадцатеричных чисел. Все упоминаемые здесь числа без знака, если не указано иное.

2. Вы также должны знать, что конвертирование числа или ID в необработанные данные (raw data) требует обратного порядка байтов. Например, ID 01234567 станет 67 45 23 01 в raw data.

(Когда я пишу данные, разделенные пробелами, типа 67 45 23 01, это raw data.)

3. НЕ сохраняйте свой файл esp, если у Вас запущен Skyrim. Это приведет к закрытию TESsnip и потере всех измененных данных до последнего сохранения.

 

 

http://fullrest.ru/uploads/news_screen/durin_fomm.jpg

 

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

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

 

1. Откройте папку с установленной Skyrim и сделайте копию TESV.exe. Переименуйте ее в falloutnv.exe.

2. Скачайте и установите FOMM: http://sourceforge.net/projects/fomm/

3. После установки запустите FOMM, он попросит выбрать игру. Выберите New Vegas.

4. Когда FOMM спросит о директории игры, выберите свою папку со Skyrim (где вы скопировали falloutnv.exe).

От переводчика. Возможно, при установленном Fallout: NV, FOMM сам выберет директорию установки. Чтобы поменять ее на нужную нам, в главном окне жмем Settings, идем на закладку Fallout New Vegas и выбираем директорию с установленным Skyrim в строке New Vegas Directory)

5. Иногда может появится сообщение об отсутствующих INI файлах. Можете проигнорировать его и продолжать.

 

 

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

1. В FOMM, выберите TESsnip из меню Tools.

2. В TESsnip, выберите New из меню File.

3. По умолчанию, новый плагин содержит лишь одну запись. Дважды кликните на нее и переименуйте в TES4, если там написано что-то иное.

4. Из меню Edit, выберите Add Master и выберите Skyrim.esm. (Возможно, понадобится выбрать тип файла Master Files в окне диалога выбора файла.)

5. Выбрите запись TES4. При выбранной записи TES4, в нижней левой панели будут перечислены некоторые Субзаписи. Первая называется HEDR. Дважды кликните на ней и смените file version на 0.94.

Оставьте record count как есть. Мы изменим ее позже.

Измените 3-е поле (Unknown) на 2048.

6. Субзапись CNAM - это имя автора. Можете вписать туда свое имя.

7. Рекомендую сохранить этот файл, как шаблон для будущего использования.

 

 

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

 

Прежде чем продолжать работу с TESsnip, вам нужно найти ID всех материалов, необходимых для создания предмета и ID самого предмета. Для этого руководства нам понадобятся ID of слитков железа (Iron Ingots), дров (Firewood), и топра дровосека (Woodcutter's Axe).

 

Есть несколько способов найти нужные ID. Самый простой – найти их в UESP wiki. Или можете найти их сами, просмотрев Skyrim.esm с помощью TESnip или Skyrim Viewer, но это более сложно.

 

Другой путь, использовать консоль игры для поиска. Для этого используйте команду help "query" 0, где query – ваша строка поиска. Это даст вам список всех записей в игре, содержащих эту строку. Длинный список можете прокручивать клавишами PgUp и PgDn.

 

Итак, наши ID:

Железный слиток (Iron Ingot): 0005ace4

Дрова (Firewood): 0006f993

Колун (Woodcutter's Axe): 0002f2f4

 

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

 

1. В главном окне FOMM, кликните ПКМ на Skyrim.esm и выберите TESsnip. Понадобится несколько минут, чтобы открыть файл.

2. В Skyrim.esm найдите группу записей GRUP (COBJ) и выберите ее.

3. В меню Edit, выберите Copy.

4. Возвращайтесь в окно вашего нового файла и выбирайте корневую запись плагина (там написано New plugin или имя файла, если вы его уже сохранили).

5. В меню Edit, выберите Paste.

6. Удалите все записи из группы GRUP (COBJ) (находясь в окне плагина).

(Это единственный способ, который я знаю, чтобы создать группу в TESsnip. Если кто-то знает другой, без Copy/Paste, дайте мне знать.)

7. Выберите GRUP (COBJ) и выберите New Record из меню Edit.

8. Дважды кликните на NEW_ и измените ее на and change the new to COBJ.

Создайте form ID и введите ее в поле form ID (смотри Приложение A: Form ID в конце).

В поле Unknown 2 введите 000e6917.

В поле Unknown 3 введите 00020028. (Я не знаю, что делают эти записи, я взял их из существующих рецептов)

Нажмите Save.

9. Выберите запись COBJ и выберите New Subrecord из меню Edit.

10. Дважды кликните на Субзапись NEW_ и смените ее название на EDID.

В большом окне редактирования справа наберите editor ID которое еще не используется. В этом руководстве наберем RecipeWeaponWoodcutterAxe

В левой части добавьте байты 00 в конец.

Нажмите Save.

11. Создайте новую Субзапись. Дважды кликните на нее и назовите COCT.

В шестнадцатеричной (левой) секции редактора введите число материалов, используемых для рецепта, как 4-х байтовой шестнадцатеричное число. Если вы используете группы (stacks) (например. 10 железных слитков (Iron Ingots) группа считается, как 1.

В этом руководстве мы используем 2 материала, дрова (firewood) и железные слитки (iron ingots). Так что вводим 02 00 00 00.

12. Создайте Субзапись 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.

13. (Опционально) Если хотите задать свои требования для рецепта, создайте Субзапись CTDA и введите данные.

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

В этом рководстве мы не будем создавать эту субзапись.

14. Создайте субзапись CNAM. Это ID предмета, который мы хотим создать.

В этом руководстве это будет Колун (Woodcutter's Axe) ID (0002f2f4), так что введем F4 F2 02 00.

15. Создайте субзапись 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

16. Создайте субзапись NAM1. Это итоговое число изготавливаемых предметов. Оно может быть 2 байтовым или 4 байтовым целым.

В этом руководстве введем 01 00.

 

 

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

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

Возвращайтесь в TES4 субзапись HEDR и смените Record Count на полное число записей, включая записи GRUPs и TES4.

Если вы следовали инструкции, то их будет 3. TES4, GRUP (COBJ), and COBJ.

Теперь сохраните свой плагин, как файл esp file и включите его в Skyrim (Файлы (Data Files) в ланчере или отредактируйте plugins.txt).

Загрузите игру и посетите кузницу. Вы найдете рецепт Колун (Woodcutter's Axe) разделе РАЗНОЕ (MISC) кузницы.

 

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

 

 

(Опционально) Часть 5: Перемещаем Ваш рецепт в другое меню

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

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

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

 

1. Откройте Skyrim.esm в TESsnip. Найдите предмет и скопируйте его и его группу записей в свой плагин.

В этом руководстве скопируйте группу записей GRUP (WEAP) и оставьте там только запись WEAP Axe01 (0002f2f4).

2. TESsnip неверно обращается со строковыми ссылками, что приводит к тому, что название предмета начинает отображаться, как string ID, вместо нормального названия. Чтобы исправить это, поменяем субзапись FULL на нужное название. Оно понадобится, чтобы быть верно переведенным в локализованных версиях плагина. (Примечание переводчика. У меня на Win7 Tessnip также не корректно работает с русским языком. Когда вы пбудете в окне переименования субзаписи, русское название отобразится нормально, но, после ее сохранения, оно станет нечитаемым. В игре, однако, все отображается верно).

В этом руководстве назовите субзапись FULL как Колун (Woodcutter's Axe).

3. Субзапись KWDA содержит ключевые слова для предмета. Аналогично субзаписи CNTO для записи COBJ (рецепт), субзапись KWDA может содержать несколько значений. Каждые 4 байта – это ID ключевого слова, ссылающегося на запись KYWD.

Предметам, изготавливающимся по рецептам, нужно ключевое слово Material , чтобы появится в одной из существующих секций меню кузницы. Без ключевого слова Material, рецепт появится в секции РАЗНОЕ (MISC).

Большинство ключевых слов Material – это WeapMaterial или ArmorMaterial. Они могут быть найдены в записях KYWD.

В этом руководстве мы хотим добавить ключевое слово WeapMaterialIron, чей ID 0001e718.

Так что добавьте в конец субзаписи KWDA, после существующих ключевых слов, ID 18 E7 01 00.

4. Последняя субзапись, которую нужно поправить, это KSIZ. Эта субзапись – число, определяющее количество ключевых слов keyword ID, используемых в KWDA.

В этом руководстве у нас уже 2 ключевых слова, присвоенных предмету, так что меняем KSIZ на 02 00 00 00.

 

 

Вот и все! Обновите значение record count, сохраните свой esp, загрузите в игру и проверьте. Вы должны найти Колун (Woodcutter's Axe) в меню кузницы Железное.

 

 

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

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

Я считаю, что обычно form IDs автоматически создаются 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

 

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

Этот байт содержит два свойства. Первое свойство – один оператор.

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

 

o 00 - Равно

o 20 – не равно

o 40 – больше

o 60 – больше или равно

o 80 – меньше

o A0 – меньше или равно

 

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

 

o 01 – ИЛИ (OR). Используйте, если есть несколько субзаписей CTDA и вы хотите использовать совпадение любой из них, а не всех вместе.

o 02 – Запущен на цели (Run on target). По умолчанию функции выполняются на игроке (как player.HasPerk). Не уверен, какая цель нужна в рецептах.

o 04 – Использовать глобально (Use global). Пока не знаю, что означает.

 

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

Например, 62 использует оператор "больше или равно" с флагом "запущен на цели".

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

40 использует оператор "больше" без флагов.

• Заполнение, ничего не делает.

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

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

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

Список функций можете найти здесь: http://mod.gib.me/sk....html#functions

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

• Еще заполнение, но, похоже, всегда 54 00.

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

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

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

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

 

 

Примеры субзаписей CTDA, использованных мной в создании стрел (Arrowsmith)

 

Эта субзапись 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).

 

Эта субзапись 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 глобальное (global) id (000f46d1) для работы в небесной кузнице (SkyForgeSmithing).

 

Эта субзапись 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 проверяет, что результат функции больше или равен 1.0 (00 00 80 3F)

2F 00 функция GetItemCount. Ее id 4143. Вычтите 4096 и сконвертируйте результат в шестрадцатеричное значение, получите 002f.

66 AD 03 00 это id предмета (0003ad66) Перо ворожеи (Hagraven Feathers).

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

 

автор: Samutz

переводчик: Boblen

 

Обсуждение новостей

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

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...