Current time: 22.11.2024, 07:46 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA III
Author Message
daemon_n Offline
Administrators

Posts: 4343
Post: #2071

(13.10.2022 09:06)daemon_n Wrote:  Berserker, из "Start Battle", кажется.
Позднее гляну адрес

Berserker, 0x462E26


Image: widget.png?style=banner2

Новейший Heroes Launcher
13.10.2022 13:17
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2072

Спасибо.


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

Posts: 4343
Post: #2073

Berserker, я понимаю, что можно сменить один png другим с относительным путём:
!!SN:R^cefres.def:1_0.png^/^Data\Defs\cefres.def\5_6.png^;

но можно ли сделать то же с def файлом?
!!SN:R^cefres.def^/^Data\Defs\customPath\cefres_a.def^;

а то не хочу покадрово делать SN:R - ещё не факт, что кол-во кадров будет соответствовать

проще говоря, можно ли обычные def расположить в субкаталогах, чтобы через sn:r выбирать к ним нужный путь?


Image: widget.png?style=banner2

Новейший Heroes Launcher
20.10.2022 04:15
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2074

daemon_n, нет.


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

Posts: 4343
Post: #2075

Berserker, ну, ничего - буду работать через циклы тогда - как оказалось, можно подменять png даже там, где нет png))


Image: widget.png?style=banner2

Новейший Heroes Launcher
20.10.2022 07:02
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #2076

Как вызвать эровскую внешнюю функцию GetButtonID? Т.к. эта фишка с автоматической выдачей номеров кнопок платформой ЭРА, на которую моддер не может повлиять, немножко бесит.

В данный момент Тифон использует фиксированные эровские ID для новых кнопок, но если кто-то добавит собственный *.btn, то тифоновские кнопки в лучшем случае перестанут работать (т.к. их индексы автоматически будут заняты другими кнопками), в худшем - игра будет вылетать. Можно конечно поставить перехват на конструктор нужного диалога и ставить в нём свои кнопки, но в этом есть минус: на конструкторах диалогов и так весит вереница хуков от кучи плагинов, аккуратно вклиниваться Тифоном в этот хаос так, чтобы ничего не поломать, совершенно не хочется.

Поэтому очень желательно, чтобы была возможность ручного указания номера новой кнопки в эровском *.btn, т.к. с вызовом эровских функций я таки разобраться толком по-прежнему не могу - на выходе либо Ашибки в era.dll или buttons.era, либо -1, либо мусор.

PS: когда же в ЭРЕ наконец-то появится окошко при запуске с автоматическим предложением подключить к ЭРЕ моды, не прописанные/не закомментированные в list.txt??? Очень, очень многие не знают, что моды подключаются к ЭРЕ в list.txt, поэтому каждый раз приходится объяснять. А хотелось бы, чтобы движок ЭРЫ сам находил новые моды в папке mods и спрашивал игрока о том, надо их подключать или нет.
(This post was last modified: 20.10.2022 09:20 by XEPOMAHT.)
20.10.2022 08:49
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2077

Автоматические ID кнопок Эры начинаются с 400. Может начать свои ID с 2000000. Проблема-то.

Вызвать просто:

push 'имя кнопки'
call Era.GetButtonID
eax = ID или -1, если кнопки с таким именем в *.btn файлах не было.


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

Posts: 16657
Post: #2078

Quote:PS: когда же в ЭРЕ наконец-то появится окошко при запуске с автоматическим предложением подключить к ЭРЕ моды, не прописанные/не закомментированные в list.txt???
По изначальной задумке то, что не прописано в list.txt, и должно быть отключено. Это просто архивы. Так называемое комментирование заставляет движок VFS искать несуществующие папки. Загрузка модов по списку вынесена на библиотеку VFS.dll. Эра не занимается проверкой, какая папка существует, какая указана и т.д. Из-за этого сложнее получить список реально загруженных модов.

