» Функционал проекта
» Пользователи
» Компании
» Статистика
» FAQ
Valverave 41 бросил вызов DeoKristal 37 и победил
1 месяц назад
Всем привет. С вами снова Jetaman. На этот раз хочу вам представить результаты моих исследований в области .dt1 и .ds1 (другими словами тайлсеты и карты).
Во первых, уже существует статья Paul Siramy которая описывает формат .dt1 с точки зрения программиста. Однако эта статья не полная и содержит некоторую неверную информацию. Данная статья, с другой стороны, не описывает код, а нацелена на мэпмейкеров которым нравиться создавать новые карты, локации и тайлсеты. Эта статья поможет вам разобраться со всем, что относиться к картам и тайлсетам.
Когда вы откроете свой редактор карт, и нажмете правой кнопкой мышки на тайле, вы увидите что каждый тайл имеет три индекса которые делают его уникальным и распределяют его в ту или иную категорию.
1-Основной индекс (Main Index) 2-Ориентация (Orientation) 3-Саб индекс (Sub index)
Ориентация 0 – Пол Ориентация 1 – Левая стена Ориентация 2 – Правая стена Ориентация 3 – Правая часть северного угла Ориентация 4 – Левая часть северного угла Ориентация 5 – Левая крайняя стена Ориентация 6 – Правая крайняя стена Ориентация 7 – Южный угол Ориентация 8 – Левая стена проход Ориентация 9 – Правая стена проход Ориентация 10, 11 – Специальные тайлы Ориентация 12 – Единичные объекты, колонны и тд Ориентация 13 – Тени Ориентация 14 – Деревья (с собственной тенью) Ориентация 15 – Крыши Ориентация 16 – Левая нижняя стена (эквивалент Ориентации 1) Ориентация 17 – Правая нижняя стена (эквивалент Ориентации 2) Ориентация 18 – Северный угол нижней стены Ориентация 19 – Южный угол нижней стены
Есть еще один очень важный индекс, который не распределяет тайл по категориям и не отображается в редакторе. Это «Направление» (Direction). «Направление» решает, как свет будет падать на тайл. Это очень важно, если вы создаете новые тайлсеты. Paul Siramy в своей статье говорит что он нашел 5 индексов Направления и заявляет что они ни на что не влияют, однако я нашел целых 9. «Направление» работает совместно с «Ориентацией». Нужно всегда использовать индекс Ориентации с подходящим индексом Направления. Ниже приведена таблица как нужно их использовать.
Direction 1
Orientation 1, 5, 8
Direction 2
Orientation 2, 6, 9
Direction 3
Orientation 0, 3, 4, 12, 14
Direction 4
Orientation 7
Direction 5
Orientation 15
Direction 6
Orientation 16
Direction 7
Orientation 17
Direction 8
Orientation 18
Direction 9
Orientation 19
В этом разделе я предлагаю вам ознакомиться со структурой некоторых зданий в Д2. Я делал это в основном для себя, но позже решил поделиться со всеми. Это поможет вам понять как устроены элементы стен в Д2, если вы захотите создавать новые карты или тайлсеты. После анализа и изучения эти примеров я многому научился, и рекомендую вам. Я немерено не представил здесь все здания Д2, потому что эти примеры демонстрируют все важные аспекты и интересные комбинации.
*** Числа на картинках обозначают Индекс Ориентации.
Акт 1 – Дом + Крыша *** Это базовая структура стен. Здесь использованы все базовые типы Ориентаций.
Акт 1 – Повозка Гида
Акт 1 – Кузница Чарси *** Первый тайл справа стоит выше над землей по сравнению с остальными тайлами стен.
Акт 1 – Палатка Акары * Палатка Акары состоит из двух тайлов Ориентации 12 Странно не так ли? Почему на 1 или 2?
Акт 1 – Длинная Палатка + Крыша
Акт 1 – Мавзолей *Часть лестницы сделана как пол, чтобы игрок мог подойти к входу.
Акт 1 – Крипта **** Часть лестницы сделана как пол, чтобы игрок мог подойти к входу.
Акт 1 – Башня Графини *** Это здание состоит из двух слоев стен. Когда вы заходите внутрь, верхний слой исчезает. По неизвестной нам причине южная угловая стена имеет ориентацию 2 вместо 7.
Акт 3 – Дом Ашеары *** Левая крайняя стена с Ориентацией 6 вдвое дольше обычного, поэтому занимает два квадрата. ***Внутри дома есть стена с изображением дракона, по какой-то причине она имеет ориентацию 6 вместо 1. *** В этом здании используется специальные тайлы чтобы убрать верхний слой стен, открывая интерьер дома.
Акт 3 – Пирамида *** Я был очень удивлен когда я понял насколько просто сделано это здание. Зад пирамиды сделан непроходимым, поэтому игрок не видит этого. Также, на пирамиде есть прозрачные пиксели и если бы игрок бегал сзади пирамиды, то его было бы видно, а это не очень красиво.
Акт 2 - Таверна *** Перед этого здания состоит из двух слоев стен + крыша. Чтобы убрать верхний слой стен и крышу используется Специальный Тайл #49. Это здание интересно тем что верхний слой стены стоит выше нижнего, таким образом создавая эффект двойной высоты стен.
Вам когда ни будь было интересно, почему статуи Рыцарей Смерти в Огненной Реке поворачивают головы, когда вы проходите мимо них? Это закодированное поведение? Анимированый объект? Темная магия? Нет. Это тот же самый механизм, который в первом акте заставляет крышу исчезать, когда вы заходите в дом. Это делается с помощью Специальных Тайлов – они убирают один слой и открывают другой. В случай со статуями – 2 статуи стоят поверх друг друга, когда игрок подбегает к ним, одна исчезает, другая появляется. Вот так просто.
Специальные Тайлы это тайлы которые находятся во вкладке «Special» в редакторе карт. Они выполняют разные функции. Вот список их функций.
#00-46, #82, #83 Vis (тайлы которые позволяют переходить с одной зоны в другую) #47-74 Area (тайлы которые позволяют убирать стены и крыши) #75 Место появления в городе #76 Место появления на локации #77 Место появления в городе 2 #78 Место появления трупа #79 Место появления портала #80 Неизвестно
Мы будем говорить о Специальных Тайлах #47-74 более детально. Но сначала нужно понять что такое «Крыши».
Крыши это те же саме тайлы пола, но с индексом Направления 5 и Ориентацией 15. Крыши должны стоять выше по оси Y, как бы над землей. Для этого, в параметрах тайлсета (в .ini файле) есть строка “roof_y = ”. Обычно “roof_y = 80”, но другие числа тоже возможны, например 160, 240, 320, 400. Но всегда на 80 пикселей вверх.
Пара Специальных Тайлов определяет зону в которой исчезают тайлы. Нужно поставить два идентичных Специальных Тайла так чтобы они сформировали квадрат или прямоугольник над той зоной, которую вы хотите убрать. Как вы видите на примере ниже, если поставить Специальные Тайлы таким образом, красная линия определяет зону где тайлы исчезают.
В файле Lvlprest.txt есть два столбца которые имеют отношение к этому:
Pops – число «исчезаемых зон» которые вы используете на карте. Например, в домике в Акте 1 используется 2 зоны, а в Башня Графини 1 зона.
PopPads – регулирует линию триггера исчезаемой зоны. Другими словами это оффсеты которые измеряются в саб-тайлах
PopPads не определяет размер исчезаемой зоны. Он определяет, где игра приведет в действие механизм исчезания. Если ввести здесь 0, исчезаемость будет точно по линии Специальных Тайлов (красные границы). Если например ввести число 3, тогда зона тригера увеличится на три саб-тайла (синие границы). Если использовать негативное число -3, зона тригера уменьшится на три саб-тайла (зеленые границы).
Очень важно помнить, что зона триггера увеличивается или уменьшается только в двух направлениях: Юг и Восток. Итак, как мы видим на этом изображении, тайлы которые находятся в красной зоне исчезают, когда вы проходите по зеленой или синей границе (в зависимости от числа в PopPads).
Если вы хотите сделать собственные исчезаемые крыши или стены, помните одну очень важную вещь: каждый Специальный Тайл работает со своим собственным Основным индексом. Например, если мы взглянем на крышу дома в Акте 1, мы увидим что крыши имеет Основной Индекс 46, и используются Специальные Тайлы #59 и #62. Это означает что эти два Специальных Тайла не будут работать з другими Основными Индексами. А если Специальный Тайл убирает крышу и стены одновременно (как #47 в городе Акт 4), тогда крыша и стены должны иметь одинаковый Основной Индекс. Если вы посмотрите в городе Акт 4, стены и крыша которые исчезают, имеют Основной Индекс 2 а стены которые остаются, имеют Основной Индекс 4. Детальнее о Специальных Тайлах ниже.
Почти все что было известно о Специальных Тайлах до сейчас было частично неверно. Наши знания основывались на двух предположениях взятых с единственной темы на форуме
1. Специальные Тайлы работают только в одном акте (тайлы из акта 4 не работают в акте 1) 2. Специальные Тайлы убирают конкретный слой стен.
Оба этих предположения оказались неправильными. Акты и слои не имеют значения. Любой Специальный Тайл может использоваться в любом акте и убирать любой слой стен. Единственное что имеет значение это Основной Индекс. Специальные Тайлы проверяет только Основной Индекс тайлов которые стоят в их зоне.
Одна из вечных проблем моддеров была поставить в городе два дома рядом и сделать так чтобы их крыши исчезали отдельно. Всегда они исчезали или вместе или исчезала только одна а вторая вообще никогда не исчезала. Это возможно? – Да. И не только два. Вы можете иметь до 4-ех отдельно исчезаемых зон одновременно.
В редакторе карт специальные тайлы #47-74 распределены по Основному Индексу 8, 9, 10, 12, 13, 16 и 20.
Все эти тайлы нужно разделить на 4 группы:
1. Группа 1 – Специальные Тайлы с Основным индексом 8, 9, и 10. 2. Группа 2 – Специальные Тайлы с Основным индексом 12 и 13. 3. Группа 3 – Специальные Тайлы с Основным индексом 16. 4. Группа 4 – Специальные Тайлы с Основным индексом 20.
Но как нам знать какой Основной индекс убирают Специальные Тайлы? Вот это очень интересно. Саб индекс Специального тайла равняется Основному Индексу которые он убирает. Например, Саб индекс Специального Тайла #47 это 2. Это означает Специальный Тайл #47 убирает все тайлы в которые имеют Основной Индекс 2. Специальный Тайл #48 убирает тайлы с Основным Индексом 7. Специальный Тайл #49 убирает тайлы с Основным Индексом 8 и тд. Теперь, взгяните на Специальные Тайлы #54, #60 и #63 – у них одинаковый Саб Индекс 23. Это означает что все они убирают тайлы с Основным индексом 23. Но зачем нам аж три специальных тайлы с одинаковой функцией? Ответ: для того чтобы иметь возмоножсть формировать сложные фигуры которые нельзя сделать с помощью одного Специального Тайла. С этими тремя Специальными тайлами вы можете создать абсолютно любые сложные фигуры для своих исчезаемых крыш или стен. Эти три Специальных Тайла находятся в одной группе, поэтому они будут убирать все одновременно.
А теперь взгляните на Специальные Тайлы #66 и #74. У них тоже одинаковый Саб индекс 23. Но они принадлежать к разных группам (#54, #60 и #63 из Группы 1, #66 из Группы 2, #74 из Группы 4). Это означает что они будут убирать тайлы отдельно.
Но помните: не используйте Специальные тайлы с одинаковым Основным Индексом вместе (например #47 и #48). Будут глюки!
Подведем итог: если вы будете использовать Специальные Тайлы из 4 разных групп, вы можете иметь 4 исчезаемые зоны одновременно. Вам лишь нужно выставить подходящий Основной индекс для соответствующего Специального Тайла.
В таблице ниже вы можете найти всю информацию о Специальных тайлах #47-74.
Группа
Основной индекс
№ Специального Тайла
Убирает Основной Индекс
Группа 1
8
#47
2
#49
#50
12
#51
14
#52
16
#53
22
#54
23
#55
31
#56
40
#57
41
#58
42
#59
46
9
#60
#61
#62
10
#63
Группа 2
#64
13
#65
#66
#67
24
#68
#69
Группа 3
#70
25
#71
#72
#73
Группа 4
20
#74
Далее, я расскажу об одной вещи которая оставалась в тайне несмотря на 10 с лишним лет Д2 моддинга. Я имею ввиду прозрачность стен. Это происходит когда персонаж стоит за высокой стеной и стена стает немного прозрачной чтобы вы видели своего персонажа за стеной. Для большинства Д2 моддеров это может показаться несущественным, но для тех кто интенсивно работает с картами это очень важно. А также, очень легко пропустить сундук или монстра если его не видно за стеной, а если вы играете не хардкоре то это вообще очень опасно.
Теперь объясним, как это работает на примере карты Inner Cloister. Весь секрет состоит в том, что прозрачность происходит только тогда когда стены соединены в одну непрерывную цепочку. Если удалить один тайл стены и прервать цепочку – прозрачность исчезает.
Цепочка может иметь любой размер. На одной карте можно иметь несколько цепочек.
В файле Lvlprest.txt, есть один важный параметр, столбец Logicals. 0-отключить прозрачност для этого уровня, 1- включить прозрачность для этого уровня.
Также мой знакомый Ogodei узнал что для того чтобы стены исчезали еще нужно чтобы параметр «Tile Sound» в настройках .ini файла имел значение 0. Если у вас что-то другое кроме 0, стены не будут исчезать.
На сегодня все. Надеюсь вам та информация будет полезной.
На этих видео вы можете наглядно увидеть демонстрацию всего, что я описал в статье.
*** кстати я выпустил плагин с этими домами. Его можно скачать и вставить в игру. Ссылка
4 отдельно исчезаемые зоны одновременно:
Демонстрация нового города с исчаземой крышей:
Дополнительные ресурсы:
Нам понадобятся следующие файлы:
Skills.txt Skilldesc.txt States.txt String.tbl
Сначала надо создать сам навык. Для этого урока мы создадим Паладину навык, который будет давать ему «crushing blow». Назовем этот навык просто - Crush.
Открываем skills.txt, ищем строку 147 (навык «Iron Skin»), копируем целую строку, и вставляем как новую в самом низу файла.
Изменяем поля skill, skilldesc и passivestate на что хотите, в нашем случае - Crush. Очень важно помнить, что то у вас записано в этих полях должно соответствовать и в других файлах – код в поле skilldesc должен соответствовать коду в файле skilldesc.txt, а поле passivestate должно соответствовать коду в файле states.txt.
Измените Id на следующий номер по списку, а в поле charclass укажите, кто будет использовать скил.
Коды персонажей: ama -> Amazon ass -> Assassin bar -> Barbarian dru -> Druid nec -> Necromancer pal -> Paladin sor -> Sorceress
Идем дальше к полю passivestat1, где мы указываем, на что именно влияет навык. Эти коды находятся в файле Properties.txt в колонке stat1, и они отличаются от кодов, которые мы используем для статов в вещах. Колонки stat отсылаются на itemstatcost.txt, и для некоторых бонусов, напиример «+ ко всем резистам (res-all)» требуется больше чем один пассивный passivestat. Если взглянуть на навык Варвара Natural Resistance, который дает бонусы ко всем резистам, мы увидим, что у него заняты четыре из пяти возможный слотов passivestat, и у каждого стата применяестя одинаковый расчет (более детально дальше).
passivestat1 -> poisonresist passivecalc1 -> dm12 passivestat2 -> fireresist passivecalc2 -> dm12 passivestat3 -> coldresist passivecalc3 -> dm12 passivestat4 -> lightresist passivecalc4 -> dm12
Итак, здесь мы пропишем item_crushingblow
Далее, в колонке passivecalc1 нам надо указать, как бонус будет рассчитываться с каждым уровнем.
Два самых простых способа, которых можно здесь использовать это ln12 и dm12. Есть и другие более сложные расчеты (их можно найти в файле skillcalc.txt), и вы можете создавать свои собственные формулы. Также здесь можно указывать просто число (например «20») если ваш навык имеет один уровень (как у меня в моде).
Когда вы используете расчет ln12, то в колонке param1 вы задаете начальный бонус на первом уровне навыка, а в param2 число на которое будет повышаться бонус на каждом уровне. То есть, одинаковый бонус на каждом уровне. Это выглядит так:
lv 1 - 10% Crushing Blow lv 2 - 12% Crushing Blow lv 3 - 14% Crushing Blow
Когда вы используете расчет « dm12 », то в колонке param1 вы задаете начальный бонус на первом уровне, а в param2 максимальное число бонуса, к которому навык может дойти. При таком расчете на первых уровнях бонусы будут большие, а потому немного будут уменьшаться.
lv 1 - 10% Crushing Blow lv 2 - 18% Crushing Blow lv 3 - 22% Crushing Blow lv 4 - 23% Crushing Blow
Далее, идем к колонке reqlevel, и указываем требования уровня персонажа для использования навыка. Рядом, колонка maxlvl указывает на максимальный уровень навыка.
Теперь ищем колонку Param1, о которой я вспоминал раньше, и ставим число, которое желаем назначить начальным бонусом навыка. Param1 Description просто поле для комментариев. В колонке Param2 ставим число, на которое повышается наш навык (если мы используем ln12), или максимальное число к которому навык моет дойти (если мы используем dm12).
Мы закончили с skills.txt, сохраняем и закрываем.
Теперь нам надо сделать стэйт («state»).
Открываем States.txt, просто добавляем внизу новую строку и в поле state укажите название которые вы написали в поле passivestate в файле skills.txt. У меня это Crush. Не забудьте поставить «0» в конце, в колонке Eol.
Сохраняем и выходим.
Открываем skilldesc.txt.
Копируем строку Ironskin и вставляем внизу, переименовываем на то, что вы указали в поле skilldesc в файле skills.txt. У меня это Crush.
Колонка «Skillpage» решает, на какой странице навыков будет находиться навык (1, 2 или 3). Счет идет снизу, то есть нижняя страница это первая.
Колонка Skillrow решает, в каком ряду будет навык. Всего есть 6 рядов.
Далее, Skillcolumn решает в какой колонке будет навык: в правой (1), по центру (2), или в левой (3).
ListRow не имеет значения для пасивок, потому что мы их не можем выбрать в панели быстрого выбора навыков.
IconCel это число картинки для навыка. Можно использовать классические иконки, а можно и добавлять свои с помощью DC6 Creator.
Четыре клонки Str name, Str short, str long и str alt это описания навыков. Здесь нужно ввести коды с учитыванием последнего числа (то есть если в последнем навыке стоит Skillname281, мы пишем Skillname282). И так для всех четырех колонок.
Str name это само название навыка. Str short это краткое описание навыка, когда мы наводим на него в быстрой панели. Str long это длинное описание навыка в дереве. Str alt это название навыка на экране персонажа. Помните, что здесь мы вводим только коды, а сам текст будем вводить позже в .tbl файлах.
Двигаемся дальше, к колонке descline1. Здесь надо указать код, как именно игра будет отображать текстовую информацию. Этих кодов всего 75! В следующих гайдах я расскажу про них более детально. Пока поставьте здесь 2.
В ячейке desctextb1 мы пишем код-строку символа, который игра показывает после числа. Здесь пишем StrSkill23 – этот код выводит в игре символ процентов «%».
В ячейке desctexta1 мы пишем код-строку характеристики (я создам свою, но можно использовать и уже существующие). Я напишу здесь «crush», чтобы потом добавить эту код-строку в .tbl файл.
В ячейке desccalca1 пишем то же что и в ячейке Passivecalc1 в skills.txt.
Текст, который выводится в игре: +25% Crushing blow
+25
%
Crushing blow
Формула в desccalca1
«StrSkill23» код в desctextb1
«Crush» код в desctexta1
Теперь время заняться кодами-строками. Откройте string.tbl и добавьте следующие коды-сроки и их описания.
Код
Описание
str name
Название вашего навыка
str short
Краткое описание вашего навыка
str long
Длинное описание вашего навыка
str alt
Crush (код из desctexta1)
Crushing blow (с пробелом после слова)
Помните, что у всех персонажей должно быть одинаковое количество навыков, иначе будет работать только тот у которого наибольше.
Архив с готовыми файлами Skills.txt, Skilldesc.txt, States.txt, String.tbl из данного руководства.
Diablo1.ru продолжает пополняться руководствами по созданию своих модификаций в Diablo 2. На этой неделе jetaman прислал две новых статьи, которые рассказывают про параметры файлов Armor.txt и Misc.txt. Первый файл отвечает за свойства и все параметры доспехов, а второй – за все предметы, кроме оружия и брони.
Оба файла имеют огромное количество параметров, и без хорошего описания просто не обойтись.
Улучшен внешний вид, добавлены ссылки на новые гайды и убрана устаревшая информация.
Анимация персонажей, монстров и НПС находится в файлах формата .dcc. Вся анимация монстров находится в папке Monsters. Каждая папка имеет название, которое соответствует названию Токена или Кода монстра (этот код можно найти в файле monstats.txt в колонке CODE). Например, токен фаллена это «fa». Внутри папки с именем токена, лежат еще папки с названиями части тел (hd – head, tr – torso, lh – left hand, rh – right hand, ra – right arm, la – left arm, lg – legs, sh – shield, s1 – first overlay). Если вы загляните, например, в папку таких монстров как Corrupted Rogues то увидите что их «ra» и «la» анимации содержат различные типы оружия. Таким образом, игра генерирует разновидности монстров, с разным оружием, доспехами шлемами и тд. Но не все монстры состоят из разных частей, некоторые состоят из только одной. Поэтому, с этого момента мы будем разделять два понятия: много-компонентные (multi-part) и одно-компонентные (one-part). Также в папке монстра есть папка cof, где лежат контрольные файлы анимации. Очень важно указывать правильное название файлов, потому что от этого зависит все. Рассмотрим пример опять таки на Фалленах.
Fatrlita1hth.dcc – это название одного из файлов анимации. За что же он отвечает? Если разбить название на части мы увидим: Fa – это название токена Фаллена, tr – указывает что это Тело (Torso), lit – значит Легкий вариант брони (light), a1 – указывает тип анимации (Атака 1), hth – указывает класс оружия (hth – hand to hand, то есть ручной бой). Что мы должны помнить всегда? Что, создавая новых монстров мы будем использовать только часть тела “tr”, только класс брони “lit” и только класс оружия “hth”. Потому что на самом деле не важно, что у нашего нового монстра будет в руках топор или меч, мы сейчас говорим о коде игры, а не о то, что изображено на анимации. Теперь пару слов про .cof файлы. Это контрольные файлы, которые указывают игре, сколько кадров есть в .dcc файлах, сколько направлений у юнита, какой кадр является действием и тд. Название .cof файлов должно состоять из токена монстра, типа анимации и класса оружия (FAA1HTH.cof).
В Diablo 2, монстры имеют 8 направлений. Направления нужно указывать только в таком порядке как на картинке. В каждом направлении должно быть одинаковое количество кадров.
Допустим у вас уже есть кадры из которых можно создать гифку подходящую для конвертации в Д2. Но этого мало. Нужно еще обработать эти кадры и подготовить гифку для конвертации в .dcc. Для этого вам понадобиться Gamani Gif Movie Gear. Первое что надо это сделать фон прозрачным. Нажимаем Frame > Global Properties ставим галочку возле слова Transparent и назначаем фоновый цвет прозрачным. Далее внизу надо установить Restore to background. Переходим на следующую вкладку Animation и нажимаем на кнопку возле GIF Bk Color – это цвет фона гифки. Здесь необходимо назначить тот же цвет, который мы сделали прозрачным. Теперь нажмите на кнопку Edit возле слов Global Palette и посмотрите на коды красок – здесь наша задача избавиться от красок с кодом 0,1,2 и 3, потому что игра их не читает. Все просто – если увидите где-то 0,1,2 или 3, просто поменяйте его на 4. От этого цвет не изменится, но будет читаться игрой. И последний штрих, надо продублировать первый кадр. Просто скопируйте первый кадр и вставьте его перед вторым (правая кнопка мышки > Paste before). Если все сделали, нажимаем File > Save Gif animation as…, укажите имя, типа файла .Gif и стиль Animation.
Когда гифка готова, можно конвертировать ее в .dcc. Для этого нам надо программку CV5. Откройте программу, найдите свою гифку, установите Frame from = 1, и нажимайте Save. Выберите тип файла .dcc и укажите имя. Перед вами откроется DCC save settings.
Сверху указываем, что у нашего монстра 8 направлений, а внизу надо поставить палитру Units. А теперь самое сложное и самое главное – это могучие Офсеты. Офсеты нужно вводить со знаком минус «-». Картинка с боку позволяет нам подобрать правильные офсеты на глаз. Чтобы понять какие-именно офсеты вводить вот несколько советов:
С помощью CV5 откройте .dcc файлы монстров из Д2 и пересохраните их как .dcc. Вы увидите, как расположены офсеты у стандартных мобов. Не смотрите на числа – смотрите на место, где линии пересекаются.
Почти всегда место пересечения линий – это возле ног юнита.
Включите 3д мышление – моб крутится вокруг одной точки. Эта точка и есть ваша цель. Эта точка, где у Паладина стоит Аура. Вы можете назначить своему мобу Ауру в игре, чтобы сразу увидеть правильно ли вы ввели офсеты. После нескольких попыток вы сможете вводить более-менее правильные офсеты.
Для создания .cof файла нам понадобится Сof Editor. У этой программы нет интерфейса поэтому придется работать в DOS’е. Для начала откроем файл new.cof.ini и разберемся с функциями:
И дальше все оставляем как есть:
Теперь открываем DOS и прописываем путь к программе. Когда оказались в папке с файлом .exe, прописываем команду cofedit.exe –generate new.cof.ini
Таким образом, вы создали файл .cof. Перенесите его в папку «cof» своего нового монстра.
Файл Animdata.d2 хранит в себе всю информацию об анимации в игре. Сам файл находится в папке data\global. Для его модификации нам надо скачать программку Animdata_edit_v2.1. Скачайте и скопируйте содержимое в любую папку. Запустите файл Extract.bat. У вас появится файл AnimData.txt. Этот файл нам и надо модифицировать. В этом гайде мы учимся создавать новых монстров с новыми токенами, поэтому мы не будем модифицировать уже существующую информацию, а будем добавлять новую. Теперь рассмотрим, что означают названия колонок:
CofName – надо указать, как называется ваш Cof файл.
FramesPerDirection – количество кадров в одном направлении.
AnimationSpeed – скорость анимации.
FrameData000-FrameData143 – это инфомация о кадрах. Помните мы говорили про кадр, в котором происходит действие? Если данный Cof файл является действием (атака или каст), нужно указать в каком кадре происходит действие. Если при создании Cof файла вы указали что действие происходит, например, в кадре 8, то здесь найдите колонку FrameData008 и поставьте там «1». Все остальное должно быть «0». Нельзя ставить единицы в файлах, где действие не происходит, и нельзя ставить единицы в двух кадрах. Если закончили, сохраняйте файл, и запустите файл Pack.bat в папке с программой. Теперь найдите файл AnimData.d2 в той же папке и скопируйте его с заменой в data\global. Все, вы создали новый токен для монстра.
Есть еще одна полезная программка COFTXT, которая извлекает информацию из ваших Cof файлов и генерирует строки для файла AnimData.txt. Я ней не особо пользуюсь, но полезно ее иметь при себе и знать, как она работает.
Откроем monstats.txt и создадим новую строку внизу. Всегда лучше копировать какую-нибудь строку из уже готовых и вставить внизу. Здесь главное указать в колонке Code токен вашего нового монстра. Функции остальных строк можно найти в полном описании файла monstats.txt, но пару советов все же дам.
Теперь откройте monstats2.txt. Id должно соответствовать имени в колонке MonStatsEx в файле monstats.txt. Скопируйте первую строку и вставьте внизу как новую. Нас интересуют только следующие колонки:
MeleeRng – дистанция, из которой монстр сможет вас атаковать;
TRv = «lit» (остальные пустые)
TR = 1 (остальные пустые)
TotalPieces =1
Колонки mDT mNU mWL mGH mA1 mA2 mBL mSC mS1 mS2 mS3 mS4 mDD mKB mSQ mRN – это типы анимации вашего монстра. Я же не знаю, сколько их у вас будет. Если например, у вашего монстра есть анимация ходьбы, то поставьте «1» в колонке mWL. И так далее.
Restore – всегда «1»!!! (О, Боже, сколько проблем мне доставила эта колонка).
isSel – позволяет навести на монстра мышкой.
corpseSel – позволяет навести на труп мышкой.
isAtt – позволяет атаковать.
Revive – позволяет оживить.
Если все готово, откройте файл levels.txt, найдите строку Act 1 - Wilderness 1, найдите колонки mon1-25 и вставьте здесь имя своего нового монстра. Он должен появиться на Кровавом Болоте. Пойдите, посмотрите что получилось.
В данном архиве вы сможете найти кадры анимации юнита из игры Златогорье 2. Вы можете испольовать их чтобы потренироваться использовать советы в гайде на практике.
О том, что такое txt-файлы и как с ними работать читайте в первом и втором гайде по созданию своих модов для Diablo 2. Armor.txt отвечает за все параметры и свойства брони.
Часть брони
Номер
Head
HD #00
Torso
TR #01
Legs
LG #02
RightArm
RA #03
LeftArm
LA #04
RightHand
RH #05
LeftHand
LH #06
Shield
SH #07
Special1
S1 #08
Special2
S2 #09
Special3
S3 #10
Special4
S4 #11
Special5
S5 #12
Special6
S6 #13
Special7
S7 #14
Special8
S8 #15
Везде вместо слова Vendors ставим имя продавца.
Эти три файла есть частями одного большого файла, который генерируется при запуске игры. Сума строк всех трёх файлов не должна превышать 65536 строк (но на всякий случай не превышайте 32768)
О том, что такое txt-файлы и как с ними работать читайте в первом и втором гайде по созданию своих модов для Diablo 2. Файл Misc.txt отвечает за свойства и параметры всех предметов, кроме оружия и брони.
О том, что такое txt-файлы и как с ними работать читайте в первом и втором гайде по созданию своих модов для Diablo 2. Как не сложно понять из названия файла, Weapons.txt отвечает за все параметры и свойства оружия.
Числа приведенные ниже это процентное отношение (если конечно у вас в Noratio стоит «0»). Игра сначала проверяет уровень монстра а потом использует эти проценты чтобы вычислить реальные статы из «общих статов», которые занесены в Monlvl.txt. Это происходит обычным процентным обчислением, т.е. S/100*P, где S=стат, P=процент. Например, если ваш монстр 50 уровня имеет минимальный показатель жизни 200, а «общий стат» для Жизни на уровне 50 это 100, тогда происходит следующие обчисление: 100/100*200, в результате получается 200 ХР.
Из-за новой системы Наградкласса в версии 1.10 эти данные имеют малую значимость по отношению к тому какой наградкласс выбирается, разве что вы измените систему редактирую TreasureClassEx.txt.
Примечание: о том, редактировать файлы, читайте в первом гайде
Сначала откройте pettype.txt, скопируйте целую строку golem и поместите ее внизу списка как три новых строки, и переименуйте их в bloodgolem, irongolem и firegolem. Теперь, в той строке, которую вы копировали (та что под «Валкирией»), переименуйте слово golem в столбце “pettype” на claygolem, «idx» оставьте как есть. Теперь, найдите столбец “mclass1” и впишите число 289, а в столбце “micon1” впишите earthgolumicon. После этого удалите все содержимое других столбцов mclass и micon.
Теперь, перейдем к нашим новым строкам. В строке bloodgolem измените idx на 20. В столбце baseicon измените на bloodgolumicon. Теперь, найдите столбец “mclass1” и впишите число 290, а в столбце “micon1” впишите bloodgolumicon. После этого удалите все содержимое других столбцов mclass и micon.
В строке irongolem измените idx на 21. В столбце baseicon измените на metalgolumicon. Теперь, найдите столбец “mclass1” и впишите число 291, а в столбце “micon1” впишите metalgolumicon. После этого удалите все содержимое других столбцов mclass и micon.
В строке firegolem измените idx на 22. В столбце baseicon измените на firegolumicon. Теперь, найдите столбец “mclass1” и впишите число 292, а в столбце “micon1” впишите firegolumicon. После этого удалите все содержимое других столбцов mclass и micon.
Если вы хотите изменить еще и имена големов в игре, вам надо заменить столбец name. Там указаны коды-строки из файла strings.tbl. То есть впишите какоето слово (например «blood» для Кровавого голема) и потом внесите код blood в strings.tbl и в описании напишите Blood Golem или что хотите.
Сохраните Pettype.txt и откройте Skills.txt.
А теперь идите, призывайте свою армию Големов и надерите задницу Диабло!