Объявления

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

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

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

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

Сообщение AlexSpl » 14 авг 2019, 06:07

Если это как-то не связано с тем, о чём писал RoseKavalier, то должно работать так:

Код: Выделить всё
bool tmp = GamePlayChangesOn;
b->ToggleFlag(tmp);
H3DlgCustomButton* Item2Stack = (H3DlgCustomButton*)msg->GetDlg()->GetH3DlgItem(101);
tmp = GamePlayChangesOn;
Item2Stack->ToggleFlag(tmp);
GamePlayChangesOn = tmp;
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 06:15

Цитата:
Если это как-то не связано с тем, о чём писал RoseKavalier, то должно работать так:

Тоже самое.
Попробовал так:
Код: Выделить всё
         H3DlgDef      *Item2Stack = (H3DlgDef   *)msg->GetDlg()->GetH3DlgItem(101);
         //H3DlgDefButton   *Item2Stack = (H3DlgDefButton*)msg->GetDlg()->GetH3DlgItem(101);
         Item2Stack->ToggleFrame();
         Item2Stack->Draw();
         Item2Stack->Refresh();

Результат тот же - установка работает, сбрасывание нет.
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 авг 2019, 06:19

Ну, тогда не в логике проблема. Странно, что установка работает. Т.е. когда Вы кликаете на чекбоксе b, у Вас обе галочки устанавливаются/корректно отрисовываются, а когда снова кликаете на чекбоксе b, ни одна из галочек не сбрасывается?

Стоп. А где отдельный флаг для второго стека? Ведь можно же установить сначала флаг GameplayChangesOn, а потом сбросить флаг второго стека?
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 06:26

AlexSpl писал(а):

Ну, тогда не в логике проблема. Странно, что установка работает. Т.е. когда Вы кликаете на чекбоксе b, у Вас обе галочки устанавливаются/корректно отрисовываются,

Да.
AlexSpl писал(а):

а когда снова кликаете на чекбоксе b, ни одна из галочек не сбрасывается?

"GamePlay changes" сбрасывается, а вот второй флаг нет.
Во вложении исходники, функция MyButtonProc, если интересно можете попробовать.
Запускаем любой случайный шаблон - "Начать" и дальше выскочит этот диалог с флагами.
Вложения
Flag.zip
(4.16 КБ) Скачиваний: 162
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 авг 2019, 06:33

Цитата:
"GamePlay changes" сбрасывается, а вот второй флаг нет.

Ещё одно предположение: проверьте значение второго флага перед установкой первого. Он точно равен false?

Посмотрел код. У Вас должно быть два флага: по одному для каждого чекбокса, и состояние обоих флагов Вы должны контролировать. Я вижу только один - GamePlayChangesOn.
Последний раз редактировалось AlexSpl 14 авг 2019, 06:37, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 06:37

Цитата:
Ещё одно предположение: проверьте значение второго флага перед установкой первого. Он точно равен false?


Вот так, "0" выдает:
Код: Выделить всё
      H3DlgCustomButton *Item2Stack = (H3DlgCustomButton*)msg->GetDlg()->GetH3DlgItem(101);
      auto TestValue = Item2Stack->CastDef()->GetFrame();
      sprintf(h3_TextBuffer, "Второй стек %d", TestValue);
      F_MessageBox(h3_TextBuffer);


Цитата:
Посмотрел код. У Вас должно быть два флага: по одному для каждого чекбокса, и состояние обоих флагов Вы должны контролировать. Я вижу только один - GamePlayChangesOn.

Второй флаг GamePlayChangesOn2.
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 авг 2019, 07:11

Цитата:
Второй флаг GamePlayChangesOn2.

Разве он не временный? Типа tmp в моём примере выше?

И почему Вы хотите чтобы при нажатии на первый чекбокс устанавливались оба флага? Кому нужно поставит вторую галочку самостоятельно. У Вас два *независимых* чекбокса. Соответственно, должно быть два флага bool, в которых бы хранились состояния этих чекбоксов. И оба флага должны записываться в сейв при сохранении игры и читаться из него при загрузке.

* * *
Цитата:
Я хочу чтобы:
1. При установке "Gameplay changes" флаг "Always 2nd hero stack" также устанавливался
2. При сбрасывании "Gameplay changes" также сбрасывался флаг "Always 2nd hero stack".

По-хорошему, Вам нужно делать чекбокс "Always 2nd hero stack" неактивным, если его состояние зависит от состояния чекбокса "Gameplay changes". Я так понял, у Вас есть три режима из четырёх возможных: флаг "Gameplay changes" не установлен (нет изменений геймплея); флаг "Gameplay changes" установлен, флаг "Always 2nd hero stack" - нет; и оба флага установлены. Устанавливая на автомате флаг "Always 2nd hero stack" при клике на чекбоксе "Gameplay changes", Вы навязываете игрокам дополнительное изменение геймплея, не включённое в Gameplay changes. Это сомнительное решение, на мой взгляд. Когда я взаимодействую с элементом интерфейса, я интуитивно представляю, что моё действие повлияет только на этот элемент интерфейса. Приемлемым исключением (но не единственным) может быть активация/деактивация других элементов интерфейса, зависящих от состояния того, с которым взаимодействует пользователь.
Последний раз редактировалось AlexSpl 14 авг 2019, 07:57, всего редактировалось 2 раз(а).
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 07:47

Цитата:
Разве он не временный? Типа tmp в моём примере выше?

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

Цитата:
И почему Вы хотите чтобы при нажатии на первый чекбокс устанавливались оба флага? Кому нужно поставит вторую галочку самостоятельно.

Этот флаг очень подходит, для игры с геймплейными изменениями, которые я делаю. Но сейчас, в чистом СОД, никто его никогда не ставит.
Учитывая силу привычки никто не будет его ставить и c геймплейными изменениями. Поэтому и хотелось бы ставить его автоматически.

Цитата:
И оба флага должны записываться в сейв при сохранении игры и читаться из него при загрузке

Сейчас так и делается, только за второй флаг отвечает HW.
Вернуться к началу

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)
Поблагодарили: 2161 раз.

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

Сообщение AlexSpl » 14 авг 2019, 07:53

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

А при клике непосредственно на этом (втором) чекбоксе он ведёт себя корректно? Его состояние учитывается в игре?
Вернуться к началу

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

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

Сообщение as239 » 14 авг 2019, 07:56

Цитата:
А при клике непосредственно на этом (втором) флаге он ведёт себя корректно? Его состояние учитывается в игре?

Да с этим все ок, флаг прожимается/сбрасывается и в игре работает верно.
Вернуться к началу

Пред.След.

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

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

Сейчас этот форум просматривают: Yandex [bot] и гости: 2