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

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

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

> Описание: sendmouse в браузерах ФФ и ХРОМ+ флеш, прошу подсказок по коду
ss11ukr
Отправлено: 04 Декабря, 2013 - 23:25:51
Post Id



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


Покинул форум
Сообщений всего: 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));
}
//
 
 Top
rev41k
Отправлено: 05 Декабря, 2013 - 00:41:49
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 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 не в тему... хотя могу ошибаться....
 
 Top
Kibor
Отправлено: 05 Декабря, 2013 - 11:59:10
Post Id



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


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




По поводу неактивных окон почитайте тут Это относительно AvtoK, но и для Кибор оно тоже актуально.
rev41k верные замечания сделал по поводу кода, кроме
CODE:
PosY_1[0]+7+rand(-4,4)

Тут все верно и клик будет +-4 пикселя

Есть в коде ошибка:
CODE:
win w;

CODE:
int w;

Переменные имеют одинаковые имена. Не допускается.
 
 Top
ss11ukr
Отправлено: 05 Декабря, 2013 - 16:36:15
Post Id



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


Покинул форум
Сообщений всего: 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 (нет подсветки флеш анимации), не кликакает по ним.
 
 Top
ss11ukr
Отправлено: 05 Декабря, 2013 - 19:12:09
Post Id



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


Покинул форум
Сообщений всего: 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));

Для того, чтоб эмулировать подвод мышки к картинке, но все равно не кликает, поведение в игре как и ранее.
Может что то посоветуете?
 
 Top
Kibor
Отправлено: 05 Декабря, 2013 - 20:27:50
Post Id



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


Покинул форум
Сообщений всего: 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));
}
//////////// //
//////////// //
//
 
 Top
ss11ukr
Отправлено: 06 Декабря, 2013 - 00:02:53
Post Id



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


Покинул форум
Сообщений всего: 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;
{
 
 Top
Kibor
Отправлено: 06 Декабря, 2013 - 00:58:31
Post Id



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


Покинул форум
Сообщений всего: 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. Он кликает в перекрытое и свернутое в игре в Мозиле.
 
 Top
ss11ukr
Отправлено: 06 Декабря, 2013 - 02:08:33
Post Id



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


Покинул форум
Сообщений всего: 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));
//
 
 Top
Kibor
Отправлено: 06 Декабря, 2013 - 02:20:51
Post Id



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


Покинул форум
Сообщений всего: 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
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by