Специалист
Покинул форум
Сообщений всего: 231
Дата рег-ции: Март 2019
Репутация: 5
|
Открываем безымянный с помощью paint, получаем указатель на контрол, грузим картинку.
Скрипт поочередно кликает в рандомные области левого и правого квадрата + в таймере проверяется, если обнаружили картинку круг, то кликнуть в области квадрата по середине. Если мы в таймере при нахождении картинки не вызываем функции mouse_ и pause_ , а используем стандартные функции, все работает исправно. Скрипт останавливается нажатием ctrl+shift+p. Но если мы будем использовать функцию mouse_ и pause_ , скрипт при обнаружении картинки кликнет в другую область, перестанет искать картинку и реагировать на нажатия ctrl+shift+p.
Демонстрация проблемы: Тык
Папка с картинками на гугл диске: Тык
Код: (Отобразить)
CODE://Указатель на контрол паинта
win w = ;
int Image_0[51][41];
//путь к изображению
loadimage (#Image_0[0][0], "\bug_test.bmp");
int x, y;
enabletimer(0);
enabletimer(1);
loop(){
pause(1);
mouse_(761, 109, 957, 276);
pause_(100,101);
mouse_(245, 329, 461, 480);
pause_(100,101);
}
end:;
//рандом клик в области
function mouse_(int x_c, int y_c, int rnd_x_c, int rnd_y_c){
rnd_x_c=rnd_x_c-x_c; rnd_y_c=rnd_y_c-y_c;
rnd_x_c=rand(0, rnd_x_c); rnd_y_c=rand(0, rnd_y_c);
mouse(LEFT, x_c+rnd_x_c, y_c+rnd_y_c, 0, w);
}
//обычная пауза для ctrl+shift+p почему-то не робит
function pause_(int xj, int yj){
looptime(rand(xj, yj+1))pause(1);
}
CREATE_TIMER(0, 20){
if(getkeystate(17) && getkeystate(16) && getkeystate(80)){ //ctrl+shift+p
while(getkeystate(17) && getkeystate(16) && getkeystate(80))pause(10);
disabletimer(0);
disabletimer(1);
goto global end;
}
}
CREATE_TIMER(1, 500){
if(findimage(-1, #Image_0[0][0], -1, #x, #y, 408, 97, 496, 163, w)){
//mouse(LEFT, 631+rand(1,10), 348+rand(1,10), 0, w); //работает исправно
//pause(rand(200,300));
//mouse_(574, 311, 682, 381); //перестает реагировать на ctrl+shift+p и делать клики в области квадрата по середине
//pause_(200, 300);
}
}
|