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

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

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

> Без описания
Kairos
Отправлено: 17 Мая, 2020 - 19:14:13
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2020  
Репутация: 0




Здравствуйте, уважаемые форумчане!

Я создаю бота, который поворачивается на 360 градусов, находит цель и двигается к ней.
Так вот, распознавать цель я его научил, двигаться тоже.

Единственное неизвестная мне знание - каким образом заставить бота поворачиваться на 360 градусов по одному градусу
(Конечно понятно, что нужно добавить к исходному X какое-то число пикселей, например 10pix, но как именно это сделать - узнать мне не удалось).
Постоянно возвращает курсор в исходное положение. Нужно заставить его плавно двигаться на месте направо.

Буду очень признателен, если поможете!
Мой первый опыт!

С уважением, Kairos.
 
 Top
Zireael
Отправлено: 17 Мая, 2020 - 19:34:27
Post Id



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


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




 Цитата:
плавно двигаться на месте

А как можно двигаться на месте? Либо курсор двигается, либо стоит на месте.
 Цитата:
что нужно добавить к исходному X какое-то число пикселей, например 10pix, но как именно это сделать - узнать мне не удалось

CODE:
int x, y;

getmouse(x, y); // получить координаты курсора
mousemove(x+100, y); // переместить курсор на 100 пикселей вправо
 
 Top
Kairos
Отправлено: 17 Мая, 2020 - 19:54:20
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2020  
Репутация: 0




Zireael , Zireael,

Под "Плавно двигаться на месте" я имел ввиду то, что персонаж остаётся на месте, а курсор плавно крутит камеру вправо →.

Строчки кода, которые вы прислали, сделали абсолютно то же самое, что получалось раньше.
Вот что происходит:
Экран у меня 1920х1080, центр экрана (х=960; у=540).
mousemove добавил к х 100, значит х=1060. НО дальше он не двигается. Курсор стоит на месте и дергается в точке (1060;540).

Может попробовать цикл While как-нибудь прицепить? Например, пока x<10000000000
Выполнять условие x+100

Как-нибудь так? Что по этому поводу думаете?
(Добавление)
Zireael , [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

Так я описал функцию изменения X, и вот какую ошибку Кибор мне выдаёт.

(Отредактировано автором: 17 Мая, 2020 - 19:58:02)

 
 Top
Kibor
Отправлено: 17 Мая, 2020 - 20:49:08
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




; уберите после
while(x<10000000)
 
 Top
Kairos
Отправлено: 17 Мая, 2020 - 20:51:40
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2020  
Репутация: 0




Kibor , убрал, вот что получилось: [img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Если что, вот полный код Бота:

CODE:
int size_key_char_KIB=-1;
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int sx_KIB, sy_KIB;
int Image_0_KIB[196][36];
int Image_1_KIB[40][380];


start_();

m_KIB2: if (findimage_(#Image_1_KIB[0][0], 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, -1, 100, 80, 1, 520, 0, 560, 380, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB6;
else goto m_KIB3;
m_KIB6: key_(16, 2, "", 0, 0, 0);
key_(87, 2, "", 0, 0, 0); goto m_KIB2;
m_KIB4: mouse_(0, 1, , , 0);
m_KIB1: if (findimage_(#Image_0_KIB[0][0], 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, -1, 0, 100, 1, 970, 507, 1162, 537, #sum_KIB, #x_KIB, #y_KIB)>0) goto m_KIB5;
else goto m_KIB4;
m_KIB5: key_(69, 1, "", 0, 0, 0); goto m_KIB1;
m_KIB3: mouse_(0, 13, 970, 540, 0); goto m_KIB2;



function start_()
{
load_image_();
pause(1000);
int Z=100;
int x, y,;
while (x<100000000000000)
getmouse(x, y);
mousemove(x+Z, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
sx_KIB=w_KIB.leftclient; sy_KIB=w_KIB.topclient;
}


function key_(int k, int m, string text, int pc, int p1, int p2)
{
pause(p1);
if (m==-1)
{
if (size_key_char_KIB==-1)
{
size_key_char_KIB=100;
new char key_char_KIB[size_key_char_KIB+1];
}
int size_key=size(text);
if (size_key_char_KIB<size_key)
{
delete key_char_KIB;
size_key_char_KIB=size_key;
new char key_char_KIB[size_key_char_KIB+1];
}
strcpy(#key_char_KIB[0], text);
for (int n=0; n<size_key; n++){key(key_char_KIB[n]); sleep(pc);}
}
else
{
if (m==1) key(k);
if (m==2) keydown(k);
if (m==3) keyup(k);
}
pause(p2);
}


function mouse_(int p1, int m, int xm, int ym, int p2)
{
xm=xm+sx_KIB; ym=ym+sy_KIB;
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) mousedbl(LEFT, xm, ym);
if (m==11) mousedbl(MIDDLE, xm, ym);
if (m==12) mousedbl(RIGHT, xm, ym);
if (m==13) mousemove(xm, ym);
pause(p2);
}


function findimage_(int #Image, int t, int p1, int p2, int m, int xm, int ym, int mov_m, int mov_x, int mov_y, int p3, int wait, int cycle, int fon, int r, int p, 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, tx, ty, tcycle=0;
sty: pause(p1);
sumKIB=0;
if (t!=0) 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); goto hy;}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==10){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==13)mousemove(xs+xKIB+xm, ys+yKIB+ym);
hy: if (mov_m==1)mousemove(mov_x, mov_y);
if (m>0 && m<14)pause(p3);
if (wait!=-1)
{
for (int ttim=gettime(); gettime()-ttim<wait; sleep(20))
{
if (r==0 && p==100){if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, -1)==0)return sumKIB;}
else {if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, r, r, r, r, r, r, p, 1, -1)==0)return sumKIB;}
}
if (tcycle<cycle){tcycle++; goto sty;}
return 0;
}
return sumKIB;
}




