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

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

1. ToothFairy - 30 Декабря, 2019 - 16:46:18 - перейти к сообщению
в общем есть 1 картинка поделена на пополам, надо найти отличия между 2 частями и подсветить их, я так понял finddynamic отслеживает изменения, но можно ли эту команду как то прикрутить к моей задачи? или подскажите куда копать, а то подобной темы на форуме не нашел.
2. Kibor - 30 Декабря, 2019 - 16:54:16 - перейти к сообщению
Можно.
При первом вызове координаты первой картинки. а при втором второй.
3. ToothFairy - 30 Декабря, 2019 - 19:53:01 - перейти к сообщению
 Kibor пишет:
Можно.
При первом вызове координаты первой картинки. а при втором второй.


я не совсем понимаю как работает finddynamic, но поковыряв немного форум и покопипастив немного кода получилось что-то на подобии этого

 Цитата:
int k, X1_st, Y1_st, X2_st, Y2_st, X1_end, Y1_end, X2_end, Y2_end;
int x[20], y[20];
coord(); //функция записывает координаты начала и конца двух картинок, хотя думаю и статически можно прописать координаты
sleep(1000);
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, X1_st, Y1_st, X2_st, Y2_st, -1);
sleep(1000);
k=finddynamic(21, #x[0], #y[0], 5, 5, 100, 100, X1_end, Y1_end, X2_end, Y2_end, -1);
for (int i=0;i<k;i++)
{
textbkcolor (0,255);
textout(0, x[i], y[i], "тут отличие", 0);
sleep(1000);
}

function coord()
textbkcolor (0,255);
textout(0, 100, 100, "start 1 picture", 0);
e1: if (getkeystate(192)==0) {sleep(50); goto e1;}
getmouse(X1_st, Y1_st);
pause (1000);
textout(0, 100, 100, "end 1 picture", 0);
e2: if (getkeystate(192)==0) {sleep(50); goto e2;}
getmouse(X2_st, Y2_st);
pause (1000);
textout(0, 100, 100, "start 2 picture", 0);
e3: if (getkeystate(192)==0) {sleep(50); goto e3;}
getmouse(X1_end, Y1_end);
pause (1000);
textout(0, 100, 100, "end 2 picture", 0);
e4: if (getkeystate(192)==0) {sleep(50); goto e4;}
getmouse(X2_end, Y2_end);
pause (1000);
}
//©kibor-bot.com


ошибки не выдает, работает, но и не корректно показывает Не понял
помогите пожалуйста Огорчение
4. Kibor - 30 Декабря, 2019 - 23:45:57 - перейти к сообщению
textout(i, X1_end+x[i], Y1_end+y[i], "тут отличие", 0);

И зоны надо не руками устанавливать, а точно до пикселя.
5. Zireael - 31 Декабря, 2019 - 02:58:00 - перейти к сообщению
https://ibb.co/2v7x3bh
Открыть картинку в Paint. В скрипте изменить указатель на окно Paint, точнее контрол.
CODE:
win w=window (-1, "Afx:00007FF704EB0000:8", window ("test.png - Paint", "MSPaintApp", -1)); // контрол Paint (исправить, т. к. будет отличаться)

// ко всем координатам приблено 5 пикселей, т. к. изображение в Paint смещено
// вся картинка 100*50 пикселей, т. е. первая половина имеет координаты 0 0 50 50
// вторая 50 0 100 50

if(w) // если окно найдено
{
int x[9999], y[9999]; // сюда запишутся координаты несовпадающих пикселей
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, 5, 5, 55, 55, w); // первый поиск

int k=finddynamic(sizearray(x), #x[0], #y[0], 0, 0, 0, 0, 55, 5, 105, 55, w); // второй
messagebox("Найдено отличий: "+format(k));

for(int i=0; i<k; i++)
{
mousemove(x[i]+5, y[i]+5, w); // навести курсор на несовпадающие пиксели
sleep(100);
}
}
else messagebox("Окно не найдено");
6. ToothFairy - 31 Декабря, 2019 - 04:20:31 - перейти к сообщению
всем спасибо, все получилось!

Powered by ExBB FM 1.0 Final