Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 898
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 53 раз.

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

Сообщение Rolex » 28 апр 2021, 19:24

Хорошо, тогда выходит сейчас имея 1 Кристалл и 6000 Золота AI все же наймет 1 Древнее чудище и 2 обычных Чудища в последней версии Вашего кода?
Вернуться к началу

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 » 29 апр 2021, 03:06

Да, наймёт. UPD: Не наймёт, потому что 6000 золота хватает на найм 3 Чудищ, а они сильнее с точки зрения игры. AI проходит по всему вектору доступных для найма существ и нанимает сильнейший отряд. Повторяет до тех пор, пока в векторе остаются существа (оригинальная механика). Так, AI предпочтёт нанять отряд существ 1-го уровня, если они сильнее отряда 7-го уровня, и у него могут закончиться деньги. Эту механику легко поменять, чтобы AI отдавал приоритет уровню существ, а не их суммарной силе. Можно попробовать сделать. Достигается простой заменой value на уровень существа в отряде (а лучше ввести 14 градаций уровня: для улучшенных и неулучшенных вариантов). Кажется, этот вариант будет более оптимальным при нехватке ресурсов (когда ресурсов хватает, AI всё равно купит всех, если для них есть место и нет проблем с Моралью).

Посмотрел код возврата ресурсов. Бага нет, просто необычная механика игры (см. участок, начиная с 0x43218F). Ресурсы возвращаются корректно. Осталось реализовать зависимость наличия грейда во внешних жилищах от наличия ул. двеллинга хотя бы в одном городе игрока и разбить плагин на два: обновлённые внешние двеллинги и найм AI неулучшенных существ при наличии ул. постройки. Второй плагин действительно что-то меняет, если AI испытывает постоянную нехватку ресурсов (например, в эндшпиле). С плагином игроку придётся столкнуться с более сильной армией AI.
Вернуться к началу

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

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

Сообщение Ben80 » 29 апр 2021, 04:03

AlexSpl писал(а):

Нет, легко. Я детально разобрал эту функцию :smile10:


А можете разбор запостить ?
Вернуться к началу

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 » 29 апр 2021, 04:30

Может быть позже. Там довольно просто, на самом деле. Проходимся по вектору; если нужно, меняем ресурсы, выбираем сильнейший отряд, смотрим, нужен ли он нам (проверки на Мораль армии). Только что детально разобрать, как именно считается value и как именно AI решает вопрос снижения Морали (кого забрать с собой, а кого оставить в гарнизоне)?
Вернуться к началу

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

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

Сообщение Ben80 » 29 апр 2021, 04:36

Просто так сказать, чтоб было - подшить в папочку новую страничку :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 » 29 апр 2021, 04:39

Да, тема интересная :smile20: Интересно понаблюдать за тем, как AI покупает отряды. Я рандомную карту запущу и смотрю будто фильм :smile1:

Сейчас осталось реализовать:
1. Поддержку Mercenary Camp и Summoning Portal (в вектор не должны попадать неулучшенные версии существ).
2. AI не должен думать, что может нанять и улучшенные, и неулучшенные существа в двеллинге 0x11.

Над вторым пунктом нужно подумать (как получить указатель на объект, о котором в данный момент думает AI; в функции есть только указатель на армию, это может быть город, а не двеллинг, например).
Вернуться к началу

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

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

Сообщение Ben80 » 29 апр 2021, 05:18

Я помню, меня как-то интересовал вопрос, как отучить ИИ от набора в армию бесплатных юнитов-тихоходов 1-го уровня (особенно, если они не совпадают по фракции с основной армией). Может быть, данный разбор как-то сможет в будущем помочь улучшить ИИ в этом плане ?
Вернуться к началу

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 » 29 апр 2021, 05:21

В этой функции можно запилить любой алгоритм найма.

* * *
Не умеет AI нанимать из Summoning Portal, к сожалению. Надо бы научить, но пока не в приоритете.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 898
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 53 раз.

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

Сообщение Rolex » 29 апр 2021, 11:17

AlexSpl писал(а):

Осталось побороть баг оригинальной игры с откатом ресурсов. Баг не критичный, вылетов не должно быть (максимум неправильный откат ресурсов). Попробую найти причину. Суть в том, что при покупке нового героя игра может нанять существ, а потом их вернуть обратно, а потраченные деньги - AI игроку.


AlexSpl писал(а):

UPD: В вектор существ для двеллинга 0x14 не попадает неулучшенный отряд Iron Golems. Нужно обновить код для Summoning Portal и Mercenary Camp.

Это уже получилось исправить/побороть?

AlexSpl писал(а):

Да, наймёт. UPD: Не наймёт, потому что 6000 золота хватает на найм 3 Чудищ, а они сильнее с точки зрения игры.

