|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
||||||
Быстрая эмуляция нажатия клавиш в боте для браузерки14.02.2013, 19:20. Показов 10296. Ответов 42
Метки нет (Все метки)
Пишу бота для браузерных танчиков.Прицеливание работает по принципу:через BitBlt копируется нужное окно в память, там ищутся группы пикселей определенного цвета(цвет имени врага), и если таковые найдены, нужно жать определенную кнопку(z или x) до тех пор, пока разница по абсциссе между центром имени противника и центром своих жизней(по ним определяется направление пушки), не станет меньше определенного числа(25 пикселей в данном случае). Эмуляцию нажатия клавиш реализую через PostMessage, ибо работать должно в неактивном окне. Все вроде пашет, но загвоздка в том, что пушка нередко "проезжает" цель, и начинается вертеться перед ней туда-сюда, то бишь PostMessage об отпускании клавиши не доходит вовремя. Сам алгоритм определения, когда надо остановиться, в ряд ли может быть неверным, ибо 100 раз проверен и в целом работает(то есть останавливается вовремя в тех случаях, когда пушка вертится медленнее обычного, либо просто удачно повернулась). Сообщения, которые я посылаю, полностью соответствуют аналогичным при реальном нажатии клавиш(через Spy++ проверялось). Кроме того при попытке эмулировать через keybd_event получилось ровно то же самое. Чего только не пробовал-и задержки разные, и сообщения, все то же самое. Скачал виртуальную клавиатуру-при попытке управлять с нее все работает нормально, то есть теоретически такая эмуляция возможна. Сразу скажу, что производительность при обработке изображения тут не причем, FPS достаточный, чтобы несколько кадров попало в положение, когда надо остановиться. На данный момент прога работает с гугл хромом, там проще однозначно достать хэндл нужного окна. Часть кода прилагается, желающим могу скинуть заготовку проги в личку. Жду ваших предположений, как это устранить, я пока что в тупике( но выход ищу. Заранее благодарен. Рабочие способы реализовать такое на других языках и по другим принципам тоже буду рассматривать, ибо делаю чисто ради развлечения и саморазвития, никуда не спешу. Эти куски кода миллион раз переписывались, на мелкие несуразности можете не обращать внимание, главное-указанный выше вопрос.
0
|
||||||
| 14.02.2013, 19:20 | |
|
Ответы с готовыми решениями:
42
Эмуляция нажатия клавиш для SDL Эмуляция нажатия клавиш для неактивного/свёрнутого приложения. Эмуляция нажатия клавиш для другого приложения (Win10 Под D3D) не работает |
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 18.02.2013, 13:47 [ТС] | |
|
Ну тут я соглашусь, ибо был у меня один код на С, который я 3 раза переписывал и в результате он сократился с 3000 строк до 1200, при этом функциональность только выросла
![]() А понять, что делает сей код, не зная даже близко игры, конечно крайней проблематично Но все равно спасибо, может что из него мне пригодится.Вопрос в том, что считать мусором. Та часть кода, которую мы обсуждали, по-моему не критична, но в целом, определенно, лишние константы и переменные, которые объявляются не там, где нужно, следует почистить при доводке кода, когда он перестанет менять постоянно глобально менять свою структуру и придет к чему-то определенному. Для форума я оставил ту часть функционала, которая не факт, что работает правильно, методы могу прокомментировать: t4-отвечает за движение танка вперед(при условии, что врага на экране нет) t5-отвечает за поворот пушки направо, если справа враг, либо если враг отсутствует на экране. t6 отвечает за поворот пушки влево, если слева враг, либо если враг отсутствует на экране. Если враг отсутствует-направление выбирается рандомно. Mozgi() соответственно определяет, какой из таймеров должен посылать нажатия, при помощи глобальных переменных bool e4 e5 e6. Запущен в бесконечном цикле отдельным потоком. Переменные pravo и minraznica.X описаны в коде, в них определена сторона и расстоние в пикселях от прицела до врага по абсциссе. Если эта разница в пикселях меньше 25ти-считается, что я стреляю туда, куда нужно.
0
|
|
| 18.02.2013, 13:51 | |
|
Не по теме: EvilFromHell, дайте ссылку на игру
0
|
|
|
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
|
|
| 18.02.2013, 13:57 [ТС] | |
|
0
|
|
| 18.02.2013, 13:57 | |
|
Перехватчик клавиш + эмуляция нажатия клавиш Эмуляция нажатия клавиш. Эмуляция нажатия клавиш Эмуляция нажатия клавиш Эмуляция нажатия клавиш Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|