Current time: 25.11.2024, 08:53 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Плагины. Обсуждение
» Plugins. Discussion & Questions
Author Message
Archer30 Offline
Moderators

Posts: 1175
Post: #571

Hi igrik, I wonder if there is a way to redefine commanders' AI values in your plugin.

At the moment, I need to divide all the AI values by a number to prevent the game being stuck (This usually happens when playing some old maps with 32167 units in every slot). It can be easily done by scripts but for commanders, there seems to be no way. Ideally I'd hope commanders' AI values can be changed by scripts too.


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 28.07.2023 18:51 by Archer30.)
27.07.2023 08:41
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #572

XEPOMAHT, что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.
Да, и... если код библиотеки представляет собой чистый бинарный патч - почему бы и не сделать его бинарным патчем, а не dll?


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
02.09.2023 07:35
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #573

(02.09.2023 07:35)MOP Wrote:  что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.

Там какой-то слабопонятный рассчёт для ИИ, с вычетанием силы магии *25, поэтому рисковать не стал. Могу в понедельник попробовать увеличить этот лимит в prima.dll и выложить.

(02.09.2023 07:35)MOP Wrote:  Да, и... если код библиотеки представляет собой чистый бинарный патч - почему бы и не сделать его бинарным патчем, а не dll?

1. Вручную в шестнадцатеричном редакторе набирать более 400 бинарных патчей в bin-файл у меня может занять месяцы, т.к. ПО для конвертирования бинарного патча из ассемблерного кода у меня нет (и сомневаюсь, что оно у кого-то есть, т.к. это никому не нужно). Мне после 20 адреса уже надоест и я брошу это дело. Человеческий фактор.

2. Код prima.dll был просто скопирован с typhon.dll. И то потому что бы протестировать патч на первичные навыки вне ЭРЫ+, т.к. тестировать это в самой ЭРА+ никто бы не стал. В самой ЭРА+ все бинарные патчи я стараюсь встраивать в Тифон, т.к. это очень удобно (тот же патч на увеличение лимита героев в игре - тоже бинарный патч, но довольно объёмный, и даже был портирован в MoP, но тоже в виде dll, а не bin, т.к. по моей практике реализовывать такие вещи в формате bin - очень неудобно, т.к. я работаю с bin без исходных кодов, а читать и редактировать вручную более 2000 адресов в bin - лютый ппц и гигантские затраты времени, на обычном ассемблере намного и намного удобнее и вразы быстрее). Соответственно, если возникают правки в prima.dll, то они легко могут быть скопированы в typhon.dll и наоборот.

3. Стараюсь заниматься моддингом по принципу "работает - не трогай". В том же Тифоне 3.5 есть то, что мне уже не нравится, т.к. реализовывалось 5 лет назад, когда опыта было не много, но - не меняю. То же использование воговских и эровских триггеров в Тифоне 3.5 сегодня считаю пережитком прошлого, но это скорее всего останется навсегда, т.к. переписывать огромные пласты кода просто нет ни времени, ни желания, особенно в силу возраста.
02.09.2023 10:28
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #574

Ну, никто и не набирает бинарные патчи вручную прямо в hex (что за изврат?). Лично я копирую изменённые мной места из листинга OllyDbg - так и сама логика ассемблера сохраняется в виде комментариев. Дальше сохранить в блокноте, ExeBuilder - и патч готов. Думаю, все так и поступают.
Хотя, впрочем, это тоже долго (не месяцы, конечно, а день-другой), муторно и, по большому счёту, никому не нужно, а я продолжаю это делать лишь потому, что так повелось с самого начала.
А редактор карт под это дело не патчился? А то я и там лимиты под 249 подогнал.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
02.09.2023 14:26
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #575

(02.09.2023 14:26)MOP Wrote:  Лично я копирую изменённые мной места из листинга OllyDbg - так и сама логика ассемблера сохраняется в виде комментариев. Дальше сохранить в блокноте, ExeBuilder - и патч готов. Думаю, все так и поступают.

Наверное так лучше, но я привык вносить все изменния непосредственно в шестнадцатеричном редакторе, работаю так лет 20. Переучиваться под ExeBuilder поздно (да и самой ExeBuilder у меня нет, как с ней работать - не знаю 105 ).

(02.09.2023 14:26)MOP Wrote:  А редактор карт под это дело не патчился? А то я и там лимиты под 249 подогнал.

Нет, т.к. будет конфликтовать с Unleashed.dll, автор которого так же решил изменить эти лимиты в редакторе "по своему", в итоге чтобы получить значения выше 127, в редакторе нужно выставлять отрицательные значения первичным навыкам.
02.09.2023 19:56
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #576

XEPOMAHT, а ты мазохист, однако )


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
02.09.2023 20:59
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #577

Не нашёл тему для багрепортов - в общем, исправление ещё СоДовского бага, где гекс прямо перед боевыми машинами в битве добавлялся в список атак для ближнего боя, что позволяло "бить" ими"
Код на C++ (Click to View)

Картиночки (Click to View)


Image: widget.png?style=banner2

Новейший Heroes Launcher
03.09.2023 10:55
Visit this user's website Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #578

(02.09.2023 19:56)XEPOMAHT Wrote:  Наверное так лучше, но я привык вносить все изменния непосредственно в шестнадцатеричном редакторе, работаю так лет 20. Переучиваться под ExeBuilder поздно (да и самой ExeBuilder у меня нет, как с ней работать - не знаю 105 ).
А, так я к исходникам MoP её не прилагал? Как и батник в виде:
Code:
LIB\BinMagic.exe Cmd=ConvertPatch SourcePatch="LIB\*.txt" ResultPatch="MoP.bin" PatchFor=File
ExeBuilder.exe
Del *bin
MOVE Out.exe "..\MoP.exe"
запуском которого из немного модифицированного (расширенные секции, добавленные новые + замена иконки), но всё ещё подходящего для ВОГ h3te.exe за пару секунд с помощью ~55000 патчей создаётся адовый MoP.exe.
Вообще, эта программа должна идти в стандартной сборке ЭРЫ. По крайней мере, раньше (лет 10 назад, хе-хе) шла.
(02.09.2023 19:56)XEPOMAHT Wrote:  Нет, т.к. будет конфликтовать с Unleashed.dll, автор которого так же решил изменить эти лимиты в редакторе "по своему", в итоге чтобы получить значения выше 127, в редакторе нужно выставлять отрицательные значения первичным навыкам.
Опять какие-то извраты... Там же работы на три копейки:
Code:
; расширение первичных навыков:
; расширение значений в комбобоксах:
946D0 E9BFB10900;            JMP MoPMAPED.0052F894
946D5 9090;                  NOP(2)

12F894 817DF0F9000000;       CMP DWORD PTR SS:[EBP-10],0F9
12F89B 8D45E0;               LEA EAX,[EBP-20]
12F89E E9344EF6FF;           JMP MoPMAPED.004946D7

9477B E923B10900;            JMP MoPMAPED.0052F8A3

12F8A3 85C0;                 TEST EAX,EAX
12F8A5 68F9000000;           PUSH 0F9
12F8AA 59;                   POP ECX
12F8AB E9D04EF6FF;           JMP MoPMAPED.00494780

948B3 40;                    INC EAX - увеличить кол-во знаков вводимого текста на 1 (2 -> 3)
948B4 6A00;                  PUSH 0
948B6 50;                    PUSH EAX
948B7 68C5000000;            PUSH 0C5
948BC FF76C4;                PUSH DWORD PTR DS:[ESI-3C]
948BF E9ECAF0900;            JMP MoPMAPED.0052F8B0

12F8B0 FFD7;                 CALL EDI
12F8B2 68F9000000;           PUSH 0F9
12F8B7 6A00;                 PUSH 0
12F8B9 E90650F6FF;           JMP MoPMAPED.004948C4

; расширить элементы диалога для 3-значных чисел:
20727C 1C
2072F4 1C
20736C 1C
2073E4 1C
Image: image.png


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
(This post was last modified: 03.09.2023 16:00 by MOP.)
03.09.2023 15:29
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #579

(02.09.2023 10:28)XEPOMAHT Wrote:  
(02.09.2023 07:35)MOP Wrote:  что с адресом 432B11h в prima.dll? Почему-то не увеличен лимит.

Там какой-то слабопонятный рассчёт для ИИ, с вычетанием силы магии *25, поэтому рисковать не стал. Могу в понедельник попробовать увеличить этот лимит в prima.dll и выложить.

Готово: https://vk.com/s/v1/doc/ZAq265d81PtmuK8m...z3r9d-DFKU

В теме плагинов ссылка так же обновлена.

(03.09.2023 15:29)MOP Wrote:  Опять какие-то извраты... Там же работы на три копейки:

Спасибо. Добавлю по возможности данный код в h3wmapedpatch.dll, когда всё же доберусь до редактора карт.
(This post was last modified: 14.09.2023 20:58 by XEPOMAHT.)
03.09.2023 19:57
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #580

Есть ещё один адресок.
Code:
004C83DA  8D8820160200                      lea    ecx,[eax+00021620h]
004C83E0  8A80991A0200                      mov    al,[eax+00021A99h]
004C83E6  3C63                              cmp    al,63h
...
Честно говоря, вообще не разбирал здесь код, но, судя по тому, что 21A99h - 21620h = 479h, обращение идёт всё-таки к Знанию героя.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
04.09.2023 13:16
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #581

(04.09.2023 13:16)MOP Wrote:  Есть ещё один адресок.
Code:
004C83DA  8D8820160200                      lea    ecx,[eax+00021620h]
004C83E0  8A80991A0200                      mov    al,[eax+00021A99h]
004C83E6  3C63                              cmp    al,63h
...
Честно говоря, вообще не разбирал здесь код, но, судя по тому, что 21A99h - 21620h = 479h, обращение идёт всё-таки к Знанию героя.

Да, там происходит вычисление стартовых очков магии для случайного героя таверны. Спасибо, что нашли этот адрес (он знаком ещё по увеличению количества героев в игре из-за этой жопошной адресации к структуре героя, из-за чего в ранних версиях MoP с патчем на новых героев Таверна постоянно сыпала ошибками как из рога бездны - то-ли у автора си-шного кода Таверны руки не из того места росли, то ли сам си-шный компилятор так топорно собрал код несмотря на то, что сам функционал Tavern_Generate_One_New_Hero прост как валенок). Завтра пропатчу в Приме это место, но особо оно ничего не изменит, т.к. стартовые значения Знания у случайных ненанятых героев выше 99 - возмутительная редкость.
(This post was last modified: 04.09.2023 14:21 by XEPOMAHT.)
04.09.2023 14:10
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #582

Да я не находил.) Точнее, нашёл ещё тогда, когда переделывал первичные навыки под 127. Сейчас просто сверяю prima.dll и патч "РАСШИРЕНИЕ ЗНАЧЕНИЙ ПЕРВИЧНЫХ НАВЫКОВ ДО +127" из StructureChanges.txt.
Да, и можно уже на "ты"? Коллеги всё-таки.)


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
(This post was last modified: 04.09.2023 16:36 by MOP.)
04.09.2023 14:27
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #583

(03.09.2023 19:57)XEPOMAHT Wrote:  Готово: https://vk.com/s/v1/doc/AxhaiL2i8H23Qn1a...DbRwRoI8u4

В теме плагинов ссылка так же обновлена.

Рекомендую проверить хорошенько по ИИ и артефактам.
Добавил в сборку - крашит в ф-ции, где ИИ рассчитывает ценность арта по статам. Откатываю у себя...


Image: widget.png?style=banner2

Новейший Heroes Launcher
13.09.2023 00:14
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #584

(13.09.2023 00:14)daemon_n Wrote:  Добавил в сборку - крашит в ф-ции, где ИИ рассчитывает ценность арта по статам. Откатываю у себя...

HD_CRASH_LOG.txt и x86 patches.txt сохранились? Проверить - нет возможности (скорее всего функция со статами от артов и была пропущена изначально как раз из-за вылетов в ней, что даже замена бинарного патча на хук не помогла, увы).
13.09.2023 06:50
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #585

XEPOMAHT, Вот один из репортов

В разных вариантах указывает разный сбойный модуль, но всё крутится вокруг артов для ИИ - откат плагина решал все проблемы.

P.S.: с Днюхой 177


Image: widget.png?style=banner2

Новейший Heroes Launcher
13.09.2023 12:50
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group