Of Steamworks and Magick Obscura
АРКАНУМ
арканум
arcanum

Читальный зал

arcanum

Поддержи Клуб!

arcanum

Проекты

arcanum
Файловый архив
Архивы

Мастерская

arcanum

Моддинг игр

arcanum
Arcanum
Главная | Форумы | О проекте | Новости | Графика | Мануалы | Моддинг | Поиск | Контакты

Мануал по моддингу игры Arcanum: Of Steamworks and Magick Obscura

Создаем новые предметы для магазинов

Арканум

Новый art, pro, торговцы, магазины… От начала — до конца. Размещаем в игре все эти «чудеса».

Важное примечание: Мануал написан давно. Но… Не закончен. Логика создания предположительно правильная, но практически — она не работает не везде и не всегда. Публикация этого материала сделана по «заявкам трудящихся» для «работы над ошибками». Повторяюсь — МАНУАЛ НЕ РАБОЧИЙ. Но можно ознакомиться и высказаться на Форуме.

Пробуем реализовать интересную задачку — создать новый «генерируемые» предмет(ы) с оригинальной, новой графикой и размещаем их в игре таким образом, что б они появились на прилавках магазинов. Кроме того, попробуем создать оригинальный магазин — к примеру — ювелирную и винную лавки с ассортиментом из нами же и созданных товаров… Этапов много, пойдем по порядку.

  1. Прорисовка графики предметов, создание art — файлов и их «прописка».
  2. Подготовка соответствующих разработанной графике прототипов — файлов pro и их «прописка» в игру.
  3. Создание магазина, торговца и формирование «ассортимента» товара.
  4. Испытания.

Этап первый

Прорисовка графики предметов, создание art — файлов и их «прописка».

Графика у меня, конечно, готова заранее и даже «прописана» в моем моде. Как делать art-файлы я довольно подробно написал в мануал 1 и мануал 2. Почитайте еще разок, если подзабыли.

В данных записках я буду использовать графику предметов с рис. 1. Как я и сказал, они уже присутствуют в моде, и art-ы этих предметов присутствуют в файлах item_ground.mes, item_inven.mes, item_paper.mes и item_schematic.mes, что находятся в папке /data/art/item.

arcanumarcanum
Рис. 1Рис. 2

Но по сути, в игре есть только графика, ей можно пользоваться в редакторе. Но у предметов нет более ничего — ни имен, ни опознавательных «знаков». Как сделать art и прописать их в mes уже подробно расписано. На примере одного файла — item_inven.mes — покажу, как у меня это сделано (все предметы из категории generic, и только камни пока что):

  • {9191}{i_lizard_leg. ART}
  • {9192}{i_skeletonkey01.ART}
  • {9193}{DwarvenTablet. ART}
  • {9194}{Emerald_big.art} // большой изумруд — две оригинальные проекции
  • {9195}{Gem_new_01.art} //жемчужина желтая — две
  • {9196}{Gem_new_02.art} //топаз белый плоский камень — одна
  • {9197}{Gem_new_03.art} //алмаз — одна
  • {9198}{Gem_new_04.art} //эльфийский берилл — две
  • {9199}{Gem_new_05.art} //гранат красный — одна
  • {9200}{Gem_new_06.art} //жемчужина розовая две
  • {9201}{Gem_new_07.art} //жемчужина черная — две

Понятно, что с проекциями — одна — в инвентаре или в контейнере, вторая — на земле. Если «земляной» нет — то используется проекция графики игры, но прописывать ее по этим номерам все едино надо. Поясняю — вот кусок кода из item_ground.mes:

  • {9194}{g_emerald_big.art}
  • {9195}{g_Gem_new_01.art}
  • {9196}{g_Gem_new_02.art} // — берем art-файл от базового бриллианта, переименовываем его в g_Gem_new_02.art — и все…
  • {9197}{g_Gem_new_03.art} // — берем art-файл от базового бриллианта, переименовываем его в g_Gem_new_03.art
  • {9198}{g_Gem_new_04.art}
  • {9199}{g_Gem_new_05.art} // — берем art-файл от базового рубина, переименовываем его в g_Gem_new_05.art
  • {9200}{g_Gem_new_06.art}
  • {9201}{g_Gem_new_07.art}

Проекций здесь нужно всего две, ведь камней не будет в «в руках».и в item_paper.mes и item_schematic.mes ничего вносить (в данном случае)не надо. Теперь надо прописать имена и номера предметов в /data/mes/description.mes Пусть так:

  • {15210}{Эссенция ветра}
  • {15211}{Эссенция ветра Волара}
  • {15212}{Медицинский паук}
  • {15213}{Больщой изумруд}
  • {15214}{Жемчужина желтая}
  • {15215}{Топаз}
  • {15216}{Алмаз}
  • {15216}{Эдьфийский берилл}
  • {15217}{Гранат}
  • {15218}{Жемчужина розовая}
  • {15219}{Жемчужина черная}

Понятно, что названия можно всегда поменять…

Этап второй

Подготовка соответствующих разработанной графике прототипов — файлов pro и их «прописка» в игру.

Для начала найдем образец. У меня это будет изумруд — самый безобидный камень, он не несет нагрузки типа — жертвенный камень. Для этого — открываем файл /data/mes/description.mes и находим номер нужного предмета. В моем случае — {15200}{Изумруд}. Номер 15200. Помятуя о разнице на 20 между номерами названий и pro-файлов — определяю, что номера моих прототипов — 15220 — т. е. это файл 015220 — Generic.pro. Открываю его в hex-редакторе (неплохой hex-редактор лежит здесь на сайте — скачать WinHex 11.5 816 Кб) и сразу записываю все восемь pro как:

  • 015233- Generic new gem1.pro
  • 015240- Generic new gem8.pro

Все файлы сохраняем в папке прототипов /data/proto. Все остальное — имена и т. п. я уже прописал ранее. Теперь посмотрим на код и отредактируем его.

В коде разными цветами помечены разные свойства предмета. Конечно, я подразумеваю, что читатели этих строк хоть чуть-чуть (как и я сам) понимают, что такое hex и как в него пересчитать обычные и привычные нам числа и прочие мелочи. Если нет — попробую отвечать на Форуме, спрашивайте там.

Голубой цвет — номера строк.

Зеленым цветом выделены числа, отвечающие за различные имена и номера. Пояснять буду на основе Рис. 3 (изумруд), а отредактированный hex-код моего второго камня (желтая жемчужина) — на рис. 4 (большой изумруд я приберегу для нетривиальных задач, продавать-покупать в сельпо его не будут).

