Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Вместо заданных цветов находит белые
mikeee
Отправлено: 11 Июня, 2015 - 08:25:19
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2015  
Репутация: 0




Доброго всем дня!
Не работает поиск скученностей пикселей. Просто в коде работает. Второй раз, внутри функции - не хочет.
Ниже код. В нём два раза делается поиск. Первый цикл работает.
А второй (вложенный, сделанный функцией) не пашет.
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); // клик на Ссылке в каталоге возврат на уровень выше

}
 
 Top
Kibor
Отправлено: 11 Июня, 2015 - 09:02:37
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 mikeee пишет:
Методом тыка задаю ему область где искать -400, -150, 500, 500. Не понимаю почему не работает 0,0,1024,768

тык не правильный.
координаты экрана не могут быть в минус

mousemove(x2[n2], y2[n2]);
при не нулевых координатах старта поиска надо делать смещение

пример

findheapcolor(50, #color2[0], #kol[0], 1, 1, #x2[0], #y2[0], 15, 15, 10, 10, 120, 250, 500, 500, r, r, r, r, r, r, -1);
mousemove(x2[n2]+120, y2[n2]+250);
 
 Top
mikeee
Отправлено: 11 Июня, 2015 - 12:04:22
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2015  
Репутация: 0




Спасибо. Только так тоже не работало.
вместо
CODE:
dx, dy, 500, 500

должно быть так:
CODE:
dx, dy, dx+500, dy+500


Вот так заработало:
CODE:

win aa=window (...);
activate(aa);

// общие ------------------------------------------------------------------------
int min_col=3;//Найти если все три цвета
int r=10;
int kol[3];
kol[0]=1; kol[1]=1; kol[2]=1;//Тут сколько должно совпасть пикселей для каждого цвета
int colors, xw, yw;
getdisplay(colors, xw, yw);
textbkcolor (8454143,255);
int dx = 400;
int dy = 200;


int color2[3];
color2[0]=12087576; color2[1]=12087576; color2[2]=12087576;//Тут цвета
int x2[50], y2[50];//Тут координаты найденные
int k2=findheapcolor(50, #color2[0], #kol[0], 3, min_col, #x2[0], #y2[0], 15, 15, 400, 17, dx, dy, dx+500, dy+500, r, r, r, r, r, r, -1);

int n2=0;
s2:if (n2<k2)
{
textout(n2, x2[n2] + dx, y2[n2] + dy, format(n2), 0);
mousemove(x2[n2] + dx, y2[n2] + dy);
sleep(100);
n2++;
goto s2;
}
sleep(1000);

messagebox (format(k2)+" объектов нашли");
// блок перебора --------------------------

(Добавление)
И ещё вопрос: А как почистить продукт жизнедеятельности этой строчки?
CODE:
textout(n2, x2[n2] + dx, y2[n2] + dy, format(n2), 0);

После того как она в цикле поработала - весь экран в цифрах.
Перед работой следующего цикла нужно почистить экран.

(Отредактировано автором: 11 Июня, 2015 - 12:08:54)

 
 Top
Kibor
Отправлено: 11 Июня, 2015 - 12:21:49
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Первый параметр - номер сообщения. Нумеруются от 0 до 9999. По этому номеру потом можно обновлять текст.
Второй - позиция по X от левого верхнего угла.
Третий - позиция по Y от левого верхнего угла.
Координаты экранные.
Четвертый - текст в string или char
Пятый - может быть 0 или 1 или 2.
0 - Будучи напечатанным при изменение длины строки на меньшую или сдвиге позиции этого текста не обновляет за собой экран.
1 - При изменение длины или позиции обновляет за собой часть экрана на объекте на котором напечатано.
2 - При изменение длины или позиции обновляет весь экран.


disabletextout
resettextout (для просмотра ссылки Вам необходимо авторизоваться)
 
 Top
mikeee
Отправлено: 11 Июня, 2015 - 12:30:53
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2015  
Репутация: 0




Благодарю за оперативный и полный ответ!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by