Kibor |
Отправлено: 11 Мая, 2015 - 20:36:00
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
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; |
|
|
777J0KeR777 |
Отправлено: 11 Мая, 2015 - 22:00:22
|
Наблюдатель
Покинул форум
Сообщений всего: 42
Дата рег-ции: Июнь 2014
Репутация: 0
|
Спасибо огромное! Бот вполне заработал, но есть одно но. Думает он что-то долговато(
Подскажите как его ускорить? Вот получившийся скрипт:
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;
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]
Но это дело не поменяло...Всё долго и остальные команды (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;
(Добавление)
P.S. Точней в 3ей команде он почему-то картинку распознаёт странно, точней тычет в левый почти верхний угол браузера |
|
|
777J0KeR777 |
Отправлено: 12 Мая, 2015 - 12:57:08
|
Наблюдатель
Покинул форум
Сообщений всего: 42
Дата рег-ции: Июнь 2014
Репутация: 0
|
Что-то не могу понять какую-именно структуру делать для привязки к браузеру...
вот пишу этакое:
CODE:win w=window ("Forge of Empires - Mozilla Firefox",419, 402, 1065, 504, "MozillaWindowClass", -1);
А далее как это использовать?...Там всё так написано, что мне не понять( Можно, пожалуйста, пример |
|
|
Kibor |
Отправлено: 12 Мая, 2015 - 13:02:50
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
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 ищется по всему экрану.
Цитата: 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);
} |
|
|
777J0KeR777 |
Отправлено: 12 Мая, 2015 - 13:21:10
|
Наблюдатель
Покинул форум
Сообщений всего: 42
Дата рег-ции: Июнь 2014
Репутация: 0
|
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;
Тычет непонятно куда... |
|
|
Kibor |
Отправлено: 12 Мая, 2015 - 14:04:19
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: 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);
}
сместить |
|
|
|