Wake of Gods Forum | Форум Во Имя Богов

Full Version: Вопросы по моддингу
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Как в ЕРМ скрипте обнаружить нажатия на кнопки Передачи всех артефактов/артефактов куклы героя или обмена всеми артефактами/обмена артефактами с кукол героев на экране встречи героев?
Кнопки которые HD-шные?
(07.07.2020 00:45)igrik Wrote: [ -> ]Кнопки которые HD-шные?

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

Как пример - без hd mod id кнопок героев на кп 39-43, с - 39-46. Справка содержит инфо лишь о первых 5. Так что данный момент работает.
Zur13, daemon_n, проверил, !?CM3 действительно срабатывает для HD-шного окна встречи героев.
Id кнопок можно проверить вот так (по правому клику):
Кнопки передачи артов 450-452.
(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.

Подумал что в первый раз когда сам проверял что-то накосячил, но нет, проверил только что еще раз, у меня для правой кнопки мыши срабатывает перехват, а для левой - нет.
(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: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 хука (вот в этом самая большая сложность)

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

Буду очень благодарен, я уже на финальной стадии, осталось чуть ИИ научить пользоваться модом и выложу раннюю версию.
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
XEPOMAHT, зависимости строения жёстко закодированы в коде? Есть возможность их элегантно поменять плагином?
igrik, я ещё тестировал !?CM0, на ряде кнопок с HD-модом (например, просмотр информации о сценарии), тоже до ЕРМ не доходит управление. На мой взгляд, весьма недружелюбная реализация для не SoD/Hota. Давайте коллективно к Баре обратимся, чтобы во всех местах для WoG/ERA просто CM:R0 ставился.
ZvsAllowDefMouseReaction: plongbool = Ptr($A4AAFC);
(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+ за счёт этого и были добавлены новые объекты строительства.
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;
planetavril, you should add any trigger before.
Reference URL's