Перейти к содержимому






- - - - -

Кузнечное дело: расширенное (Алхимический котел)

Написано Umbakano Jr, 09 января 2013 · 669 просмотры

Итак, главный котел закончен - звуки и эффекты "прикручены", меню крафтинга прицеплено. Все работает, все нравится, но...
Мне показалось это слишком просто! Захотелось большего!

Почему бы не задействовать готовые зелья при создании новых на стандартном алхимическом столе? Почему бы не применять вина/бренди в алхимических опытах? Для этого нужно лишь "превратить" группу ALCH в группу INGR!

Идея показалась интересной и вот этим я и занимался эти дни.

Как оказалось, группы INGR(ингредиенты) и ALCH(Potion) по своей структуре практически идентичны! Отличие только в размере одного поля Data - остальное все совпадает! Даже окошки свойств для этих объектов содержат одинаковые поля, хотя я точно помню, что в первых версиях конструктора для объектов Potion невозможно было прицепить скрипт. Значит, Беседка развивает формат, стремясь к какой-то своей цели! Может быть даже планирует объединить эти группы?

Для меня же, задача упростилась и свелась к дублированию записей Potion и смене принадлежности на группу INGR. Для этого, я открыл skyrim.esm в TES5Edit, выделил все записи из группы зелий и скопировал их в новый плагин. TES5Edit, в случае групповых операций, предлагает переименовывать объекты используя префиксы и суффиксы, что очень удобно! Таким образом я получил список с новыми объектами, но идентичные по свойствам группе зелий.

Далее, имея новый плагин с новым списком зелий, я воспользовался программой TESVSnip. Она предоставляет низкоуровневый доступ к структуре мода, так что можно отредактировать служебные поля, недоступные изменению в других программах. Таким образом, я заменил для каждой записи заголовок ALCH на INGR, и получил список новых ингредиентов по свойствам идентичными своим "образцам"! Исключение составило поле Data, содержимое которого, скорее всего "испортилось", но я надеялся его восстановить в последствии.

Следующим шагом стала загрузка этого списка в конструктор. КК при загрузке нормально обработал эти новые записи и я получил "новые ингредиенты". Единственной информацией, потерянной из-за несовпадение поля Data, стали вес и цена! Но их легко я внес прямо в конструкторе.

Итак, я получил зелья, напитки и "сырые" продукты питания как ингредиенты и мог их использовать на обычном алхимическом столе! Но, предстояло решить задачу внедрения этих новых объектов в "жизнь" (в игру).

Я пошел по пути "наименьшего сопротивления" и ввел в игру "алхимический куб", который при активации "конвертирует" добавляемые в него объекты ALCH в INGR и наоборот! Это значит, что если вы захотите использовать корзину яблок или готовые яды в своих алхимических опытах, вам придется конвертировать их в ингредиенты. Остатки можно конвертировать обратно в исходные объекты, а можно носить и пользоваться ими и в таком виде - эффект идентичен!

Не буду описывать подробно весь процесс создания скрипта для такого "куба", это та еще песня! Ведь пришлось работать с большим количеством объектов, а это значит, с большим количеством Property и еще большим количеством однообразных блоков кода скрипта. Но упомяну основные этапы этой работы.

Использовать КК для ввода большого количества Property нецелесообразно! Это займет несколько дней! Поэтому, я использовал SkyEdit для экспорта нужных записей в файл csv(таблица). Открыл этот файл редактором электронных таблиц и операциями замены текста и применением формул, сформатировал список Property и целые блоки кода с нужными Property. А потом вставил их в файл скрипта и применил Autofill. Таким образом, скрипт размером более чем в 3200 строк я изготовил чуть более за час!

На данный момент, алхимический куб готов и работает. Несмотря на "тяжелый" скрипт, скоростью его работы я доволен.

Из запланированного осталось сделать аппарат для получения эссенций. Да-да! Я решил сделать эту функцию отдельным агрегатом и несколько другим способом нежели котел.

Так что работы продолжаются!




>>>аппарат для получения эссенций

Как ты здорово самогонный аппарат обозвал))) или это у тебя дистиллятор?))