Объявления

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

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

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

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

Сообщение Rolex » 26 фев 2021, 17:40

По первичным навыкам решил костыльным методом через ифы:

Код: Выделить всё
      if (ScholarPrimarySkill == 0) str = " (Атака)"; else
         if (ScholarPrimarySkill == 1) str = " (Защита)"; else
            if (ScholarPrimarySkill == 2) str = " (Сила магии)"; else
               if (ScholarPrimarySkill == 3) str = " (Знания)";

      strcpy(buf, str.c_str());
...
sprintf(o_TxtBuffer, "%s %s", (char*)c->edi, buf);

Но у этого решения есть минус. Если плагин подкл к англ версии, нужны будут еще ифы для англ версии. Сделать можно, но это все не оч хорошо конечно. Правильней было бы отыскать все же адрес на таблицу с названиями первичных навыков. AlexSpl, у вас случайно нигде нет этого адреса? Может где-то ранее в каком-то плагине уже находили его?

AlexSpl писал(а):

Потому что нет Мудрости/книги заклинаний.

Вот это интересный момент. А можно ли перед тем как выводить то, что даст Ученый делать проверку на наличии книги и на уровень Мудрости и сопоставлять с тем уровнем заклинания, который может дать Ученый. И если Мудрости недостаточно или нет Книги заклинаний у активного героя, то вместо заклинания для этого героя выводить в инфо-строку то, что он по факту получит - конкретный первичный навык. В остальных случаях если есть Книга и Мудрость позволяет, то оставлять как есть - заклинание. Просто интересно как тогда определить, что за первичный навык даст Ученый вместо заклинания, если его тип будет как заклинание. Видимо есть какие-то сложности, ибо это даже в SoD_SP не работает (там через ALT картинка навыка/заклинания выводится, который даст Ученый).
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 26 фев 2021, 18:10

Цитата:
Правильней было бы отыскать все же адрес на таблицу с названиями первичных навыков. AlexSpl, у вас случайно нигде нет этого адреса? Может где-то ранее в каком-то плагине уже находили его?

Не доводилось, но найти не проблема.

UPD: Например, *(char**)(*(int*)0x6A5330 + (0x32 + ID) * 4). Или посмотреть, в каком текстовике хранятся эти названия, и получать через GetString().

Цитата:
Просто интересно как тогда определить, что за первичный навык даст Ученый вместо заклинания, если его тип будет как заклинание.

Вот для этой ситуации, видимо, в сетапе хранятся несколько бонусов. Если герой не может получить основной бонус, он получит дефолтный: повышение первичного навыка. Если герой не удовлетворяет условию получения основного, читайте битовое поле с кодом первичного навыка.
Последний раз редактировалось AlexSpl 26 фев 2021, 18:29, всего редактировалось 2 раз(а).
Вернуться к началу

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

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

Сообщение Rolex » 26 фев 2021, 18:26

Цитата:
Вот для этой ситуации, видимо, в сетапе хранятся несколько бонусов. Если герой не может получить основной бонус, он получит дефолтный: повышение первичного навыка. Если герой не удовлетворяет условию получения основного, читайте битовое поле с кодом первичного навыка.

Прочитать не проблема, проблема реализовать проверку.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 26 фев 2021, 18:30

*(char**)(*(int*)0x6A5330 + (0x32 + ID) * 4)... Сложно получается. Это подсказки к навыкам, которые выводятся в статусную строку окна героя.
Вернуться к началу

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

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

Сообщение Rolex » 26 фев 2021, 18:39

Что-то и первый, и второй вариант уже исправленный не работает
Код: Выделить всё
*(char**)(*(int*)0x6A5330 + (0x32 + ID) * 4)

Вылетает при наведении курсора на Ученого... :smile24:

Цитата:
Вот для этой ситуации, видимо, в сетапе хранятся несколько бонусов. Если герой не может получить основной бонус, он получит дефолтный: повышение первичного навыка. Если герой не удовлетворяет условию получения основного, читайте битовое поле с кодом первичного навыка.

Кстати, только что проверил, это касаеться не только заклинаний (недостаток Мудрости или отсутсвие Книги), а также и вторичных навыков. Если у героя заняты все слоты под вторичные навыки и Ученый дает такой вторичный навык, которого нет у героя, то герой получает первичный навык.
Последний раз редактировалось Rolex 26 фев 2021, 18:47, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 26 фев 2021, 18:42

Цитата:
Прочитать не проблема, проблема реализовать проверку.

Почему проблема? o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->second_skill[HSS_WISDOM]. Это проверка на ступень Мудрости. o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->DoesWearArtifact(AID_SPELL_BOOK). Это проверка на то, есть ли книга. Уровень заклинания по ID можно получить через o_Spell: o_Spell[ID].level.

Цитата:
Что-то и первый, и второй вариант уже исправленный не работает

А так: *(char**)(0x6A5330 + (0x32 + ID) * 4); ?
Вернуться к началу

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

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

Сообщение Rolex » 26 фев 2021, 18:48

А как это проверить?
Цитата:
Если у героя заняты все слоты под вторичные навыки и Ученый дает такой вторичный навык, которого нет у героя, то герой получает первичный навык.


AlexSpl писал(а):

А так: *(char**)(0x6A5330 + (0x32 + ID) * 4); ?

Вот так работает. Спасибо.
Последний раз редактировалось Rolex 26 фев 2021, 18:52, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 26 фев 2021, 18:50

if ( o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->second_skill_count > 7 && !o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->second_skill[ID скилла, который даёт Учёный] ) { ... } *

Только ещё проверяйте, выбран ли герой: selected_hero_id != ID_NONE, иначе показывайте основной бонус.

* Даже не так. Нужна ещё проверка на то, имеет ли герой экспертную ступень предлагаемого Учёным навыка.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 26 фев 2021, 19:04

o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->second_skill[ID скилла, который даёт Учёный] > 2

Чтобы не писать каждый раз такие длинные строчки, можно определить указатель на героя заранее:

_Hero_* hero = o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id);
hero->second_skill[...] и т.п.
Вернуться к началу

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

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

Сообщение Rolex » 26 фев 2021, 19:14

AlexSpl писал(а):

o_GameMgr->GetHero(o_ActivePlayer->selected_hero_id)->second_skill[HSS_WISDOM]. Это проверка на ступень Мудрости.

А как проверить, есть ли вообще вторичный навык Мудрость у героя? Это перед проверкой ступени нужно сделать.
Вернуться к началу

Пред.След.

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

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

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

cron