Описка, видно. Проверка орфографии на корректном слове не катит, вот и прошло.
Quote:Как там возможен возврат? Или это описка?
?z2 передаст в этом параметре адрес. Функция сама должна по нему что-то записать. В твоём случае ты можешь написать ?v50, а функция должна записать в Addr, Addr + 4, Addr + 8 - результат.
MOP, ты не мог бы поделиться своей коллекцией общих бинарных патчей? Тех, что могли бы заюзать другие?
(10.08.2010 00:23)Berserker Wrote: [ -> ]MOP, ты не мог бы поделиться своей коллекцией общих бинарных патчей? Тех, что могли бы заюзать другие?
Таких мало, ибо в основном всё делаю в новой секции или на расчищенном конце содовской .text. Но попробую на досуге отобрать.
Вот для начала:
; MoP
; Увольнение последнего отряда в окне героя:
; 4DDC7E:
; CMP EAX,01h => NOP (3)
; 4DDC81:
; JLE SHORT 004DDC8F => NOP(2)
DDC7E 9090909090
; Увольнение последнего отряда в окне обмена героев:
; 5AF7D0:
; SETG DL => MOV DL,1; NOP
1AF7D0 B20190
; Увольнение последнего отряда в городе:
; 5D5139:
; CMP EAX,1 => NOP (3)
; 5D513C:
; JLE SHORT 005D5145 => NOP(2)
1D5139 9090909090
; Увольнение последнего отряда в Гарнизоне:
; 5D50F1:
; CMP EAX,1 => NOP (3)
; 5D50F4:
; JLE SHORT 005D50FD => NOP(2)
1D50F1 9090909090
; Врата Замка Инферно:
1D892C 909090909090; NOP (6) - затереть проверку на тип города
1D894C 90909090; NOP (4) - затереть проверку на построенность здания 22
1C2AD5 EB07; JMP SHORT 005C2ADE
; Разрешить строительство зданий в городах союзника:
1D5EF7 EB; jz L005D5F0E -> jmp L005D5F0E
; НАЗВАНИЕ: DiplomacyCorrect
; ВЕРСИЯ: 1.0
; АВТОР: MoP
; ОПИСАНИЕ: разрешает присоединение монстров только за деньги
; EXE: TE
; 4A755D:
; JG SHORT 004A75A3 => JMP SHORT 004A75A3
A755D EB
; Убрать скидки за уровень существа в Форте-на-Холме:
E801B B8060000009090909090; MOV EAX, 6; NOP (5) – всегда расценивать уровень существа как 7-ой.
; Активация кнопки "Следующий герой", отключенной в ТЕ.
9CE9 84D275768B; патчинг exe
; Объединить последний отряд одного героя с отрядом другого в окне города.
5C7821 B800000000
MOP, спасибо!
А с вратами инферно нужна функция их активации?
Стандартно врата активировались по щелчку на строении в Инферно. Если патч убирает зависимость от строения и города, то как вызвать диалог выбора места телепортации?
Так же. Патч убирает зависимость от наличия строения не в пункте-отправителе, а в пункте назначения.
(13.08.2010 00:55)Berserker Wrote: [ -> ]как вызвать диалог выбора места телепортации?
Так:
!?CM1; //тест: любой клик в любом городе
!!CA-1:H1/<0; //есть ли герой-гость?
!!FU&1:E; //выход, если нет
!!UN:C6919500/4/?y1; //указатель на TownManager
!!SN:E6129792/2/y1; //выполнить функцию
(14.08.2010 21:11)Sav Wrote: [ -> ]Только хотелось бы узнать - нельзя ли как-нибудь универсально узнать, нет ли у существа иммунитета.
В Эре можно стандартную геройскую функцию дернуть.
double __fastcall sub_44A1A0(int spell, int creature, char* hero_caster, char* hero_target).
Первый параметр - номер заклинания,
Второй - номер существа
Третий - адрес структуры героя, кастующего заклинание
Четвертый - адрес структуры героя, чье существо подвергается заклинанию (0 - если героя нет)
feanor, им нужна тогда уже ерм-функция, скрывая детали реализации работы с адресами структур.
Примерный код должен быть таким:
!!UN:C6919480/4/?y1; //базовый адрес
!!VRy10:S<caster_hero_number> *1170 +136736 +y1;
!!VRy20:S<target_hero_number> *1170 +136736 +y1;
!!SN:E4497824/3/<spell>/<creature>/y10/y20;
А вот возвращает оно нефиксированные результаты. 8 бит, плавающая запятая, чтоб её >_<
Quote:В случае иммуна вернет 10.
В v1. Это на всякий случай. Спасибо за функцию.
Черт, все-таки там какой-то странный формат идёт.
В случае иммуна функция возвращает, скажем так, небольшое положительное (16, 45, 34).
В случае уязвимости - большое отрицательное (порядка -60000)
Что будет в случае удвоенного урона или частичного иммуна - даже думать боюсь.
Проверил: то же, что и в случае уязвимости.
feanor, разрешите поинтересоваться, работаете ли Вы еще над внедрением книг заклинаний для монстров? Если нет, то не могли бы Вы предоставить свои наработки - с полным, разумеется, соблюдением авторских прав. Если все еще работаете, не могли бы Вы подсказать алгоритм создания такой книги для волшебного дракона? В частности, интересует то, можно ли считывать и менять заклинание волшебного дракона.