После двух месяцев, почти непрерывного реверс-инжиниринга кода Total Annihihlation и одного умершего (в прямом смысле слова) ноутбука, представляю новую версию программы TAP.
Теперь программа состоит из двух модулей и трёх файлов:
- TAP.exe - сама программа, которая добавляет новые функции в игру. Производит внедрение нового кода в процесс totala.exe.
- TAPconfig.exe - Hotkey-конфигуратор. Создан для удобного создания файла с настройками для программы.
- TAP.ini - файл с настройками для программы TAP. Формат довольно прост и возможно ручное редактирование.
Рекомендации:
- Распакуйте архив. Старые версии WinRAR не смогут корректно распаковать этот архив, поэтому используйте 7-Zip (zip-архив получился больше 2 МБ, поэтому прикрепить к сообщению его не удалось).
- Разместите все три файла в папку с игрой.
- Запустите TAPconfig и выбирая юнит и кликая по его слотам - назначьте для необходимых юнитов желаемые кнопки.
- Сохраните настройки нажав Save.
- Запустите TAP. Программа сама найдёт запущенный экземпляр Total Annihilation и внедрит в него свой код. Запускать можно уже во время работы игры.
- Через 10 секунд после внедрения кода будет прочитан файл настроек TAP.ini (в этот момент будет воспроизведён системный звук). Это позволяет менять настройки между сессиями игры, поскольку настройки считываются при каждом новом внедрении.
- В игре нажмите выбранную Activation Key (индикатор состояния кнопки на клавиатуре является индикатором активности TAP) и используйте настроенные Hotkeys.
- Hotkeys работают только для того юнита, которому были назначены. Если ни один юнит не выбран - они не срабатывают.
- Для неподдерживаемых версий TADR ddraw.dll может помешать набирать сообщение, если в данный момент выделен юнит с назначенными кнопками!
- Программу TAP можно запускать свёрнутой в системный трей. Для этого в командной строке к программе надо указать параметр tray (Пример ярлыка: "D:\Games\TotalA\TAP.exe" tray).
Теперь немного вопросов и ответов, которые вероятно возникнут:
В: Почему программа состоит из разных файлов и почему она стала намного больше предыдущих версий?
О: Дело в том, что необходимо осуществлять внедрение кода в адресное пространство другого процесса, а это накладывает свои ограничения на поиск свободного окна в памяти. Проще говоря - внедряемый код должен быть как можно меньше. Поэтому пришлось разделить программу на две части. Одна производит внедрение кода, другая - осуществляет только настройку. Именно из-за того, что был добавлен наглядный редактор настроек с картинками, и вырос общий размер всего приложения.
В: Как назначить, допустим у К-Бот конструктора Т2, строительство Реактора на кнопку F?
О: Запустите TAPconfig. В списке юнитов (слева сверху) выберите необходимый юнит Arm Adv. Construction Kbot. Справа вы увидите все доступные ему для строительства юниты. Найдите там Реактор и кликните по нему. Поверх его изображения появится список с выбором кнопки. Вы можете выбрать из списка любую доступную кнопку с помощью мышки, либо просто нажав её на клавиатуре. Для быстрой очистки выбранной кнопки можно нажать Пробел. Затем нажмите Save, для сохранение изменений.
В: А если я назначу у одного юнита одну и ту же кнопку на два (три, четыре...) слота, что будет?
О: Сработает только та кнопка, которая найдётся в списке первой! Очерёдность простая: как видим на экране - такая очередность при обработке. Первая страница строительства 1..12 слоты, вторая страница строительства 13..24 слоты, третья страница строительства 25..36 слоты.
В: Можно ли назначить одну и ту же кнопку на разные слоты у разных юнитов?
О: Да. При нажатии кнопки проверяется какой юнит сейчас выбран, и обрабатываются только его hotkey.
В: А что будет если я выделю несколько юнитов и нажму hotkey, который точно есть у одного из них?
О: При множественном выделении страницы строительства в игре неактивны. Поэтому ничего не будет.
В: Работают ли стандартные комбинации кнопок из игры
Move,
Guard,
Patrol?
О: Если ActivationKey отключена - все кнопки обрабатываются игрой. Если включена - то у игры забираются назначенные кнопки. Те кнопки, которые не были назначены для выделенногго юнита, передаются на обработку в игру.
В: А почему в заголовке TAPconfig упоминается Escalation X.X, сейчас же есть более новая версия?
О: На функционал программы это никоим образом не влияет. Даже если будет добавлен новый юнит, убран какой либо или перемещён в другой слот, то ничто не мешает просто запомнить, на каком экране в игре он отображается и назначить в программе для этого слота кнопку, даже если слот пустой или там другой юнит. Именно поэтому даже для пустых слотов возможно назначение hotkey. Постепенно сделаю обновлённую версию.
В: Поддерживается ли корректная работа в многомониторной конфигурации? (Я помню
замечание, которое сделал OlegS).
О: Такая работа не тестировалась - просто нет возможности проверить всё и сразу. Но думаю, что с правым расположением дополнительного монитора проблем не возникнет. Но они будут с левым расположением дополнительного монитора.