rev41k |
Отправлено: 13 Января, 2014 - 00:42:39
|
Наблюдатель
Покинул форум
Сообщений всего: 31
Дата рег-ции: Нояб. 2013
Откуда: Молдова, Кишинев
Репутация: 0
|
Спасибо огромное со всем этим разобрался.
Последнее , что мне нужно это поиск изображений на экране во время боя и клик по ним.
4 изображения.
Поиск 1-го изображения , если нашли клик по 2-му изображению.
Если не нашли 1-е клик по 3-му изображению.
Если не нашли 2-е и 3-ее (т.к. 2-е и 3-е изображение стало черно-белого цвета значит нельзя активировать)клик по 4-му изображению.
Код (Отобразить)CODE:
int Image_cerep[29][23];
loadimage (#Image_cerep[0][0], "E:\cerep.bmp");
int ax,ay;
//=============================
int Image_bers[7][5];
loadimage (#Image_bers[0][0], "E:\bers.bmp");
int bx,by;
//=============================
int Image_eg[11][8];
loadimage (#Image_eg[0][0], "E:\eg.bmp");
int cx,cy;
//=============================
int Image_v[7][5];
loadimage (#Image_v[10][11], "E:\vistrel.bmp");
int dx,dy;
//=============================
a:
fight();
a;
function fight()
{
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);
}
}
}
Image_cerep = 1 изображение
Image_bers = 2 изображение
Image_eg = 3 изображение
Image_v = 4 изображение
При запуске моего скрипта программа уходит в аут. Windows 7 x64. |
|
|
Kibor |
Отправлено: 13 Января, 2014 - 12:43:47
|
Эксперт
Просматривает форум
Сообщений всего: 8226
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
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
} |
|
|
rev41k |
Отправлено: 13 Января, 2014 - 13:20:49
|
Наблюдатель
Покинул форум
Сообщений всего: 31
Дата рег-ции: Нояб. 2013
Откуда: Молдова, Кишинев
Репутация: 0
|
Вот так будет верно ?
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-ой.
Заранее спасибо!(Отредактировано автором: 13 Января, 2014 - 13:22:16) |
|
|
Kibor |
Отправлено: 13 Января, 2014 - 15:57:25
|
Эксперт
Просматривает форум
Сообщений всего: 8226
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Исходя из
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 не был... |
|
|
|