Wake of Gods Forum | Форум Во Имя Богов
Ice Caves (Ледяные пещеры и снежные дороги) - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+--- Thread: Ice Caves (Ледяные пещеры и снежные дороги) (/showthread.php?tid=6976)


Ice Caves (Ледяные пещеры и снежные дороги) - hippocamus - 04.02.2024 19:44

Ещё в 2009-м делал графику для Ледяных пещер и Снежной дороги.
Так как заставить редактор их ставить я не умею, а вручную исправлять карту в hex-редакторе - это ювелирная работа, то я написал скрипт, который анализирует карту и сам подставляет нужные тайлы.
Image: 3cf2c4cfb0084e89d458f0177a7c5c4b.png
Стенки подземелья становятся ледяными, если рядом есть тайл снега.
Дорога (только грунтовая) становится снежной, если она на снегу.

Сегодня доработал скрипт и оформил наработки в виде мода.
Всё работает, но наполнять снежные подземелья лучше объектами ХотА - там разнообразнее объекты и препятствия, и лучшее вписывание в стилистику Героев.
Правда, оценить визуал можно только в игре.

И есть ещё один недочёт - не реализованы переходы между подземельями двух типов (будет некрасиво). Поэтому на демонстрационной карте они изолированы.
Карта прилагается, её русское название:
Ледяные Пещеры (демо), SU, 2х2, WoG.

Скачать мод


RE: Ice Caves (Ледяные пещеры и снежные дороги) - XEPOMAHT - 04.02.2024 21:36

(04.02.2024 19:44)hippocamus Wrote:  Так как заставить редактор их ставить я не умею, а вручную исправлять карту в hex-редакторе - это ювелирная работа, то я написал скрипт, который анализирует карту и сам подставляет нужные тайлы.

В воговском редакторе тоже не айс. Никто не воспользовался ручной расстановкой тайлов несмотря на то, что сделано было очень давно (даже слова из трёх букв на почве катостроители не захотели). Добавить туда снежные "пропасти" - константу в сорцах поменять, добавить адрес для дополненного def-a (т.к. редактор карт не поддерживает эровскую систему модов вообще никак - Берсеркер наплевал на это, т.к. поддержкой новых почв под ЭРУ занимаюсь только я в глубоком одиночестве...) и пересобрать патч для редактора.

Image: image.png


RE: Ice Caves (Ледяные пещеры и снежные дороги) - hippocamus - 04.02.2024 22:22

(04.02.2024 21:36)XEPOMAHT Wrote:  В воговском редакторе тоже не айс. Никто не воспользовался ручной расстановкой тайлов несмотря на то, что сделано было очень давно (даже слова из трёх букв на почве катостроители не захотели). Добавить туда снежные "пропасти" - константу в сорцах поменять, добавить адрес для дополненного def-a (т.к. редактор карт не поддерживает эровскую систему модов вообще никак - Берсеркер наплевал на это, т.к. поддержкой новых почв под ЭРУ занимаюсь только я в глубоком одиночестве...) и пересобрать патч для редактора.
Даже вручную менять тайлы по всему периметру зоны - это кропотливая работа. Хотя, если кто-то из картоделов бы заинтересовался - думаю, сделали бы без проблем.

То же самое касается моего другого усовершенствования - правки watrtl.def, позволяющей делать одноклеточные водные проходы - судоходные каналы. Но вот они кое-где всё-таки используются, и даже остались в лодах ХотЫ.

А здесь-то нужно просто прибавлять статический индекс - 17 для подтипа дорог и 40 для подтипа пропасти (стенок).
То есть, если вместо бегунка (после бегунка) сделать ещё 2 элемента управления: чекбокс "+ фикс.значение" и спинэдит (особенно если ещё и с предустановленными значениями 40 и 17) - то, я думаю, картоделы вполне могли бы этим воспользоваться.
Это сломает мод (потому что алгоритм не проверяет наличия уже установленных в карте ледяных стенок, и попытается сделать их ещё более ледяными), но это легко правится простой проверкой.

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

Можно ли запустить скрипт модификации прямо из редактора, по команде из WoG Menu?


RE: Ice Caves (Ледяные пещеры и снежные дороги) - hippocamus - 04.02.2024 23:07

Вот так, например:
Image: 8095ae8edfcf549768e775a955901d33.jpg


RE: Ice Caves (Ледяные пещеры и снежные дороги) - XEPOMAHT - 04.02.2024 23:38

(04.02.2024 23:07)hippocamus Wrote:  Вот так, например:

Программировать надо. А редактор карт не разобран, чтобы... да хотя бы просто удалять/добавлять объекты и реки прямо в редакторе карт. База по редактору очень скудная, даже не позволяет нормально что-то написать, чтобы это не ломало другие части редактора.

Так же - плохая комментированность исходных кодов, отсутсвие инклюдов, из-за чего половину патча пришлось убрать, т.к. компилятор постоянно ругался на разные непонятные вещи, сами исходники больше похожи на свалку... в общем я 90% времени потратил на разбор дельфишного кода, часто просто методом научного тыка, комментированием кода и скармливание всего это компилятору так, чтобы на выходе получилось более-менее рабочая dll. Пока к этой нервотрёпке возвращаться не хочу. Особенно сейчас, когда придётся заново вспоминать язык дельфи, т.к. пользуюсь сейчас только Ассемблером. Возможно, лет через 5, когда Тифон из ЭРА+ будет готов на 100%, уже вплотную займусь редактором карт с добавлением туда всего что в даный момент редактором не поддерживается.


