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

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

1. l2mrakg - 12 Июня, 2019 - 10:09:54 - перейти к сообщению
Подскажите как подсветить найденые зоны динамикой?

CODE:

function finddynamic_(int onx, int ony, int oox, int ooy, int t, int pscan, int p1, int p2, int m, int xm, int ym, int p3, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{
xs=xs+sx_KIB; ys=ys+sy_KIB; xf=xf+sx_KIB; yf=yf+sy_KIB;
int timKIB, sumKIB, xKIB, yKIB;
pause(p1);
sumKIB=0;
if (t!=0) timKIB=gettime();
a: finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, xs, ys, xf, yf, -1);
pause(pscan);
sum=finddynamic(k, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, -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){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==13){mousemove(xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
return sumKIB;
}
2. Zireael - 12 Июня, 2019 - 11:25:53 - перейти к сообщению
 Цитата:
sum=finddynamic(k, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, -1);
if (sum>0) goto e;

Примерно так:
CODE:
sum=finddynamic(k, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, -1);
if (sum>0)
{
for(int i=0; i<sum; i++)
{
textout(i, xs+x[i], ys+y[i], format(i), 0);
sleep(100);
}

goto e;
}

Если нужны линии или рамка, то:
https://kibor-bot.com/forum/topi...76612#1558176612
https://kibor-bot.com/forum/topi...51539#1558651539
3. l2mrakg - 13 Июня, 2019 - 10:08:12 - перейти к сообщению
Благодарю за подсказку, метка появляется, но слишком быстро.
Все таки хочется подсветить динамику линиями, но что то не выходит, подскажите что не так.

КОД Динамики.

CODE:

//
#define PS_SOLID 0

external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreatePen", "CreatePen", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll" );
external(INT, "LineTo", "LineTo", "Gdi32.dll" );
int hdc_dialog=GetDC(0); // ?????????? ?????????
int pen=CreatePen(PS_SOLID, 2, 1376392); // ??????? ???????
SelectObject(hdc_dialog, pen);
//

function finddynamic_(int onx, int ony, int oox, int ooy, int t, int pscan, int p1, int p2, int m, int xm, int ym, int p3, int k, int xs, int ys, int xf, int yf, int#sum, int#x, int#y)
{

xs=xs+sx_KIB; ys=ys+sy_KIB; xf=xf+sx_KIB; yf=yf+sy_KIB;
int timKIB, sumKIB, xKIB, yKIB;
pause(p1);
sumKIB=0;
if (t!=0) timKIB=gettime();
a: finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, xs, ys, xf, yf, -1);

pause(pscan);
sum=finddynamic(k, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, -1);
//Рисуем
RES(xs, ys, xf, yf);
//текстом...
if (sum>0)
{
for(int i=0; i<sum; i++)
{
textout(i, xs+x[i], ys+y[i], format(i), 0);
sleep(100);
}
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){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
if (m==13){mousemove(xs+xKIB+xm, ys+yKIB+ym); pause(p3);}
//
return sumKIB;
}

///оишбка
function RES(int xs, int ys, int xf, int yf)
{
MoveToEx(hdc_dialog, xs, ys, 0); // ?? ?????? ?????
LineTo(hdc_dialog, xf, ys); // ?????? ?????
LineTo(hdc_dialog, xf, yf); // ?????? ?????
LineTo(hdc_dialog, xs, yf); // ?????? ?????
LineTo(hdc_dialog, xs, ys); // ?????? ?????
}


Отладка с момента включения до ошибки.

CODE:

start_ ( )
load_image_ ( )
loadimage ( # Image_0_KIB [ 0 ] [ 0 ] , " D:\Кибор\Проекты\test\target.bmp " )
loadimage ( # Image_1_KIB [ 0 ] [ 0 ] , " D:\Кибор\Проекты\test\dead.bmp " )
pause ( 1000 )
w_KIB = window ( " Lineage II " , " l2UnrealWWindowsViewportWindow " , - 1 )
ex_KIB = w_KIB.widthclient
ey_KIB = w_KIB.heightclient
sx_KIB = w_KIB.leftclient
sy_KIB = w_KIB.topclient
if ( findimage_ ( # Image_0_KIB [ 0 ] [ 0 ] , 300 , 0 , 0 , 0 , 0 , 0 , - 1 , 0 , 0 , 0 , - 1 , - 1 , - 1 , 0 , 100 , 1 , 0 , 0 , ex_KIB , ey_KIB , # sum_KIB , # x_KIB , # y_KIB ) > 0 )
xs = xs + sx_KIB
ys = ys + sy_KIB
xf = xf + sx_KIB
yf = yf + sy_KIB
int timKIB , sumKIB , xKIB , yKIB , tx , ty , tcycle = 0
pause ( p1 )
sumKIB = 0
if ( t != 0 )
timKIB = gettime ( )
if ( r == 0 && p == 100 )
sum = findimage ( k , # Image [ 0 ] [ 0 ] , fon , # x [ 0 ] , # y [ 0 ] , xs , ys , xf , yf , - 1 )
if ( sum > 0 )
if ( t == 0 )
if ( gettime ( ) - timKIB < t )
return 0
if ( finddynamic_ ( 80 , 80 , 160 , 160 , 100 , 200 , 0 , 0 , 1 , 0 , 0 , 0 , 30 , 0 , 0 , ex_KIB , ey_KIB , # sum_KIB , # x_KIB , # y_KIB ) > 0 )
xs = xs + sx_KIB
ys = ys + sy_KIB
xf = xf + sx_KIB
yf = yf + sy_KIB
pause ( p1 )
sumKIB = 0
if ( t != 0 )
timKIB = gettime ( )
finddynamic ( 0 , # x [ 0 ] , # y [ 0 ] , 0 , 0 , 0 , 0 , xs , ys , xf , yf , - 1 )
pause ( pscan )
sum = finddynamic ( k , # x [ 0 ] , # y [ 0 ] , onx , ony , oox , ooy , xs , ys , xf , yf , - 1 )
RES ( xs , ys , xf , yf )
MoveToEx ( hdc_dialog , xs , ys , 0 )



Остановка скрипта на

MoveToEx ( hdc_dialog , xs , ys , 0 )
----
Инструкция:

MoveToEx ( -842150451 , 14 , 37 , 0 )
4. Zireael - 13 Июня, 2019 - 17:30:13 - перейти к сообщению
 Цитата:
#define PS_SOLID 0

external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreatePen", "CreatePen", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll" );
external(INT, "LineTo", "LineTo", "Gdi32.dll" );
int hdc_dialog=GetDC(0); // ?????????? ?????????
int pen=CreatePen(PS_SOLID, 2, 1376392); // ??????? ???????
SelectObject(hdc_dialog, pen);

Это должно быть в самом начале скрипте. В логе отладки этих строк нет.
5. l2mrakg - 13 Июня, 2019 - 18:15:52 - перейти к сообщению
 Zireael пишет:
 Цитата:
#define PS_SOLID 0

external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreatePen", "CreatePen", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll" );
external(INT, "LineTo", "LineTo", "Gdi32.dll" );
int hdc_dialog=GetDC(0); // ?????????? ?????????
int pen=CreatePen(PS_SOLID, 2, 1376392); // ??????? ???????
SelectObject(hdc_dialog, pen);

Это должно быть в самом начале скрипте. В логе отладки этих строк нет.


Спасибо действительно тупанул, не могу понять, а почему он рисует за пределами окна?
Как указатель указать на окно?
CODE:
w_KIB = window ( " Lineage II " , " l2UnrealWWindowsViewportWindow " , - 1 )
6. Zireael - 13 Июня, 2019 - 19:00:31 - перейти к сообщению
 Цитата:
почему он рисует за пределами окна?

Потому что рисует в экранных координатах. Нужно прибавить позицию окна.
 Цитата:
function RES(int xs, int ys, int xf, int yf)
{
setwindowparam(w_KIB);
MoveToEx(hdc_dialog, xs + w_KIB.leftclient, ys + w_KIB.topclient, 0);
LineTo(hdc_dialog, xf + w_KIB.leftclient, ys + w_KIB.topclient);
LineTo(hdc_dialog, xf, yf);
LineTo(hdc_dialog, xs, yf);
LineTo(hdc_dialog, xs, ys);
}
7. l2mrakg - 13 Июня, 2019 - 19:18:57 - перейти к сообщению
скопировал как у Вас и снова за пределами окна линии появляются.
8. Zireael - 13 Июня, 2019 - 19:26:04 - перейти к сообщению
Можно вообще вывести BitBlt над окном.
code (Отобразить)
9. l2mrakg - 13 Июня, 2019 - 19:44:04 - перейти к сообщению
 Zireael пишет:
Можно вообще вывести BitBlt над окном.
code (Отобразить)


я так понимаю в координаты надо указать перменные динамики?
(Добавление)
 l2mrakg пишет:
 Zireael пишет:
Можно вообще вывести BitBlt над окном.
code (Отобразить)


я так понимаю в координаты надо указать перменные динамики?



Во теперь за пределы окна не уходит ! Спасибо!

Powered by ExBB FM 1.0 Final