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

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

1. rigl - 22 Июля, 2021 - 23:54:22 - перейти к сообщению
Ибо изначальная задача в том, чтобы найти с помощью findheapcolor нужную картинку на полу-белом фоне, а дальше, от найденной картинки, распознать текст(readtext не добавлял пока что, ибо возникла проблема). P.S. Картинка стоит на рабочем столе(потом нужно будет перебросить все это на нужное окно.

[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

Код:

CODE:
win W_Kib;
int Screen[3000][3000];
int K_Kib;
int X_Kib[1000];
int Y_Kib[1000];
int Color0[1] = {16119799};
int Kol0[1] = {5};

int eCol_Kib, eX_Kib, eY_Kib;
getdisplay(eCol_Kib, eX_Kib, eY_Kib);

KIB_1: if (FindHeapcolor(0, #Screen[0][0], #W_Kib, W_Kib.leftclient, W_Kib.topclient, 66, 95, 66, 95, #Color0[0], #Kol0[0], 1, 1, -1, 0, 0, 0, #K_Kib, #X_Kib[0], #Y_Kib[0], 533, 917, 1277, 1058, 0, 0, 30, 0, "0, 0, 0, 0", 10, "Бездействие", 0, 0, 100, 0, 5, 5)>0) goto KIB_3;
TextOut(0, "Текст", 0, 0, 0, 0, 16777215);
goto KIB_1;
KIB_3: TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);
goto KIB_1;

function FindHeapcolor(int ew, int #Scr, win #w, int v_x, int v_y, int Obl_n_x, int Obl_n_y, int Obl_o_x, int Obl_o_y, int #col, int #kol, int k_col, int kol_col, int k, int Sort, int sortx, int sorty, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2, int p1, int t, int r, int ignor, string mas_ignor, int p2, string m, int smx, int smy, int p3, int per_m, int per_x, int per_y)
{
pause (p1);
if (t==0)t=1;
looptime(t)
{
if (ew==0)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, -1);
if (ew==1)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, v_x+ex1, v_y+ey1, v_x+ex2, v_y+ey2, r, r, r, r, r, r, -1);
if (ew==2)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, w);
if (ew==3 || ew==4)mK=findheapcolor(k, #col[0], #kol[0], k_col, kol_col, #mX[0], #mY[0], Obl_n_x, Obl_n_y, Obl_o_x, Obl_o_y, ex1, ey1, ex2, ey2, r, r, r, r, r, r, #Scr[0][0]);
if (mK>0) break;
sleep(5);
}
if (mK<1) return mK;
if (ew==3 || ew==4){ex1=ex1+screenstartx(); ey1=ey1+screenstarty();}
for (int n=0; n<mK; n++)
{
mX[n]=mX[n]+ex1;
mY[n]=mY[n]+ey1;
}
if (ignor)
{
mas_ignor=mas_ignor+"^r^n";
string P[4];
int x1, y1, x2, y2;
if (regexsearch(4, #P[0], mas_ignor, "[0-9]+(?=,|\r\n)")==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (int n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
while (regexsearch(4, #P[0])==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
}
}
}
if (Sort) sort(sortx, sorty, #mX[0], #mY[0], mK);
pause (p2);
if (ew==0 || ew==3 || ew==1)
{
if (ew==1){smx=v_x+smx; smy=v_y+smy;}
if (m=="Левую клик"){mouse(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю клик"){mouse(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую клик"){mouse(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую нажать"){mousedown(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю нажать"){mousedown(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую нажать"){mousedown(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую отпустить"){mouseup(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю отпустить"){mouseup(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую отпустить"){mouseup(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левая двойной клик"){mousedbl(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Средняя двойной клик"){mousedbl(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правая двойной клик"){mousedbl(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Переместить"){mousemove(smx+mX[0], smy+mY[0]); goto hy;}
}
if (ew==2 || ew==4)
{
if (m=="Левую клик"){sendmouse(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю клик"){sendmouse(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую клик"){sendmouse(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую нажать"){sendmousedown(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю нажать"){sendmousedown(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую нажать"){sendmousedown(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую отпустить"){sendmouseup(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю отпустить"){sendmouseup(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую отпустить"){sendmouseup(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левая двойной клик"){sendmousedbl(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Средняя двойной клик"){sendmousedbl(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правая двойной клик"){sendmousedbl(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Переместить")sendmousemove(smx+mX[0], smy+mY[0], w);
}
hy: if (m!="Бездействие")
{
pause (p3);
if (per_m)
{
if (ew==0 || ew==3 || ew==1)mousemove(per_x, per_y);
if (ew==2 || ew==4)sendmousemove(per_x, per_y, w);
}
}
return mK;
}

function TextOut(int n, string text, int o, int x, int y, int colt, int colf)
{
textbkcolor (colt,colf);
textout(n, x, y, text, o);
}
2. Zireael - 23 Июля, 2021 - 00:59:12 - перейти к сообщению
 Цитата:
TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);

CODE:
TextOut(0, "Текст", 0, X_Kib[0]+533, Y_Kib[0]+917, 0, 16777215);
3. rigl - 23 Июля, 2021 - 01:53:08 - перейти к сообщению
 Zireael пишет:
 Цитата:
TextOut(0, "Текст", 0, X_Kib+533, Y_Kib+917, 0, 16777215);

CODE:
TextOut(0, "Текст", 0, X_Kib[0]+533, Y_Kib[0]+917, 0, 16777215);

Еще вопрос есть, вот я получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?
Я красным цветом указал нужный квадрат
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
4. Zireael - 23 Июля, 2021 - 02:06:50 - перейти к сообщению
 Цитата:
получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?

Пересчитать координаты.
CODE:
int sx = X_Kib[0]+533-25;
int sy = Y_Kib[0]+917+10;
int ex = sx + 50;
int ey = sy + 50;
mousemove(sx, sy);
pause(2000);
mousemove(ex, ey);
5. rigl - 23 Июля, 2021 - 02:29:12 - перейти к сообщению
 Zireael пишет:
 Цитата:
получил местоположение данного цвета(четко посередине сверху), как мне определить ему квадрат, чтобы readtext брал четко по нужному квадрату?

Пересчитать координаты.
CODE:
int sx = X_Kib[0]+533-25;
int sy = Y_Kib[0]+917+10;
int ex = sx + 50;
int ey = sy + 50;
mousemove(sx, sy);
pause(2000);
mousemove(ex, ey);


Извиняюсь, но, в визуальном редакторе как должен выглядеть readtext с этими заданными переменными? Ибо в коде не особо пока что понимаю( Спасибо за ответы, чрезмерно благодарен
6. Zireael - 23 Июля, 2021 - 02:44:50 - перейти к сообщению
 Цитата:
в визуальном редакторе как должен выглядеть readtext с этими заданными переменными?

Зона распознавания.
X_Kib[0]+533-25
Y_Kib[0]+917+10
X_Kib[0]+533+25
Y_Kib[0]+917+60
на сколько смещать зону поиска исправьте исходя из размеров круга.

Powered by ExBB FM 1.0 Final