Объявления
Поздравляем
Roman2211


Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Как создать плагин для HD мода

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 19:46

Я так думаю, что sub_004354A0 дает именно вероятность.
Затем эта вероятность используется для расчета "выгоды". А выгода в чем ? Скажем, в увеличении атаки. То есть грубо говоря, результат sub_004354A0 умножается на "величину атаки"/"стандартный ущерб". Ведь в случае срабатывания удачи атака приближенно удваивается (на самом деле меньше, но упрощенно так.)
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 19:48

Вот, кстати, еще пример правки ИИ багов из старого плагина Sav и Feanor (тоже касается удачи, кстати):
Код: Выделить всё
  // Исключаем неверный расчёт ИИ удачи героя при оценке ценности повышения удачи.
 
  // Лебединое озеро.
  patcher->WriteCodePatch(0x528A95, "%n", 17); // 17 nop
 
  // Домик фей.
  patcher->WriteCodePatch(0x528D93, "%n", 17); // 17 nop
 
  // Русалки, ящик пандоры, хижина провидца.
  patcher->WriteCodePatch(0x528277, "%n", 15); // 15 nop
  patcher->WriteCodePatch(0x528288, "%n", 2); // 2 nop
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 08 апр 2020, 19:53

Т.е. смотри. Дальше же результат функции никак не модифицируется. Как этот результат поставить в один ряд с эффективностью других заклинаний, если c1 и с2 - это вероятности? Другие же заклы модифицируются коэффициентами "с потолка" :smile4:

А в случае с Моралью/Удачей коэффициенты применяются прямо в этой функции. Т.е. моя идея в том, что при разных значениях Морали/Удачи, потенциальное уменьшение/увеличение Морали/Удачи на 1 ед. имеет разный вес. Поэтому, c1 и c2 - скорее веса, чем вероятности.

* * *
Ну не могли разработчики взять и тупо заменить вероятности выпадения Морали/Удачи на "левые" коэффициенты! :smile1:
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 20:00

Завтра отвечу, если будет желание :smile1:
А то с горлом что-то нелады и температура как-будто повышенная.

Цитата:
Ну не могли разработчики взять и тупо заменить вероятности выпадения Морали/Удачи на "левые" коэффициенты!


Вам ли не знать, сколько забавен может быть генезис ошибок. Вы сами несколькими постами ранее написали интересную версию, как 2.65 превратилось в 2.5 :smile1:
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 08 апр 2020, 20:05

Цитата:
Вам ли не знать, сколько забавен может быть генезис ошибок. Вы сами несколькими постами ранее написали интересную версию, как 2.65 превратилось в 2.5

Так правдоподобная же версия :smile1: Там хоть всё понятно насчёт капа.

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

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 20:10

Не совсем понятно еще, почему в sub_004354A0 передаются иногда qword_0063B780 и qword_0063B788, а иногда flt_0063B790 и flt_0063B794. Скорее, это говорит в пользу вашей версии. (а мое объяснение все то же - произошла какая-то цепочка нелепостей от разработчиков).
Ну и вроде бы отрицательный коэффициент должен быть по модулю всегда больше, чем парный положительный. Независимо от того, вероятности это или веса. И вот это условие как раз не выполняется, что говорит в пользу моей версии (версия, повторю, в том, что произошла какая-то путаница).
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 08 апр 2020, 20:15

Цитата:
Не совсем понятно еще, почему в sub_004354A0 передаются иногда qword_0063B780 и qword_0063B788, а иногда flt_0063B790 и flt_0063B794.

Скорее всего, потому что были объявлены в разное время. Одни объявили как double, другие - как float. А функции всё равно что принимать. Сопроцессор расширит до long double.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 20:21

Уточнил:
qword_0063B780 и qword_0063B788 используются для расчетов, связанных с моралью
flt_0063B790 и flt_0063B794 - для расчетов, связанных с удачей.

Может быть, действительно веса, а не вероятности. Очень может быть.

***

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

Но это только версия. Возможно, они все-таки просто напортачили :smile12:
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Как создать плагин для HD мода

Сообщение AlexSpl » 08 апр 2020, 20:28

Цитата:
Может быть, действительно веса, а не вероятности. Очень может быть.

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

Цитата:
Исходя из этой логики, кодеры NWC считают, что повышение морали и удачи одинаково выгодно, понижение морали по сравнению с этим в несколько раз более значимо (с противоположным знаком), а понижение удачи наименее значимо изо всего.

По-моему, хорошая логика. Минус мораль однозначно лучше, чем плюс. Потому что с минусом ходят очень редко. А так как отрицательную удачу не завезли, то понижение Удачи - самое слабое.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: Как создать плагин для HD мода

Сообщение Ben80 » 08 апр 2020, 20:38

Цитата:
Цитата:
Исходя из этой логики, кодеры NWC считают, что повышение морали и удачи одинаково выгодно, понижение морали по сравнению с этим в несколько раз более значимо (с противоположным знаком), а понижение удачи наименее значимо изо всего.

По-моему, хорошая логика. Минус мораль однозначно лучше, чем плюс. Потому что с минусом ходят очень редко. А так как отрицательную удачу не завезли, то понижение Удачи - самое слабое.


То, что отрицательную удачу не завезли - это вряд ли. Код ИИ везде (по крайней мере, где я только не видел) имеет в виду наличие отрицательной удачи, ненулевой по своим последствиям, скажем так. Интересно тут то, что точно мы не знаем, как она была бы реализована. В плагине Sav и Feanor это уменьшение урона в 2 раза. Это расходится с механикой для срабатывания положительной удачи, где удваивается только базовый урон. Почему в плагине так было сделано - мне понятно, не буду сейчас выкладки приводить.

***
Насчет минус морали и плюс морали и кто с чем ходит. Понижение более выгодно хотя бы потому, что это просто отражено в вероятностях (4/8/12 из 96 против 8/16/24 из 96). Но в данном случае коэффициенты различаются примерно в 4.5 раза, что явно перебор (возможно, указывает на путаницу).
Ну а кто с с чем ходит - посмотрите игры новичков в Г3 - они редко смешивают армии и у них герои часто ходят с положительной моралью, у асов же часто смешанные армии + скелеты в армии, и они обычно ходят с нейтральной моралью, иногда даже с -1.

***
qword_0063B780 (связана с моралью) и flt_0063B790 (связана с удачей) - обе константы равны 0.0173.
Говорит не в пользу версии о весах, ибо должны быть по идее разными (относятся к разным сущностям - морали и удаче).
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 2