Изумруд 015220 — Generic.proЖемчужина желтая 015234- Generic new gem2.pro
00000000 7700 0000 FFFF 0000 0000 0000 0000 0000
00000010 0000 0000 0000 0000 0000 0000 0100 0000
00000020 FAD5 3702 743B 0000 0200 0000 F2D5 3702
00000030 B98A EDB7 0E00 0000 0100 E024 0200 0000
00000040 5418 0000 0000 0000 0900 6661 0000 0000
00000050 0000 0000 00FF FFFF FF01 0400 0000 0700
00000060 0000 0200 0000 FFFF FFFF FFFF FFFF FFFF
00000070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00000080 FFFF 0200 0000 7F00 0000 0000 0000 0104
00000090 0000 0007 0000 0001 0000 00FF FFFF FFFF
000000A0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
000000B0 FFFF FFFF FFFF FF02 0000 007F 0000 0000
000000C0 0000 0001 0400 0000 0400 0000 0100 0000
000000D0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
000000E0 0200 0000 0F00 0000 0000 0000 0000 0000
000000F0 FFFF FF00 FF00 0000 6400 0000 0000 0000
00000100 FFFF FFFF FFFF FF00 0001 0400 0000 0400
00000110 0000 0500 0000 FFFF FFFF FFFF FFFF FFFF
00000120 FFFF FFFF FFFF 0200 0000 0F00 0000 0000
00000130 0000 0034 0400 0000 0000 0000 0000 00E0
00000140 1500 0060 3B00 0009 0066 61FF FFFF FF00
00000150 0000 000A 0000 0000 0000 0000 0000 0006
00000160 0000 0000 0000 0000 0001 0000 0000 0000
00000170 0000 0000 0200 0000 0000 0000 6400 0000
00000180 0000 0000 0910 6661 0000 0000 FFFF FFFF
00000190 0000 0000 0000 0000 603B 0000 603B 0000
000001A0 1027 0000 1027 0000 1027 0000 1027 0000
000001B0 1027 0000 0000 0000 0000 0000 0000 0000
000001C0 00000000 00000000 0000 0000 0000 0000
000001D0
00000000 7700 0000 FFFF 0000 0000 0000 0000 0000
00000010 0000 0000 0000 0000 0000 0000 0100 0000
00000020 FAD5 3702 823B 0000 0200 0000 F2D5 3702
00000030 B98A EDB7 0E00 0000 0100 E024 0200 0000
00000040 5418 0000 0000 0000 0900 8661 0000 0000
00000050 0000 0000 00FF FFFF FF01 0400 0000 0700
00000060 0000 0200 0000 FFFF FFFF FFFF FFFF FFFF
00000070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
00000080 FFFF 0200 0000 7F00 0000 0000 0000 0104
00000090 0000 0007 0000 0001 0000 00FF FFFF FFFF
000000A0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
000000B0 FFFF FFFF FFFF FF02 0000 007F 0000 0000
000000C0 0000 0001 0400 0000 0400 0000 0100 0000
000000D0 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
000000E0 0200 0000 0F00 0000 0000 0000 0000 0000
000000F0 FFFF FF00 FF00 0000 6400 0000 0000 0000
00000100 FFFF FFFF FFFF FF00 0001 0400 0000 0400
00000110 0000 0500 0000 FFFF FFFF FFFF FFFF FFFF
00000120 FFFF FFFF FFFF 0200 0000 0F00 0000 0000
00000130 0000 0034 0400 0000 0000 0000 0000 00E0
00000140 1500 006E 3B00 0009 0086 61FF FFFF FF00
00000150 0000 000A 0000 0000 0000 0000 0000 0006
00000160 0000 0000 0000 0000 0001 0000 0000 0000
00000170 0000 0000 0100 0000 0000 0000 8200 0000
00000180 0000 0000 0910 8661 0000 0000 FFFF FFFF
00000190 0000 0000 0000 0000 6E3B 0000 6E3B 0000
000001A0 1027 0000 1027 0000 1027 0000 1027 0000
000001B0 1027 0000 0000 0000 0000 0000 0000 0000
000001C0 0000 0000 0000 0000 0000 0000 0000 0000
000001D0
Рис.3Рис.4

На строке …00020. 733B — номер прототипа (файла pro). Понятно, что это hex-код. Берете калькулятор Windows, делаете иму «инженерный» вид. Ставите галку на «Dec». Забиваете 15220 (номер вашего pro). Жмете «Hex» — видите 3B74. Искомый код. И не спрашивайте, почему мы прописываем 743B, а не 3B74. Вы ж не программист, а Кузнец. Важно, что понятен принцип — при редактировании pro меняйте цифры местами — две первые с двумя последними. Теперь должно стать понятно, что за цифирь на рис. 4 — 823B — это номер 15234 — прототипа в hex.

На строках …00130 — …0140. E015 — номер предмета в файле /data/oemes/Oname.mes и Вы уже знаете — что это. Проверим с калькулятором. Забиваем в hex 15E0, жмем Dec, имеем — 5600. Смотрим — что это — {5600}{Generic}. То — что надо. У нашего предмета такое же название и номер.

На строке …00140. 603B — номер (имя) предмета в /data/mes/description.mes. Проверим Берем опять калькулятор, жмем «Hex» и вводим 3B60, жмем «Dec» — имеем 15200 — это {15200}{Изумруд}. Напомню лишний раз, что номера pro и номер предмета отличаются на 20. В этом случае — 15234 и 15214. Соответственно, для моего ключа с номером 15234 pro, номер (имя) должно быть 15214. Переведя его в hex — забиваем (см. рис. 4) 6E3B, что будет соответствовать строчке {15214}{Жемчужина желтая}. Надеюсь, что пока все понятно.

