Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Шпион не находит окно игры.

Страниц (1): [1]
 

1. Firzen475 - 15 Января, 2014 - 02:17:05 - перейти к сообщению
Такая проблема, на стационарном компе (RADEON HD 6450, WIN7 64) протестировал модернизированную мною программу, всё было в порядке.
Решил запустить её на ноутбуке(видеокарта GEFORSE 310М, WIN7 32), комбинация кнопок SHIFT+CTRL+S не находит игру. После нажатия комбинации кнопок в окне игры, в окне кибор, в полях "Имя окна" и "Класс окна" пусто, а во вкладке графика, определяется не окно приложения, а весь рабочий стол, вместе, со всем что на нем открыто. Однако, к примеру хром, ловится в фокус на ура.
Я уже читал подобную тему, и проверил цветовую схему как в самой игре, так и непосредственно в винде. Везде 32 бита.
Есть ли у Вас советы по этой проблеме, или способ обхода. К примеру, что убрать в коде инициализации окна, чтобы скрипт работал с самим рабочим столом. (Тогда будет не важно, в фокусе окно или нет.)
Я предполагаю, что проблема либо в видеокарте ноутбука, либо в винде, однако, и на стационарном компе и на ноуте стоит одна и та же, только с разной разрядностью.

Код инициализации окна РФ Онлайн (Отобразить)
2. obm - 15 Января, 2014 - 03:09:36 - перейти к сообщению
А если ссылку на окно заполнить вручную? Разве она сильно изменится по сравнению с первым компом?
3. Firzen475 - 15 Января, 2014 - 03:34:39 - перейти к сообщению
Если имеется в виду эта (win w=window ("RF Online", "D3D Window", -1)Подмигивание ссылка вручную, то при проверке на наличие окна if (w!=0) программа не находит окно, и прерывает алгоритм, следовательно присоединить мышь к потоку невозможно (пробовал удалить строку if (w!=0)).
Тут либо по какой-то причине класс окна изменяется, либо... ничего в голову больше не идёт. Хотя я пробовал вызывать окно только по имени. Безрезультатно, такое впечатление, что его вовсе нет.
Если это не то что Вы имели в веду, то поясните, каким образом это сделать и я сразу попробую. Я пока не полностью разобрался в функционале программы.
4. obm - 15 Января, 2014 - 03:45:04 - перейти к сообщению
 Firzen475 пишет:
Если имеется в виду эта (win w=window ("RF Online", "D3D Window", -1) ссылка вручную, то при проверке на наличие окна if (w!=0) программа не находит окно, и прерывает алгоритм, следовательно присоединить мышь к потоку невозможно (пробовал удалить строку if (w!=0)).
Тут либо по какой-то причине класс окна изменяется, либо... ничего в голову больше не идёт. Хотя я пробовал вызывать окно только по имени. Безрезультатно, такое впечатление, что его вовсе нет.
Если это не то что Вы имели в веду, то поясните, каким образом это сделать и я сразу попробую. Я пока не полностью разобрался в функционале программы.

Да, я про это и писал.

Ну тогда еще можете попробовать писать бота на весь экран (вместо окна указываете -1, но тогда окно игры должно быть развернуто), а не на окно игры, я так и сделал в итоге. У меня другой случай, при ссылке на конкретное окно распознание картинки происходит долго, а при ссылке на экран практически моментально, но от окон пришлось отказаться.
5. Firzen475 - 15 Января, 2014 - 03:52:34 - перейти к сообщению
Не могли бы Вы немного по подробнее объяснить, каким образом Вы это сделали, желательно с примером кода. Я могу предположить, что должно быть так:
win w=window (-1, -1, -1);
следовательно надо убрать проверку на захват окна if (w!=0)
но как быть со строками:
activate(w);
и
if (attach(w, 1)!=0){}
Просто удалить?
6. obm - 15 Января, 2014 - 04:35:01 - перейти к сообщению
 Firzen475 пишет:
Не могли бы Вы немного по подробнее объяснить, каким образом Вы это сделали, желательно с примером кода. Я могу предположить, что должно быть так:
win w=window (-1, -1, -1);
следовательно надо убрать проверку на захват окна if (w!=0)
но как быть со строками:
activate(w);
и
if (attach(w, 1)!=0){}
Просто удалить?

Просто удалить win=w и activate(w), активировать окно врунчую
Например, код:
findimage(1, #Image_0[0][0], -1, #x[0], #y[0], 0, 0, wind.widthclient, wind.heightclient, wind); работает в окне wind
а такой код:
findimage(1, #Image_0[0][0], -1, #x[0], #y[0], 0, 0, wind.widthclient, wind.heightclient, -1);
работает во всем видимом экране, если при этом у меня окно развернуто и находится поверх всего, какая разница, куда мне кликать, в конкретное окно, или в экран?
только тогда вам придется рефакторить весь код, убирать окно и ставить экран
7. Firzen475 - 15 Января, 2014 - 04:41:58 - перейти к сообщению
Большое спасибо, в свободное время опробую и сообщу, что вышло.
8. Kibor - 15 Января, 2014 - 05:33:37 - перейти к сообщению
Firzen475 , Фрост?
Он скрывает на win 7 32 окно. Не используйте указатели. Вот скрипт для RF без указателей.
Работает с экраном.
Бот RF без определения окна
В первом скрипте той темы указатель нужен для определения курсора когда он над мобом.
Второй - тот на который ссылка, определяет по появлению ника над мобом если мышь наведена на моба. Определяется по скученности пикселей указанного цвета (основной цвет в нике) на указанной площади экрана. Там указано как настроить.
9. Firzen475 - 16 Января, 2014 - 05:23:11 - перейти к сообщению
Гениальное решение, и в некотором роде даже более удобное, чем вариант примера.
Благодарю за оперативность и ответы на все вопросы.
Кто бы мог подумать, что разрядность винды влияет на обнаружение клиента =)

Powered by ExBB FM 1.0 Final