Цитата:
Да, там по ПКМ по кнопке грейда тянется 447 строка из HELP.TXT. В хуке к этой бы инфе дописывать. В HotA именно так и делается.
Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаЦитата: Да, там по ПКМ по кнопке грейда тянется 447 строка из HELP.TXT. В хуке к этой бы инфе дописывать. В HotA именно так и делается. |
Re: Как создать плагин для HD модаТогда всё ОК. Можно писать плагин
Вот дополнительная инфа (поможет получить строку подсказки, т.к. esi перезаписывается): |
Re: Как создать плагин для HD модаА как правильно получить стоимость существа и его грейда по айди не используя операторы?
|
Re: Как создать плагин для HD модаЧерез o_CreatureInfo. Там есть поле cost, у которого в свою очередь есть поля wood, ore и т.д.
|
Re: Как создать плагин для HD модаwood, ore в homm3.h почему-то были закомментированы по умолчанию. Раскомментил и попробовал сделать для ПКМ только по золоту. Проверить допишет ли к оригинальному сообщению. Почему-то недописывает:
|
Re: Как создать плагин для HD модаВы ставите хук туда, где в esi уже не ID элемента диалога, а строка с сообщением-подсказкой, поэтому условие c->esi == 0xD не выполняется. Хук нужно ставить на команду выше.
Цитата: Они закомментированы, потому что cost имеет тип struct _Resource_. Вот в той структуре они и определены. Так что возвращайте комменты на место: они для справки/чтобы удобно было считать смещение. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Я поставил по тому адресу, который Вы дали (0x5F4CA0). А как получить адрес на команду выше относительно 0x5F4CA0 ? |
Re: Как создать плагин для HD модаСтавьте сюда: 0x5F4C99. В общем случае на команду выше - это на длину её в байтах. У нас команда выше - это mov esi, dword_006A74C4[esi*8] (размер 7 байт); 0x5F4CA0 - 7 = 0x5F4C99.
|
Re: Как создать плагин для HD модаВот. Значит, условие уже выполняется. Смотрите, как работаете со строками. Обратите внимание, что после кода хука будет выполнена оригинальная команда, которая перезапишет все Ваши старания А ещё на то, что в хуке у Вас в esi не указатель на строку, а по-прежнему ID элемента (подумайте, как иначе условие выполнилось).
Короче, вы записываете в esi указатель на строку, а команда после хука использует этот указатель, как индекс ([esi*8]; см. картинку выше). Отсюда и вылет. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1