Всем привет. Столкнулся с проблемой, когда ищу картинку нужного персонажа. Щёлкают по нему, открывается меню, провожу операции, закрываю персонажа. Это я сделал с помощью findimage, проблем особо не возникло, так как первый персонаж был единственный.
Теперь те же операции надо сделать с другим видом персонажей (их два внешне одинаковых, иконки). Как мне прописать условие, чтобы он сначала нашёл первого и провел с ним операции, затем снова просканировал, пропуская уже того, что только что обрабатывал, и нашёл второго (и так далее, если их больше 2), чтобы и с нем провести операции.
Тут многие обычные люди, не волочащие в программировании, так что были бы вот такие примеры очень кстати. Разные варианты условий.
1. dmh - 10 Сентября, 2014 - 02:15:16 - перейти к сообщению
2. dmh - 10 Сентября, 2014 - 11:23:29 - перейти к сообщению
CODE:
int Image_m[100][100];
loadimage (#Image_m[0][0], "C:\settlers\master.bmp");
int PosX_m[2]; int PosY_m[2];
e: if (findimage(1, #Image_m[0][0], 255, #PosX_m[0], #PosY_m[0], 0, 0, 1366, 716, -1)>0){sleep(500);}
else{sleep(1000);goto e;}
loadimage (#Image_m[0][0], "C:\settlers\master.bmp");
int PosX_m[2]; int PosY_m[2];
e: if (findimage(1, #Image_m[0][0], 255, #PosX_m[0], #PosY_m[0], 0, 0, 1366, 716, -1)>0){sleep(500);}
else{sleep(1000);goto e;}
Картинки на экране две, в findimage указано, чтобы искал все.
Значит в массиве PosX_m должно быть два элемента, две координаты X - первой картинки и второй. Поглядел как в С++ читается.
PosX_m[0] - первая координата
PosX_m[1] - вторая координата.
С PosY_m тоже самое.
Значит можно выполнить:
CODE:
mouse(LEFT, PosX_m[0], PosY_m[0]);
Да, верно, мышка щёлкает по первой картинке, координаты в переменных 566 и 397
Но если сделать так (как бы пробую щёлкнуть по второй картинке)
CODE:
mouse(LEFT, PosX_m[1], PosY_m[1]);
То клацает по координатам типа 800 000 000 по X и Y.
Что ж я делаю не так?
(Добавление)
Разобрался, ошибка в том, что в findimage указано искать 1 картинку и останавливать поиск, потому во вторую ячейку по сути пустота вписывалась.