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

Post Reply 
Threaded Mode | Linear Mode
Вопросы по моддингу
» (обсуждаем моддинг здесь)
Author Message
Zur13 Offline

Posts: 223
Post: #1351

Как в ЕРМ скрипте обнаружить нажатия на кнопки Передачи всех артефактов/артефактов куклы героя или обмена всеми артефактами/обмена артефактами с кукол героев на экране встречи героев?
07.07.2020 00:43
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1352

Кнопки которые HD-шные?


game bug fixes extended.dll || My Plugins || My GitHub
07.07.2020 00:45
Visit this user's website Find all posts by this user Quote this message in a reply
Zur13 Offline

Posts: 223
Post: #1353

(07.07.2020 00:45)igrik Wrote:  Кнопки которые HD-шные?

Да, они же вроде только HD модом добавляются, в оригинале их небыло.
07.07.2020 01:13
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1354

В этом и вся проблема, что ERMу это наверное не возможно - отслеживать нажатия HD шных кнопок


game bug fixes extended.dll || My Plugins || My GitHub
07.07.2020 01:28
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #1355

А CM:I?y1; ? Если не ошибаюсь, Id этих кнопок статичный. Я пытался данный код улучшить для передачи военных машин. Есть даже эрм скрипт для этого в вог скриптс. Там много авторов, но сделано через позицию курсора на экране в момент клика. Вполне все отслеживалось. Могу, конечно, путаться, но проверить стоит.

Как пример - без hd mod id кнопок героев на кп 39-43, с - 39-46. Справка содержит инфо лишь о первых 5. Так что данный момент работает.


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
07.07.2020 03:27
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 779
Post: #1356

Zur13, daemon_n, проверил, !?CM3 действительно срабатывает для HD-шного окна встречи героев.
Id кнопок можно проверить вот так (по правому клику):
Кнопки передачи артов 450-452.
(This post was last modified: 07.07.2020 08:42 by wessonsm.)
07.07.2020 08:42
Find all posts by this user Quote this message in a reply
Zur13 Offline

Posts: 223
Post: #1357

(07.07.2020 03:27)daemon_n Wrote:  А CM:I?y1; ? Если не ошибаюсь, Id этих кнопок статичный. Я пытался данный код улучшить для передачи военных машин. Есть даже эрм скрипт для этого в вог скриптс. Там много авторов, но сделано через позицию курсора на экране в момент клика. Вполне все отслеживалось. Могу, конечно, путаться, но проверить стоит.

Как пример - без hd mod id кнопок героев на кп 39-43, с - 39-46. Справка содержит инфо лишь о первых 5. Так что данный момент работает.

(07.07.2020 08:42)wessonsm Wrote:  Zur13, daemon_n, проверил, !?CM3 действительно срабатывает для HD-шного окна встречи героев.
Id кнопок можно проверить вот так (по правому клику):
Кнопки передачи артов 450-452.

Подумал что в первый раз когда сам проверял что-то накосячил, но нет, проверил только что еще раз, у меня для правой кнопки мыши срабатывает перехват, а для левой - нет.
(This post was last modified: 07.07.2020 12:50 by Zur13.)
07.07.2020 12:48
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2814
Post: #1358

(07.07.2020 12:48)Zur13 Wrote:  Подумал что в первый раз когда сам проверял что-то накосячил, но нет, проверил только что еще раз, у меня для правой кнопки мыши срабатывает перехват, а для левой - нет.
Поэтому я и написал, что для ERMа это практически неподъемная задача. Для ЛКМ.

Проблема вот в чём:
- HD мод ставит перехват на функцию обработки событий в окне встречи героев и запускает свою функцию, скажем "Heroes_Meet_Proc", и выполняет сначала свои действия, а лишь потом запускает оригинальный обработчик (и то не всегда). Например, обработав действия своих кнопок, HD выходит из функции и НЕ запускает орининальный обработчик. Именно поэтому не ловится ЛКМ по нажатию на HD-шные кнопки

Выглядит это так:
Code:
0x5B0100_Hook Heroes_Meet_Proc ()
{
  - сначала идет обработка действий HD по новым кнопкам. И если это кнопки HD, то выполняются действия с артами или монстрами, а потом идет возврат из этой функции минуя нижеследующую строку.
  - а только потом запускается оригинальный обработчик действий, на котором висят хуки Вога, которые и дают возможность работать ERMу
}

В итоге чтобы сделать обработку ERMа до действий HD, нужно выловить динамический адрес функции Heroes_Meet_Proc (что легко сделать), и найти в ней место для ERM хука (вот в этом самая большая сложность)

Но я попробую что то придумать. Хотя и не обещаю, что получится.


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

Posts: 223
Post: #1359

(07.07.2020 13:16)igrik Wrote:  
(07.07.2020 12:48)Zur13 Wrote:  Подумал что в первый раз когда сам проверял что-то накосячил, но нет, проверил только что еще раз, у меня для правой кнопки мыши срабатывает перехват, а для левой - нет.
Поэтому я и написал, что для ERMа это практически неподъемная задача. Для ЛКМ.