Можешь написать такой плагин сам (правда успехов с определением, что такое закомментированное имя мода и как его отличить от отсутствия имени мода в списке).
Читаешь список каталогов, читаешь содержимое list.txt, парсишь, сравниваешь. Для сканирования папок в обход VFS код сканирования нужно выделить в отдельную функцию, после чего вызвать VFS.dll:: CallWithoutVfs(адрес функции, аргумент для функции).


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

Posts: 792
Post: #2079

Сегодня день вопросов по-видимому Ab
У меня тоже есть вопрос, и тоже связан с перенаправлением:
как можно сделать так, чтобы вместо ресурса XXX загружался ресурс YYY, если он существует,
а если не существует, загружался оригинальный ресурс XXX?
Идеи есть, но они кажутся мне слишком сложными (хукать функции загрузки def и pcx), может есть простой способ, которого я не вижу?
(This post was last modified: 20.10.2022 11:12 by wessonsm.)
20.10.2022 11:05
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2080

С этим сложно. Есть механизм перенаправления, если ресурс не существует (Redirect Missing) и его Эра использует.

А какова область применения и решаемая задача?


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

Posts: 792
Post: #2081

(20.10.2022 11:39)Berserker Wrote:  С этим сложно. Есть механизм перенаправления, если ресурс не существует (Redirect Missing) и его Эра использует.

А какова область применения и решаемая задача?

Пытаюсь сделать загрузку отмасштабированных заранее ресурсов для HD-мода без использования стретч фильтров в реальном времени.
Я знаю, что такая идея не раз звучала, но всерьез за нее никто особо браться не захотел.
Да и у меня нет уверенности, что из этого что-то получится, но попробовать хочется.
Пока все в зачаточном состоянии, и в принципе, рано еще о чем-то говорить.
Но сама реализация не такая уж сложная: я не лезу глубоко внутрь HD-мода и просто изменяю координаты элементов диалогов (для этого вполне достаточно функционала patcher_x86) и заменяю сами ресурсы.

А нужен такой способ перенаправления вот для чего:
Допустим, у нас нет отмасштабированного дефа или pcx (например он в моде каком-то или просто не сделали пока).
В этом случае берем оригинальный ресурс (неотмасштабированный) и масштабируем при загрузке.
Изначально я хотел дописывать к имени ресурса суффикс какой-то (например GamSelBk_150.pcx) или может лучше с тем же именем, но в отдельную папку класть.
Пока никакого такого механизма у меня вообще нет, и я просто заменяю оригинальные ресурсы масштабированными, оно все в одной куче получается.
(This post was last modified: 20.10.2022 12:58 by wessonsm.)
20.10.2022 12:44
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2082

Не забудь про ограничение длины имени в 11 символов.

Видишь ли, проверка существования ресурса тоже не дешёвый вопрос. Все лоды обойти + на диске поискать.


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

Posts: 792
Post: #2083

Тогда может лучше свой лод подгружать и искать сначала только в нем, а уже в случае неудачи - во всех остальных.
20.10.2022 13:06
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2084

В Эре есть неэскпортированная функция function FileIsInLods (const FileName: string): boolean;
Могу сделать её эскпортный аналог, если нужна проверка на существование файла в лодах.

Если будешь для начала свой лод грузить, то вот функция для поиска файлов в нём:

Code:
function FileIsInLod (const FileName: string; Lod: Heroes.PLod): boolean;
begin
  {!} Assert(Lod <> nil);
  result := false;

  if FileName <> '' then begin
    asm
      MOV ECX, Lod
      ADD ECX, 4
      PUSH FileName
      MOV EAX, $4FB100
      CALL EAX
      MOV result, AL
    end; // .asm
  end;
end; // .function FileIsInLod

4FB100 в IDA базе.


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

Posts: 792
Post: #2085

Berserker, спасибо большое. Это надо хорошо всё обдумать сначала.
20.10.2022 16:49
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