function load_image_()
{
string temp_fold=tempfolder();
unpack("D:\Games\Kibor\Images\Search target 2.bmp", temp_fold+"Search target 2.bmp", 1);
loadimage (#Image_0_KIB[0][0], temp_fold+"Search target 2.bmp");
unpack("D:\Games\Kibor\Images\Search target 1.bmp", temp_fold+"Search target 1.bmp", 1);
loadimage (#Image_1_KIB[0][0], temp_fold+"Search target 1.bmp");
}


RESOURCE
{
"D:\Games\Kibor\Images\Search target 2.bmp";
"D:\Games\Kibor\Images\Search target 1.bmp";

(Отредактировано автором: 17 Мая, 2020 - 20:53:18)

 
 Top
Kibor
Отправлено: 17 Мая, 2020 - 21:05:09
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




int x, y,;

CODE:
while (x<100000000000000)
getmouse(x, y);
mousemove(x+Z, y);
.....

как оно должно работать?
 
 Top
Kairos
Отправлено: 17 Мая, 2020 - 21:09:20
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2020  
Репутация: 0




Kibor , Пока икс меньше 100000000000000 выполнять:

Получить икс и игрик сейчас, например, 960 и 540 (центр экрана сейчас)
Перевести камеру на 960+Z(100) вправо - на 100 пикселей.
Цикл до того, как Х не достигнет 100000000000000.
То есть через равные промежутки времени курсор будет смещаться вправо каждый раз на 100 пикселей
 
 Top
Kibor
Отправлено: 17 Мая, 2020 - 21:16:21
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8094
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




while
где тело while?
 
 Top
Kairos
Отправлено: 17 Мая, 2020 - 21:40:11
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2020  
Репутация: 0




 Kibor пишет:
while
где тело while?


Тело записал, поворот камеры появился! Как на лопастях вертолёта) Только вот распознавание цели почему-то хромает. Буду пытаться устроить и это)
Один вопрос остался: как замедлить поворот? То есть, я имею ввиду - как замедлить цикл?
Поэтому пойду сейчас разбирать "Sleep" и создавать новый отбор цели, теперь уже с учетом времени дня.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by