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

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

1. Cash - 04 Ноября, 2014 - 13:33:39 - перейти к сообщению
Прошу прощение за постоянные возможно тупые темы но я ничего не понимаю почему не работает уже часами сижу и не понимаю

CODE:
win wind=window ("BlueStacks App Player", "WindowsForms10.Window.8.app.0.33c0d9d", -1);
int col, x, y;
getdisplay(col, x, y);
int Image_0[142][64];loadimage (#Image_0[0][0], "C:\Users\root\Documents\Image_0.bmp");
int PosX_0[1];int PosY_0[1];
int n=0;
b: if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0,x, y, -1)==1);
{sleep(50); goto b;}
sendmouse (LEFT, PosX_0[n], PosY_0[n],wind);
pause (6500);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (22000);
//нанять 100 рыцарей
sendmouse (LEFT, 590, 616, wind);
pause (1856);
sendmouse (LEFT, 742, 547, wind);
pause (1856);
sendmousetransfer(LEFT, 272, 471, 271, 224, 0.00006, wind);
pause (1500);
sendmouse (LEFT, 275, 471, wind);
pause (1794);
sendmouse (LEFT, 804, 558, wind);
pause (1045);
sendmouse (LEFT, 610, 421, wind);
pause (749);
sendmouse (LEFT, 610, 514, wind);
pause (608);
sendmouse (LEFT, 610, 514, wind);
pause (437);
sendmouse (LEFT, 783, 521, wind);
pause (905);
sendmouse (LEFT, 1040, 37, wind);
pause (1000);
goto b;


логика должна быть в следующем.
Если он находит изображение он на него кликает если не находит он ждет пока оно появится.
sendmouse (LEFT, PosX_0[n], PosY_0[n],wind);
Но он почему то пропускает эту строчку и тыкает на следующую а именно на
sendmouse (LEFT, 697, 606, wind); и тд
В чем ошибка??
2. Kibor - 04 Ноября, 2014 - 13:52:18 - перейти к сообщению
 Cash пишет:
логика должна быть в следующем.
Если он находит изображение он на него кликает если не находит он ждет пока оно появится.

так почему тута все наоборот??

 Cash пишет:
b: if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0,x, y, -1)==1)
{sleep(50); goto b;}


 Cash пишет:
sendmouse (LEFT, PosX_0[n], PosY_0[n],wind);
Но он почему то пропускает эту строчку и тыкает на следующую а именно на
sendmouse (LEFT, 697, 606, wind); и тд
В чем ошибка??

да потому что он на нее пытается кликнуть в то время когда нет изображения и нет координат PosX_0[n], PosY_0[n]...

тут логика такова в этом коде

когда есть изображение ждем и кликает тогда когда пропало оно, причем кликаем по неизвестно откуда координатам взятым... то есть или по тем что были до этого в переменных.




CODE:
int PosX , PosY;
b: if (findimage(1, #Image_0[0][0], 0, #PosX, #PosY, 0, 0,wind.leftclient, wind.topclient, wind)==0)
{sleep(50); goto b;}
sendmouse (LEFT, PosX, PosY, wind);

(Добавление)
И еще...

что за ерунда тут
b: if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0,x, y, -1)==1)

и тут
sendmouse (LEFT, PosX_0[n], PosY_0[n],wind);

почему поиск по экрану, а клик в оконных координатах??
3. Cash - 04 Ноября, 2014 - 14:03:33 - перейти к сообщению
Однако
дак я как думал
b: if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0,x, y, -1)==1);
ЕСЛИ найдено изображение оно возвращает единицу если нет то возвращает 0
поэтому если возвращенно 1==1

{sleep(50); goto b;}
то есть если 1==1 то слип 50 если нет то ищи заново... а у вас если найденно изображение возвращает 0?? Не понял
4. Kibor - 04 Ноября, 2014 - 14:07:45 - перейти к сообщению
 Cash пишет:
дак я как думал
b: if (findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0,x, y, -1)==1);
ЕСЛИ найдено изображение оно возвращает единицу если нет то возвращает 0
поэтому если возвращенно 1==1

{sleep(50); goto b;}
то есть если 1==1 то слип 50 если нет то ищи заново... а у вас если найденно изображение возвращает 0??


эээээ

не понимаете логики или не знаете как выполняется код в скобках

a: if (1==1)
{
sleep(25);
goto a;
}

