Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
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 » 23 мар 2021, 19:19

stack->side?

o_BattleMgr->current_side - это сторона кастующего.
Вернуться к началу

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

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

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

Это я знаю. A 1 - o_BattleMgr->current_side - это сторона врага. Так вот как правильно будет проверить отряд на сторону по его ID? Или по номеру гекса узнать какой стороне принадлежит отряд, который на нем находится, кастуещему или врагу?
Вернуться к началу

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 » 23 мар 2021, 19:39

По номеру гекса получить _BattleStack_*, а у него есть side.
Вернуться к началу

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

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

Сообщение Rolex » 24 мар 2021, 15:50

При обращении к полям структуры _BattleStack_* полученной по _BattleHex_ по номеру гекса всегда происходит вылет.

Хоть через указатель:
Код: Выделить всё
_BattleStack_*  stack = o_BattleMgr->hex[i].GetCreature();
stack->creature_id
stack->side


Хоть напрямую:
Код: Выделить всё
o_BattleMgr->hex[i].GetCreature()->creature_id
o_BattleMgr->hex[i].GetCreature()->side


Без разницы. Результат всегда один - вылет после отражения Зеркалом площадного закла (в момент, когда закл должен отразится в другом месте).

Если просто получить _BattleStack_* по номеру гекса, то все ок. Вылет происходит именно при попытке чтения данных из полей данной структуры полученной по номеру гекса. А без этого, увы, ничего работать не будет.

AlexSpl, а Вы уверены, что o_BattleMgr->hex[hex_id].GetCreature() это верный и единственный способ получения _BattleStack_* по номеру гекса?
Вернуться к началу

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 » 24 мар 2021, 21:33

Цитата:
Если просто получить _BattleStack_* по номеру гекса, то все ок.

Как Вы предлагаете "вылетать", когда нулевой байт структуры читается? Смотрите Ваш код.
Вернуться к началу

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

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

Сообщение Rolex » 24 мар 2021, 21:38

Подождите. Нужно разобраться. Вот так мы получаем айди существа, который предположительно находится на 0 гексе.
o_BattleMgr->hex[0].GetCreature()->creature_id
Верно или нет?
Вернуться к началу

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 » 24 мар 2021, 21:44

Просто сравните указатели o_BattleMgr->hex[hex_id].GetCreature() и o_BattleMgr->stack[side][id]. Если они равны, всё в порядке. А нулевой гекс всегда пустой.
Вернуться к началу

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

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

Сообщение Rolex » 24 мар 2021, 21:49

Я в курсе, что нелевой пустой. А первый уже может быть и не пустой. А что тогда вернет o_BattleMgr->hex[hex_id].GetCreature()->creature_id если гекс пустой? Просто при проверке
o_BattleMgr->hex[hex_id].GetCreature()->creature_id >= 0 && o_BattleMgr->hex[hex_id].GetCreature()->creature_id <= 149 тоже ловлю вылет.
Последний раз редактировалось Rolex 24 мар 2021, 21:54, всего редактировалось 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 » 24 мар 2021, 21:54

Проверяйте сперва указатель на 0.
Вернуться к началу

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

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

Сообщение Rolex » 24 мар 2021, 21:57

Типа:
Код: Выделить всё
if (o_BattleMgr->hex[hex_id].GetCreature() == 0) continue;

или
Код: Выделить всё
if (o_BattleMgr->hex[hex_id].GetCreature() != 0) - тогда можем читать поле

?
Вернуться к началу

Пред.След.

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

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

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

cron