IPB

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

История благодарностей участнику Дьяк. Спасибо сказали: 80
Дата поста: В теме: За сообщение: Спасибо сказали:
02 Jun 2021, 22:37 NТG выводит свой проект из заморозки
Выход Бастиона запланирован на 2022 год
Цитата(ZёбRA @ 02 Jun 2021, 22:28) *
Позвольте задать вопрос, бастион выйдет как отдельный мод, продолжение WOG-а, как заменяющий замок в WOG-е, в рамках VCMI или ERA?

Изначально планировался как новый город, который не заменяет ничего. Адаптировать можно под любой исполняемый файл. Начиная от СОДа и заканчивая Эрой. Как сейчас это видят разработчики - вопрос.
hippocamus, magoth, Berserker, ZёбRA, Grossmaster, Raistlin
02 Jun 2021, 21:51 NТG выводит свой проект из заморозки
Выход Бастиона запланирован на 2022 год
Исходники может где-то и остались, но навыки и знания растерял, но если чем смогу помочь, что маловероятно - обращайтесь. Надеюсь город все же выйдет.
Bes, XEL, hippocamus, magoth, Berserker, Zabuza-san, Raistlin
16 Nov 2020, 01:00 Погиб Docent Picolan
Соболезную!!! Случайно узнал. Человек многое отдал героям...
NOD, XEL, hippocamus, lion-killer, Mefista, Berserker, XMenik, Theodor, KypaToP_HM, Striker X Fenix, Iriniko, redar2013, SLAVICBOY, Aeternus, Elendion
13 Mar 2011, 14:41 Инженерный анализ
Reverse Engineering
Правка генератора случайных монстров при старте карты. Позволяет генерировать новых и воговских монстров на карте без вогификации. Выдрал из наработок по WoG 359

// врезка Fix генератора
{0x54110F, 0x0, DP(Hook54110F)}, // Diakon

// настройка генератора карт (генерируем новых и ВоГовских монстров)
//MGENERATOR mGenerator [MONNUM];

int gmon;
int nMon;
int NotCheck = 0x541137;
int Check = 0x541116;

__declspec (naked) void Hook54110F(){
__asm pushad;
__asm mov gmon, ebx;
__asm mov eax, dword ptr [edi];
__asm mov nMon, eax;

if (nMon == -1){
__asm popad;
__asm jmp NotCheck;
}

__asm popad;
__asm lea eax, dword ptr [esi + esi*4];
__asm jmp Check;

}

// врезка FixGeneratora
{(Byte*)&JMP, (Byte*)0x54110F, 1}, //Diakon
{(Byte*)&PSUB, (Byte*)(0x541013+2), 4}, //Diakon
{(Byte*)&MSUB, (Byte*)(0x54106B+2), 4}, //Diakon
{(Byte*)&MSUB, (Byte*)(0x54109C+3), 4}, //Diakon
{(Byte*)&MSUB, (Byte*)(0x5410E1+3), 4}, //Diakon
{(Byte*)&MSUB, (Byte*)(0x541174+3), 4}, //Diakon
{(Byte*)&GENMONNUM, (Byte*)(0x541063+1), 4}, //Diakon
{(Byte*)&GENMONNUM, (Byte*)(0x5410B3+1), 4}, //Diakon
{(Byte*)&GENMON, (Byte*)(0x541159+1), 4}, //Diakon

int JMP = 0xE9; //Diakon
int PSUB = 0x324; //Diakon
int MSUB = -804; // Diakon
int GENMONNUM = 0xC5; - изменяется в зависимости от кол-ва монстров. негенерируемых монстров не прописываем в текстовике. Не помню текстовик для рандомной карты. Если кто не знает - напишу. Лень копаться.
int GENMON = GENMONNUM -1;
DracoLich, MasterOfPuppets, Etoprostoya
19 Sep 2010, 22:57 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Еще нашел 0x6992B0 dd -> mouseManager. Но вроде его обнулять не нужно.
baratorch, Berserker
19 Sep 2010, 22:31 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
И так итог:
по адресу: 0x4F0516 (это начало карты) ставим свой хук и запоминаем esp, edi, esi и ebp в переменные. Это нам нужно будет для выхода с карты. Это самое сложное. Теперь чтобы выйти с карты достаточно сделать jmp из любого места кода на адрес 0x4F051B перезаписав предварительно sp, edi, esi и ebp и положив по адресу 697728 код выхода. 0x66 - код выхода "загрузить игру" 0x6C - код выхода "главное меню".

