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

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

1. ArtChemist - 09 Августа, 2013 - 10:59:38 - перейти к сообщению
Написал я скриптик который прекрасно работал пока я не заметил что иногда искомое изображение перекрывается другими элементами игры.
И я решил вместо:
CODE:
if (findimage(1, #Image_10[0][0], 0, #PosX[0], #PosY[0], 0, 0, 1366, 722, w)==1);
{
mouse (LEFT, PosX[0]+10, PosY[0]+10, 1, w);
}


сделать:
CODE:
if (findimage(1, #Image_10[0][0], 0, #PosX[0], #PosY[0], 0, 0, 1366, 722, 0, 0, 0, 0, 0, 0, 80, 1, w)==1);
{
mouse (LEFT, PosX[0]+10, PosY[0]+10, 1, w);
}


После чего когда скрипт доходит до этого места вылетает ошибка

Нажмите для увеличения
2. Kibor - 09 Августа, 2013 - 12:38:58 - перейти к сообщению
Какая версия Кибор?
 ArtChemist пишет:
80, 1, w)==1);

тут не нужны точка с запятой...

если вместо этого кода поставить:
CODE:
int k=findimage(1, #Image_10[0][0], 0, #PosX[0], #PosY[0], 0, 0, 1366, 722, 0, 0, 0, 0, 0, 0, 80, 1, w);
messagebox(k);

Что получается?

Нужен полный скрипт.
(Добавление)
Как срабатывает этот скрипт?
CODE:
int Image_0[27][48];
int color, xe, ye;
sleep(1000);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "C:\peshka\peshka.bmp");

int PosX_0[512];int PosY_0[512];

int k=findimage(-1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, 50, 50, 50, 50, 50, 50, 90, 1, -1);

int n=0;
j:if (n<k)
{
mousemove(PosX_0[n]+imagewidth(#Image_0[0][0])/2, PosY_0[n]+imageheight(#Image_0[0][0])/2);
sleep(500);
n++;
goto j;
}


messagebox(k);

Для запуска надо скачать этот рисунок:Рисунок к скрипту, и распаковать прямо на c:

Протестировать на этом рисунке в браузере:
3. ArtChemist - 09 Августа, 2013 - 15:02:49 - перейти к сообщению
Большое спасибо, все дело в точке с запятой, хотя не расширенная версия прекрасно работала и с ней.
4. Kibor - 09 Августа, 2013 - 16:04:10 - перейти к сообщению
Нет нет. Найден баг. Связан был с выделением памяти при использование короткой и расширенной функции при одном запуске Кибор. Пофикшен. Спасибо за баг ).
5. ArtChemist - 10 Августа, 2013 - 00:20:09 - перейти к сообщению
О, надо же) вот и я внес свой маленький вклад в развитие программы.
6. Kibor - 10 Августа, 2013 - 02:07:18 - перейти к сообщению
Улыбка Обращайтесь.
7. ArtChemist - 11 Августа, 2013 - 14:15:44 - перейти к сообщению
У меня еще возник вопросик, возможна ли запись координат различных изображений в один массив, что бы можно было сортировать их все вместе. Или как нибудь сложить массивы координат разных изображений в один массив.
8. Kibor - 11 Августа, 2013 - 19:52:25 - перейти к сообщению
 ArtChemist пишет:
возможна ли запись координат различных изображений в один массив, что бы можно было сортировать их все вместе. Или как нибудь сложить массивы координат разных изображений в один массив


Массив это ряд простых переменных.
С ними можно производить любые операции по их индексу как и с переменными простыми.

Решение задачи:
CODE:
int all_k;//Общее количество координат
int all_X[100], all_Y[100];//память должна быть выделенна что бы хватило на все координаты

int k1;//количество координат одного рисунка
int X1[20], Y1[20];

int k2;//количество координат второго рисунка
int X2[20], Y2[20];

int k3;//количество координат третьего рисунка
int X3[20], Y3[20];

int n;

all_k=0;

n=0;
j: if (n<k1)
{
all_X[all_k]=X1[n];
all_Y[all_k]=Y1[n];
n++;
all_k++;
goto j;
}

n=0;
j1: if (n<k2)
{
all_X[all_k]=X2[n];
all_Y[all_k]=Y2[n];
n++;
all_k++;
goto j1;
}

n=0;
j2: if (n<k3)
{
all_X[all_k]=X3[n];
all_Y[all_k]=Y3[n];
n++;
all_k++;
goto j2;
}

sort(300, 200, #all_X[0], #all_Y[0], all_k);
9. ArtChemist - 11 Августа, 2013 - 23:14:26 - перейти к сообщению
Здорово, спасибо, побежал пробовать.
10. Kibor - 11 Августа, 2013 - 23:48:14 - перейти к сообщению
Улыбка Обращайтесь. Эту тему закрываю.

Powered by ExBB FM 1.0 Final