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


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

Улучшение ИИ

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

Re: Улучшение ИИ

Сообщение Ben80 » 14 май 2020, 14:27

Я не говорю о разных массивах. Я как говорил 0x6747B4, так и в следующем посте написал про него же. Это очевидно, вроде.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 14 май 2020, 14:31

AlexSpl писал(а):

Вы о разных массивах говорите :smile1: Ben80 - о MonstersInTowns_9x2x7.

Да, у меня такого нет.
Хотел улучшить читаемость, но похоже придется вернуться к истокам :)
Того что дал RK сегодня, в моей версии нет, и по-простому из новой не вытащить.

Или можно вот так?
Код: Выделить всё
int* MonstersInTowns = (int*)(0x6747B4);
int CreatureID = MonstersInTowns[Town->type][Grade][Level];
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение Ben80 » 14 май 2020, 14:46

as239 писал(а):

Код: Выделить всё
int CreatureID = MonstersInTowns[Town->type][Grade][Level];



Неплохо. Я бы и не сообразил так сразу :smile1:
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: Улучшение ИИ

Сообщение RoseKavalier » 14 май 2020, 14:57

as239 писал(а):

AlexSpl писал(а):

Вы о разных массивах говорите :smile1: Ben80 - о MonstersInTowns_9x2x7.

Да, у меня такого нет.
Хотел улучшить читаемость, но похоже придется вернуться к истокам :)
Того что дал RK сегодня, в моей версии нет, и по-простому из новой не вытащить.

Или можно вот так?
Код: Выделить всё
int* MonstersInTowns = (int*)(0x6747B4);
int CreatureID = MonstersInTowns[Town->type][Grade][Level];

Declaration
Definition

Going through (0x47AB00 + 3) ensures safety for non-SoD.
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение Ben80 » 14 май 2020, 15:43

RoseKavalier писал(а):


Going through (0x47AB00 + 3) ensures safety for non-SoD.


Видимо, RoseKavalier имеет в виду ситуацию, когда используется какой-то кастомный MonstersInTowns_9x2x7, в случае моддинга, добавляющего в игру новые замки/монстров. Но в случае такого крутого моддинга и многие другие моменты следует обсуждать с подобными оговорками. Так что в целом (если мы говорим про моддинг для SoD/AB/RoE) это очередное переусложнение, характерное для H3API.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: Улучшение ИИ

Сообщение RoseKavalier » 14 май 2020, 16:21

An extra instruction isn't really a complication, H3 modding really doesn't need optimization to the point of cutting out all unnecessary assembly instructions imho; the added benefit is that such hooks are more or less immediately compatible with ERA/WoG and whatnot.
Also, there are a lot of similar cases in homm3.h of going through an address to extract a value.

Цитата:
Код: Выделить всё
int* MonstersInTowns = (int*)(0x6747B4);
int CreatureID = MonstersInTowns[Town->type][Grade][Level];


This most certainly doesn't work because int* does not know array dimensions and accessing [][][] through and int* shouldn't work. Even doing (int***) cast, the compiler doesn't know the array dimensions further: undefined behaviour.
You could cast it to a H3TownCreatures* or just update H3API (:
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 14 май 2020, 16:30

Цитата:
это очередное переусложнение, характерное для H3API.

Не согласен. H3API сделан максимально просто насколько это возможно с учетом всех обстоятельств.
И он как раз упрощает моддинг, благодаря более высокоуровневой работе.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 14 май 2020, 16:34

Цитата:
This most certainly doesn't work because int* does not know array dimensions and accessing [][][] through and int* shouldn't work. Even doing (int***) cast, the compiler doesn't know the array dimensions further: undefined behaviour.

Yes, that is right.

One day I will definitely update H3API :)
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: Улучшение ИИ

Сообщение as239 » 14 май 2020, 16:36

Цитата:
You could cast it to a H3TownCreatures*

Didn't get how to do that?
Вернуться к началу

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

Re: Улучшение ИИ

Сообщение Ben80 » 14 май 2020, 16:44

as239 писал(а):

Цитата:
это очередное переусложнение, характерное для H3API.

Не согласен. H3API сделан максимально просто насколько это возможно с учетом всех обстоятельств.
И он как раз упрощает моддинг, благодаря более высокоуровневой работе.


В программировании, как и в любом другом деле, необходим баланс. Я тоже убедился в том, насколько более продуктивной становится работа с помощью правильно выстроенных структур и функций, но, видимо, в этом деле есть и другая крайность. Я ни в коей мере не ставлю под сомнение профессионализм RoseKavalier. Однако, при первом взгляде на его код (или, скажем, код Potmdehex, который очень любит все разбивать на очень маленькие файлики с кодом), у меня возникает ощущение, что мне будет легче разобраться в тн "индусском" коде.
Вернуться к началу

Пред.След.

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

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

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

cron