Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » Программа вылетает с ошибкой.

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

1. konctantin777 - 20 Октября, 2017 - 13:56:58 - перейти к сообщению
Простенький код- в визуальном редакторе максимум 5 блоков- постоянно программа закрывается с ошибкой или ошибка памяти (и гиг начальной не помогает- в компе больше 8и гигов стоит)
CODE:

int xr, yr, xd, yd;
int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int Image_0_KIB[11][12];

start_();

m_KIB1: findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 0, -1, 0, 100, 1, xr+30, yr+30, ex_KIB, ey_KIB, #sum_KIB, #xd, #yd);
findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 0, -1, 0, 100, 1, xd+30, yd+30, ex_KIB, ey_KIB, #sum_KIB, #xr, #yr); goto m_KIB1;



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");
}



(Добавление)
Если добавить блок, чтобы прибавлял к переменной число, вот такая картинка
[img]
C:\Users\1\Desktop
[/img]
2. Kibor - 20 Октября, 2017 - 14:12:47 - перейти к сообщению
Естественно

зона поиска
xr+30, yr+30, ex_KIB, ey_KIB
А чему равно
xr
yr
не сказано.
а они могут быть равны тому что находилось в памяти по этим адресам.

То есть зона поиска может быть
-8766765, -7676678, ex_KIB, ey_KIB
Это ведет к вылету, так как это не ошибка синтаксиса, а ошибка программирования и кибор это не распознает.
3. konctantin777 - 20 Октября, 2017 - 14:15:33 - перейти к сообщению
Пробовал и в блоке "старт" присваивать им значения от 0 до 50
4. Kibor - 20 Октября, 2017 - 14:17:33 - перейти к сообщению
Я не вижу. данный скрипт с ошибками программирования.
Этот скрипт будет вылетать.
Скидывайте другой.
5. konctantin777 - 20 Октября, 2017 - 15:49:46 - перейти к сообщению
Вот добавил в самом начале присвоение переменным числа. Сейчас это два поиска изображения. 1й поиск ищет и записывает найденные координаты в xd yd. Второй поиск ищет начиная с координат xd yd и записывает в xr yr и так по кругу. Не силён в коде это виз. редактор выдал.
Сейчас это в блокноте цифры "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];

start_();

m_KIB1: findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 0, -1, 0, 100, 1, xr, yr+30, ex_KIB, ey_KIB, #sum_KIB, #xd, #yd);
findimage_(#Image_0_KIB[0][0], 1000, 0, 0, 10, 0, 0, 0, -1, 0, 100, 1, xd, yd+30, ex_KIB, ey_KIB, #sum_KIB, #xr, #yr); goto m_KIB1;



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");
}


6. Kibor - 20 Октября, 2017 - 15:53:07 - перейти к сообщению
Теперь программа не вылетает?
Потому что переменным присвоено значение.
Почему застревает я не знаю. Это не ошибка в программе Кибор, а не верно составленный алгоритм.
7. konctantin777 - 20 Октября, 2017 - 15:57:47 - перейти к сообщению
 Kibor пишет:
Теперь программа не вылетает?
Потому что переменным присвоено значение.
Почему застревает я не знаю. Это не ошибка в программе Кибор, а не верно составленный алгоритм.



А можно из вирт редактора только часть схемы в код перевести. Когда её добавил- всё стало ломаться. Просто всё посылать очень много....
(Добавление)
 Kibor пишет:
Теперь программа не вылетает?
Потому что переменным присвоено значение.
Почему застревает я не знаю. Это не ошибка в программе Кибор, а не верно составленный алгоритм.


Алгоритм состоит из 2х квадратиков поиск изображения которые друг на друга переходят и по одному блоку кода каждой чтобы переходили при "неправде"....
8. Kibor - 20 Октября, 2017 - 16:23:25 - перейти к сообщению
 konctantin777 пишет:
А можно из вирт редактора только часть схемы в код перевести

нет

Powered by ExBB FM 1.0 Final