Обнулить нужные манагеры:
0x6992D0 dd -> heroWindowManager
0x699414 dd -> soundManager
0x699420 dd -> combatManager
0x699530 dd -> inputManager
0x69954C dd -> townManager

На этом пожалуй все. Если чего вдруг и осталось то это мелочи должны быть.
Throutle, baratorch, Berserker
19 Sep 2010, 22:01 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
И так. Есть в игре различные менеджеры которые обеспечивают различные функции игры. Так вот:

0x6992D0 dd -> heroWindowManager
0x699414 dd -> soundManager
0x699420 dd -> combatManager
0x699530 dd -> inputManager
0x6992B8 dd -> advManager
0x69954C dd -> townManager

ну вроде все. advManager обнуляется автоматом. Т.к. выход происходит с карты приключений. Остальные должны обнулятся вручную. (Есно, если мы выходим из боя то нужно вдобавок обнулить combatManager).

Итак. Данные адреса - это указатели на класс. Т.е. опишу как классы выглядят (это очень условно, чтоб понятно было как добраться до деструктора):

struct Metod{
int Constructor;
int Destructor;
................
};

struct CombatManager{
Metod met;
.........
}*PMan;

Т.е. чтоб добраться до адреса процедуры деструктора нужно:
int AdressDestructora = PMan->met.Destructor;

Ну вот - теперь вроде должно работать.

Добавлено ([mergetime]1284922899[/mergetime]):
Аргумент передаваемый в функцию деструктора - адресс по которому располагается класс менеджера. Т.е. в ecx должен лежать адрес класса перед вызовом.
SAG19330184, feanor, Etoprostoya, Berserker
19 Sep 2010, 15:05 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Да - извини. Напутал с адресом. 0x4F0156 = 0x4F0516

Добавлено ([mergetime]1284897923[/mergetime]):
Поправил в первом посте, чтоб людей с толку не сбивать больше.
baratorch
19 Sep 2010, 13:12 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Не освобождение памяти решается сборщиком мусора, который запускается при начале карты и собирает memalloc. В любом случае я не претендую на истину в последней инстанции.

Добавлено ([mergetime]1284891167[/mergetime]):
На счет не совпадения - да. С СоД 3.2 не совпадает, но это не проблема. Могу найти, если такой способ устроит.
baratorch
18 Sep 2010, 18:36 Унификация перевода
или "собери их все"
Ну не нужно идти в разрез здравой логики. Робин гуд = Робин гуд. Да и Литл Джон тоже нормально звучит (хотя Малыш Джон вполне приемлемо). Никто не называет ведь футбол "ногамяч".
Doomђammer
18 Sep 2010, 00:47 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Посмотрел я как грузиться и вот мой вывод. Легче способа я думаю нет.
Значится так:

по адресу: 0x4F0516 (это начало карты) ставим свой хук и запоминаем esp и ebp в переменные. Это нам нужно будет для выхода с карты. Это самое сложное. Теперь чтобы выйти с карты достаточно сделать jmp из любого места кода на адрес 0x4F051B перезаписав предварительно esp и ebp и положив по адресу 697728 код выхода. 0x66 - код выхода "загрузить игру" 0x6C - код выхода "главное меню".

Тестировал - работает.
SAG19330184, feanor, Throutle, Berserker
17 Sep 2010, 16:35 Tales of Enroth[N/A yet, как всегда]
Очередная модификация
Я бы конечно хотел бы видеть мод для СоДа. Сбор основных нововведений и настройка для мультиплеера. Отключение разных ломов типа дипломатии, всякие патчи для процессора, кое-что из ТЕ из баланса (типа уровни магии и св-ва монстров). Не нужно сильно накалять только мод типа одновременного хода и т.п. Только самые необходимые и простые в реализации вещи. А стряпание своих модов... смысла я не вижу кроме личной самореализации и удовлетворения собственного эго. Есть два больших проекта ХоТа и Wog. Присоединяйтесь - работа найдется. И свои идеи вы сможете там воплотить.
Etoprostoya
29 Jul 2010, 07:22 Бездна флуда (старая)
флуд и обсуждение на общие темы
Цитата
Иначе у меня времени бы не хватало на работу.


