IPB

Здравствуйте, гость ( Вход | Регистрация )

23 страниц V  « < 13 14 15 16 17 > »   
Reply to this topicStart new topic
> Обсуждение инженерного анализа
Etoprostoya
сообщение 21 Jan 2015, 21:20
Сообщение #281

Etoslozhnostatus
Сообщений: 8 677
Спасибо сказали: 16205 раз




Может, слить эту тему с "Обсуждением инженерного анализа", чтобы не плодить сущностей и не путаться?


--------------------
- Да ну!?
- Horn of the Argali гну!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 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; нужно для вызова диалога по ПКМ


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 22 Jan 2015, 07:09
Сообщение #283

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Цитата(igrik @ 22 Jan 2015, 01:11) *
Код
далее не важно, потому что 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; нужно для вызова диалога по ПКМ

Опробую будет время. С такой помощью мод можно будет закончить в скором времени.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 22 Jan 2015, 12:59 (Сообщение отредактировал Gavek - 22 Jan 2015, 12:57)
Сообщение #284

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Цитата(igrik @ 22 Jan 2015, 01:11) *

Код
!?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= отключить.

Цитата(Etoprostoya @ 22 Jan 2015, 00:20) *
Может, слить эту тему с "Обсуждением инженерного анализа", чтобы не плодить сущностей и не путаться?


скажите как объединить.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 23 Jan 2015, 19:24 (Сообщение отредактировал Gavek - 23 Jan 2015, 19:27)
Сообщение #285

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Кто нибудь знает,как сделать чтобы кнопка рекорды в главном меню вызывала диалог, значения для которого можно было бы брать из ini файла?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
зачем?
сообщение 04 Apr 2015, 22:41 (Сообщение отредактировал зачем? - 05 Apr 2015, 22:01)
Сообщение #286

Newbie
Сообщений: 44
Спасибо сказали: 5 раз




Решил тут в хоту поиграть, захотелось однослотовых сборных артефактов, насколько я помню это можно сделать изменением пары байт в памяти (пофиг, что они не будут разбираться или давать не все статы), не подскажите адрес начинала таблицы артефатов и её структуру, поиск что то не дал результатов.... Кстати заодно может подскажете, возможно ли сделать плагин для hd мода, чтобы байтики заменялись при запуске, примеров реализации тоже не нашел нигде.

UPD: адресочки нашлись, только вот работает все не так как хотелось, сборные артефакты не только разобрать нельзя, но и собрать... в воге же (а может и сод), к примеру, если аналогичные адреса забить значением FFFFFFFF, собирались арты без проблем... просто разобрать нельзя было biggrin.gif
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 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; //для конфлюкса. Иные адреса раньше по коду.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 04 Nov 2015, 14:22 (Сообщение отредактировал Gavek - 04 Nov 2015, 14:23)
Сообщение #288

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Цитата(feanor @ 21 Jan 2015, 14:53) *
Цитата
Feanor, не получается однако перенести строку с сообщениями: "Эти существа хотят присоединиться к Вам", "Любые существа присоединятся к Вам за %d золотых",
"Эти ничтожные существа сразу обратятся в бегство" и т.д. в самописный диалог DL.

Эм, в смысле?
Я, если чо, тоже не буду браться, слишком мутный код, свою механику сделать будет едва ли не проще.

Алсо, сообщения на самом деле лучше ловить через брякпойнт на 4F6C00, чем через поиск по коду

Благодарен за "наводку" так сказать", по поводу создания своей механники, скоро будет готово.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Barin
сообщение 04 Nov 2015, 19:14
Сообщение #289

Member
Сообщений: 84
Спасибо сказали: 70 раз




Цитата(Barin @ 03 Nov 2015, 13:58) *
Цитата(igrik @ 13 Oct 2015, 01:17) *
отвечу и тут, мож кому еще пригодится
Код
сместить кнопки далеко за пределы экрана: для бин файла
; кнопка "Синглплеер"
63E6B0 FFFD
; кнопка "Мультиплеер"
63E6B8 FFFD
; кнопка "Обучение"
63E6C8 FFFD
; кнопка "Во имя богов"
456C6C AAAA
; кнопка "Клинок Армагедона"
456CE6 AAAA
; кнопка "Возраждение Эратии"
63BBF0 AAAA
; кнопка "Выбрать"
63BBF8 AAAA


Ещё мне нужно в окне выбора кампаний заблокировать некоторые окна кампаний. Как например сейчас в Hota, доступно 2 кампании. Я тоже хочу поместить в свой мод 2 кампании, остальные окна пока закрыть. Нужно так, чтобы было как в оригинале игры - проходишь например 2 кампании, открывается окно следующей.

Может кто помочь?



--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 04 Nov 2015, 20:03
Сообщение #290

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




