Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
|
Re: Как создать плагин для HD модаI should have written down the reference address but as I recall this bit was set when an entrance was detected through iteration on the mask bitfields.
|
Re: Как создать плагин для HD модаАдреса 0x63B780, 0x63B788, 0x63B790, 0x63B790 связаны с расчетом вероятностей удачи/неудачи, морали/дизморали (по всей видимости, используются в ИИ расчетах).
Полагаю, в 0x63B788 значение верное (-0.0833), а в 0x63B780, 0x63B790, 0x63B790 - неверные (баг). Лечим так: _PI->WriteHexPatch(0x63B780, "94 F6 06 5F 98 4C A5 3F"); _PI->WriteHexPatch(0x63B790, "C3 64 2A 3D"); _PI->WriteHexPatch(0x63B794, "31 99 AA BD"); (есть конвертер по адресу https://gregstoll.com/~gregstoll/floattohex/) Может ли кто-нибудь подтвердить или опровергнуть вышеизложенное ? UPD. После правки бага ИИ в бою иногда начинает применять массовые Fortune, Misfortune, Mirth, Sorrow. До правки бага ИИ веса у этих заклинаний были микроскопическими. Правда, нужно сказать, что процедура ИИ взвешивания для Misfortune sub_00438BB0 работает так, как если бы в игре была отрицательная удача. Поэтому, если в вашей версии игры ее нет, то как вариант в sub_00438BB0 можно вызывать не sub_004354A0, а вашу собственную кастомную процедуру (очень маленькую). Но поскольку не совсем понятно, как это правильно сделать, есть такой рабочий вариант:
Аналогично для Fortune sub_004380E0:
|
|
Re: Как создать плагин для HD мода0x63B780 is a double (QWORD) 0.0173
0x63B788 is a double (QWORD) -0.0833 0x63B790 is a float 0.0173 0x63B794 is a float -0.0122 Doesn't look like a bug, but I did not spend time to look at the AI weighting functions. |
Re: Как создать плагин для HD модаMay be not a bug, but sooner is a bug, so if a bug - very crude.
After code analysing I think 0x63B780 and 0x63B790 should be 0.0416 and 0x63B794 should be -0.0833. (they are probabilities for luck/disluck or morale/dismorale) No need to do careful analysis of AI weighting in this case, all is quite obvious. It is enough to think in terms of AI profit. For example, another bug (very minor) - in CombatAI_0043C450_SpellsAI. There:
However v22 should be v38 * sqrt(7), not a 5 * v38 / 2. sqrt(7) = 2.65 - a little bigger than 2.5 |
Re: Как создать плагин для HD модаЦитата: Да, здесь корень из 7 выглядит, как кап для возрастающей функции. Возможно, действительно пропустили 6. Я бы так и написал: sqrt(7), но программеры Героев очень любили округлять, так что вполне вероятно число 2.65 набиралось руками и превратилось в 2.5 в результате ошибки набора. Как-то нелогично делать кап меньше максимума функции Цитата: 0x63B788 is a double (QWORD) -0.0833 0x63B790 is a float 0.0173 0x63B794 is a float -0.0122 Здесь сложнее. На вероятность похоже только число -0.0833 по модулю. Не уверен, что здесь симметрия. Например, 0.0173 может быть sqrt(3) / 100, т.е. специально подобранная константа. |
Re: Как создать плагин для HD мода0.0173 и -0.0122 на вероятности действительно не похожи.
Но эти вероятности там вроде как должны быть Поскольку расчет выгоды для ИИ в данном случае подразумевает расчет некоего математического ожидания. Ну и мы знаем, что для такого расчета используются константы 0.0833 (для отрицат.) и 0.0416 (для положит.). *** Расчетом вероятности (как коэффициента для расчета МО) собственно занимается функция sub_004354A0. |
Re: Как создать плагин для HD модаА 0.0122 выглядит, как sqrt(3 / 2) / 100. Уже два совпадения (?). Так что я склоняюсь к тому, что с моралями/удачами не баг.
Деление на 100 нужно затем, что далее по коду бросается 100-гранная кость. 3 - это кап морали/удачи. 3/2 - поправка на эффект (половина). |
Re: Как создать плагин для HD модаНу, чисто математически согласен, выглядит убедительно.
Но если посмотреть, как эти константы используются (sub_004354A0 и др.) - откуда они взяты ? И причем тут тогда -0.0833 ? В смысле вот это вот в ваших рассуждениях убедительно - sqrt(3 / 2) / 100 и sqrt(3) / 100. А почему 3 - это кап морали/удачи, не очень понятно. *** И, кстати, какой код вы имеете в виду, в котором кидается 100-гранная кость ? В sub_004354A0 и в функциях, из которых она вызывается, вроде ничего не кидается |
Re: Как создать плагин для HD модаМораль и удача от -3 до 3. Если константа с минусом для отрицательной морали/удачи, то тогда всё понятно: в подавляющем большинстве случаев снижение морали/удачи гораздо эффективнее их повышения, т.к., в основном, мораль/удачу повышать особо и некуда (отряды обычно уже с +1 или даже +2), а вот опускать всегда есть куда.
|
Re: Как создать плагин для HD модаЦитата: CombatAI_0043C450_SpellsAI |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1