Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
21 Jan 2015, 21:20
Сообщение
#281
|
|
![]() Etoslozhnostatus Сообщений: 8 677 Спасибо сказали: 16205 раз |
Может, слить эту тему с "Обсуждением инженерного анализа", чтобы не плодить сущностей и не путаться?
-------------------- - Да ну!?
- Horn of the Argali гну! |
|
|
|
21 Jan 2015, 22:11
(Сообщение отредактировал igrik - 21 Jan 2015, 23:29)
Сообщение
#282
|
|
![]() Immortal Сообщений: 589 Спасибо сказали: 891 раз |
Код далее не важно, потому что v19 - это как раз статус отношения группы монстров Блин, что-то я не могу въехать, где у определяется, что v19 = 0 ... 4. Код !?CM0; !!CM:I?y1; куда кликнули !!FU&y1<>37:E; если не карта приключений, то выход !!CM:P?y1/?y2/?y3; координаты клика !!OBy1/y2/y3:T?y4; что это за объект !!FU&y4<>54:E; если не монстр, то выход !!CM:R0; отмена стандартного действия !!OBy1/y2/y3:U?y4; узнать что за монстр? !!MOy1/y2/y3:G?y5; сколько их? !!FU35353:P1/y4/y5/3; !?FU35353; ; x1 - тип диалога: ; 0 - стандартный ; 1 - как с видением ; x2 - номер монстра ; x3 - кол-во монстров ; x4 - строка с присоединением: ; 0 - в бегство ; 1 - готовы ринутся в драку ; 2 - присоединяются по холяве ; 3 - присоединятся за плату ; y10 - скоко денег они хотят !!MA:Cx2/6/?y10; узнать скок стоит один монстр !!VRy10:*x3; умножить на кол-во !!UN:C6919480/4/?y1; !!SN:E5438880/2/y1/x1/x2/x3/x4/y10; !!SN:E6245264/2/y1; Но еще не нашел где изменять координаты отображения диалога Код !?CM0; !!CM:R0; !!UN:C6919480/4/?y1; получить указатель !!SN:E4782400/2/y1/50/50/256/256/18; вызвать пустой диалог с: 50/50 координаты верхнего угла, 256/256 размер диалога, 18 ??? !!SN:E6245264/2/y1; нужно для вызова диалога по ПКМ -------------------- |
|
|
|
22 Jan 2015, 07:09
Сообщение
#283
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Код далее не важно, потому что v19 - это как раз статус отношения группы монстров Блин, что-то я не могу въехать, где у определяется, что v19 = 0 ... 4. Код !?CM0; !!CM:I?y1; куда кликнули !!FU&y1<>37:E; если не карта приключений, то выход !!CM:P?y1/?y2/?y3; координаты клика !!OBy1/y2/y3:T?y4; что это за объект !!FU&y4<>54:E; если не монстр, то выход !!CM:R0; отмена стандартного действия !!OBy1/y2/y3:U?y4; узнать что за монстр? !!MOy1/y2/y3:G?y5; сколько их? !!FU35353:P1/y4/y5/3; !?FU35353; ; x1 - тип диалога: ; 0 - стандартный ; 1 - как с видением ; x2 - номер монстра ; x3 - кол-во монстров ; x4 - строка с присоединением: ; 0 - в бегство ; 1 - готовы ринутся в драку ; 2 - присоединяются по холяве ; 3 - присоединятся за плату ; y10 - скоко денег они хотят !!MA:Cx2/6/?y10; узнать скок стоит один монстр !!VRy10:*x3; умножить на кол-во !!UN:C6919480/4/?y1; !!SN:E5438880/2/y1/x1/x2/x3/x4/y10; !!SN:E6245264/2/y1; Но еще не нашел где изменять координаты отображения диалога Код !?CM0; !!CM:R0; !!UN:C6919480/4/?y1; получить указатель !!SN:E4782400/2/y1/50/50/256/256/18; вызвать пустой диалог с: 50/50 координаты верхнего угла, 256/256 размер диалога, 18 ??? !!SN:E6245264/2/y1; нужно для вызова диалога по ПКМ Опробую будет время. С такой помощью мод можно будет закончить в скором времени. -------------------- |
|
|
|
22 Jan 2015, 12:59
(Сообщение отредактировал Gavek - 22 Jan 2015, 12:57)
Сообщение
#284
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Код !?CM0; !!CM:I?y1; куда кликнули !!FU&y1<>37:E; если не карта приключений, то выход !!CM:P?y1/?y2/?y3; координаты клика !!OBy1/y2/y3:T?y4; что это за объект !!FU&y4<>54:E; если не монстр, то выход !!CM:R0; отмена стандартного действия !!OBy1/y2/y3:U?y4; узнать что за монстр? !!MOy1/y2/y3:G?y5; сколько их? !!FU35353:P1/y4/y5/3; !?FU35353; ; x1 - тип диалога: ; 0 - стандартный ; 1 - как с видением ; x2 - номер монстра ; x3 - кол-во монстров ; x4 - строка с присоединением: ; 0 - в бегство ; 1 - готовы ринутся в драку ; 2 - присоединяются по холяве ; 3 - присоединятся за плату ; y10 - скоко денег они хотят !!MA:Cx2/6/?y10; узнать скок стоит один монстр !!VRy10:*x3; умножить на кол-во !!UN:C6919480/4/?y1; !!SN:E5438880/2/y1/x1/x2/x3/x4/y10; !!SN:E6245264/2/y1; Но еще не нашел где изменять координаты отображения диалога Код !?CM0; !!CM:R0; !!UN:C6919480/4/?y1; получить указатель !!SN:E4782400/2/y1/50/50/256/256/18; вызвать пустой диалог с: 50/50 координаты верхнего угла, 256/256 размер диалога, 18 ??? !!SN:E6245264/2/y1; нужно для вызова диалога по ПКМ В целом здорово! Пока правда ещё не понятно как эти значения использовать в !!DL. !!SN:E4782400/2/y1/50/50/256/256/18; вызвать пустой диалог с: 50/50 координаты верхнего угла, 256/256 размер диалога, 18 ??? 18 это наличие тени диалога, 2= отключить. Может, слить эту тему с "Обсуждением инженерного анализа", чтобы не плодить сущностей и не путаться? скажите как объединить. -------------------- |
|
|
|
23 Jan 2015, 19:24
(Сообщение отредактировал Gavek - 23 Jan 2015, 19:27)
Сообщение
#285
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Кто нибудь знает,как сделать чтобы кнопка рекорды в главном меню вызывала диалог, значения для которого можно было бы брать из ini файла?
-------------------- |
|
|
|
04 Apr 2015, 22:41
(Сообщение отредактировал зачем? - 05 Apr 2015, 22:01)
Сообщение
#286
|
|
|
Newbie Сообщений: 44 Спасибо сказали: 5 раз |
Решил тут в хоту поиграть, захотелось однослотовых сборных артефактов, насколько я помню это можно сделать изменением пары байт в памяти (пофиг, что они не будут разбираться или давать не все статы), не подскажите адрес начинала таблицы артефатов и её структуру, поиск что то не дал результатов.... Кстати заодно может подскажете, возможно ли сделать плагин для hd мода, чтобы байтики заменялись при запуске, примеров реализации тоже не нашел нигде.
UPD: адресочки нашлись, только вот работает все не так как хотелось, сборные артефакты не только разобрать нельзя, но и собрать... в воге же (а может и сод), к примеру, если аналогичные адреса забить значением FFFFFFFF, собирались арты без проблем... просто разобрать нельзя было |
|
|
|
15 Apr 2015, 20:16
(Сообщение отредактировал feanor - 15 Apr 2015, 20:20)
Сообщение
#287
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Я хотел написать пост про то, как хранятся в экзе деревья отстройки (битовое поле в памяти создается при старте из хитровыкрученных данных), но без мата не получается. Поэтому пусть полежит так.
Код int depend_tables[] =
{ 0, -1, //первое число - номер здания, дальше - требования, завершаем минус единицей 1, 0, -1, 2, 1, -1, 5, -1, 7, -1, 8,7, -1, 9,8, -1, 11, 5, -1, 12, 11, 14, 16, 0, -1, 13, 12, 9, -1, 14, -1, 15, 14, -1, 16, -1, 17, 16, -1, //artif <- smith 21, 0, 7, -1, //managen <- fort, mguild 22, 9, -1, //moat??? 30, 7, 16, -1, 37, 30, -1, 18, 30, -1, 19, 30, 37, -1, 31, 7, 16, -1, 38, 31, -1, 32, 7, 16, -1, 39, 32, -1, 33, 31, -1, 40, 33, -1, 34, 30, 8, 14, -1, 41, 34, 35, -1, 35, 32, 8, 0, -1, 42, 35, 36, 17, -1, 36, 35, 34, 9, 1, -1, 43, 2, -1, 26, -1, //грааль -100 //конец }; *(int*)0x4EBA98 = (int)depend_tables; //для конфлюкса. Иные адреса раньше по коду. |
|
|
|
04 Nov 2015, 14:22
(Сообщение отредактировал Gavek - 04 Nov 2015, 14:23)
Сообщение
#288
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Цитата Feanor, не получается однако перенести строку с сообщениями: "Эти существа хотят присоединиться к Вам", "Любые существа присоединятся к Вам за %d золотых", "Эти ничтожные существа сразу обратятся в бегство" и т.д. в самописный диалог DL. Эм, в смысле? Я, если чо, тоже не буду браться, слишком мутный код, свою механику сделать будет едва ли не проще. Алсо, сообщения на самом деле лучше ловить через брякпойнт на 4F6C00, чем через поиск по коду Благодарен за "наводку" так сказать", по поводу создания своей механники, скоро будет готово. -------------------- |
|
|
|
04 Nov 2015, 19:14
Сообщение
#289
|
|
![]() Member Сообщений: 84 Спасибо сказали: 70 раз |
отвечу и тут, мож кому еще пригодится Код сместить кнопки далеко за пределы экрана: для бин файла ; кнопка "Синглплеер" 63E6B0 FFFD ; кнопка "Мультиплеер" 63E6B8 FFFD ; кнопка "Обучение" 63E6C8 FFFD ; кнопка "Во имя богов" 456C6C AAAA ; кнопка "Клинок Армагедона" 456CE6 AAAA ; кнопка "Возраждение Эратии" 63BBF0 AAAA ; кнопка "Выбрать" 63BBF8 AAAA Ещё мне нужно в окне выбора кампаний заблокировать некоторые окна кампаний. Как например сейчас в Hota, доступно 2 кампании. Я тоже хочу поместить в свой мод 2 кампании, остальные окна пока закрыть. Нужно так, чтобы было как в оригинале игры - проходишь например 2 кампании, открывается окно следующей. Может кто помочь? -------------------- |
|
|
|
04 Nov 2015, 20:03
Сообщение
#290
|
|
![]() Immortal Сообщений: 589 Спасибо сказали: 891 раз |
я тут хз
-------------------- |
|
|
|
05 Nov 2015, 11:42
(Сообщение отредактировал Gavek - 05 Nov 2015, 11:49)
Сообщение
#291
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Всем Здравствуйте!
Подскажите как закрыть окно героя и как отрыть окно найма существа (любого) вне замка? Пробовал через "хук на эру" глядя в "компилят" героев, через ida pro... регистры и прочее... в программировании не разбираюсь. -------------------- |
|
|
|
05 Nov 2015, 23:36
Сообщение
#292
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
Gavek
Ты ассемблер знаешь? В каждом конретном случае вызвано разное количество вложенных функций, которым разное количество параметров передано через стек командой push. Чтобы функцию завершить (а вызов окна героя - функция) - нужно передать управление на начало команд pop перед ret. Но в общем случае дать рекомендации нельзя - а вдруг вызвана вложенная функция (нажата кнопка например) - и эти операторы pop восстановят вовсе не то, и стек не вернётся в исходное состояние? А окно найма можно открыть, хоть даже внутри окна героя - но это нужно в отладчике смотреть. -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
06 Nov 2015, 10:52
(Сообщение отредактировал Gavek - 06 Nov 2015, 11:11)
Сообщение
#293
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Gavek Ты ассемблер знаешь? В каждом конретном случае вызвано разное количество вложенных функций, которым разное количество параметров передано через стек командой push. Чтобы функцию завершить (а вызов окна героя - функция) - нужно передать управление на начало команд pop перед ret. Но в общем случае дать рекомендации нельзя - а вдруг вызвана вложенная функция (нажата кнопка например) - и эти операторы pop восстановят вовсе не то, и стек не вернётся в исходное состояние? А окно найма можно открыть, хоть даже внутри окна героя - но это нужно в отладчике смотреть. Пробовал хотя бы азы изучить, интересно лично мне. Однако как и всё требует времени много, особенно если сам занимаешься. Поэтому ассемблер не знаю. Хотя за 4 года удалось очень подробно изучить ERM. Поскольку внутренности программы не знаю, то пользуюсь чужими наработками (естественно). Однако найденых мною наработок не хватает, мне. -------------------- |
|
|
|
06 Nov 2015, 22:02
Сообщение
#294
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Гиппо, не надо нести ерунду. Пуши, реты - начнем с того, что достаточно сымитировать нажатие кнопки (хотя бы через винапишную сендкей, ага, если не через встроенные функции диалога).
Ну и выход из диалога в принципе не может осуществляться "передачей управления на начало команд pop перед ret". |
|
|
|
06 Nov 2015, 22:11
Сообщение
#295
|
|
![]() допустим, мяў Сообщений: 24 129 Спасибо сказали: 13439 раз |
Ага, а если в этот момент поверх открыто ещё одно диалоговое окно?
Про сымитировать нажатие - это я и так понимаю, только работают ли апи-функции в героях? Неужели там не свой обработчик? -------------------- Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская) |
|
|
|
07 Nov 2015, 13:02
(Сообщение отредактировал igrik - 07 Nov 2015, 13:11)
Сообщение
#296
|
|
![]() Immortal Сообщений: 589 Спасибо сказали: 891 раз |
Так. Трэш-сеанс гадания по геройским внутренностям открыт В теме есть описалово нескольких стартовых функций В частности, есть указание на то, что 004A8160 обрабатывает вход в объекты Код 0x004A8160 void __thiscall Enter2ObjectMain(int AvdManager, _Hero_ *Hero, signed int Par1, __int64 PosMixed) Код 0х00408ABF Enter2ObjectGamer(v2, a5, mip); 0х00408ABF car__thiscall Enter2ObjectGamer(int AdvManager, signed int a3, int a4) Цитата Щас посмотрю. Есть mip, который указатель на тайл клетки, а есть пакованные координаты. //здесь - да, пакованные координаты feanor, если есть время и желание, можешь немного поподробнее расписать про эти функции и чем пакованные координаты отличаются от указателя на "тайл клетки" Цитата !!CM:P?y1/?y2/?y3; !!VRy1: &1023; !!VRy2: &1023 *65536 |y1; !!VRy3: &15 *67108864 |y2; Тут в y3 получаем тайл клетки? Цитата !!CM:P?y1/?y2/?y3; !!UN:C6919480/4/?y15; gamemgr !!UN:C6918840/4/?y10; advmgr !!VRy11:Sy10 +92; !!UN:Cy11/4/?y11; gamemap !!SN:E4228816/2/y11/y1/y2/y3; !!VRy12:Sv1; mapitem А тут пакованные координаты в y12? -------------------- |
|
|
|
07 Nov 2015, 14:15
Сообщение
#297
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20605 раз |
Наоборот, в первом случае упакованные в dword координаты, во втором - указатель на структуру тайла клетки.
|
|
|
|
07 Nov 2015, 21:48
(Сообщение отредактировал igrik - 09 Nov 2015, 16:41)
Сообщение
#298
|
|
![]() Immortal Сообщений: 589 Спасибо сказали: 891 раз |
-------------------- |
|
|
|
09 Nov 2015, 11:09
Сообщение
#299
|
|
![]() collector of time Сообщений: 159 Спасибо сказали: 73 раза |
Окно найма существ Код !!FU8980050:P28/132/10/-1/0/-1/0/-1/0; !?FU8980050; нанять существо при активном герое .... .... !!SN&y3<>0:E4917104/2/y1/y3; !!en:; Но! при попытке купить происходит вылет. Как это решить я не знаю Очень жаль. У меня вообще курсор пропадает, активна только кнопка "отмены" (ESC). Нажимаешь, потом снова функцию активируешь: первый слот нанимать также нельзя остальные можно, но всё равно вылет при найме. Ссылается на последнюю выполненную функцию и ошибку в доступе к функции Get Mon Stack(точно название не помню) Точно также было у меня, когда хук на Dwеллинги ставил. Хоть поступай в "Вышку" на программирование. -------------------- |
|
|
|
09 Nov 2015, 12:32
(Сообщение отредактировал igrik - 09 Nov 2015, 12:44)
Сообщение
#300
|
|
![]() Immortal Сообщений: 589 Спасибо сказали: 891 раз |
Оказывается функция работает, но если нанимаешь только боевые машины (ведь я то работаю в функции покупки боевых машин). При попытке купить других кричей получается вылет. Попробую пошаманить через другую фунцию
-------------------- |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 20 December 2025 - 22:36 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|