Судя по количеству постов за последние дни - ты безработный. biggrin.gif

Меня абсолютно не интересует кто выпустит первый 10 город. Я не собираюсь отнимать "лавры" у Энта, тем более человек проделал большую работу и с радостью могу поздравить всю команду Хоты и отдельно товарища бака с его абсолютной бесполезностью для Хоты (знаешь, есть такие насекомые - наездники и паразиты всякие, которые на здоровом организме развиваются и загаживают его). Т.к. ты, бак, писатель то понятия не имеешь в технике отладки и дизассемблирования. Найти нужные места в ехе героев не сложно, да оно мне уже и не нужно. А копаться в чужих трудах - не менее сложно чем в героях. И подходы по встраиванию города у нас разные. Я давно отказался от начальной идеи.

И никакой войны между Хотой и КорВОгом нет. Все занимаются своими делами. А с форума большинство КорВога ушло из-за администрации данного форума. (например меня трижды банили). Тем не менее я здесь.
BT_Uytya!, Лентяй, FCst1, Adept, Kastore, Bugzy, Berserker, SerAlexandr
25 Jul 2010, 21:58 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Элементарно. Просто запусти два приложения героев и играй. Даже поиск не нужно делать, герои автоматом находят игру запущенную локально. Только нужно будет отключить запрет повторного запуска.

Добавлено ([mergetime]1280084287[/mergetime]):
А вот проверка на второй запуск

004F7E19 3D B7000000 CMP EAX,0B7

следующая команда je по которой прыгать не стоит для запуска героев.
baratorch
27 May 2010, 18:46 Меняем разрешение в Героях (HDmod)
дополнение к Heroes III
Я спорить с некомпетентными людьми в этом вопросе не намерен. Каждый останется при своем мнении.
packa
24 Apr 2010, 11:30 Обсуждение инженерного анализа
хм.... не знаю у меня кавалерийский бонус прекрасно работает

Добавлено ([mergetime]1272097845[/mergetime]):
0075D823 833D C0608402 2>CMP [DWORD 28460C0],27
0075D82A 75 0C JNZ SHORT Era_1_6.0075D838
0075D82C C705 20648402 0>MOV [DWORD 2846420],0B
0075D836 EB 28 JMP SHORT Era_1_6.0075D860
0075D838 833D C0608402 0>CMP [DWORD 28460C0],0B
0075D83F 75 0C JNZ SHORT Era_1_6.0075D84D
0075D841 C705 20648402 0>MOV [DWORD 2846420],0B
0075D84B EB 13 JMP SHORT Era_1_6.0075D860

проверка на монстра всего одна. поэтому менять нужно либо в инструкции 75D823 (как я поменял на нагу) либо 75D83F. А лучше вынести весь этот участок в отдельное место и написать нормальную таблицу.
MasterOfPuppets
21 Apr 2010, 21:15 Обсуждение инженерного анализа
BufCastleDCoor1 dd 5C32E9h
BufCastleDCoor2 dd 5C32F6h

Указатель на указатель таблицы располагается по адресу 5C32E9 (там размер координат word ), но игра использует два адреса один для координаты X второй для координаты Y
При помощт OlyDbg координаты можно найти за 2 минуты. Ставишь бряк на указатель имени дефа любого строения и при входе в замок оказываешься в коде на процедуре отрисовки.

Только поменять координаты зданий обычно мало, чтобы изменить положение здания. Есть еще таблица отвечающая за перекрытие одних зданий другими. Там указана отдаленность зданий от игрока.


Добавлено ([mergetime]1271873750[/mergetime]):
Буду дома - посмотрю
Astaroth
25 Mar 2010, 20:00 Редактор монстров
Для добавления новых монстров (beta)
В данном архиве лежит редактор монстров и плагин для ERA. Все что нужно - распаковать в корневой каталог ERA и прочитать хелп к данной проге. В архиве есть тестовый монстр для примера. Кому интересно - качаем, ставим, пользуемся отзываемся. У меня еще есть планы на развитие данного редактора, но хочу месяцок отдохнуть, так что пока улучшений не будет. Буду исправлять только найденные ошибки пока. Сегодня, завтра выложу исходники и среды разработок, а так же комментарии как собрать все это добро на вашем компе. Улучшение данного продукта в ваших руках

