Не работает поиск скученностей пикселей. Просто в коде работает. Второй раз, внутри функции - не хочет.
Ниже код. В нём два раза делается поиск. Первый цикл работает.
А второй (вложенный, сделанный функцией) не пашет.
1. Находит не голубые, а белые или около того цвета.
2. Методом тыка задаю ему область где искать -400, -150, 500, 500. Не понимаю почему не работает 0,0,1024,768.
Кто имеет опыт, подскажите, где я ошибся. Уже 2,5 часа бьюсь.
CODE:
aa=window ("Каталог", "#32770", window (...
activate(aa);
int min_col=3;//Найти если все три цвета
int r=10; // это плюс минус для значений R,G и B
int color[3];
int color2[3];
color[0]=12218368; color[1]=15245824; color[2]=12231350;//Тут цвета для уровня 1
color2[0]=14453575; color2[1]=14453575; color2[2]=14453575;//Тут цвета для уровня 2
int kol[3];
kol[0]=1; kol[1]=1; kol[2]=1;//Тут сколько должно совпасть пикселей для каждого цвета
int x[50], y[50];//Тут координаты найденные для уровня 1
int x2[50], y2[50];//Тут координаты найденные для уровня 2
int colors, xw, yw;
getdisplay(colors, xw, yw); // снимаем глубину цвета и размер экрана
int m=0;
d:if (m<4) // цикл продвижения скролла (на 4 экрана)
{
activate(aa);
// снимаем все скученности
int k=findheapcolor(20, #color[0], #kol[0], 3, 3, #x[0], #y[0], 15, 15, 350, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);
textbkcolor (8454143,255);
//messagebox (format(k)+" скученностей на 1м экране");
int n=0;
s:if (n<k) // цикл перебирающий экран 1го уровня
{
textout(n, x[n], y[n] , format(n), 0);
mousemove(x[n], y[n]);
sleep(1000);
mouse(LEFT);
//messagebox ("клик");
perebor_level2(n);
sleep(2000);
n++;
goto s;
} // ! цикл перебирающий экран каталога 1го уровня
messagebox (format(k)+" ссылок нашли на 1м уровне");
mouse(LEFT,932, 560);
sleep(100);
m++;
goto d;
}// ! цикл продвижения скролла (на 4 экрана)
// ФУНКЦИИ ================================
function perebor_level2(int n)
{
messagebox ("Начинаем перебор второго уровня. Итерация " + format(n+1));
sleep(1000);
// снимаем все скученности
int k2=findheapcolor(50, #color2[0], #kol[0], 1, 1, #x2[0], #y2[0], 15, 15, 10, 10, -400, -150, 500, 500, r, r, r, r, r, r, -1);
textbkcolor (8454143,255);
messagebox ("Нарыли скученностей: " + format(k2));
int n2=0;
s2:if (n2<k2) // цикл перебирающий экран каталога 2го уровня
{
textout(n2, x2[n2], y2[n2] , format(n2), 0);
mousemove(x2[n2], y2[n2]);
sleep(100);
n2++;
goto s2;
} // ! цикл перебирающий экран каталога 2го уровня
messagebox (format(k2)+" ссылок нашли на втором уровне. Возвращаемся на первый.");
sleep(2000);
mouse(LEFT, 446, 192); // клик на Ссылке в каталоге возврат на уровень выше
}
activate(aa);
int min_col=3;//Найти если все три цвета
int r=10; // это плюс минус для значений R,G и B
int color[3];
int color2[3];
color[0]=12218368; color[1]=15245824; color[2]=12231350;//Тут цвета для уровня 1
color2[0]=14453575; color2[1]=14453575; color2[2]=14453575;//Тут цвета для уровня 2
int kol[3];
kol[0]=1; kol[1]=1; kol[2]=1;//Тут сколько должно совпасть пикселей для каждого цвета
int x[50], y[50];//Тут координаты найденные для уровня 1
int x2[50], y2[50];//Тут координаты найденные для уровня 2
int colors, xw, yw;
getdisplay(colors, xw, yw); // снимаем глубину цвета и размер экрана
int m=0;
d:if (m<4) // цикл продвижения скролла (на 4 экрана)
{
activate(aa);
// снимаем все скученности
int k=findheapcolor(20, #color[0], #kol[0], 3, 3, #x[0], #y[0], 15, 15, 350, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);
textbkcolor (8454143,255);
//messagebox (format(k)+" скученностей на 1м экране");
int n=0;
s:if (n<k) // цикл перебирающий экран 1го уровня
{
textout(n, x[n], y[n] , format(n), 0);
mousemove(x[n], y[n]);
sleep(1000);
mouse(LEFT);
//messagebox ("клик");
perebor_level2(n);
sleep(2000);
n++;
goto s;
} // ! цикл перебирающий экран каталога 1го уровня
messagebox (format(k)+" ссылок нашли на 1м уровне");
mouse(LEFT,932, 560);
sleep(100);
m++;
goto d;
}// ! цикл продвижения скролла (на 4 экрана)
// ФУНКЦИИ ================================
function perebor_level2(int n)
{
messagebox ("Начинаем перебор второго уровня. Итерация " + format(n+1));
sleep(1000);
// снимаем все скученности
int k2=findheapcolor(50, #color2[0], #kol[0], 1, 1, #x2[0], #y2[0], 15, 15, 10, 10, -400, -150, 500, 500, r, r, r, r, r, r, -1);
textbkcolor (8454143,255);
messagebox ("Нарыли скученностей: " + format(k2));
int n2=0;
s2:if (n2<k2) // цикл перебирающий экран каталога 2го уровня
{
textout(n2, x2[n2], y2[n2] , format(n2), 0);
mousemove(x2[n2], y2[n2]);
sleep(100);
n2++;
goto s2;
} // ! цикл перебирающий экран каталога 2го уровня
messagebox (format(k2)+" ссылок нашли на втором уровне. Возвращаемся на первый.");
sleep(2000);
mouse(LEFT, 446, 192); // клик на Ссылке в каталоге возврат на уровень выше
}