ArtChemist |
Отправлено: 09 Августа, 2013 - 18:59:38
|
Участник
Покинул форум
Сообщений всего: 54
Дата рег-ции: Июль 2013
Репутация: 1
|
Написал я скриптик который прекрасно работал пока я не заметил что иногда искомое изображение перекрывается другими элементами игры.
И я решил вместо:
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);
}
После чего когда скрипт доходит до этого места вылетает ошибка
Нажмите для увеличения
|
|
|
Kibor |
Отправлено: 09 Августа, 2013 - 20:38:58
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Какая версия Кибор?
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:
Протестировать на этом рисунке в браузере:
|
|
|
Kibor |
Отправлено: 12 Августа, 2013 - 03:52:25
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
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); |
|
|
|