Мод на ХотА |
Здравствуйте, гость ( Вход | Регистрация )
Мод на ХотА |
25 Nov 2016, 10:02
Сообщение
#41
|
|
---------------------- New_Life_of_Heroes ---------------------- Сообщений: 241 Спасибо сказали: 358 раз |
Кстати, тут народ тоже пытается редактировать hota.exe Только лишь выкладывают те же адреса и значения данных, что и в sod.exe. Из неразобранного - только значение вида героя (добавил в исходники МоПа): 0 = Demon 1 = Dwarf 2 = Efreeti 3 = Elf 4 = Genie 5 = Gnoll 6 = Goblin 7 = Human 8 = Lich 9 = Lizardman 10 = Minotaur 11 = Ogre 12 = Troglodyte 13 = Vampire А вот добавлять, например, новых монстров через hota.dll и hota.dat отчего-то никто не пробует (наверное просто это никому не интересно из моддеров (или никто не хочет с этим связываться), хотя данные hota.dll и hota.dat не шифрованы и спокойно подвергаются разбору). -------------------- WoG + MoP + HoA + Forge + Bastion = ERA+
|
|
|
25 Nov 2016, 10:40
Сообщение
#42
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Efreeti Efreet. Тут же он один, и в остальных случаях единственное число.Хотя тут одержимые указаны, как Efreet, а еретики, как Efreeti. Странно, в общем, особенно учитывая, что множественное Efreets. -------------------- |
|
|
25 Nov 2016, 12:52
(Сообщение отредактировал Sav - 25 Nov 2016, 12:56)
Сообщение
#43
|
|
Immortal Сообщений: 9 403 Спасибо сказали: 3770 раз |
В Героях Efreeti - единственное число, Efreet - множественное. Впрочем, при этом грейд Efreet Sultan / Efreet Sultans (в подобных конструкциях определение пишется в единственном числе), что намекает на ошибку либо у грейда, либо у негрейда.
Насколько я вижу, в интернете можно найти источники и с одим строением слова, и с другим. P. S. Ещё одно слово, которое многих смущает - это Cyclops - Cyclopes. Но здесь такая конструкция уже более однозначна, грейд в определении корректно использует единственное число Cyclops. |
|
|
25 Nov 2016, 15:01
Сообщение
#44
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Только лишь выкладывают те же адреса и значения данных, что и в sod.exe. Из неразобранного - только значение вида героя (добавил в исходники МоПа): 0 = Demon 1 = Dwarf 2 = Efreeti 3 = Elf 4 = Genie 5 = Gnoll 6 = Goblin 7 = Human 8 = Lich 9 = Lizardman 10 = Minotaur 11 = Ogre 12 = Troglodyte 13 = Vampire Ничего не понял. Значение вида где? Ни на поле боя, ни на карте вид героя не зависит от этого параметра. -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
25 Nov 2016, 16:05
Сообщение
#45
|
|
---------------------- New_Life_of_Heroes ---------------------- Сообщений: 241 Спасибо сказали: 358 раз |
Ничего не понял. Значение вида где? Ни на поле боя, ни на карте вид героя не зависит от этого параметра. То, что нарисовано на портрете героя. Записано в HeroesChanges.txt, второе значение, которое нигде не используется и там можно хранить какую-нибудь информацию для стартовых параметров героев (например номер галереи портретов, чтобы нельзя было поменять портрет рыцаря на нежить и т.д., или сидел ли герой в тюрьме, был ли уволен, короче то что потребуется узнать для героя перед его наймом непосредственно через структуру, а не геройскую переменную) -------------------- WoG + MoP + HoA + Forge + Bastion = ERA+
|
|
|
25 Nov 2016, 16:20
(Сообщение отредактировал MasterOfPuppets - 25 Nov 2016, 16:25)
Сообщение
#46
|
|
Анти-Всë Сообщений: 2 989 Спасибо сказали: 2376 раз |
Записано в HeroesChanges.txt, второе значение Да это-то я понял, я спрашивал: где оно используется? Ответ, видимо: нигде. Но тогда с чего вообще такие названия - Goblin или Gnoll? Это даже не раса и не класс. И я бы не стал так уж безоговорочно считать его ненужным и свободным для использования, поэтому и не затрагивал его. Возможно, это что-то значит для ИИ, нужно ставить бряк и проверять. Долго проверять. Я и тринадцатый флаг использовал для рейд-боссов только после того, как убедился (да и то не до конца), что он реально не используется. -------------------- Circle of destruction, hammer comes crushing
Powerhouse of energy Whipping up a fury, dominating flurry We create the battery |
|
|
25 Nov 2016, 18:58
Сообщение
#47
|
|
Etoprostostatus Сообщений: 8 527 Спасибо сказали: 15833 раза |
Читаю название темы, как "Мода на ХотА".
-------------------- Etoprostopodpis'
|
|
|
25 Nov 2016, 19:28
Сообщение
#48
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Цитата Но тогда с чего вообще такие названия - Goblin или Gnoll? Это даже не раса и не класс. Потому что это все-таки раса.
|
|
|
25 Nov 2016, 19:38
(Сообщение отредактировал DedMorozzz - 25 Nov 2016, 20:15)
Сообщение
#49
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
Цитата Что бы быть более конкретным. Хочу для дьяволов сделать требуемые постройки - ГМ1, ифриты, демоны (не помню, требуют ли ифриты их, если не требуют то ГМ2 на замену...) Замок - ГМ3 для ангелов. И гм4 для архангелов Насколько это реально? Реально, но не совсем ясна формулировка, а в следствии и что точно нужно про Дьяволов. Код Patcher* _P; PatcherInstance* _PI; // Замок int BuildDepends_Castle[] = { 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 6, -1, 5, -1, 22, 5, -1, 14, -1, 15, 14, -1, 16, -1, 17, 6, -1, 7, -1, 8, 7, -1, 9, 8, -1, 11, 5, -1, 12, 11, 16, 0, 14, -1, 13, 12, 9, -1, 30, 7, -1, 37, 30, -1, 31, 30, -1, 38, 31, -1, 33, 30, 16, -1, 40, 33, -1, 32, 33, -1, 18, 32, -1, 39, 32, -1, 19, 39, -1, 21, 33, -1, 35, 21, -1, 42, 35, -1, 34, 33, 0, -1, 41, 34, -1, 36, 34, 2, -1, // Ангелы требуют еще и ГМ3 43, 36, 3, -1, // Архангелы требуют еще и ГМ4 26, -1, -100 }; // Инферно int BuildDepends_Inferno[] = { 7, -1, 21, 7, -1, 8, 7, -1, 22, 8, -1, 9, 8, -1, 5, -1, 16, -1, 14, -1, 15, 14, -1, 0, -1, 23, 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 4, 3, -1, 11, 5, -1, 12, 11, 16, 14, 0, -1, 13, 12, 9, -1, 30, 7, -1, 18, 30, -1, 37, 30, -1, 19, 37, -1, 32, 30, -1, 24, 32, -1, 39, 32, -1, 25, 39, -1, 31, 30, -1, 38, 31, -1, 33, 31, -1, 40, 33, -1, 35, 33, 0, -1, 42, 35, -1, 34, 33, -1, 41, 34, 0, -1, // ул. провал требует ГМ1 взамен ГМ2 (согласно описаниям HotA) 36, 34, 5, -1, 43, 36, -1, 26, -1, -100 }; BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { static _bool_ plugin_On = 0; switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: if (!plugin_On) { plugin_On = 1; _P = GetPatcher(); _PI = _P->CreateInstance("HD.Plugin.DedMorozzz"); *(int*)0x4EB816 = (int)BuildDepends_Castle; *(int*)0x4EBA39 = (int)BuildDepends_Inferno; } break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } Кстати, тут народ тоже пытается редактировать hota.exe Если совсем кратко - для дьяволов убрать провал из требований И какой это файл редактировал? Патчер... не в курсе что это ): |
|
|
25 Nov 2016, 21:23
Сообщение
#50
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Вкратце, что такое patсher_x86 (тут)
Как создать dll для HD-мода. (тут) Код #include "patcher_x86.hpp" Patcher* _P; PatcherInstance* _PI; // Замок int BuildDepends_Castle[] = { 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 6, -1, 5, -1, 22, 5, -1, 14, -1, 15, 14, -1, 16, -1, 17, 6, -1, 7, -1, 8, 7, -1, 9, 8, -1, 11, 5, -1, 12, 11, 16, 0, 14, -1, 13, 12, 9, -1, 30, 7, -1, 37, 30, -1, 31, 30, -1, 38, 31, -1, 33, 30, 16, -1, 40, 33, -1, 32, 33, -1, 18, 32, -1, 39, 32, -1, 19, 39, -1, 21, 33, -1, 35, 21, -1, 42, 35, -1, 34, 33, 0, -1, 41, 34, -1, 36, 34, 2, -1, // Ангелы требуют еще и ГМ3 43, 36, 3, -1, // Архангелы требуют еще и ГМ4 26, -1, -100 }; // Инферно int BuildDepends_Inferno[] = { 7, -1, 21, 7, -1, 8, 7, -1, 22, 8, -1, 9, 8, -1, 5, -1, 16, -1, 14, -1, 15, 14, -1, 0, -1, 23, 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 4, 3, -1, 11, 5, -1, 12, 11, 16, 14, 0, -1, 13, 12, 9, -1, 30, 7, -1, 18, 30, -1, 37, 30, -1, 19, 37, -1, 32, 30, -1, 24, 32, -1, 39, 32, -1, 25, 39, -1, 31, 30, -1, 38, 31, -1, 33, 31, -1, 40, 33, -1, 35, 33, 0, -1, 42, 35, -1, 34, 33, -1, 41, 34, 0, -1, // ул.Провал требует ГМ1 взамен ГМ2 (согласно описаниям HotA) 36, 33, 5, -1, // Дьяволы не требуют Провал для постройки (34 -> 33) 43, 36, -1, 26, -1, -100 }; BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { static _bool_ plugin_On = 0; switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: if (!plugin_On) { plugin_On = 1; _P = GetPatcher(); _PI = _P->CreateInstance("HD.Plugin.DedMorozzz"); *(int*)0x4EB816 = (int)BuildDepends_Castle; *(int*)0x4EBA39 = (int)BuildDepends_Inferno; } break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } -------------------- |
|
|
28 Nov 2016, 23:18
Сообщение
#51
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
Вкратце, что такое patсher_x86 (тут) Как создать dll для HD-мода. (тут) Код #include "patcher_x86.hpp" Patcher* _P; PatcherInstance* _PI; // Замок int BuildDepends_Castle[] = { 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 6, -1, 5, -1, 22, 5, -1, 14, -1, 15, 14, -1, 16, -1, 17, 6, -1, 7, -1, 8, 7, -1, 9, 8, -1, 11, 5, -1, 12, 11, 16, 0, 14, -1, 13, 12, 9, -1, 30, 7, -1, 37, 30, -1, 31, 30, -1, 38, 31, -1, 33, 30, 16, -1, 40, 33, -1, 32, 33, -1, 18, 32, -1, 39, 32, -1, 19, 39, -1, 21, 33, -1, 35, 21, -1, 42, 35, -1, 34, 33, 0, -1, 41, 34, -1, 36, 34, 2, -1, // Ангелы требуют еще и ГМ3 43, 36, 3, -1, // Архангелы требуют еще и ГМ4 26, -1, -100 }; // Инферно int BuildDepends_Inferno[] = { 7, -1, 21, 7, -1, 8, 7, -1, 22, 8, -1, 9, 8, -1, 5, -1, 16, -1, 14, -1, 15, 14, -1, 0, -1, 23, 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1, 4, 3, -1, 11, 5, -1, 12, 11, 16, 14, 0, -1, 13, 12, 9, -1, 30, 7, -1, 18, 30, -1, 37, 30, -1, 19, 37, -1, 32, 30, -1, 24, 32, -1, 39, 32, -1, 25, 39, -1, 31, 30, -1, 38, 31, -1, 33, 31, -1, 40, 33, -1, 35, 33, 0, -1, 42, 35, -1, 34, 33, -1, 41, 34, 0, -1, // ул.Провал требует ГМ1 взамен ГМ2 (согласно описаниям HotA) 36, 33, 5, -1, // Дьяволы не требуют Провал для постройки (34 -> 33) 43, 36, -1, 26, -1, -100 }; BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { static _bool_ plugin_On = 0; switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: if (!plugin_On) { plugin_On = 1; _P = GetPatcher(); _PI = _P->CreateInstance("HD.Plugin.DedMorozzz"); *(int*)0x4EB816 = (int)BuildDepends_Castle; *(int*)0x4EBA39 = (int)BuildDepends_Inferno; } break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } Создал ДЛЛку, а как её к героям прикрутить теперь то? И у тебя в коде не инклудится .h файл. Так и надо? |
|
|
29 Nov 2016, 09:36
(Сообщение отредактировал igrik - 29 Nov 2016, 17:10)
Сообщение
#52
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Создал ДЛЛку, а как её к героям прикрутить теперь то? Т.к. этот файл для HD мода, то его нужно класть в "[папка с HotA]\_HD3_Data\Packs\DedMorozzz". Потом его нужно подключить в плагинах HD лаунчера. И естественно, он будет работать только с включенным HD. И у тебя в коде не инклудится .h файл. Так и надо? Предварительно нужно еще закинуть "patcher_x86.hpp" в папку решения проекта (короче там, где остальные файлы *.hpp и *.h) Тогда он будет компилироваться без ошибок и запросов на недостающие файлы. upd:Также, ты не только можешь, а даже желательно все твои правки из exe перенести в dll На примере 5% для специализаций (На счет правки навыков, оказалось не все так просто) + я что-то не смог получить адрес флоат переменной через С++, поэтому пришлось шить напрямую в пустое место в exe Код // правка интеллекта (2%) *(int*)0x4E4B88 = 0x3ca3d70a; // float 0.02f (записал в пустое место в exe) *(int*)0x4DA596 = 0x4E4B88; // при смерти героя *(int*)0x4D917E = 0x4E4B88; // при старте при настройке героя *(int*)0x4DDACC = 0x4E4B88; // процесс экшн в окне героя *(int*)0x4E4B69 = 0x4E4B88; // при открытии окна героя *(int*)0x4E20EC = 0x4E4B88; // в подневный расчет максимума маны вышеуказанное можно вставить после строки *(int*)0x4EBA39 = (int)BuildDepends_Inferno; -------------------- |
|
|
29 Nov 2016, 21:21
(Сообщение отредактировал DedMorozzz - 29 Nov 2016, 22:27)
Сообщение
#53
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
Предварительно нужно еще закинуть "patcher_x86.hpp" в папку решения проекта (короче там, где остальные файлы *.hpp и *.h) Тогда он будет компилироваться без ошибок и запросов на недостающие файлы. Да вроде и так без ошибок. Перенёс скомпилиную ДЛЛку в папку пакс. И всё завелось. Только вот дьяволы терь ифритов не требуют)) Отсюда вытекает вопрос - где подсмотреть айдишники зданий. Гуглануть не получилось ): Что бы, мог сам, для любого замка зависимости поменять upd:Также, ты не только можешь, а даже желательно все твои правки из exe перенести в dll На счет правки навыков, оказалось не все так просто Ну я навыки тоже правил... Но если получится, всё что можно перенести - перенесу |
|
|
30 Nov 2016, 06:03
Сообщение
#54
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Предварительно нужно еще закинуть "patcher_x86.hpp" в папку решения проекта (короче там, где остальные файлы *.hpp и *.h) Тогда он будет компилироваться без ошибок и запросов на недостающие файлы. Да вроде и так без ошибок. Перенёс скомпилиную ДЛЛку в папку пакс. И всё завелось. Только вот дьяволы терь ифритов не требуют)) Отсюда вытекает вопрос - где подсмотреть айдишники зданий. Гуглануть не получилось ): Что бы, мог сам, для любого замка зависимости поменять Качай ERM-help. Внутри него есть кнопка "CA", Да и вообще, там много полезных данных есть. -------------------- |
|
|
30 Nov 2016, 21:12
(Сообщение отредактировал DedMorozzz - 01 Dec 2016, 00:37)
Сообщение
#55
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
Скачать не получилось. Точнее как, получилось на файл пустой. Хоть и весит под 6 метров
http://www.wakeofgods.com/erm_help/receivers/receiver_ca.htm - вот тут нашел эту инфу, в онлайне Итого. Каждый замок указан цепочкой что требуется для него. Айди постройки и через запятую какие ещё требуются для него... Т.о. для дьяволов, что бы вернуть ифритов получается так: 36, 35, 33, 5, -1, Вместо 36, 33, 5, -1, Но всё равно получается. Что для другого замка в ручную прописывать все зависимости... Проверить не вышло, с только одой постройкой (может смёрджит) т.к. в дополнение ко всему не ясно на какой участок ссылаться с этим массивом (в смысле с массивом зависимостей, к примеру замка "оплот") PS: Ещё и изменить навык некромантии не получилось. В exe верные числа стоят. 0-10-20-30. Хотя в игре по факту 0-5-10-15 (в ХотА некромантию в 2 раза порезали) Менял 0-10-20-30 на 0-100-100-100. Всё равно оставалось 0-5-10-15... Как найти место где ещё раз переписывается процент для этого навыка? PPS: как тут много то всего... |
|
|
30 Nov 2016, 23:30
Сообщение
#56
|
|
пират с чёрной меткой Сообщений: 23 646 Спасибо сказали: 12923 раза |
PS: Естественно, потому что хотовские правки находятся не в экзешнике (который почти не изменён), а в hota.dllЕщё и изменить навык некромантии не получилось. В exe верные числа стоят. 0-10-20-30. Хотя в игре по факту 0-5-10-15 (в ХотА некромантию в 2 раза порезали) -------------------- Давший быка на убой не выпросил и печень на жаркое.
|
|
|
01 Dec 2016, 00:36
Сообщение
#57
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
|
|
|
01 Dec 2016, 00:55
Сообщение
#58
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Скачать не получилось. Точнее как, получилось на файл пустой. Хоть и весит под 6 метров Сними галку "Спрашивать при открытии такого файла"Итого. Каждый замок указан цепочкой что требуется для него. Айди постройки и через запятую какие ещё требуются для него... Да. Можно было просто "36, 35, 5, -1,". Там все идет прицепом, ведь для 35 требуется "35, 33, 0, -1, " и т.д. Но всё равно получается. Что для другого замка в ручную прописывать все зависимости... к примеру замка "оплот" Именно. (0x4EB8B2+1)=оплот... 7, -1, 8, 7, -1, 9, 8, -1, 5, -1, 16, -1, 14, -1, 15, 14, -1, 0, -1, 1, 0, -1, 2, 1, -1, 3, 2, -1 4, 3, -1, 17, -1, 21, 17, -1, 11, 5, -1, 12, 11, 0, 16, 14, -1, 13, 12, 9, -1, 30, 7, -1, 37, 30 -1, 31, 30, -1, 18, 31, -1, 22, 18, -1, 38, 31, -1, 19, 38, -1, 32, 30, -1, 39, 32, -1, 34, 32, -1 24, 34, -1, 41, 34, -1, 25, 41, -1, 33, 32, -1, 40, 33, -1, 35, 33, 34, -1, 42, 35, -1, 36, 35, 1 -1, 43, 36, 2, -1, 26, -1, -100 PPS: как тут много то всего... Ну так....-------------------- |
|
|
01 Dec 2016, 12:29
Сообщение
#59
|
|
God Сообщений: 267 Спасибо сказали: 25 раз |
Сними галку "Спрашивать при открытии такого файла" Да не, не в этом дело. Я даже скачал другую софтинку. Спец для просмотра такого рода файлов. И в ней выбрать открыть конкретный файл - всё равно пусто. Причём как на винде 10ке, как и на луинксе (минте). Всегда пусто (0x4EB8B2+1)=оплот... Где все эти данные посмотреть? Для любого замка... Идея как менять зависимости ясна. Но вот где код замка взять - не понятно. И странный вид - "0x4EB8B2+1". +1 так и надо? |
|
|
01 Dec 2016, 20:20
(Сообщение отредактировал igrik - 27 Jun 2017, 09:20)
Сообщение
#60
|
|
Immortal Сообщений: 589 Спасибо сказали: 890 раз |
Где все эти данные посмотреть? Для любого замка... Идея как менять зависимости ясна. Но вот где код замка взять - не понятно. Посмотреть адреса можно в базе для IDA HoMM3 (© sergroj) Открыть эту базу можно через IDA. Лично я пользуюсь пятой версией. Вот ERM Help.zip И странный вид - "0x4EB8B2+1". +1 так и надо? Ничего странного. Просто адрес указан со смещением, что эквивалентно 0x4EB8B3. -------------------- |
|
|
Текстовая версия | Сейчас: 25 April 2024 - 15:06 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |