Kensi |
Отправлено: 17 Октября, 2018 - 14:54:20
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
Работаю в визуальном редакторе. Набросал бота для игры, но кусок функции не работает. А именно та часть, которая отвечает за поиск изображения.
Суть алгоритма: в заданной области может появиться одно из 4х изображений. Изображения одинаковые по размеру, но с разным фоном. Функция должна проверить область на наличие одного из 4х изображений и если там нет ни одного из них, то нужно кликнуть на эту область, а если какое то из 4х есть, то пропустить эту область и перейти к поиску в другой.
Зоны поиска у меня находятся в 4х массивах. 2 массива координат на левую верхнюю точку, 2 массива координат на нижнюю правую. Всего зон поиска 15 штук. Поэтому в массивах у меня по 15 значений. Все 4 массива я объявил в стартовом блоке, как массивы типа int. Далее я создал блок когда, где прописал их:
CODE:
flagArrayTopX[0] = 813; flagArrayTopY[0] = 67;
flagArrayTopX[1] = 652; flagArrayTopY[1] = 257;
flagArrayTopX[2] = 976; flagArrayTopY[2] = 257;
flagArrayTopX[3] = 490; flagArrayTopY[3] = 439;
flagArrayTopX[4] = 814; flagArrayTopY[4] = 439;
flagArrayTopX[5] = 1136; flagArrayTopY[5] = 439;
flagArrayTopX[6] = 329; flagArrayTopY[6] = 623;
flagArrayTopX[7] = 651; flagArrayTopY[7] = 623;
flagArrayTopX[8] = 976; flagArrayTopY[8] = 623;
flagArrayTopX[9] = 1299; flagArrayTopY[9] = 623;
flagArrayTopX[10] = 167; flagArrayTopY[10] = 810;
flagArrayTopX[11] = 490; flagArrayTopY[11] = 810;
flagArrayTopX[12] = 814; flagArrayTopY[12] = 810;
flagArrayTopX[13] = 1137; flagArrayTopY[13] = 810;
flagArrayTopX[14] = 1461; flagArrayTopY[14] = 810;
flagArrayBottomX[0] = 1103; flagArrayBottomY[0] = 244;
flagArrayBottomX[1] = 944; flagArrayBottomY[1] = 433;
flagArrayBottomX[2] = 1265; flagArrayBottomY[2] = 433;
flagArrayBottomX[3] = 782; flagArrayBottomY[3] = 618;
flagArrayBottomX[4] = 1106 ; flagArrayBottomY[4] = 618;
flagArrayBottomX[5] = 1428; flagArrayBottomY[5] = 618;
flagArrayBottomX[6] = 620; flagArrayBottomY[6] = 805;
flagArrayBottomX[7] = 944; flagArrayBottomY[7] = 805;
flagArrayBottomX[8] = 1268; flagArrayBottomY[8] = 805;
flagArrayBottomX[9] = 1590; flagArrayBottomY[9] = 805;
flagArrayBottomX[10] = 456; flagArrayBottomY[10] = 990;
flagArrayBottomX[11] = 780; flagArrayBottomY[11] = 990;
flagArrayBottomX[12] = 1106; flagArrayBottomY[12] = 990;
flagArrayBottomX[13] = 1430; flagArrayBottomY[13] = 990;
flagArrayBottomX[14] = 1753; flagArrayBottomY[14] = 990;
Точность координат проверил и переписал дважды.
Блок схема функции:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Мессаджбоксы вывел для себя, чтобы найти убедиться в проблеме, вот как должно быть в готовом боте:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Что тут происходит: После начала функции, курсор мыши уводится в сторону, где точно не будет искомой картинки, чтобы не помешать поиску. Потом создаю индекс с нулевым значением, для того чтобы использовать его в поиске изображений. Далее в первой зоне поиска я ищу картинку, если ее там нет, ищу следующую и так до 4й картинки, если ни одна из 4х картинок не была найдена, нужно нажать на эту область. (координаты центров областей также в массивах), а если хоть одна из 4х картинок была найдена то, то нужно прекратить поиск и начать поиск в следующей области (делаю через i++).
Зоны поиска картинки для функции поиска обозначаю так:
CODE:flagArrayTopX[i] flagArrayTopY[i] flagArrayBottomX[i] flagArrayBottomY[i]
На первой итерации i = 0, что соответствует первой зоне поиска, если я ничего не путаю)
Устанавливаю такие свойства функции:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Суть проблемы: в том, что бот тупо игнорирует наличие картинки в области поиска. Касается всех 4х картинок, которые там могут появиться. Бот действует так, будто их нет и нажимает на текущую область, чего делать не нужно. В варианте с мессаджбоксами, где при нахождении картинки должно быть появиться соответствующее окно, сообщений не было. Думал, что проблема с координатами точек для области поиска и перепроверил их, немного увеличив зону поиска. Не помогло. При записи координат приложение, в котором будет работать бот, растягиваю на весь экран, так что смещений быть не может. Может быть проблема в логике. Да и клик по нужной области происходит верно на каждой итерации, значит дело точно не в координатах. Мне кажется, что блок схему мог составить неправильно, но как сделать "так, как нужно" не знаю.
Сделал сегодня тестовый вариант. Область поиска прописал конкретно в цифрах. Так же все 4 картинки в ней искались и должны были вывестись сообщения о нахождении какой либо из них. Нужная картинка нашлась и вывелось соответствующее сообщение.... После этого понимаю, что проблема на поверхности, но не могу понять в чем именно.
Надеюсь, ничего не забыл. Код бота и функции в отдельности не стал прикладывать, но если нужно кину. Помогите разобраться, плиз) |
|
|
Kensi |
Отправлено: 17 Октября, 2018 - 15:19:43
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
konctantin777 пишет: У блока логики вариант "нет" не увидел...
где увеличивается индекс? там вариант "нет" не нужен в моем случае. за 15 итераций функция 100% завершит свою работу. Или я чего то не понимаю?...(Отредактировано автором: 17 Октября, 2018 - 15:20:03) |
|
|
konctantin777 |
Отправлено: 17 Октября, 2018 - 16:09:10
|
Эксперт
Покинул форум
Сообщений всего: 1168
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
Kensi пишет: konctantin777 пишет: У блока логики вариант "нет" не увидел...
где увеличивается индекс? там вариант "нет" не нужен в моем случае. за 15 итераций функция 100% завершит свою работу. Или я чего то не понимаю?...
Обычно предупреждает, что это ошибка и надо исправить.. |
|
|
Kensi |
Отправлено: 18 Октября, 2018 - 05:49:54
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
Kibor пишет: Какие координаты?
Экранные, оконные, контрол? Как привязывался скрипт?
Короче проверяйте что бы координаты соответствовали.
Приложение перед считыванием координат растягивал на весь экран (и тестирую бота так же, разрешение фул хд всегда, масштабируемость экрана поставил стандартную 100% (без увеличения), работаю в 10 винде.) Координаты считывал с такими настройками шпиона:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
В визуальном редакторе стоит "без привязки".
Сегодня изменил блок схему, чтобы перед сканированием области выводился messagebox с координатами. Написал так:
CODE:messagebox(flagArrayTopX[i], flagArrayTopY[i], flagArrayBottomX[i], flagArrayBottomY[i]);
Измененная блок схема
При тесте появилось такое сообщение:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Координаты все совпадают с первой областью сканирования. Только не ясно почему ошибка. |
|
|
Kensi |
Отправлено: 18 Октября, 2018 - 11:32:58
|
Прохожий
Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2018
Репутация: 0
|
Dantes3000 пишет: Kensi , messagebox(format(flagArrayTopX[i]), format(flagArrayTopY[i]), format(flagArrayBottomX[i]), format(flagArrayBottomY[i]));
messagebox() принимает string или одиночные переменные int.
Ну еще кучу чего принимает, в справке по этой функции достаточно куцо написано
Да бог с ним) messagebox() вывел, чтобы посмотреть какие там координаты точек будут, координаты верные, а картинки не ищутся... В визуальном редакторе при указании точек для функции поиска изображения можно ставить переменные, как в моем случае? я уже не знаю, в чем там может быть дело |
|
|
|