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


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

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

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

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

Сообщение as239 » 28 май 2020, 13:19

Спасибо! Все получилось.
Сделал при начале новой игры и при загрузке сейва вызов SetNecromancyKt:
Код: Выделить всё
const float NecroSpecKt = 0.010000001;
const float NecromancyAmplifierKt = 0.02;

void SetNecromancyKt(){

   int NecromancyAmplifierKtAdress, NecroSpecKtAdress;
   if (HWRulesOn && GamePlayChangesOn){
      NecromancyAmplifierKtAdress = (int)&NecromancyAmplifierKt;
      NecroSpecKtAdress = (int)&NecroSpecKt;
   }
   else
   {
      NecromancyAmplifierKtAdress = 0x63B8D0;
      NecroSpecKtAdress = 0x63EAE4;
   }

   _PI->WriteDword(0x4E40FE + 2, NecromancyAmplifierKtAdress);
   _PI->WriteDword(0x4E3F90 + 2, NecroSpecKtAdress);

}

Таким же образом можно изменить и любые другие коэффициенты некромантии.
Вернуться к началу

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

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

Сообщение as239 » 28 май 2020, 13:56

А где хранится описание здания "Усилитель Некромантии"?
И описание спецализации "Некромантия".
Нужно там поменять процент.
Вернуться к началу

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 » 28 май 2020, 13:58

Нужно перехватывать загрузку строк из текстовика. Посмотрите нужный вызов sub_55BFE0.
Вернуться к началу

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

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

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

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

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 » 28 май 2020, 14:15

В homm3.h так:
Код: Выделить всё
o_LoadTXT(filename)->GetString(index);


Цитата:
Понять бы еще в каком текстовике они хранятся, просто поиском по строке ничего не нашел.

Тут только распаковывать и искать строку вручную. А потом в хуке менять содержимое по индексу.

BldgSpec.txt для Усилителя, HeroSpec.txt для специализации.
Вернуться к началу

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

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

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

А если длина строки будет меняться ? Нужно ли в этом случае создавать свою строку (скопировав оригинальную, но частично измененную), а затем подменять указатель (указывая на свою строку вместо оригинальной) ?
Вернуться к началу

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 » 28 май 2020, 14:31

Цитата:
А если длина строки будет меняться ? Нужно ли в этом случае создавать свою строку (скопировав оригинальную, но частично измененную), а затем подменять указатель (указывая на свою строку вместо оригинальной) ?

Конечно, нужно, если длиннее. Поэтому и нет метода SetString(). char* - это указатель, подменяем его своей строкой. Т.е. в плагине проблем не будет.

Хотя, это же не char** :smile5:
Вернуться к началу

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

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

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

Изюминка задачи как раз в том, чтобы свою собственную строку брать не с потолка, а на основе оригинальной. Это автоматически снимает зависимость от конкретной локализации/перевода.
Вернуться к началу

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

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

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

Просто при загрузке данных из txt не получится, мне нужно динамически менять в памяти т.к. описание зависит от флага при старте игры.
Вернуться к началу

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

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

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

Ну это в принципе не проблема - но варианты "значения" строки должны быть заранее известны. Тогда память ты можешь в начале выделить под вариант с наибольшей длиной строки.
Вернуться к началу

Пред.След.

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

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

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