Zireael |
Отправлено: 23 Апреля, 2023 - 22:00:41
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: -32000, -32000
Вроде бы это окно свернутое на панель задач.
findimage возвращает код ошибки, смотрите что возвращает.
Цитата: 1449, 229, 1449, 671
Зона поиска по X должна быть хотя 1 пиксель. |
|
|
1st |
Отправлено: 24 Апреля, 2023 - 01:50:50
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019
Откуда: Одесса
Репутация: 0
|
Да, большое спасибо, я заметил это уже после отправки сообщения и подумал, что может он просто не видит координаты или указанное окно.
Правда в итоге он всё равно не реагировал, но помогло перезапуск игры на других настройках.
Теперь находит картинку. Но я что-то не могу понять как записать клик или перемещение в центр найденной картинки. Сейчас он уводит либо в верхний левый угол экрана, либо в угол игрового окна, если в конце после координат, добавляю указание окна.
CODE:win w=window (-1, -1, -1, -1, 1920, 1061, -1);
if (w==0){messagebox ("Нет окна");}
activate(w);
pause(1000);
int тест[22][22];
if (load_images()==-1){messagebox (нету картинки);}
тревел();
function тревел()
{
int x, y;
sleep(5000);
while (findimage(1, #тест[0][0], 0, #x, #y, 1787, 714, 1897, 744, 20, 50, 50, 70, 10, 20, 33, 1, w)==1) mousemove(x, y, w);
messagebox ("НЕТ");
pause(12200);
}
function load_images()
{
if (loadimage (#тест[0][0], "C:\Users\gnom\Documents\KB\тест.bmp")<1) return -1;
return 1;
{messagebox (Всё супер);}
}
Я так понимаю, что в целом я могу брать часть когда, вставлять его в визуальном редакторе в блок кода и дальше добавлять какие-то действия. Но хотелось бы разобраться.
Заранее спасибо |
|
|
Zireael |
Отправлено: 24 Апреля, 2023 - 07:34:00
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: уводит либо в верхний левый угол экрана, либо в угол игрового окна
Нужно прибавить кординаты начала поиска.
CODE:mousemove(x+1787, y+714, w);
Чтобы кликнуть в центр картики нужно прибавить половину шинины и высоты этой картинки. |
|
|
1st |
Отправлено: 24 Апреля, 2023 - 20:55:30
|
Прохожий
Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019
Откуда: Одесса
Репутация: 0
|
Zireael пишет: Цитата: уводит либо в верхний левый угол экрана, либо в угол игрового окна
Нужно прибавить кординаты начала поиска.
CODE:mousemove(x+1787, y+714, w);
Чтобы кликнуть в центр картики нужно прибавить половину шинины и высоты этой картинки.
Всё получилось, большое спасибо. |
|
|
Paskuda |
Отправлено: 10 Октября, 2023 - 18:29:02
|
Участник
Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021
Репутация: 0
|
Всем привет, как то странно ведет себя функция findimage() если размер массива превышает размер картинки по Х.
CODE:
int IMG[75][10];
loadimage (#IMG[0][0], D:\kibor_set\Image.bmp"); //Картинка 70х10
int Res=findimage(1, #IMG[0][0], -1, #PosX[0], #PosY[0], 0, 0, 1280, 1024, 20, 20, 20, 20, 20, 20, 80, 1, -1);
Возвращает -4. При этом если указать размер по Y хотя бы на 1рх больше:
отрабатывает нормально.(Отредактировано автором: 10 Октября, 2023 - 18:42:56) |
|
|
neba2101 |
Отправлено: 02 Декабря, 2023 - 13:40:27
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Цитата: Так же в качестве последнего параметра можно указать указатель на двухмерный массив int в котором хранится изображение.
В этом случае будет искаться в нем.
CODE:
findimage(1, #Image[0][0], 16777215, #x[0], #y[0], 0, 0, 50, 50, #image_skrin[?][0][0]);
В массиве картинок нельзя искать? |
|
|
Kibor |
Отправлено: 02 Декабря, 2023 - 14:09:10
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
neba2101 пишет: В массиве картинок нельзя искать?
Такой поиск бессмыслен для получения координат.
Для сканирования группы изображений на наличие в них какого то объекта надо применять такой алгоритм.
CODE:int Image[100][100];
loadimage (#Image[0][0], "D:\Image_find.bmp");
int Image_0[1000][1000];
int PosX, PosY;
for (int n=0; n<100; n++)
{
loadimage (#Image_0[0][0], "D:\Image_"+format(n)+".bmp");
if (findimage(1, #Image[0][0], 0, #PosX, #PosY, 0, 0, imagewidth(#Image_0[0][0]), imageheight(#Image_0[0][0]), #Image_0[0][0]))
{
messagebox ("Нашли в "+format (n));
}
} |
|
|
|