Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
|
Re: Heroes2 - вставляем свои аватарыя бы просто прибавлял по +1 поверх максимального урона каждому войну - в улучшенном благословении.
|
|
Re: Heroes2 - вставляем свои аватарыЯ вас понял:
Давайте вот как сделаем: запугивание - сделаем вторым(легким) способом, просто делим на 2 благословение - просто прибавляем по единичке (отличие от жажды крови в том что жажда крови очень крутая магия, а благословение не очень, ну для сравнения пистолет и ракетница) И ВСЁ и останется только улучшить стальную и каменную кожу)))) Последний раз редактировалось limiltless123 22 апр 2014, 21:42, всего редактировалось 1 раз.
|
Re: Heroes2 - вставляем свои аватарыПрошу прощения, результат будет округлён до ближайшего целого вот здесь:
Кстати, переменную base_dmg лучше всё-таки назвать просто dmg, т.к. она используется не только для хранения базового урона отряда, но и модифицированного, а переменную dmg лучше переименовать в dmg_rand, чтобы отразить тот факт, что в ней сохраняются случайные уроны из "вилки уронов" воина при суммировании. Результирующий же урон - целое число - помещается в переменную var_C, которую я переименовал в dmg_result. В конце результирующий урон проходит проверку на корректность (игра удостоверяется, чтобы этот урон не оказался меньше 1 ед. - минимально возможного урона в игре). Последний раз редактировалось AlexSpl 01 май 2014, 16:48, всего редактировалось 4 раз(а).
|
|
Re: Heroes2 - вставляем свои аватарыИмхо, в данной ситуации никакой удочки не получится - так как надо изучать ассемблер и долго копаться и анализировать код Хироса.
То что можно было узнать быстро - типа как делать дамб оперативки, как прикрепляться к софту в ИДЕ и получать из машинных команд ассемблеровские и как править машинные команды в Hеx-редакторе - это мы научились. Поэтому предлагаю, самым легким способом, просто подправить четыри магии - запугивание, благословение, каменная и стальная кожа.. ps Или мне нужны очень крутые стимуляторы для мозга А я вам пишу музыкальное произведение, по рукам ? |
Re: Heroes2 - вставляем свои аватарыЦитата: Хорошо, буду ориентироваться только на конечный результат - машинный код, который останется прописать в исполняемый файл игры с помощью шестнадцатеричного редактора. Цитата: А я вам пишу музыкальное произведение, по рукам ? OK |
Re: Heroes2 - вставляем свои аватарыЦитата: Предлагаю найти фрагменты кода, отвечающие за увеличение и уменьшение защиты отряда, самостоятельно Тогда останется только решить, как именно Вы хотите изменить эффект этих защитных заклинаний. |
|
Re: Heroes2 - вставляем свои аватарыAlexSpl писал(а): Цитата: Предлагаю найти фрагменты кода, отвечающие за увеличение и уменьшение защиты отряда, самостоятельно Тогда останется только решить, как именно Вы хотите изменить эффект этих защитных заклинаний. Ок, попробую, а щас спать видимо |
|
Re: Heroes2 - вставляем свои аватарыНахожу строку с защитой отряда, вешаю на неё брейкпоинт в Иде
Возвращаюсь в игру, применяю стальную кожу. Cрабатывает брейкпоинт, выделяется строка в данном блоке ( рис. ниже) Видимо там собака зарыта ps хотя знакомых цифр я не увидел ( я вешал стальную кожу +5 на гаргулей с защитой 7 ) Большего мне мои знания не позволяют(
|
Re: Heroes2 - вставляем свои аватарыЧасть четвёртая (продолжение)
1. Откомпилируйте в FASM'е следующий фрагмент кода:
На выходе Вы получите бинарный файл (.BIN), содержащий машинные коды, соответствующие вышеприведённым ассемблерным инструкциям. Теперь, когда у нас есть новый код, реализующий расчёт базового урона отряда, самое время избавиться от старого кода. 2. Откройте исполняемый файл игры в любом шестнадцатеричном редакторе. Перейдите по адресу 1D902 и заполните пустыми командами nop (90) весь освобождаемый фрагмент со старым кодом: [1D902 .. 1D9AB). В WinHex'е это можно сделать быстро (думаю, и в других шестнадцатеричных редакторах есть аналогичная функция): выделите фрагмент кода, нажмите Ctrl+L, выберите пункт "Fill with hex values" и введите туда шестнадцатеричное число 90, после чего нажмите OK. Выделенный фрагмент кода будет заполнен командами nop (90). Должно будет получиться так, как показано на следующей картинке: 3. Теперь откройте бинарный файл, полученный в FASM'е, и вставьте содержащийся в нём машинный код по адресу 1D902. В WinHex'е это можно сделать так: Edit -> Copy All -> Hex Values (в файле с расширением .BIN), а затем Edit -> Clipboard Data -> Write... (в исполняемом файле игры). Курсор должен находиться по адресу 1D902. Если всё сделано правильно, должно получиться так: Красным цветом я подчеркнул команду вызова функции (call sub_4C03F0), отвечающей за генерацию случайных уронов, и команду безусловного перехода (jmp loc_41D9AB). Для того чтобы эти команды корректно передавали управление, будучи вставленными в код игры, для них нужно прописать реальные адреса переходов. 4. Адрес следующего за инструкцией call sub_4C03F0 байта равен 1D95F, а вызываемая функция находится по адресу C03F0, значит, относительный адрес этой функции равен C03F0 - 1D95F = A2A91. Его-то и прописываем в первую машинную команду, которая подчёркнута на картинке: E8 91 2A 0A 00. Аналогично поступаем со второй командой: EB 3C, т.к. 1D9AB - 1D96F = 3C. Теперь осталось только сохранить изменённый исполняемый файл и проверить результат. Однако перед запуском игры я рекомендую дизассемблировать только что изменённый экзешник и посмотреть на новую ветку кода. Теперь она должна выглядеть так: |
|
Re: Heroes2 - вставляем свои аватарыЭгей, мастер-классы AlexSpl'я
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1