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

Страниц (8): « 1 2 3 [4] 5 6 7 8 »
 

31. Kibor - 05 Марта, 2015 - 12:23:31 - перейти к сообщению
 VladosS пишет:
Вот, новый вариант, упростил поиск

хм.. черезчур упрощен...

он не рабочий.
finddynamic надо вызывать 2 раза.
первый раз для получения изображения. второй для нахождения динамики.

типа этого

 Цитата:
int f,g;
win wind=window (-1, "MozillaWindowClass", -1);
if (wind==0) {messagebox ("нет указател........");goto er;}
pause(500);
loop:;
sleep(10);
if (getkeystate(192)==1)Poisk();
goto loop;

er:;
function Poisk()
{
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, wind.widthclient, wind.heightclient, wind);
sleep(500);
if (finddynamic(1, #f, #g, 20, 20, 40, 40, 0, 0, wind.widthclient, wind.heightclient, wind)==1)
{
mousemove(f,g, wind);
}
}
32. VladosS - 05 Марта, 2015 - 12:34:37 - перейти к сообщению
Мб так? Можно ли использовать mousemove в активном приложении, при условии DX11?


CODE--

CODE:
int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
};
33. Kibor - 05 Марта, 2015 - 12:41:01 - перейти к сообщению
 VladosS пишет:
Мб так? Можно ли использовать mousemove в активном приложении, при условии DX11?


CODE--

CODE:
int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
};


прокомментируйте пожалуйста каждою строку вашего кода...
что как вы думаете каждая строка делает...

особенно мне интересно что делают

 Цитата:
getmouse(n, m, wind);
...............
mousemove(n,m,wind);

каков результат ждется

так же поясните почему в моем примере я привел правильный код как указать область поиска в окне а у вас опять все напутано.
34. VladosS - 05 Марта, 2015 - 12:52:47 - перейти к сообщению
{
getmouse(n, m, wind);//-получаем текущие координаты мыши в окне
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(f, g, wind);//-передвигаем координаты мыши в !точку! окна с координатами
};


Весь смысл: ради производительности ищу объект (квадрат) 3х3 в определенной области экрана, т.е. недалеко от текущего положения мыши) смысл всей программы в донаводке на кружочек упреждения (квадрат в данном случае и есть центр кружка упреждения) при нажатии и удержании клавиши
35. Kibor - 05 Марта, 2015 - 13:02:30 - перейти к сообщению
 VladosS пишет:
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n,m,wind);
};


 VladosS пишет:
{
getmouse(n, m, wind);//-получаем текущие координаты мыши в окне
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(f, g, wind);//-передвигаем координаты мыши в !точку! окна с координатами
};


ну теперь да.. смысл есть. в первом никуда не двигалась, а тупо туда где считало шло.

потом... надо так
 Цитата:
mousemove(n-20+f, m-20+g, wind);//-передвигаем координаты мыши в !точку! окна с координатами

смещение относительно старта..

 VladosS пишет:
finddynamic(0, #f, #g, 0, 0, 0, 0, 0, 0, xe, ye, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);


потом.... область должна совпадать . надо так

 Цитата:
finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(50);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
36. VladosS - 05 Марта, 2015 - 13:07:51 - перейти к сообщению
Спасибо! Исправил, сейчас попробую запустить
(Добавление)
Просто вылетело, без эффекта в приложении
37. Kibor - 05 Марта, 2015 - 13:10:52 - перейти к сообщению
и еще...
уверены что за 50 мсек экран очень изменится??
паузу надо увеличит..
(Добавление)
 VladosS пишет:
Просто вылетело, без эффекта в приложении

) что мне ответить?
давайте весь код, буду красным подсвечивать
38. VladosS - 05 Марта, 2015 - 13:13:36 - перейти к сообщению
Экран изменится это точно, но "Кибор" после тестового запуска программы и нажатия тильды больше не отвечает
39. Kibor - 05 Марта, 2015 - 13:16:03 - перейти к сообщению
 VladosS пишет:
Экран изменится это точно, но "Кибор" после тестового запуска программы и нажатия тильды больше не отвечает

мой пост выше.
иначе не судьба видать..
40. VladosS - 05 Марта, 2015 - 13:23:36 - перейти к сообщению
Увеличил тайм-аут до 123мс, толку нет, но теперь глючит не сразу а чуток погодя) и такое чувство, что он не чувствует нажатия клавиши, хотя я сейчас пробую в полноэкранном режиме
(Добавление)
 Цитата:
int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(17)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(120);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
sleep(10);
mousemove(n-20+f, m-20+g, wind);
};

Powered by ExBB FM 1.0 Final