Current time: 25.11.2024, 00:13 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 16657
Post: #1831

XEPOMAHT, для универсального подхода мне нужен перехват на любой щелчок с получением верных координат в рамках центрированной зоны 800х600 или всего экрана в случае карты приключений.

V_Maiko, I don't see the task for Era engine. It's fully scripts task, if I understood you correctly. There is ERM function SaveGame, allowing to specify save name/path. There is also CreateDirectory function to create directory.


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

Posts: 2819
Post: #1832

(18.09.2021 21:55)XEPOMAHT Wrote:  Эмм... в экране города просмотр монстров теперь накрывает прирост, что выглядит неккоректно, т.к. эта часть интерфейса закрываться не должна. Ограничители в экране города рекомендуется оставить стандартными, а не 800х600.
Имейте ввиду, что в game bug fixes extended.dll есть код
Code:
// центрирование изображения по ПКМ в городе на иконке найма войск (ранее уходило сильно влево, особенно заметно при игре с HD)
    _PI->WriteHexPatch(0x5D47B3, "0F BF 57 18  8B 4F 24 B8  FF FF FF FF  90");

UPD: ага, увидел, что этот патч больше не действует. Как я понял это в ЭРЕ 3.9.0 сделано? Тогда я в следующем релизе "bug fixes extended" (если он когда то будет) выпилю этот патч.
В дополнение скажу, что в нынешнем показе сообщения по ПКМ я поддержу Берса:
(18.09.2021 22:51)Berserker Wrote:  Всё верно. Подсказка открывается не для того, чтобы читать про анубиса выше и затем смотреть на остальных ниже с зажатой ПКМ. ПКМ для концентрации внимании на чём-то под курсором.
... и нынешние координаты показа сообщения именно те, что нужны. Лично я против задирания сообщения выше, как предлагает ХЕРОМАНТ


game bug fixes extended.dll || My Plugins || My GitHub
20.09.2021 06:16
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1833

igrik, да, в Эре 3.9.0. Если знаешь, куда безопаснее всего установить перехват на любой щелчок мыши с тем, чтобы получить вменяемые координаты в диалоге — напиши, пожалуйста. А то в героях такой дикий разброс мест появления этих ПКМ диалогов, что просто диву даёшься.

Патч можно убирать.


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

Posts: 2819
Post: #1834

Сходу не отвечу. Но боюсь, что такого универсального места попросту нет. Единственное что мне приходит в голову - это конструктор диалога (0x5FEFB0). Тут можно получить и координаты, и размеры будущего диалога, что смещение правильно регулировать. Но однозначно будут трудности с получением "от куда вызван диалог".


game bug fixes extended.dll || My Plugins || My GitHub
20.09.2021 09:51
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1835

Где-то должно быть место, где менеджер окна отсылает сообщение активному диалогу. Но ок, пока не критично.


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

Posts: 2819
Post: #1836

Вот щас я тебя не понял. Посылает сообщение какого вида?


game bug fixes extended.dll || My Plugins || My GitHub
20.09.2021 14:15
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1837

Сообщение — вызов виртуальной функции вида [edx+8], по сути вызов обработчика события щелчка в диалоге.


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

Posts: 1349
Post: #1838

Berserker, можете пожалуйста подсказать, как использовать функционал, аналогичный SN:R в плагине на С++?


Создал новый глобальный мод: WoG Ultra Edition
20.09.2021 14:33
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1839

Две функции экспортируются Эрой и доступны в С++ era.h файле:
GlobalRedirectFile — глобальное перенаправление (работает во всей игре, не сохраняется в сохраняемые файлы)
RedirectFile — локальное перенаправление в рамках текущей запущенной карты, сохраняется и загружается после автоматически. Собственное, его SN:R использует.


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

Posts: 1349
Post: #1840

Спасибо, их я видел, но мне не совсем понятно, как именно передать им аргументы. В era.h это не указано, а если впрямую давать две строки, результат получается какой-то странный...


Создал новый глобальный мод: WoG Ultra Edition
20.09.2021 15:08
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #1841

procedure RedirectFile (OldFileName, NewFileName: pchar); stdcall;
procedure GlobalRedirectFile (OldFileName, NewFileName: pchar); stdcall;


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

Posts: 4343
Post: #1842

Как передавать значения ассоциативных переменных через ресивер !!IP: ?
раз уж планируется отказываться от HE:W, то им должна быть альтернатива.


Image: widget.png?style=banner2

Новейший Heroes Launcher
20.09.2021 17:35
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #1843

@Raistlin
Чё то мне подсказывает, что в era.h дополнительно нужно расширить описание функций:
PHP Code:
typedef void  (__stdcall *TRedirectFile) (const charOldFileName, const charNewFileName); 

@Berserker
Берс, ты не сможешьш поставить универсально один хук на все возможные события обработчика. Так не получится.
Есть базовый Dlg_Proc (0x5FFDE0 или 0x405610) (в виртуальной таблице это [vTable+0xC] или [vTable+0x24] не помню точно), но мне кажется в этом случае это не то.

Просто у каждого более-менее важного диалога - своя виртуальная таблица, в которой смещение до обработчика - у всех разное.
Например:
1) SwapDlg: proc = [vTable+0x2C]
2) BattleDlg: proc = [vTable+0x8]
3) TownDlg: proc = [vTable+0x8]
4) HeroDlg: proc = [vTable+0x24]
и т.д.

Я перестал понимать что именно ты хочешь сделать:
-если ты хочешь менять координаты диалога, то это нужно делать перед показом, например в конструкторе.
-а обрабатывать события кликов мыши (это в процесс диалог - 0x5FFDE0 или 0x405610).


PS: чё со временем то случилось у форума? У меня щас показывает 15:41, хотя по настоящему сейчас 19:41


game bug fixes extended.dll || My Plugins || My GitHub
20.09.2021 17:38
Visit this user's website Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #1844

igrik, Berserker, большое спасибо!


Создал новый глобальный мод: WoG Ultra Edition
20.09.2021 18:13
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #1845

This is not Era 3, right? I see a bunch of preinstalled mods

Image: 1632643630.jpg
26.09.2021 09:56
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