На строке …00190. 603B — имя предмета до его идентификации — «неизвестное» имя. Номер (имя) прописаны в /data/mes/description.mes. Проверим. Для тренировки. «Hex» — 3B60 — «Dec» — 15200 — это {15200}{Изумруд}. Все верно. В новом предмете — Жемчужина желтая — я уже прописал в description.mes его номер и имя — {15214}{Жемчужина желтая}. Правим соответственно hex — вставляем 6E3B.

На строке …00190. 603B (второй раз) — описание предмета, эффектов, что он в себе несет. Прописывается в /data/mes/item_effect.mes И это именно — описание, но не сам эффект. Проверим, что там… — опускаю процесс с калькулятором, Вы уже поняли видимо… — результат — 15200 — а там и нет ничего… У меня, по крайней мере. Значит в описании — ничего и нет. А в новом предмете я пропишу что-нибудь, типа, {12063}{Ключ имеет странный зеленый цвет, металл светится изнутри…}. Редактирую hex и прописываю 6E3B.

С именами и номерами, надеюсь — разобрались.

Небольшое лирическое отступление. Конечно, у всех предметов hex выглядит весьма и всегда по разному, разное число строк. Не стоит пугаться. Так и должно быть. Ищите подобие, чуть присмотревшись к коду Вы без труда и безошибочно определите, какие элементы кода за что отвечают. Структура hex сохраняется всегда, а «исчезновение» или «добавление» строк связаны с использованием/неиспользованием им тех или иных эффектов и свойств. Особенно «убивает» вид hex высокотехнологичных предметов с массой прибамбасов и свойств. Я б не рекомендовал делать слишком «навороченные» предметы. Иногда, для поиска «точки отсчета» вычислите hex имени или прототипа и найдите это число в коде. Вот и точка входа…

Возвращаемся к коду. Желтые метки Вся цифирь, отмеченная желтым — отвечает за графику — как предмет выглядит в четырех основных видах — на «земле», в контейнере (или инвентаре), в «руках» и на схематике. Совсем подробно — по ссылке, а в общем-то — правим. В базовом варианте — изумруд — видим всего два варианта кода картинки. Меня это устраивает, земля-инвентарь.

На строке …00040. 0900 6661 — эта строчка отвечает за вид предмета «на полу»

На строке …00140. 0900 6661 — эта строчка отвечает за вид предмета «на полу»

На строке …00180. 0910 6661 — эта строчка отвечает за вид предмета в контейнере или в инвентаре

На строке …001C0. 0000 0000 — эта строчка отвечает за вид предмета в «в руках» — даже не рассматривается, в руках его не бывает — нули…

Далее — чисто эмпирические наблюдения и данные «метода научного тыка»… Поскольку — мы будем лишь переделывать предметы из готовых, присутствующих в игре, то, наверное, и этого хватит… 6661 — непосредственно номер art-файла из документов «прописки» этих файлов, конкретно — item_ground.mes, item_inven.mes, item_paper.mes и item_schematic.mes, что находятся в папке data/art/item. Номер вычисляется по «эмпирической» формуле, после перевода в десятичный вид 6661, что будет 24934. Формула такая: (24934 — 24416) / 2 + 8920 = 239. Почему она такая — потому что. Как понятно, что в ней меняются только значения 24934 и 239, остальное — константа… Сильно смахивает на подгонку задачки под ответ, но мне (лично) нужен результат, а не логика программиста… Данная формула — только для generic. Для остальных категорий — она другая, учитывайте это… Чистый эмпиризм в погоне за результатом. Как использовать. Во всех mes-файлах, отвечающих за art номера предметов одинаковы. Я делаю Жемчужину желтую. Нахожу номер art, открыв (- ранее (прямо здесь) я все уже прописал) item_inven.mes:

  • {9191}{i_lizard_leg. ART}
  • {9192}{i_skeletonkey01.ART}
  • {9193}{DwarvenTablet. ART}
  • {9194}{Emerald_big.art}
  • {9195}{Gem_new_01.art} //жемчужина желтая
  • {9196}{Gem_new_02.art}
  • {9197}{Gem_new_03.art}
  • {9198}{Gem_new_04.art}
  • {9199}{Gem_new_05.art}
  • {9200}{Gem_new_06.art}
  • {9201}{Gem_new_07.art}