что код делает??
5. Cash - 04 Ноября, 2014 - 14:11:17 - перейти к сообщению
если 1==1 то уснуть если нет то снова проверить? нет?
upd
ааа понял если 1==1 то выполнить код в скобках уснуть и снова проверить
upd2
а перед фигурными скобками не надо ставить ; ?
6. Kibor - 04 Ноября, 2014 - 14:15:24 - перейти к сообщению
 Cash пишет:
а перед фигурными скобками не надо ставить ; ?

неа

Логические операции и переходы
(Добавление)
CODE:
int PosX , PosY;
b: if (findimage(1, #Image_0[0][0], 0, #PosX, #PosY, 0, 0,wind.leftclient, wind.topclient, wind)==0)
{sleep(50); goto b;}
sendmouse (LEFT, PosX, PosY, wind);

это вставить
7. Cash - 04 Ноября, 2014 - 14:21:06 - перейти к сообщению
а я находил в кодах дургих на форуме
int PosX_0[1];int PosY_0[1];
а вы предлогаете писать просто PosX, PosY в чем отличие?
8. Kibor - 04 Ноября, 2014 - 14:32:50 - перейти к сообщению
в этом случае ищется 1 изображение
findimage(1,

поэтому координата одна только быть у нас может.
поэтому массив не нужен. тем более int PosX_0[1];int PosY_0[1];

int PosX_0[1];int PosY_0[1];
это массив в один элемент.. то есть int PosX_0;int PosY_0;

http://kibor-bot.com/forum/topic...=14&topic=10

я надеюсь ссылки юзаются что даю?
9. Cash - 04 Ноября, 2014 - 15:09:27 - перейти к сообщению
да читаю конечно только не всегда все примеры описаны в справке отсюда и вопросы
10. Cash - 05 Ноября, 2014 - 13:14:42 - перейти к сообщению
Кибор в общем конечный код выглядит так

CODE:
win wind=window ("BlueStacks App Player", "WindowsForms10.Window.8.app.0.33c0d9d", -1);
int col, x, y;
int Image_0[142][64];loadimage (#Image_0[0][0], "C:\Users\root\Documents\Image_0.bmp");
getdisplay(col, x, y);
int n=0;
int PosX , PosY;
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int время_выполнения_милисек;
int time;



j: getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
время_выполнения_милисек=0;
if (Hour==23 && Minute==30)время_выполнения_милисек=3600000; // 60*60*1000 час
if (Hour==5 && Minute==30)время_выполнения_милисек=3600000; // 60*60*1000 час
if (Hour==10 && Minute==0)время_выполнения_милисек=3600000; // 60*60*1000 час
if (время_выполнения_милисек!=0)
{
sendmouse (LEFT, 597, 154, wind);
pause (2000);
time=gettime();
a: if (gettime()-time<время_выполнения_милисек)
{
fight();
sleep(100);
goto a;
}
}
sleep(100);
goto j;


//////////////////
function fight()
{
b: if (findimage(1, #Image_0[0][0], 0, #PosX, #PosY, 0, 0,x, y, -1)==0)
{sleep(50); goto b;}
sendmouse (LEFT, PosX, PosY,wind);
pause (6500);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (4000);
sendmouse (LEFT, 697, 606, wind);
pause (100);
sendmouse (LEFT, 573, 608, wind);
pause (106);
sendmouse (LEFT, 459, 609, wind);
pause (121);
sendmouse (LEFT, 337, 612, wind);
pause (22000);
//нанять 100 рыцарей
sendmouse (LEFT, 590, 616, wind);
pause (1856);
sendmouse (LEFT, 742, 547, wind);
pause (1856);
sendmousetransfer(LEFT, 272, 471, 271, 224, 0.00006, wind);
pause (1500);
sendmouse (LEFT, 275, 471, wind);
pause (1794);
sendmouse (LEFT, 804, 558, wind);
pause (1045);
sendmouse (LEFT, 610, 421, wind);
pause (749);
sendmouse (LEFT, 610, 514, wind);
pause (608);
sendmouse (LEFT, 610, 514, wind);
pause (437);
sendmouse (LEFT, 783, 521, wind);
pause (905);
sendmouse (LEFT, 1040, 37, wind);
pause (1000);
}


он работает, но по частям
например:
- он отработает код до начала функции (в функцию не переходит) если запущен например в 23:20
- если код запустить в 23:40 он уже не отработает
- если функцию запустить отдельно от первого кода он отрабатывает только когда окно в развернутом состоянии то есть скрипт не может искать изображение если окно свернуто?
как быть? Огорчение

Powered by ExBB FM 1.0 Final