Проблема вот в чём:
- HD мод ставит перехват на функцию обработки событий в окне встречи героев и запускает свою функцию, скажем "Heroes_Meet_Proc", и выполняет сначала свои действия, а лишь потом запускает оригинальный обработчик (и то не всегда). Например, обработав действия своих кнопок, HD выходит из функции и НЕ запускает орининальный обработчик. Именно поэтому не ловится ЛКМ по нажатию на HD-шные кнопки

Выглядит это так:
Code:
0x5B0100_Hook Heroes_Meet_Proc ()
{
  - сначала идет обработка действий HD по новым кнопкам. И если это кнопки HD, то выполняются действия с артами или монстрами, а потом идет возврат из этой функции минуя нижеследующую строку.
  - а только потом запускается оригинальный обработчик действий, на котором висят хуки Вога, которые и дают возможность работать ERMу
}

В итоге чтобы сделать обработку ERMа до действий HD, нужно выловить динамический адрес функции Heroes_Meet_Proc (что легко сделать), и найти в ней место для ERM хука (вот в этом самая большая сложность)

Но я попробую что то придумать. Хотя и не обещаю, что получится.

Буду очень благодарен, я уже на финальной стадии, осталось чуть ИИ научить пользоваться модом и выложу раннюю версию.
07.07.2020 13:24
Find all posts by this user Quote this message in a reply
planetavril Offline

Posts: 87
Post: #1360

someone could create a plugin to enable blocked buildings and be able to choose which ones to unlock?for example enable:mage guild 4 and 5 for all town,hrd2,hrd2upg for the castle,extra animation for tower and inferno,disable dock and boat for necropolis
07.07.2020 14:17
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16470
Post: #1361

XEPOMAHT, зависимости строения жёстко закодированы в коде? Есть возможность их элегантно поменять плагином?


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

Posts: 16470
Post: #1362

igrik, я ещё тестировал !?CM0, на ряде кнопок с HD-модом (например, просмотр информации о сценарии), тоже до ЕРМ не доходит управление. На мой взгляд, весьма недружелюбная реализация для не SoD/Hota. Давайте коллективно к Баре обратимся, чтобы во всех местах для WoG/ERA просто CM:R0 ставился.
ZvsAllowDefMouseReaction: plongbool = Ptr($A4AAFC);


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

Posts: 2264
Post: #1363

(07.07.2020 14:21)Berserker Wrote:  зависимости строения жёстко закодированы в коде?

Нет, там простая таблица.

(07.07.2020 14:21)Berserker Wrote:  Есть возможность их элегантно поменять плагином?

Да хоть ERM-ом:
ERM-HELP Wrote:СА:B#/$
Настройка зданий города:
    # = 1 – построить здание $
    # = 2 – разрушить здание $
    # = 3 – проверить, построено ли здание $ (во флаг 1)
    # = 4 – разрешить для постройки здание $
    # = 5 – запретить для постройки здание $
    # = 6 – построить здание в городе, используя внутреннюю функцию
Шестая опция - улучшение первой, она позволяет строить многоуровневые здания (гильдия магов, к примеру) без ошибок.

CD:B0/#1/#2/$
Глобальное разрешение/запрещение построек
    #1 – тип города
    #2 – номер здания
    $ – 0=запретить, 1=разрешить

CD:B1/#1/#2/$1/$2
Установить зависимость построек для здания.
    #1 – тип города
    #2 – номер здания
    $1 – первое значение (байты 0..3), см. номера зданий
    $2 – второе значение (байты 4..5), см. номера зданий

CD:B2/#1/#2/#3/#4/#5/#6/#7/#8/#9/#10/#11/#12/#13/#14/#15/#16
Установить зависимость построек для здания
    #1 – тип города
    #2 – тип здания
    #3…#16 – номера зданий, от которых зависит здание #2
Можно использовать как инструкцию, опускать ненужные параметры. Нельзя проверить или получить.

CD:B3/#1/#2/$1/$2
Установить исключающие зависимости для здания.
    #1 – тип города
    #2 – номер здания
    $1 – первое значение (байты 0..3), см. номера зданий
    $2 – второе значение (байты 4..5), см. номера зданий

   Но перевод строений из декораций в постройки (и наоборот) - уже кодом в функции, которая их проверяет и указывает зависимости строительства декораций (например в определённых городах при строительстве Ратуши/Префектуры/Муниципалитета автоматически строятся "дочерние" им декорации и т.д.), в ERA+ за счёт этого и были добавлены новые объекты строительства.
(This post was last modified: 07.07.2020 14:56 by XEPOMAHT.)
07.07.2020 14:36
Find all posts by this user Quote this message in a reply
planetavril Offline

Posts: 87
Post: #1364

It should be so?

ZVSE

!!IF:M^Now^;

CA-1:B1/1;
CA-1:B3/1;
CA-1:B4/3;
CD:B0/0/4/1;
CD:B1/0/4/4/2;
CD:B2/0/4/3/2/1;
(This post was last modified: 07.07.2020 15:41 by planetavril.)
07.07.2020 15:19
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #1365

planetavril, you should add any trigger before.


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
07.07.2020 15:35
Visit this user's website 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