beta0.1 + исходники
Morn, Sar, ArtisanDen, Vade Parvis, FCst1, Jeanstonik, feanor, dik X.B., packa, Astaroth, Etoprostoya, Berserker, Axolotl
05 Feb 2010, 23:38 Инженерный анализ
Reverse Engineering
Я просто поправил информацию, что ты предоставил, чтобы не дезинформировать общественность.
Raistlin
22 Jan 2010, 17:38 Помогите разобраться с удачей!
Ну с работой удачи - я разобрался, но написать скрипт, если и возможно, то только через эру и очень геморройно. Во-первых, обращение к длл Angel должно быть в том же потоке, что и поток обрабатывающий битву и вероятность удачи (вероятнее всего так оно и есть). Т.к. случайное число для генерации получается из TlsGetValue (ячейка №12). Далее несколько действий над полученным значением (значение в eax):
MOV ECX,[DWORD EAX+14]
IMUL ECX,ECX,343FD
ADD ECX,269EC3
MOV [DWORD EAX+14],ECX
MOV EAX,ECX
SHR EAX,10
AND EAX,7FFF

и

SUB ESI,EDI
CDQ
INC ESI
IDIV ESI
MOV EAX,EDX
ADD EAX,EDI

в eax - значение, которое сравнивается с удачей героя, если оно меньше или равно, то удача срабатывает иначе нет.




Добавлено ([mergetime]1264171116[/mergetime]):
Хотя... можно попробовать вызвать процедуру генерации случайного числа для удачи через эру, если получиться и сравнивать с удачей героя. - это лучший вариант. Адресс процедуры 50C7C0h тип register eax = удача героя edx = 18 ecx = 1
результат есно в eax
ERMMASTER
08 Jan 2010, 12:07 Обсуждение инженерного анализа
1. Я не знаю на сколько новый у тебя исходник
2. В любом случае подход в том исходнике устаревший, т.к. переписываю все на С++
3. Последний исходник - это исходник к ролику о Бастионе
4. К длл идет еще две папки DATA_*** . Они тоже могут быть устаревшими - это раз, а два - в них могут быть лишние данные.
5. Те 3 адреса - это снятие ограничений с, если мне не изменяет память, хинта и команды ЕРМ, которая меняет существ в замке UN:T или чет тип того. По этим адресам должно находится число монстров. Последний адрес - точно ЕРМ потому, что - это код Славы. Но не факт, что это весь хинт.
6. Снять хинт без отладчика тебе не удасться. Придется учить азы ассемблера. Т.к. в коде идет простая проверка на кол-во монстров 197, т.е. 197 при помощи артманиты найдешь дох...на.
MasterOfPuppets
06 Jan 2010, 13:05 Обсуждение инженерного анализа
Ну вот видишь, ты сам сказал, что встречается чаще. Переведи адрес из ехе в виртуальный и проверь в артмани.

Как перевести - вот из этой темы:
http://forum.df2.ru/index.php?showtopic=6803

"1. На самом деле, Славин файл - это exe.
Для WoG 3.58f:
400000 + А, если А < 29C000,
465000 + А, если А >= 29C000."
MasterOfPuppets
05 Jan 2010, 15:06 Тонкости ЕРМ, использование UN:C
ERM для профессионалов :)
Отрываю от сердца (шучу)

AVCtown0 db 'DATA_CASTLE/AVCtown0.str',0
BufAVCtown0 dd 4C9823h
AVCtowx0 db 'DATA_CASTLE/AVCtowx0.str',0
BufAVCtowx0 dd 4C9810h
AVCtowz0 db 'DATA_CASTLE/AVCtowz0.str',0
;BufAVCtowz0 dd 1 dup (4C97C4h,70AA21h)
BufAVCtowz0 dd 4C97C4h

это из моего исходника к городам новым. Адреса - это указатели на указатели на таблицу дефов замков в разных ситуациях (при разрушении, целых и т.п.) Тут по-моему только нет вида замка при неотстроенном форте, ну по аналогии, если захочешь - найдешь.
MasterOfPuppets
28 Jun 2009, 20:49 Если нужен скрипт
Пишите если нужен скрипт
Иконку в дефе можно поменять, если кинуть в лод похожий деф, но с другой иконкой и на него поменять указатели.
Bisik, MasterOfPuppets

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