Её номер 9195. Решаем уравнение 9195=(Х — 24416) / 2 +8920, где Х — искомое число, которое мы переведем в hex и подставим вместо 6661. Чтоб Вам не мучиться с решением задачки первого класса, да и мне — пересчет для большого кол-ва предметов идет, Х= (9195-8920)х2+24416. Получается 24966. Переводим в hex — 6186. Не забываем переставить 61 и 86 местами — при редактировании кода. Редактируем hex, подставляя в код 8661 вместо 6661 и проверяем результат. Как сразу проверить. Открываем игровой редактор — рис. 2 — жмем кнопки — item — Select. Находим новые предметы… У меня все ОК — рис. 2, все камни на месте

C000, C000, C010, C020. Данные цифры отвечают за тип оружия или амуниции или что Вы еще редактируете. Как их считать — не надо их считать. Просто берем готовый номер из образца и не меняем его. Если кто посчитает — как вычислять — пришлите формулу, буду благодарен и закончу этот раздел. А пока — рекомендую поступать аналогично мне, не тратя попусту время. Если в результате проверок что-то не получается — задавайте на Форуме нашем вопросы, попробую разобраться. И (при желании) шлите мне в почту свои pro, что б не на пальцах… Не забывайте «чистить» папку map при проверках и пробах — при запуске игры. Пошли далее.

Забыл о важных для этих предметов свойствах — вес, цена…

Строка …0170 02 — вес предмета, для изумруда, это 2 (фунта? Мне б такой…). Cтавлю вес — 1, а Большой изумруд пусть будет у меня 8 фунтов.

Строка …0170 6400  — стоимость предмета. Изумруд — 100 монет… Ну я везде разную стоимость повешу. Пусть моя желтая жемчужина стоит 130 — в hex это — 0082, забиваю в скрипт 8200. И редактирую остальные каменья по цене. Ну и все.

Я вместе с Вами сделал 8 новых генеренных (псевдо) предметов — камней и прописал их в игру. Их теперь не надо создавать каждый раз, они «прошиты» и, как бы «генерятся» движком игры. Теперь достаточно указать их номера — там где нам надо — и они появятся. Поймем — а где нам надо. В магазине, к примеру. А можем — раскидать их и по всем сундукам в Arcanum, где они будут возникать случайным образом. Но меня интересовало — именно новый магазин, ювелирный — камни и украшения, предметы роскоши. Займемся.

Создание продавца и магазина, нового совсем, торгующего сугубо предметами роскоши.

Вопрос специфичный, но я его расскажу здесь, что б новый мануал не открывать. Поскольку товар и перечень товара — новые, создаем его с нуля. Открываем два файла, отвечающие за ассортимент продаваемых-покупаемых товаров. Это /data/Rules/InvenSource.mes и /data/Rules/InvenSourceBuy.mes. Первый — это список типов торговцев и чем торгуют, второй — тот же список и что покупают. Все просто. Придумаем название торговцу и пропишем его в конец списка с очередным порядковым номером. Получится так:…

На этом всё и закончилось. При испытаниях — ничего не заработало… Позже, на Форуме обсуждался вопрос — Почему? и с некоторыми выводами можно там ознакомиться. Причина ошибки выяснена, поставленная задача — не решаема «в лоб», найдены обходные пути. Если кому интересно — читайте Форум.

Оглавление раздела   ВКонтакте   Форум   На Главную


Arcanum
Arcanum жив!
Рекомендуем
Новости проекта

Все новости

Арканум Клуб: Фэнтези, RPG, творчество. Нарисуй свой Арканум!

Arcanum: Of Steamworks and Magick Obscura

© 2005–2022 Арканум-Клуб