Как это 3 Чудища могут быть сильнее 1 Древнего + 2 обычных Чудища. Суммарный Fight_Value последней пары будет больше 3 Чудищ. Это тоже самое, что сравнивать 1 грейженное существо и 1 негрейженное одного уровня.

Как я понял AI просто сравнивает силу именно того кол-ва, которое он может нанять по грейженным и негрейженным. То есть сравнивает суммарную силу 3 Чудищ и 1 Древнего Чудища. В таком случае 3 Чудища будут более выгодной покупкой. Получается, что он может выбрать что-то одно для покупки и сравнивает только так, как научили.

В идеале было бы научить его брать в сравнение (и покупать, если это выгодно) и смешанный вариант макс по грейду + макс по негрейду. Чтобы он выбирал самый оптимальный из всех 3 вариантов по суммарному Fight_Value. Хотелось, чтобы в данном случае AI выбирал именно смешанный варинт 1 Древнее чудище + 2 обычных Чудища.

AlexSpl писал(а):

Так, AI предпочтёт нанять отряд существ 1-го уровня, если они сильнее отряда 7-го уровня, и у него могут закончиться деньги. Эту механику легко поменять, чтобы AI отдавал приоритет уровню существ, а не их суммарной силе. Можно попробовать сделать. Достигается простой заменой value на уровень существа в отряде (а лучше ввести 14 градаций уровня: для улучшенных и неулучшенных вариантов).

Многое зависит от ситуации. Но если судить так, как Вы написали, то получается вместо 1 Архангела, AI отдаст предпочтение 17 Королевским грифонам, так как их суммарный Fight_Value будет выше. В реальном же бою 1 Арх и 30-ку Королевских грифонов разобъет.

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

AlexSpl писал(а):

Сейчас осталось реализовать:
1. Поддержку Mercenary Camp и Summoning Portal (в вектор не должны попадать неулучшенные версии существ).
2. AI не должен думать, что может нанять и улучшенные, и неулучшенные существа в двеллинге 0x11.

Над вторым пунктом нужно подумать (как получить указатель на объект, о котором в данный момент думает AI; в функции есть только указатель на армию, это может быть город, а не двеллинг, например).


AlexSpl писал(а):

Осталось реализовать зависимость наличия грейда во внешних жилищах от наличия ул. двеллинга хотя бы в одном городе игрока и разбить плагин на два: обновлённые внешние двеллинги и найм AI неулучшенных существ при наличии ул. постройки.

------------------------------------------------------------------------
Думаю, следует разделить данный плагин, как я писал ранее, на 4 плагина:

1) Дебаг-мод с макс инфой (каждое действие), которая будет выводится в окошко включая постройки, которые строит каждый герой AI в каждом своем городе.

2) Улучшенный алгоритм AI по скупке существ в городе. Это должен быть отдельный плагин для тех игроков, которым ненужны грейженные существа во внешних жилищах, но нужен более умный AI по скупке существ в городе (для наблюдения за изменениями и ходом мыслей AI 1-й и 2-й пункт можно объдинить при желании).

3) Плагин с грейженными существами во внешних жилищах на постоянной основе. Разумеется с улучшеным и максимально оптимальным алгоритмом по скупке существ (пример с Чудищами).

4)
AlexSpl писал(а):

Осталось реализовать зависимость наличия грейда во внешних жилищах от наличия ул. двеллинга хотя бы в одном городе игрока

Наличие грейда во внешнем жилище в зависимости от наличия ул. двеллинга хотя бы в одном городе игрока. ЗДЕСЬ ВАЖНО не в любом городе, а ИМЕННО в ТОМ ГОРОДЕ, к которому относится существо из захваченного жилища.

То есть, например, если у нас один основной город Замок с отстроенным Ул. жилищем Башня лучников, а захватили мы Избушку гномов, то там должны быть только обычные Гномы. Другое дело, если у нас есть еще и город Оплот с Ул. постройкой Избушка гномов. Вот в таком случае мы и выводим грейд. Плюс теже алгоритмы по скупки существ в жилищах для AI, что в 3-м пункте.

AlexSpl писал(а):

Не умеет AI нанимать из Summoning Portal, к сожалению. Надо бы научить, но пока не в приоритете.

Это, как и найм из Mercenary Camp, отправляем все в плагин по 2-му пункту, который прокачивает AI в плане найма в дефолтных объектах без модификаций.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

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

Сообщение void_17 » 29 апр 2021, 13:42

Я до сих пор не могу понять: если вставить хук по адресу, то команда, которая были по адресу, заменяется на наш хук, верно? Если хук вернет EXEC_DEFAULT, то это значит, что оригинальная команда выполнится? Если да, то в каком порядке: до или после нашего хука?
Вернуться к началу

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron