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

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

11. rev41k - 12 Января, 2014 - 16:42:39 - перейти к сообщению
Спасибо огромное со всем этим разобрался.
Последнее , что мне нужно это поиск изображений на экране во время боя и клик по ним.

4 изображения.
Поиск 1-го изображения , если нашли клик по 2-му изображению.
Если не нашли 1-е клик по 3-му изображению.
Если не нашли 2-е и 3-ее (т.к. 2-е и 3-е изображение стало черно-белого цвета значит нельзя активировать)клик по 4-му изображению.

Код (Отобразить)


Image_cerep = 1 изображение
Image_bers = 2 изображение
Image_eg = 3 изображение
Image_v = 4 изображение

При запуске моего скрипта программа уходит в аут. Windows 7 x64.
12. Kibor - 13 Января, 2014 - 04:43:47 - перейти к сообщению
 rev41k пишет:
a:
fight();
a;

Ошибка.

 Цитата:
a:
fight();
goto a;


 rev41k пишет:
if (findimage(1, #Image_cerep[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{
if (findimage(1, #Image_bers[0][0], 0, #bx, #by, 0, 0, 1366, 767, -1)==1)
{
mouse(LEFT, bx+4, by+2);
sleep(rand(1000,3000));
mousemove(100,500);
}
else
{
if (findimage(1, #Image_cerep[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{
if (findimage(1, #Image_eg[0][0], 0, #cx, #cy, 0, 0, 1366, 767, -1);
mouse(LEFT, cx+4, cy+2);
sleep(rand(1000,3000));
mousemove(100,500);
}
}
else
{
findimage(1, #Image_v[0][0], 0, #dx, #dy, 0, 0, 1366, 767, -1);
mouse(LEFT, dx+4, dy+2);
sleep(rand(1000,3000));
mousemove(100,500);
}
}


Ошибка применения else. Оно должно идти только после if

Этот код сейчас:
 Цитата:
if (findimage(1, #Image_cerep[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{//1
if (findimage(1, #Image_bers[0][0], 0, #bx, #by, 0, 0, 1366, 767, -1)==1)
{//2
}//2
else
{//3

if (findimage(1, #Image_cerep[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{//4
}//4

}//3
else
{//5
}//5

}//1


else идет после другого else.

Надо что типа этого

 Цитата:
function fight()
{
if (findimage(1, #1[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{//1
if (findimage(1, #2[0][0], 0, #bx, #by, 0, 0, 1366, 767, -1)==1)
{//2
mouse(LEFT, bx+4, by+2);
sleep(rand(1000,3000));
mousemove(100,500);
return;
}//2
}//1

if (findimage(1, #3[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{//4
mouse(LEFT, ax+4, ay+2)
sleep(rand(1000,3000));
mousemove(100,500);
return;
}//4

if (findimage(1, #4[0][0], 0, #dx, #dy, 0, 0, 1366, 767, -1)==1)
{
mouse(LEFT, dx+4, dy+2);
sleep(rand(1000,3000));
mousemove(100,500);
}//5

}
13. rev41k - 13 Января, 2014 - 05:20:49 - перейти к сообщению
Вот так будет верно ?
CODE:

function fight()
{//function
if (findimage(1, #1[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==1)
{//1
if (findimage(1, #2[0][0], 0, #bx, #by, 0, 0, 1366, 767, -1)==1)
{//2
mouse();
}//2
}//1
else
{//3
if (findimage(1, #1[0][0], 0, #ax, #ay, 0, 0, 1366, 767, 50, 50, 50, 50, 50, 50, 100, 1, -1)==0)
{//4
if (findimage(1, #3[0][0], 0, #cx, #cy, 0, 0, 1366, 767, -1)==1)
{//5
mouse();
}//5
}//4
}//3
if (findimage(1, #3[0][0], 0, #cx, #cy, 0, 0, 1366, 767, -1)==0)
{//6
if (findimage(1, #2[0][0], 0, #bx, #by, 0, 0, 1366, 767, -1)==0)
{//7
findimage(1, #4[0][0], 0, #dx, #dy, 0, 0, 1366,767, -1);
mouse();
}//7
}//6
}//function


Замечу , что в ELSE я проверяю если не находит первую картинку.
Как и в if //7 ... Если не находит первые 3 картинка , тогда клик по 4-ой.
Заранее спасибо!
14. Kibor - 13 Января, 2014 - 07:57:25 - перейти к сообщению
Исходя из

 rev41k пишет:

1] Поиск 1-го изображения , если нашли клик по 2-му изображению.
2] Если не нашли 1-е клик по 3-му изображению.
3] Если не нашли 2-е и 3-ее (т.к. 2-е и 3-е изображение стало черно-белого цвета значит нельзя активировать)клик по 4-му изображению.

Псевдокод такой..
 Цитата:
1]
if (findimage(1)==1)
{
if (findimage(2)==1) {mouse (2); return;}//Выполниль нужное условие 1 выход из функции
}

2]//Тут мы будем если не нашли 1 изображение и не кликнули (при наличие 2 изобр.) (то есть условие 1 мы выполнили)
if (findimage(3)==1) {mouse (3); return;}//Выполниль нужное условие 2 (клик по 3 картинке) выход из функции

3]//Мы попадаем сюда если не нашли 2 и 3 изобр.
if (findimage(4)==1) mouse (4);//Выполниль нужное условие 3 (клик по 4 картинке)


else тут не нужен. Почему.?
Возьмем к примеру 1 условие..
Поиск 1-го изображения , если нашли клик по 2-му изображению.
К примеру оно выполнилось.. Зачем нам делать else если можно просто выйти из функции return
Если первое условие не выполнено, то проверит второе, так как return не был...
15. inre25 - 12 Мая, 2019 - 20:06:52 - перейти к сообщению
как в визуальном редакторе сделать поиск по изображению когда их много одинаковых , а клик будит только на одно, что первое найдет.
16. Kibor - 12 Мая, 2019 - 23:19:32 - перейти к сообщению

Для того что бы кликнуть на 1 среди поиска из многих достаточно 1 найти..

Powered by ExBB FM 1.0 Final