Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Подсветить найденые зоны
l2mrakg
Отправлено: 12 Июня, 2019 - 18:09:54
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 50
Дата рег-ции: Март 2018  
Откуда: Одесса, Украина.
Репутация: 1




Подскажите как подсветить найденые зоны динамикой?

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;
}
 
 Top
Zireael
Отправлено: 12 Июня, 2019 - 19:25:53
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
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
 
 Top
l2mrakg
Отправлено: 13 Июня, 2019 - 18:08:12
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 50
Дата рег-ции: Март 2018  
Откуда: Одесса, Украина.
Репутация: 1




Благодарю за подсказку, метка появляется, но слишком быстро.
Все таки хочется подсветить динамику линиями, но что то не выходит, подскажите что не так.

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

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 )
 
 Top
Zireael
Отправлено: 14 Июня, 2019 - 01:30:13
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
#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);

Это должно быть в самом начале скрипте. В логе отладки этих строк нет.
 
 Top
l2mrakg
Отправлено: 14 Июня, 2019 - 02:15:52
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 50
Дата рег-ции: Март 2018  
Откуда: Одесса, Украина.
Репутация: 1




 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 )
 
 Top
Zireael
Отправлено: 14 Июня, 2019 - 03:00:31
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
почему он рисует за пределами окна?

Потому что рисует в экранных координатах. Нужно прибавить позицию окна.
 Цитата:
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);
}
 
 Top
l2mrakg
Отправлено: 14 Июня, 2019 - 03:18:57
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 50
Дата рег-ции: Март 2018  
Откуда: Одесса, Украина.
Репутация: 1




скопировал как у Вас и снова за пределами окна линии появляются.
 
 Top
Zireael
Отправлено: 14 Июня, 2019 - 03:26:04
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4394
Дата рег-ции: Нояб. 2017  
Репутация: 580




Можно вообще вывести BitBlt над окном.
code (Отобразить)
 
 Top
l2mrakg
Отправлено: 14 Июня, 2019 - 03:44:04
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 50
Дата рег-ции: Март 2018  
Откуда: Одесса, Украина.
Репутация: 1




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


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


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



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

(Отредактировано автором: 14 Июня, 2019 - 03:47:58)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by