Теперь эта ошибка:
Надоел уже наверное со своей глупостью)) Просто я совершенно не понимаю какой смысл у предпоследней и последней цифры...
11. 777J0KeR777 - 11 Мая, 2015 - 12:29:22 - перейти к сообщению
12. Kibor - 11 Мая, 2015 - 12:36:00 - перейти к сообщению
CODE:
win w=window ("Forge of Empires - Mozilla Firefox", "MozillaWindowClass", -1);
int Image_0[19][22];
loadimage (#Image_0[0][0], "J:\kibor\Новая папка\денюжки.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 992, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2);
sleep(500);
}
sleep(10);
goto tt;
int Image_0[19][22];
loadimage (#Image_0[0][0], "J:\kibor\Новая папка\денюжки.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 992, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2);
sleep(500);
}
sleep(10);
goto tt;
13. 777J0KeR777 - 11 Мая, 2015 - 13:03:38 - перейти к сообщению
Отличненько, частично заработало...) Уже прогресс)) Но опять таки "видит" не все изображения...Я тут присмотрелся, эти монетки в пикселях частично отличаются, и в динамике в каждой монете максимум что достигалось, это выявления 1-3х пикселей, оставшихся без движения, и то не на всех монетках...Как лучше поступить? делать +100500 скринов каждой монеты или есть другой более удобный и рациональный способ?...а то мне там ещё молотки надо так же автоматизировать
14. Kibor - 11 Мая, 2015 - 13:15:04 - перейти к сообщению
15. 777J0KeR777 - 11 Мая, 2015 - 14:00:22 - перейти к сообщению
Спасибо огромное! Бот вполне заработал, но есть одно но. Думает он что-то долговато(
Подскажите как его ускорить? Вот получившийся скрипт:
P.S. Также выявилась ещё одна проблема, скрипт видит только первое действие, на последующие забивает...как исправить?
(Добавление)
Вот тут чутка ошибся:
Но это дело не поменяло...Всё долго и остальные команды (1,2,3) он не исполняет...Делает только 0 и 4
(Добавление)
В ходе экспериментов выявил вот что. По отдельности срабатывают все команды, но. Когда я ставлю их все вместе, то полностью не срабатывает 3 команда и скрипт забивает на 1,2 команды, а начинает выполнять 2, "3", 4...Как это исправить? Вот что имею на данный момент:
(Добавление)
P.S. Точней в 3ей команде он почему-то картинку распознаёт странно, точней тычет в левый почти верхний угол браузера
Подскажите как его ускорить? Вот получившийся скрипт:
CODE:
int Image_0[19][22];
int Image_1[25][25];
int Image_2[23][24];
int Image_3[42][19];
int Image_4[16][19];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Íîâàÿ ïàïêà\äåíþæêè.bmp");
loadimage (#Image_1[0][0], "J:\kibor\Íîâàÿ ïàïêà\ìîëîò.bmp");
loadimage (#Image_2[0][0], "J:\kibor\Íîâàÿ ïàïêà\ñîí.bmp");
loadimage (#Image_3[0][0], "J:\kibor\Íîâàÿ ïàïêà\5 ìèí.bmp");
loadimage (#Image_4[0][0], "J:\kibor\Íîâàÿ ïàïêà\çàêðûòü.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50);
}
if (findimage(1, #Image_1[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_1[0][0])/2, PosY+imageheight(#Image_1[0][0])/2+50);
}
if (findimage(1, #Image_2[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1);
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2);
}
}
goto tt;
int Image_1[25][25];
int Image_2[23][24];
int Image_3[42][19];
int Image_4[16][19];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Íîâàÿ ïàïêà\äåíþæêè.bmp");
loadimage (#Image_1[0][0], "J:\kibor\Íîâàÿ ïàïêà\ìîëîò.bmp");
loadimage (#Image_2[0][0], "J:\kibor\Íîâàÿ ïàïêà\ñîí.bmp");
loadimage (#Image_3[0][0], "J:\kibor\Íîâàÿ ïàïêà\5 ìèí.bmp");
loadimage (#Image_4[0][0], "J:\kibor\Íîâàÿ ïàïêà\çàêðûòü.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50);
}
if (findimage(1, #Image_1[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_1[0][0])/2, PosY+imageheight(#Image_1[0][0])/2+50);
}
if (findimage(1, #Image_2[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1);
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2);
}
}
goto tt;
P.S. Также выявилась ещё одна проблема, скрипт видит только первое действие, на последующие забивает...как исправить?
(Добавление)
Вот тут чутка ошибся:
CODE:
if (findimage(1, #Image_2[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
[color=darkred]}[/color]
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
[color=darkred]}[/color]
Но это дело не поменяло...Всё долго и остальные команды (1,2,3) он не исполняет...Делает только 0 и 4
(Добавление)
В ходе экспериментов выявил вот что. По отдельности срабатывают все команды, но. Когда я ставлю их все вместе, то полностью не срабатывает 3 команда и скрипт забивает на 1,2 команды, а начинает выполнять 2, "3", 4...Как это исправить? Вот что имею на данный момент:
CODE:
int Image_0[19][22];
int Image_1[25][25];
int Image_2[23][24];
int Image_3[42][19];
int Image_4[16][19];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Новая папка\денюжки.bmp");
loadimage (#Image_1[0][0], "J:\kibor\Новая папка\молот.bmp");
loadimage (#Image_2[0][0], "J:\kibor\Новая папка\сон.bmp");
loadimage (#Image_3[0][0], "J:\kibor\Новая папка\время 5мин.bmp");
loadimage (#Image_4[0][0], "J:\kibor\Новая папка\закрыть.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50);
}
if (findimage(1, #Image_1[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_1[0][0])/2, PosY+imageheight(#Image_1[0][0])/2+50);
}
if (findimage(1, #Image_2[0][0], 255, #PosX, #PosY, 0, 0, 1280, 1024, 30, 30, 30, 30, 30, 30, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
sleep(5000);
}
else
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2);
}
goto tt;
int Image_1[25][25];
int Image_2[23][24];
int Image_3[42][19];
int Image_4[16][19];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Новая папка\денюжки.bmp");
loadimage (#Image_1[0][0], "J:\kibor\Новая папка\молот.bmp");
loadimage (#Image_2[0][0], "J:\kibor\Новая папка\сон.bmp");
loadimage (#Image_3[0][0], "J:\kibor\Новая папка\время 5мин.bmp");
loadimage (#Image_4[0][0], "J:\kibor\Новая папка\закрыть.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50);
}
if (findimage(1, #Image_1[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_1[0][0])/2, PosY+imageheight(#Image_1[0][0])/2+50);
}
if (findimage(1, #Image_2[0][0], 255, #PosX, #PosY, 0, 0, 1280, 1024, 30, 30, 30, 30, 30, 30, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_2[0][0])/2, PosY+imageheight(#Image_2[0][0])/2+50);
if (findimage(1, #Image_3[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, 50, 50, 50, 50, 50, 50, 80, 1, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_3[0][0])/2, PosY+imageheight(#Image_3[0][0])/2);
}
sleep(5000);
}
else
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, -1)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2);
}
goto tt;
(Добавление)
P.S. Точней в 3ей команде он почему-то картинку распознаёт странно, точней тычет в левый почти верхний угол браузера
16. Kibor - 11 Мая, 2015 - 15:08:49 - перейти к сообщению
777J0KeR777 пишет:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024
сделать вменяеую область поиска для этого и использовать указатель на игру
17. 777J0KeR777 - 12 Мая, 2015 - 04:57:08 - перейти к сообщению
Что-то не могу понять какую-именно структуру делать для привязки к браузеру...
вот пишу этакое:
А далее как это использовать?...Там всё так написано, что мне не понять( Можно, пожалуйста, пример
вот пишу этакое:
CODE:
win w=window ("Forge of Empires - Mozilla Firefox",419, 402, 1065, 504, "MozillaWindowClass", -1);
А далее как это использовать?...Там всё так написано, что мне не понять( Можно, пожалуйста, пример
18. Kibor - 12 Мая, 2015 - 05:02:50 - перейти к сообщению
777J0KeR777 пишет:
Там всё так написано, что мне не понять( Можно, пожалуйста, пример
Сканирование экрана и поиск изображений
Цитата:
Синтаксис:
findimage(-1, #image[0][0], fon_color, #x[0], #y[0], x_start, y_start, x_finish, y_finish, wind);
Первый параметр - если -1 - искать все совпадающие изображения и записывать их в масив. Если не -1 , к примеру 5... искать до 5 включительно совпадений и завершать поиск.
Второй - указатель на масив int в котором хранится искомое изображение.
Третий - фоновый цвет который не учитывается при сравнение изображений. Если указать -1, все цвета учитываются. В виде фонового цвета можно указать цвет конкретного пикселя искомой картинки - image[0][0] (цвет левого верхнего пикселя)... и т.д.
Четвертый и пятый - указатели на одномерные масивы int, в которые будут сохранены координаты найденых в окне изображений.
Шестой и седьмой - стартовые клиентские координаты в окне в котором ищется изображение относительно верхнего левого угла.
Восьмой и девятый - клиентские координаты окончания поиска в окне в котором ищется изображение.
Десятый - указатель на окно в котором ищем изображение. При -1 ищется по всему экрану.
findimage(-1, #image[0][0], fon_color, #x[0], #y[0], x_start, y_start, x_finish, y_finish, wind);
Первый параметр - если -1 - искать все совпадающие изображения и записывать их в масив. Если не -1 , к примеру 5... искать до 5 включительно совпадений и завершать поиск.
Второй - указатель на масив int в котором хранится искомое изображение.
Третий - фоновый цвет который не учитывается при сравнение изображений. Если указать -1, все цвета учитываются. В виде фонового цвета можно указать цвет конкретного пикселя искомой картинки - image[0][0] (цвет левого верхнего пикселя)... и т.д.
Четвертый и пятый - указатели на одномерные масивы int, в которые будут сохранены координаты найденых в окне изображений.
Шестой и седьмой - стартовые клиентские координаты в окне в котором ищется изображение относительно верхнего левого угла.
Восьмой и девятый - клиентские координаты окончания поиска в окне в котором ищется изображение.
Десятый - указатель на окно в котором ищем изображение. При -1 ищется по всему экрану.
Цитата:
win w=window ("Forge of Empires - Mozilla Firefox",419, 402, 1065, 504, "MozillaWindowClass", -1);
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, w)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2, 0, w);
}
if (findimage(1, #Image_4[0][0], -1, #PosX, #PosY, 0, 0, 1280, 1024, w)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_4[0][0])/2, PosY+imageheight(#Image_4[0][0])/2, 0, w);
}
19. 777J0KeR777 - 12 Мая, 2015 - 05:21:10 - перейти к сообщению
CODE:
win w=window ("Forge of Empires - Mozilla Firefox",419, 402, 1065, 504, "MozillaWindowClass", -1);
int Image_0[19][22];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Íîâàÿ ïàïêà\äåíþæêè.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 619, 458, 1091, 725, 20, 20, 20, 20, 20, 20, 90, 1, w)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50, 0, w);
}
goto tt;
int Image_0[19][22];
int color, xe,ye;
sleep(500);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "J:\kibor\Íîâàÿ ïàïêà\äåíþæêè.bmp");
int PosX;int PosY;
tt:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 619, 458, 1091, 725, 20, 20, 20, 20, 20, 20, 90, 1, w)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2, PosY+imageheight(#Image_0[0][0])/2+50, 0, w);
}
goto tt;
Тычет непонятно куда...
20. Kibor - 12 Мая, 2015 - 06:04:19 - перейти к сообщению
Цитата:
if (findimage (1, #Image_0[0][0], -1, #PosX, #PosY, 619, 458, 1091, 725, 20, 20, 20, 20, 20, 20, 90, 1, w)==1)
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2+619, PosY+imageheight(#Image_0[0][0])/2+50+458, 0, w);
}
{
mouse(LEFT, PosX+imagewidth(#Image_0[0][0])/2+619, PosY+imageheight(#Image_0[0][0])/2+50+458, 0, w);
}
сместить