Такое подозрение что нужно еще менять h3_ActivePlayer.
Но пока все что пробовал не помогает.
Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаТакое подозрение что нужно еще менять h3_ActivePlayer.
Но пока все что пробовал не помогает. |
Re: Как создать плагин для HD модаА попробуйте сразу после вызова этой функции игрой поставить лоухук со Sleep(10000); и посмотреть, в каком состоянии оказывается игра сразу после вызова.
Может, все вызовы после первого игнорируются (игра их скипает), например, потому что считает, что кнопка не отпущена. Как вариант, можно попытаться вызывать int __thiscall ProcessMapScreen(int this, _MouseStr_ *mstr); заполнив структуру _MouseStr_. Хотя... Лучше эмулировать нажатие клавиши, т.к. координаты кнопки конца хода при разном разрешении будут разными. Ещё можно посмотреть вызовы 0x408B84 и 0x4089DC. |
Re: Как создать плагин для HD модаПотестил. Эмуляция нажатия клавиши "E" работает (пропускает ход игрока). Только вызывать функцию нужно не в цикле, иначе компы не ходят. Нужно завести глобальную переменную-счётчик пропущенных ходов. И в хуке где-нибудь после вызова NewDayStart проверять: если ход игрока-человека и счётчик пропущенных ходов больше нуля, уменьшать счётчик на 1 и пропускать ход (в идеале посылать сообщение H3Msg о завершении хода для ProcessMapScreen).
|
Re: Как создать плагин для HD модаЧерез сообщения не получилось. Сделал "костыль":
Код приведён в демонстрационных целях. Автоматически скипает turnsToSkip ходов игрока-человека сразу при старте карты (если нужно дней, умножайте turnsToSkip на кол-во игроков-людей*). Скипает однократно, но можно написать хук, который будет восстанавливать turnsToSkip по заданному событию. Также можно задать различные триггеры автоскипа хода непосредственно в условии лоухука testSkipTurn(). На время пропуска ходов удобно запретить сообщения в sub_4F6C00. * Если нужно пропускать только свои ходы, замените условие o_ActivePlayer->IsHuman() на o_ActivePlayerID == o_MeID. |
Re: Как создать плагин для HD модаБольшое спасибо! Все работает как надо.
Предупреждение убрал в том же хуке так:
Кстати заметил интересный момент - если окно игры развернуто не на весь экран, то ИИ ходит гораздо быстрее чем на полном экране. Почему так? Отображение хода ИИ в настройках отключено, т.е. картинка не меняется. |
Re: Как создать плагин для HD модаЦитата: Я про полный запрет сообщений (ещё есть новая неделя/месяц, а также различные сообщения в сингле). Т.е. нужно на время автоскипа устанавливать флаг и чекать его в sub_4F6C00. Если установлен, то не выполнять её код. Цитата: Такого не замечал. Нужно будет проверить, связано ли это как-то с HD-модом или в оригинале то же. |
Re: Как создать плагин для HD модаДа, отключил еще сообщения новой недели, больше в моем случае ничего не требуется:
Цитата: Эффект точно есть, нужно выбрать шаблон с 8 компьютерами например 6lm10a, пропустить ход и посмотреть как быстро сменяются флажки. При свернутом окне это происходит заметно быстрее. Мои настройки запуска HD мода: Последний раз редактировалось as239 26 июн 2020, 09:36, всего редактировалось 1 раз.
|
Re: Как создать плагин для HD модаЦитата: Я подумал о разнице между оконным и полноэкранным режимами. Возможно, в свёрнутом состоянии выигрыш во времени за счёт отсутствия апдейта графики. |
Re: Как создать плагин для HD модаНо окно же не свернуто в трей, а просто уменьшено т.е. изображение видно и оно выводится.
С фильтром Verok такого не наблюдается, либо эффект заметно меньше. Последний раз редактировалось as239 26 июн 2020, 09:42, всего редактировалось 1 раз.
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1