RE: Ice Caves (Ледяные пещеры и снежные дороги) - Berserker - 05.02.2024 23:54

Quote:(т.к. редактор карт не поддерживает эровскую систему модов вообще никак - Берсеркер наплевал на это
Плагины грузятся, pac-файлы грузятся, папки модов проецируются на корневую папку и текстовики из Data\Objects объединяются с zeobjts.txt. Но это +/- вся поддержка.


RE: Ice Caves (Ледяные пещеры и снежные дороги) - XEPOMAHT - 06.02.2024 00:32

(05.02.2024 23:54)Berserker Wrote:  Но это +/- вся поддержка.

А def-ы? Что прописать, чтобы не городить такой огород:

Code:
if i < 10 then
   H3Sprite:= TRSLod.Create(AppPath + 'Data\h3sprite.lod')
   else
   H3Sprite:= TRSLod.Create(AppPath + 'Data\Arts&Creats.pac');

Что надо, чтобы нужные для патча редактора def-ы искались автоматически в архивах игры? Приходится вручную указывать архив, т.к. сам загрузчик данных там самопальный, скопированный из первой версии MMArchive, и не использует оригинальный код редактора карт, а значит и эровский функционал тоже.


RE: Ice Caves (Ледяные пещеры и снежные дороги) - Berserker - 06.02.2024 00:52

Да нет, код плагина для редактора карт от GrayFace был слегка изменён для поддержка pac файлов в обычном режиме. Вообще ничего делать не нужно. А как бы иначе отображались объекты из мода New Objexts Patch от fred?


RE: Ice Caves (Ледяные пещеры и снежные дороги) - XEPOMAHT - 06.02.2024 01:03

(06.02.2024 00:52)Berserker Wrote:  А как бы иначе отображались объекты из мода New Objexts Patch от fred?

В том то и дело, что только для спрайтов объектов карт это только и работает. Для остальных def-ов и остальной графики редактора - только ручное указание архива с данными, что привязывает редактор из ЭРА+ конкретно к архивам ЭРА+. Либо мне придётся добавить h3sprite.lod в ЭРУ+, но это уже ни в какие ворота не лезет и противоречит самой концепции мода для ЭРЫ. 105


RE: Ice Caves (Ледяные пещеры и снежные дороги) - Berserker - 06.02.2024 01:42

Для любых дефов должно работать. Код идентичен тому, что для exe. Эра расширяет и перенаправляет таблицу загруженных lod/pac. Все функции редактора по умолчанию ищут ресурсы во всех архивах. Правка понадобилась только для Delphi диалогов Сергея Роженко.

Ты случаем h3wmapedpatch.dll не трогаешь?


RE: Ice Caves (Ледяные пещеры и снежные дороги) - XEPOMAHT - 06.02.2024 11:49

(06.02.2024 01:42)Berserker Wrote:  Правка понадобилась только для Delphi диалогов Сергея Роженко.

Мне эти правки как раз и нужны. Т.к. редактор почв - новый диалог, сделанный по тем же принципам, что и остальные новые диалоги от Сергея Роженко.

(06.02.2024 01:42)Berserker Wrote:  Ты случаем h3wmapedpatch.dll не трогаешь?

h3wmapedpatch.dll пересобран из исходников, которые были выложены в архиве ЭРЕ. Все изменения для ЭРЫ+ именно там, к примеру поддержка Тифоновских текстовиков и новых почв. Из-за отсутсвия древних инклюдов, которые не удалось нагуглить, часть функционала h3wmapedpatch.dll в версии ЭРЫ+ пришлось убрать, а именно весь MMArchive, входящий в патч, с какими-то допфункциями, на память не вспомню. Что-то может работать не так или вылетать, т.к. исходники собраны в среде Delphi 7, а заточены они, как я понял, под более новую версию.

Все нововведения ЭРЫ+ в редакторе карт запланированы добавляться именно в h3wmapedpatch.dll, т.к. в самой ЭРЕ изменения вносятся только в eramap.dll.


RE: Ice Caves (Ледяные пещеры и снежные дороги) - Berserker - 06.02.2024 17:16

Era_Map_Editor\Patch\Unit1.pas

Здесь объявлён класс TEra с функциями
FileIsInLod
FindFileLod
GetFileLod

Последняя нужна как раз для получения объекта RSLod.TRSLod, содержающего конкретный файл, например def.

Ты можешь поиском по GetFileLod найти места, где я пропатчил оригинальный код:

Code:
function TForm1.SaveProps:boolean;
var
  s:string; i:int; MskBuf: TRSByteArray;
begin
  result:= false;
  WasChanged:= false;
  with Props do
  begin
    s:=ComboBox1.Text;
    if not MyVal(s, SubTyp) then
    begin
      ErrorHint(ComboBox1, Format(SInvalidNumber, [s]));
      exit;
    end;

    MskBuf:= nil;
    s:=ChangeFileExt(Edit2.Text, '.msk');

    Self.Lod :=  Era.GetFileLod(s);

    if Self.Lod = nil then begin
      Self.Lod  :=  H3Sprite;
    end; // .IF


Code:
Self.Lod :=  Era.GetFileLod(s);

if Self.Lod = nil then begin
   Self.Lod  :=  H3Sprite;
end; // .IF
То есть ищем файл во всех lod-архивах. Находим — запоминаем архив для диалога. Не находим — используем стандартный H3Sprite.