Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Помогите понять почему скрипт "встаёт"..

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

1. konctantin777 - 21 Октября, 2017 - 00:55:14 - перейти к сообщению
Не работает код- уже второй день бьюсь- помогите ?
1й- поиск изображения по xr и yr и, при нахождении, записывает координаты в xd, yd. Если не нашел- замыкается на блок кода. 2й поиск ищет по xd, yd то чего точно нет и идёт в блок кода в котором увеличивается yr на 40. И в начало. Использую блокнот и и цифра 2 в столбик. Встаёт на 1м изображении и хоть ты тресни (

CODE:

int xr=10, yr=10, xd=10, yd=10;
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int Image_0_KIB[11][12];
int Image_1_KIB[7][16];

start_();

m_KIB1: findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 2000, -1, 0, 100, 1, xr+30, yr+30, ex_KIB, ey_KIB, #sum_KIB, #xd, #yd);
if (findimage_(#Image_1_KIB[0][0], 1000, 0, 0, 10, 0, 0, 2000, -1, 0, 100, 1, xd-10, yd+30, ex_KIB, ey_KIB, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB4;
else goto m_KIB3;
m_KIB4: yr=yr+40 goto m_KIB1;
m_KIB3: goto m_KIB4;



function start_()
{
getdisplay(col_KIB, ex_KIB, ey_KIB);
load_image_();
pause(1000);
}


function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int p3, int fon, int r, int p, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{
int timKIB, sumKIB, xKIB, yKIB;
pause(p1);
sumKIB=0;
if (t!=1) timKIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-timKIB<t){sleep(20); goto a;}
return 0;
e: sumKIB=sum; xKIB=x[0]; yKIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==10){mousemove(xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
return sumKIB;
}




function load_image_()
{
loadimage (#Image_0_KIB[0][0], "C:\Хроники хаоса\2.bmp");
loadimage (#Image_1_KIB[0][0], "C:\Хроники хаоса\камп дробь.bmp");
}


2. Kibor - 21 Октября, 2017 - 01:01:25 - перейти к сообщению
потому что надо ставить точки с запятыми
yr=yr+40
3. konctantin777 - 21 Октября, 2017 - 01:40:00 - перейти к сообщению
Забыл.. Это помогло- спасибо. Вернул вместо блока кода клик мыши по координатам xd yd. Теперь всё ищет по очереди, но кликает всегда на 158-16..
CODE:

int xr=10, yr=10, xd=10, yd=10;
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int Image_0_KIB[11][12];
int Image_1_KIB[7][16];

start_();

m_KIB1: findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 2000, -1, 0, 100, 1, xr+30, yr+30, ex_KIB, ey_KIB, #sum_KIB, #xd, #yd);
if (findimage_(#Image_1_KIB[0][0], 1000, 0, 0, 10, 0, 0, 2000, -1, 0, 100, 1, xd-10, yd+30, ex_KIB, ey_KIB, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB4;
else goto m_KIB3;
m_KIB4: yr=yr+40; goto m_KIB1;
m_KIB3: mouse_(0, 10, xd, yd, 1000); goto m_KIB4;



function start_()
{
getdisplay(col_KIB, ex_KIB, ey_KIB);
load_image_();
pause(1000);
}


function mouse_(int p1, int m, int xm, int ym, int p2)
{
pause(p1);
if (m==1) mouse(LEFT, xm, ym);
if (m==2) mouse(MIDDLE, xm, ym);
if (m==3) mouse(RIGHT, xm, ym);
if (m==4) mousedown(LEFT, xm, ym);
if (m==5) mousedown(MIDDLE, xm, ym);
if (m==6) mousedown(RIGHT, xm, ym);
if (m==7) mouseup(LEFT, xm, ym);
if (m==8) mouseup(MIDDLE, xm, ym);
if (m==9) mouseup(RIGHT, xm, ym);
if (m==10) mousemove(xm, ym);
pause(p2);
}


function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int p3, int fon, int r, int p, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{
int timKIB, sumKIB, xKIB, yKIB;
pause(p1);
sumKIB=0;
if (t!=1) timKIB=gettime();
a: if (r==0 && p==100){sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1); if (sum>0) goto e;}
else {sum=findimage(k, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1); if (sum>0) goto e;}
if (t==0) return 0;
if (gettime()-timKIB<t){sleep(20); goto a;}
return 0;
e: sumKIB=sum; xKIB=x[0]; yKIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==10){mousemove(xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
return sumKIB;
}




function load_image_()
{
loadimage (#Image_0_KIB[0][0], "C:\Õðîíèêè õàîñà\2.bmp");
loadimage (#Image_1_KIB[0][0], "C:\Õðîíèêè õàîñà\êàìï äðîáü.bmp");
}

4. konctantin777 - 22 Октября, 2017 - 00:07:52 - перейти к сообщению
Код всё тоже самое только сделал клик мыши сразу после изображения- кликает вверху. Получается, что xd yd не записываются....
5. Kibor - 22 Октября, 2017 - 00:20:18 - перейти к сообщению
CODE:
mouse_(0, 10, xd, yd, 1000);

надо смещать.
при поиске координаты получаются от левого верхнего угла поиска.

xr+30, yr+30 это левый вехний..

получаем что кликать надо

CODE:
mouse_(0, 10, xr+30+xd, yr+30+yd, 1000);
6. konctantin777 - 22 Октября, 2017 - 00:48:19 - перейти к сообщению
Ок. Кликает в координатах 1го найденного изображения +100 .
Уточню вопрос. Кликает ТОЛЬКО по первым найденным координатам. Не перезаписывает их. Нужно, чтобы, грубо говоря, нашел- напротив щелкнул; нашел- напротив щелкнул; и т.д. Как то нужно очищать xd yd, чтобы мог снова в них записать новые координаты ?
7. konctantin777 - 22 Октября, 2017 - 10:51:10 - перейти к сообщению
Или, может, необходимо, чтобы другой квадратик ещё раз записывал эти данные- один и тот же не может перезаписывать ?
8. Kibor - 22 Октября, 2017 - 10:57:03 - перейти к сообщению
А изображения какие используете?
Курсор после клика вообще не мешает?
9. konctantin777 - 22 Октября, 2017 - 11:22:26 - перейти к сообщению
Просто цифра "2" в столбик в блокноте. В клике мышке ставлю по х+100
(Добавление)
Точнее делал правый клик, а сейчас вообще просто перемещаю.
(Добавление)
Потому сейчас блокнот и мучаю, чтобы отладить, чтобы быть уверенным в изображении

Powered by ExBB FM 1.0 Final