я тут хз


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 05 Nov 2015, 11:42 (Сообщение отредактировал Gavek - 05 Nov 2015, 11:49)
Сообщение #291

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Всем Здравствуйте!
Подскажите как закрыть окно героя и как отрыть окно найма существа (любого) вне замка?
Пробовал через "хук на эру" глядя в "компилят" героев, через ida pro... регистры и прочее... в программировании не разбираюсь.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 05 Nov 2015, 23:36
Сообщение #292

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Gavek
Ты ассемблер знаешь? В каждом конретном случае вызвано разное количество вложенных функций, которым разное количество параметров передано через стек командой push. Чтобы функцию завершить (а вызов окна героя - функция) - нужно передать управление на начало команд pop перед ret. Но в общем случае дать рекомендации нельзя - а вдруг вызвана вложенная функция (нажата кнопка например) - и эти операторы pop восстановят вовсе не то, и стек не вернётся в исходное состояние?
А окно найма можно открыть, хоть даже внутри окна героя - но это нужно в отладчике смотреть.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 06 Nov 2015, 10:52 (Сообщение отредактировал Gavek - 06 Nov 2015, 11:11)
Сообщение #293

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Цитата(hippocamus @ 06 Nov 2015, 01:36) *
Gavek
Ты ассемблер знаешь? В каждом конретном случае вызвано разное количество вложенных функций, которым разное количество параметров передано через стек командой push. Чтобы функцию завершить (а вызов окна героя - функция) - нужно передать управление на начало команд pop перед ret. Но в общем случае дать рекомендации нельзя - а вдруг вызвана вложенная функция (нажата кнопка например) - и эти операторы pop восстановят вовсе не то, и стек не вернётся в исходное состояние?
А окно найма можно открыть, хоть даже внутри окна героя - но это нужно в отладчике смотреть.

Пробовал хотя бы азы изучить, интересно лично мне. Однако как и всё требует времени много, особенно если сам занимаешься. Поэтому ассемблер не знаю. Хотя за 4 года удалось очень подробно изучить ERM. Поскольку внутренности программы не знаю, то пользуюсь чужими наработками (естественно). Однако найденых мною наработок не хватает, мне.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 06 Nov 2015, 22:02
Сообщение #294

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Гиппо, не надо нести ерунду. Пуши, реты - начнем с того, что достаточно сымитировать нажатие кнопки (хотя бы через винапишную сендкей, ага, если не через встроенные функции диалога).
Ну и выход из диалога в принципе не может осуществляться "передачей управления на начало команд pop перед ret".
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 06 Nov 2015, 22:11
Сообщение #295

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Ага, а если в этот момент поверх открыто ещё одно диалоговое окно?
Про сымитировать нажатие - это я и так понимаю, только работают ли апи-функции в героях? Неужели там не свой обработчик?


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 07 Nov 2015, 13:02 (Сообщение отредактировал igrik - 07 Nov 2015, 13:11)
Сообщение #296

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




Цитата(feanor @ 16 Jan 2015, 22:00) *
Так. Трэш-сеанс гадания по геройским внутренностям открыт

В теме есть описалово нескольких стартовых функций
В частности, есть указание на то, что 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?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 07 Nov 2015, 14:15
Сообщение #297

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Наоборот, в первом случае упакованные в dword координаты, во втором - указатель на структуру тайла клетки.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 07 Nov 2015, 21:48 (Сообщение отредактировал igrik - 09 Nov 2015, 16:41)
Сообщение #298

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




Окна найма существ и боевых машин героем


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Richter
сообщение 09 Nov 2015, 11:09
Сообщение #299

collector of time
Сообщений: 159
Спасибо сказали: 73 раза




Цитата(igrik @ 07 Nov 2015, 23:48) *
Окно найма существ
Код
!!FU8980050:P28/132/10/-1/0/-1/0/-1/0;
!?FU8980050;  нанять существо при активном герое
....
....
!!SN&y3<>0:E4917104/2/y1/y3;
!!en:;

Но! при попытке купить происходит вылет. Как это решить я не знаю

Очень жаль. У меня вообще курсор пропадает, активна только кнопка "отмены" (ESC). Нажимаешь, потом снова функцию активируешь: первый слот нанимать также нельзя остальные можно, но всё равно вылет при найме. Ссылается на последнюю выполненную функцию и ошибку в доступе к функции Get Mon Stack(точно название не помню)
Точно также было у меня, когда хук на Dwеллинги ставил. Хоть поступай в "Вышку" на программирование.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 09 Nov 2015, 12:32 (Сообщение отредактировал igrik - 09 Nov 2015, 12:44)
Сообщение #300

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




Оказывается функция работает, но если нанимаешь только боевые машины (ведь я то работаю в функции покупки боевых машин). При попытке купить других кричей получается вылет. Попробую пошаманить через другую фунцию


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

23 страниц V  « < 13 14 15 16 17 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20 December 2025 - 22:36
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика