ss11ukr |
Отправлено: 04 Декабря, 2013 - 23:25:51
|
Прохожий
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2013
Репутация: 0
|
Здравствуйте.
Кибор - спасибо Вам за прекрасную программу, из нескольких мной протестированных на указанной ниже жертве, только он находит картинки и жмет на них, когда курсор мыши находится в активной части браузера.
Пишу скрипт бота для браузерной флеш игры в познавательных целях.
Скрипт работает, но не совсем так, как хотелось бы.
Это моя первая программка, поэтому прошу помощи и советов, как лучше ее реализовать.
sendmouse - работает не так, как хотелось бы в свернутых или не активных окнах браузеров, причем по разному, но не эффективно. Подробнее в комментариях к коду в шапке кода.
И другие вопросы в комментариях к коду, очень многое не понятно.
Прошу подсказать как лучше сделать.
Тут скрипт и картинки
CODE:http://yadi.sk/d/zcXF1bJMDoUxf
Потестить скрипт можно тут (игра "Мегаполис" :
CODE:
/http://www.odnoklassniki.ru/game/mega
http://my.mail.ru/apps/494497
http://vk.com/app1858070
Также есть несколько вопросов по реализации логики переходов в программе, но это немного позже.
Очень признателен за ваши комментарии по коду. Спасибо.
Код не умещается в данное сообщение. Увы.
(Добавление)
CODE://ver.21"Мегаполис"
//http://www.odnoklassniki.ru/game/mega============http://my.mail.ru/apps/494497===========http://vk.com/app1858070
//ver.21 ///sendmouse/ - работает ОК !!!//???? по картинка 2 и 3 кликает ОК, но с картинкой 0 и 1
//проблемы по разному в браузерах если курсор мыши вне пределов окна или окно свернуто - нет кликов по картинкам 0 и 1//????
// НЕ СООТВЕТСТВИЯ В БРАУЗЕРАХ:
//????ХРОМ - 0и1 рисунки выделяются,но по ним нет клика, при сворачивании окна в хроме оно активируется и разворачивается на экран.; //????
//????ФАЙРФОКС - 0и1 рисунки не выделяются, И по ним нет клика, при сворачивании окна в хроме оно активируется и разворачивается на экран.; //????
win w;
int x, y;
if (messageboxyn("Нажмите ДА. Наведите мышь на игру браузере и нажмите Ё. Для отмены нажмите НЕТ.")==-1)goto er;
r: if (getkeystate(192)!=1){sleep(50); goto r;}
getmouse(x, y);
w=getwindow(1, x, y);//win w=getwindow(0, X, Y);//(0 получает указатель главного окна или если 1 получает контролла который по этим координатам.координата x y);
sleep(2000);
er:;
//
int color, xe, ye;//xe, ye - разрешение экрана всего
getdisplay(color, xe, ye);//Узнать разрешение экрана
int w;//int n;//int t;z
int Image_0[16][18];
int Image_1[16][15];
int Image_2[27][25];
int Image_3[28][25];
//activate(w);//sleep(500);
loadimage (#Image_0[0][0], "C:\megapolis\Image_0.bmp");
loadimage (#Image_1[0][0], "C:\megapolis\Image_1.bmp");
loadimage (#Image_2[0][0], "C:\megapolis\Image_2.bmp");
loadimage (#Image_3[0][0], "C:\megapolis\Image_3.bmp");
int PosX_0[1];int PosY_0[1];
int PosX_1[1];int PosY_1[1];
int PosX_2[1];int PosY_2[1];
int PosX_3[1];int PosY_3[1];
[code]
[i](Добавление)[/i]
[code]
////???? Тут ничего не понятно, но по картинкам кликает. Надо разобраться, как писать условие. ????
//a: if (poisk_Image_0()==1)
a: if (poisk_Image_0()>=0)
{
poisk_Image_1();
poisk_Image_2();
poisk_Image_3();
}
goto a;
// 0 //
function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
if (k==0)
{
//sort(600, 370, #PosX_2[0], #PosY_2[0], k);// ???? Не понятно. Так не пойдет. ХОТЕЛОСЬ БЫ:
//Надо разобраться как сделать, чтоб было не 600,370 - а рассчитывало от центра контрола
//и используя рандомное значение от цента по X Y назначало точку для поиска и клика
//по ближайшей картинке в пределах контора в игровой зоне ???
sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
return 1;
}
return 0;
}
// 1 //
function poisk_Image_1()
{
z1: if (findimage(-1, #Image_1[0][0], 255, #PosX_1[0], #PosY_1[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
{
sleep(50);
goto z1;
}
sendmouse(LEFT, PosX_1[0]+7+rand(-4,4), PosY_1[0]+7+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_1[0]+9+rand(-2,2), PosY_1[0]+9+rand(-2,2), w);
sleep(rand(200,500));
}
// 2 //
function poisk_Image_2()
{
z2: if (findimage(-1, #Image_2[0][0], 255, #PosX_2[0], #PosY_2[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
{
sleep(50);
goto z2;}
sendmouse(LEFT, PosX_2[0]+14, PosY_2[0]+14, w);
sleep(rand(200,500));
}
// 3 //
function poisk_Image_3()
{
z3: if (findimage(-1, #Image_3[0][0], 255, #PosX_3[0], #PosY_3[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
{
sleep(50);
goto z3;}
sendmouse(LEFT, PosX_3[0]+14, PosY_3[0]+14, w);
sleep(rand(200,500));
}
//
|
|
|
rev41k |
Отправлено: 05 Декабря, 2013 - 00:41:49
|
Наблюдатель
Покинул форум
Сообщений всего: 31
Дата рег-ции: Нояб. 2013
Откуда: Молдова, Кишинев
Репутация: 0
|
CODE:
a: if (poisk_Image_0()>=0)
{
poisk_Image_1();
poisk_Image_2();
poisk_Image_3();
}
goto a;
Походу нужно просто > 0.
CODE:function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
походу потерял точку с запятой в конце findimage();
CODE:
PosY_1[0]+7+rand(-4,4)
я конечно могу ошибаться , сам недавно изучая Кибор, но кажись здесь rand не в тему... хотя могу ошибаться.... |
|
|
ss11ukr |
Отправлено: 05 Декабря, 2013 - 16:36:15
|
Прохожий
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2013
Репутация: 0
|
Цитата:
CODE:a: if (poisk_Image_0()>=0)
{
poisk_Image_1();
poisk_Image_2();
poisk_Image_3();
}
goto a
Походу нужно просто > 0.
rev41k Спасибо.
Исправил, работает:
CODE:a: if (poisk_Image_0()>=0)
[code]
[i](Добавление)[/i]
[quote=rev41k]CODE:
function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
походу потерял точку с запятой в конце findimage();[/quote]
Тут извиняюсь, мне не понятно по поводу";" в конце findimage();
Вот этот фрагмент:
[code]//////////// 0 //
function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
if (k==0)
{
//sort(600, 370, #PosX_2[0], #PosY_2[0], k);// ???? Не понятно. Так не пойдет. ХОТЕЛОСЬ БЫ:
//Надо разобраться как сделать, чтоб было не 600,370 - а рассчитывало от центра контрола
//и используя рандомное значение от цента по X Y назначало точку для поиска и клика
//по ближайшей картинке в пределах контора в игровой зоне ???
//
sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
return 1;
}
return 0;
}
(Добавление)
rev41k походу потерял точку с запятой в конце findimage();
Тут извиняюсь, мне не понятно по поводу";" в конце findimage();
Вот этот фрагмент:
CODE://////////// 0 //
function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
if (k==0)
{
//sort(600, 370, #PosX_2[0], #PosY_2[0], k);// ???? Не понятно. Так не пойдет. ХОТЕЛОСЬ БЫ:
//Надо разобраться как сделать, чтоб было не 600,370 - а рассчитывало от центра контрола
//и используя рандомное значение от цента по X Y назначало точку для поиска и клика
//по ближайшей картинке в пределах контора в игровой зоне ???
//
sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
return 1;
}
return 0;
}
(Добавление)
А по поводу рандома: sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
Кибор
Это сделал (пока без успешно) пытаясь добиться кликов по картинкам в 0 и 1 потому как именно по ним не кликает, когда курсор мышки за пределами окна браузера, хотя по картинкам 2 и 3 кликает в любом случае - не зависимо от положения курсора физически в окне игры, или за его пределами, кликает если окно перекрыто или не активно по картинкам 2и3 .
Когда курсор мышки находится в игровом поле баузеров кликает даже если все это:
CODE:sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
заменить на:
CODE:sendmouse(LEFT, PosX_0[0]+7, PosY_0[0]+8, w);
sleep(500);
Кибор Спасибо.
Есть в коде ошибка:
Переменные имеют одинаковые имена. Не допускается.
win w; - оставил. int w; - удалил // Но как не странно, код работал в первоначальном варианте =)
(Добавление)
Кибор Спасибо, но тут у нас другой случай:
Извините, возможно я не достаточно полно описал проблему.
Kibor пишет: По поводу неактивных окон почитайте тут Это относительно AvtoK, но и для Кибор оно тоже актуально.
Тут я прочитал, спасибо, но проблема несколько иного рода:
(WIN_7x64+Aero, FF + Chrome)
1) Если окно активно и курсор мышки на игровом поле кликает по картинкам 0,1,2,3 - Бот работает
2) Если окно не активно или перекрыто, или мышь вне поля то:
2.1) Кликает по 2,3
2.2) Не кликает по 0,1
2.3) В Chrome подсвечивает 0,1 (подсветка флеш анимации), но не кликакает по ним.
2.4) В FF не подсвечивает 0,1 (нет подсветки флеш анимации), не кликакает по ним. |
|
|
ss11ukr |
Отправлено: 05 Декабря, 2013 - 19:12:09
|
Прохожий
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2013
Репутация: 0
|
Пробую заменить:
CODE:sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
На:
CODE:sendmousemove(PosX_0[0]-40, PosY_0[0]-40, w);
sleep(1500);
sendmousetransfer(-1, PosX_0[0]-40, PosY_0[0]-40, PosX_0[0]+7, PosY_0[0]+8, 0.02, w);
sleep(1500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
Для того, чтоб эмулировать подвод мышки к картинке, но все равно не кликает, поведение в игре как и ранее.
Может что то посоветуете? |
|
|
Kibor |
Отправлено: 05 Декабря, 2013 - 20:27:50
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
ss11ukr пишет: win w; - оставил. int w; - удалил // Но как не странно, код работал в первоначальном варианте =)
Я просто указал на ошибку и не знаю как оно работало..
Еще одна ошибка:
ss11ukr пишет: Тут извиняюсь, мне не понятно по поводу";" в конце findimage();
Вот этот фрагмент:
function poisk_Image_0()
{
int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
Что означает ==0) в этом случае? ==, >, >=, <, <= может применяться только с if.
Даже если посмотреть на количество открывающих и закрывающих скобок видно что тут ошибка.
эту тему: http://kibor-bot.com/forum/topic...m=9&topic=14 я дал для ознакомления с тем, что функции работы в не активных окнах могут зависеть от браузера и так просто никто не ответит почему не работает. Можно только показать ошибки.
Так же нет возможности проверить код на игре, так как для этого надо эмулировать ситуацию в которой находятся эти рисунки.
Мне к примеру не ясно что делает код:
CODE:int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w);
if (k==0)
{
sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
sleep(rand(200,500));
return 1;
}
Его логика неверна. Это все равно что по русски: искать рисунок и если его не нашли кликнуть по координатам не найденного рисунка. Просмотрите еще раз логику скрипта. Что я могу - это исправить ошибки синтаксиса...
CODE:
//ver.21 //УЧУСЬ ПИСАТЬ БОТА на примере игры онлайн браузерной флеш стратегии"Мегаполис"
//http://www.odnoklassniki.ru/game/mega============http://my.mail.ru/apps/494497===========http://vk.com/app1858070
//
//ver.21 ///sendmouse/ - работает ОК !!!//???? по картинка 2 и 3 кликает ОК, но с картинкой 0 и 1
//проблемы по разному в браузерах если курсор мыши вне пределов окна или окно свернуто - нет кликов по картинкам 0 и 1//????
// НЕ СООТВЕТСТВИЯ В БРАУЗЕРАХ:
//????ХРОМ - 0и1 рисунки выделяются,но по ним нет клика, при сворачивании окна в хроме оно активируется и разворачивается на экран.; //????
//????ФАЙРФОКС - 0и1 рисунки не выделяются, И по ним нет клика, при сворачивании окна в хроме оно активируется и разворачивается на экран.; //????
//
//http://kibor-bot.com/forum/topic.php?forum=5&topic=39
//
////win w=window ("Мегаполис – Мой Мир@Mail.Ru - Mozilla Firefox", "MozillaWindowClass", -1);
//win w=window (-1, "Chrome_RenderWidgetHostHWND", -1);
//win w=window (-1, "Chrome_RenderWidgetHostHWND", window ("Одноклассники - Google Chrome", "Chrome_WidgetWin_1", -1));
/////////////////////////////
win w;
int x, y;
int rz=50, rrc=80;
if (messageboxyn("Нажмите ДА. Наведите мышь на игру браузере и нажмите Ё. Для отмены нажмите НЕТ.")==-1)goto er;
r: if (getkeystate(192)!=1){sleep(50); goto r;}
getmouse(x, y);
w=getwindow(1, x, y);//win w=getwindow(0, X, Y);//(0 получает указатель главного окна или если 1 получает контролла который по этим координатам.координата x y);
sleep(2000);
er:;
//////////////////////////////
int color, xe, ye;//xe, ye - разрешение экрана всего
getdisplay(color, xe, ye);//Узнать разрешение экрана
int Image_0[16][18];
int Image_1[16][15];
int Image_2[27][25];
int Image_3[28][25];
/////////////////////////////////////////////////////////////
//activate(w);//sleep(500);
loadimage (#Image_0[0][0], "C:\megapolis\Image_0.bmp");
loadimage (#Image_1[0][0], "C:\megapolis\Image_1.bmp");
loadimage (#Image_2[0][0], "C:\megapolis\Image_2.bmp");
loadimage (#Image_3[0][0], "C:\megapolis\Image_3.bmp");
/////////////////////////////////////////////////////////////
int PosX_0[1];int PosY_0[1];
int PosX_1[1];int PosY_1[1];
int PosX_2[1];int PosY_2[1];
int PosX_3[1];int PosY_3[1];
//////////////////////////////////////////////////////////////
a: if (poisk_Image_0()>0)
{
poisk_Image_1();
poisk_Image_2();
poisk_Image_3();
}
goto a;
//////////// 0 //
function poisk_Image_0()
{
int k=findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, rz, rz, rz, rz, rz, rz, rrc, 1, w);
if (k==0)
{
/*
sendmouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), w);
*/
mouse(LEFT, PosX_0[0]+7+rand(-4,4), PosY_0[0]+8+rand(-4,4), 1, w);
sleep(500);
mouse(LEFT, PosX_0[0]+9+rand(-2,2), PosY_0[0]+10+rand(-2,2), 1, w);
sleep(rand(200,500));
return 1;
}
return 0;
}
//////////// //
/////////// 1 //
function poisk_Image_1()
{
z1: if (findimage(1, #Image_1[0][0], 255, #PosX_1[0], #PosY_1[0], 0, 0, w.widthclient, w.heightclient, rz, rz, rz, rz, rz, rz, rrc, 1, w)==0)
{
sleep(50);
goto z1;
}
/*
sendmouse(LEFT, PosX_1[0]+7+rand(-4,4), PosY_1[0]+7+rand(-4,4), w);
sleep(500);
sendmouse(LEFT, PosX_1[0]+9+rand(-2,2), PosY_1[0]+9+rand(-2,2), w);
*/
mouse(LEFT, PosX_1[0]+7+rand(-4,4), PosY_1[0]+7+rand(-4,4), 1, w);
sleep(500);
mouse(LEFT, PosX_1[0]+9+rand(-2,2), PosY_1[0]+9+rand(-2,2), 1, w);
sleep(rand(200,500));
}
//////////// //
/////////// 2 //
function poisk_Image_2()
{
z2: if (findimage(1, #Image_2[0][0], 255, #PosX_2[0], #PosY_2[0], 0, 0, w.widthclient, w.heightclient, rz, rz, rz, rz, rz, rz, rrc, 1, w)==0)
{
sleep(50);
goto z2;
}
//sendmouse(LEFT, PosX_2[0]+14, PosY_2[0]+14, w);
mouse(LEFT, PosX_2[0]+14, PosY_2[0]+14, 1, w);
sleep(rand(200,500));
}
//////////// //
//////////// 3 //
function poisk_Image_3()
{
z3: if (findimage(1, #Image_3[0][0], 255, #PosX_3[0], #PosY_3[0], 0, 0, w.widthclient, w.heightclient, rz, rz, rz, rz, rz, rz, rrc, 1, w)==0)
{
sleep(50);
goto z3;
}
//sendmouse(LEFT, PosX_3[0]+14, PosY_3[0]+14, w);
mouse(LEFT, PosX_3[0]+14, PosY_3[0]+14, 1, w);
sleep(rand(200,500));
}
//////////// //
//////////// //
//
|
|
|
ss11ukr |
Отправлено: 06 Декабря, 2013 - 00:02:53
|
Прохожий
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2013
Репутация: 0
|
Kibor[b]Kibor Спасибо.
Моя цель просто научиться писать ботов.
Логика игры: появилась картинка - клик.
В данном случае логика работы скрипта простая - кликать по появившемся картинкам:
1)при появлении картинки 0или1
, где 0 - монеты а 1- население просто делать левый клик мышкой по картинке
Картинки 0и1 после клика по ним сразу исчезнут и снова появляются на поле примерно через 5 минут.
2)Картинки 2и3 - это элементы интерфейса игры, при нахождении их (а они постоянно находятся на экране) кликать по ним - это я сделал для того, чтоб видеть что скрипт работает - Я так сделал чтоб сначала добиться наглядности работы скрипта.
Когда удастся кликать хотя бы в перекрытых окнах буду дописывать логику, добавлять условия.
Kibor
Проверить код на игре при Вашем желании можно. Там все просто. Игровой тест аккаунт и ссылку отправил Вам в личку. Прошу прощения, что не предоставил сразу.[/b] ,
(Добавление)
CODE:int k=findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
Спасибо, с этой ошибкой разобрался.
Заменил на:
CODE:function poisk_Image_0()
{
z0: if (-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
sleep(50);
goto z1;
{ |
|
|
Kibor |
Отправлено: 06 Декабря, 2013 - 00:58:31
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
ss11ukr пишет: Моя цель просто научиться писать ботов.
В таком случае почитайте эту тему и найдите 2 ошибки в этом участке которым заменили:
ss11ukr пишет: function poisk_Image_0()
{
z0: if (-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==0)
sleep(50);
goto z1;
{
(Добавление)
Прежде чем добиваться клика в перекрытом окне надо знать или на компьютере будет поиск изображения в перерытом окне. для этого надо win7 с аэро.
А клик идет в перерытое окно. Я проверил AvtoK. Он кликает в перекрытое и свернутое в игре в Мозиле. |
|
|
ss11ukr |
Отправлено: 06 Декабря, 2013 - 02:08:33
|
Прохожий
Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2013
Репутация: 0
|
Kibor
Win7x64+Aero
Kibor
Спасибо. Поправил ошибки. Изучил тему, я понял так - как ниже в коде, возможно что и не верно.
CODE://В нашем случае надо, чтоб искало все 4 картинки. Это пока, для тренировки.
//Я понял так:
//Если найдена ==1 или >0 или !=1
//если не найдена ==0 или <1 или !=0
//Как я понял 1-найдена, 0-не найдена.
//Если картинка Image_0 найдена или не найдена то пишем "<=1", или ">=0"
// Пишем <=1
a: if (poisk_Image_0()<=1)//если картинка Image_0 найдена или не найдена, то ищем остальные картинки:
{
poisk_Image_1();
poisk_Image_2();
poisk_Image_3();
}
goto a;
//
function poisk_Image_0()
{
// Я понял так. Если картинка найдена в конце строки ==1, если не найдена ==0
//Нам надо найти картинку, чтоб по ней кликнуть, поэтому...
// Тут в конце строки пишем ==1
z0: if (findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==1)//Была ошибка "==0", надо "==1"
{//Была ошибка: тут не поставил "{"
sleep(50);
goto z0;//Была ошибка "goto z1" надо "goto z0"
}
// Тут описаны действия с найденной картинкой
sendmousemove(PosX_0[0]-40, PosY_0[0]-40, w);
sleep(1500);
sendmousetransfer(-1, PosX_0[0]-40, PosY_0[0]-40, PosX_0[0]+8, PosY_0[0]+9, 9, w);
sleep(1500);
sendmouse(LEFT, PosX_0[0]+8, PosY_0[0]+9, w);
sleep(rand(200,500));
// |
|
|
Kibor |
Отправлено: 06 Декабря, 2013 - 02:20:51
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Неверно поняли...
==, <, >.... это сравнение...
== это означает равно...
http://filesd.net/kibor/logic.php
Пример что значит это :
if (findimage(-1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==1)
При выполнение функций (findimage функция) в Кибор они возвращают какое нибудь значение.. findimage возвращает количество найденных изображений или код ошибки при неверном использование. Если ошибка возвращает <0.
Так вот ==1 в конце означает что возвращаемое функцией сравнивать с 1...
Так же надо обратить внимание на параметр первый -1. Это означает что искать все изображения. Их может быть больше 1. В таком случае если найдено более 1 то ==1 не верно и надо писать>0.
В этом случае так как ищется 1 изображение первый параметр 1 а не -1.
if (findimage(1, #Image_0[0][0], 255, #PosX_0[0], #PosY_0[0], 0, 0, w.widthclient, w.heightclient, 50, 50, 50, 50, 50, 50, 80, 1, w)==1)
Теперь если нашли то будет такой код:
if (1==1) если 1 равно 1.
Если не нашли будет if (0==1)
Подробнее о findimage |
|
|
|