Current time: 15.11.2024, 21:27 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ice Caves (Ледяные пещеры и снежные дороги)
» Мод для Эры
Author Message
hippocamus Offline

Posts: 517
Post: #1

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

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

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

Скачать мод


-= подпись Гиппокамуса =-
(This post was last modified: 04.02.2024 19:46 by hippocamus.)
04.02.2024 19:44
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #2

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

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

Image: image.png
(This post was last modified: 04.02.2024 21:45 by XEPOMAHT.)
04.02.2024 21:36
Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #3

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

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

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

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

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


-= подпись Гиппокамуса =-
(This post was last modified: 04.02.2024 22:23 by hippocamus.)
04.02.2024 22:22
Visit this user's website Find all posts by this user Quote this message in a reply
hippocamus Offline

Posts: 517
Post: #4

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


-= подпись Гиппокамуса =-
04.02.2024 23:07
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #5

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

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

Так же - плохая комментированность исходных кодов, отсутсвие инклюдов, из-за чего половину патча пришлось убрать, т.к. компилятор постоянно ругался на разные непонятные вещи, сами исходники больше похожи на свалку... в общем я 90% времени потратил на разбор дельфишного кода, часто просто методом научного тыка, комментированием кода и скармливание всего это компилятору так, чтобы на выходе получилось более-менее рабочая dll. Пока к этой нервотрёпке возвращаться не хочу. Особенно сейчас, когда придётся заново вспоминать язык дельфи, т.к. пользуюсь сейчас только Ассемблером. Возможно, лет через 5, когда Тифон из ЭРА+ будет готов на 100%, уже вплотную займусь редактором карт с добавлением туда всего что в даный момент редактором не поддерживается.
04.02.2024 23:38
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16655
Post: #6

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.02.2024 23:54
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #7

(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, и не использует оригинальный код редактора карт, а значит и эровский функционал тоже.
06.02.2024 00:32
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16655
Post: #8

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.02.2024 00:52
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #9

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

В том то и дело, что только для спрайтов объектов карт это только и работает. Для остальных def-ов и остальной графики редактора - только ручное указание архива с данными, что привязывает редактор из ЭРА+ конкретно к архивам ЭРА+. Либо мне придётся добавить h3sprite.lod в ЭРУ+, но это уже ни в какие ворота не лезет и противоречит самой концепции мода для ЭРЫ. 105
06.02.2024 01:03
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16655
Post: #10

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

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.02.2024 01:42
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #11

(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.
06.02.2024 11:49
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16655
Post: #12

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.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.02.2024 17:16
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group