Zireael |
Отправлено: 22 Февраля, 2021 - 11:04:21
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Если имя рабочего окна имеет в своем названии имя персонажа, есть какая то возможность найти это окно без указания части названия?
Можно искать только по классу окна:
CODE:win w = window (-1, "triuiScreen", -1);
if(w)
{
messagebox(w.name);
}
else messagebox("Окно не найдено"); |
|
|
10970 |
Отправлено: 22 Февраля, 2021 - 11:25:21
|
Специалист
Покинул форум
Сообщений всего: 245
Дата рег-ции: Июнь 2019
Откуда: Россия
Репутация: 0
|
спасибо.
(Добавление)
пипец, у меня залипание мозга))
Имеется блок в начале кода, где прописываю все переменные.
вот две которые рассмотрю
int x_прд;
int y_прд;
они напомню в самом начале, и далее по в этом же блоке выполняется проверка экрана на предмет контрольных точек, то есть искомая картинка ищется по всему экрану и ей присваивается значение x_прд y_прд
Далее исходя из этих данных нужно сделать наблюдение нужной картинки и оповещение.
Так вот, x_прд y_прд находится в нижней части экрана, и при контрольном поиске я делаю функцию наводки курсора на эту точку по найденым координатам. Все работает
Но когда я делаю вычисления исходя из x_прд y_прд (там буквально десяток пикселей вверх вниз) то нужный обьект ТОЧНО там находящийся, не находится)))Ни по картинке, ни по цвету пикселей (белый чистый)
Я сделал по другому, убрал поиск второй картинки и вставил блок перемещения мышки по координатам которые вычислил исходя из x_прд y_прд. И курсор переместился в левый верхний угол, ну не совсем а так приблизительно в самый угол.
Хотя я задаю параметры типа
mousemove(x_прд-4, y_прд-100);
mousemove(x_прд+8, y_прд-83);
а координаты x_прд y_прд
x_прд = 600 / y_прд = 520 (они формируются автоматически при поиске контрольки, и находятся правильно)
При выполнении моузе мове , курсор убегает вверх)
КАК ?)))
(Добавление)
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
вот картинка где нужно находит букву "П" исходя из контрольной точки.
Координаты указаны в пред посте.
(Добавление)
Сейчас попробую поменять имя переменных, может что получится. В коде вообще около десятка подобных поисков, и все работает. А вот эту долбанную букву п, или пиксели с ней связанные, не могу отыскать уже больше суток.
(Добавление)
ДТ блин((( пменял имя переменной, посмотрим после дт что получится.
В скрипте ищется около 8 контрольных точек, которые задают переменные. С котороыми потом работает весь скрипт. И он работает)))
КРОМЕ поиска этой злосчастной буквы((( |
|
|
10970 |
Отправлено: 22 Февраля, 2021 - 13:11:24
|
Специалист
Покинул форум
Сообщений всего: 245
Дата рег-ции: Июнь 2019
Откуда: Россия
Репутация: 0
|
картинка очень сложно находится, ввиду постоянной смены фона.
Поэтому я выделил в букве П только левую ногу, там порядка 120 пикселей белого цвета.
От контрольной точки сделал вычисления (вручную на бумаге ) потому что уже голову сломал..
И обьект не находится.
Далее вместо поиска по указаным координатам сделал движения мышкой.
При запуске мышка опускается к контрольке, а потом вместо того чтоб чуть поднятся куда запланировано, едет в самый верх лево)))
Запустилась игра, буду пробовать.
(Добавление)
короче нет, изменение имени переменной не помогло.
Мышка едет вверх и там обозначает две точки. Такой ощущение что эти x_прд y_прд вообще роли не играют, и мышка ставит точки исходя из обычных Х и Y.
хм, чтобы это значило...
(Добавление)
mousemove(x_прд-4, y_прд-100);
mousemove(x_прд+8, y_прд-83);
x_прд y_прд вообще не учитывается.. Почему тогда в других подобных функциях по всему скрипту все работает..... Может быть я синтаксис не правильно как то написал?
mousemove(x_прд-4, y_прд-100); тут все правильно же?
если правильно, то почему мышка сначала находит контрольку, а значит задает параметры x_прд y_прд . А если задает, почему мышка не показывает нужные точки, а рисует их в начале координат? |
|
|
Zireael |
Отправлено: 22 Февраля, 2021 - 13:38:57
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Что я делаю не так?
Первый скрин, начало зоны поиска 352 429.
Т. е. чтобы навести курсор на найденную картинку:
CODE:mousemove(x_xx+352, y_yy+429); |
|
|
10970 |
Отправлено: 22 Февраля, 2021 - 13:44:33
|
Специалист
Покинул форум
Сообщений всего: 245
Дата рег-ции: Июнь 2019
Откуда: Россия
Репутация: 0
|
Zireael пишет: Первый скрин, начало зоны поиска 352 429.
Т. е. чтобы навести курсор на найденную картинку:
это роли не играет. Этот код для поиска контрольки, которая ВСЕГДА находится в этих пределах. Контрольку то находит без проблем))
mousemove(x_xx+352, y_yy+429); этот код перемещает мышку чуть чуть выше контрольки
(Добавление)
то есть Х начала поиска контрольки.
(Добавление)
но ведь ваша строчка должна двигать мышку вообще далеко от контрольки. Как так происходит??
(Добавление)
тааак, то есть если мне надо найти П с использованием контрольки, то я должен вести отсчет не х=0 у=0 , а х-352 у=429, так чтоли? Очевидно что поиск контрольки не присваивает значение переменным хх уу. Или я не так чтото понял?
(Добавление)
Вы меня простите, но у меня чтото не складывается. В блоке поиска контрольных точек, порядка 8 таких поисков с присвоением значений. Эта вот функция поиска предохранителя последняя в списке. Она отрабатывается норм, обьект находится. Но именно в ней значения не присваиваются, а в остальных присваивается нормально. Блин я с ума сойду.. |
|
|
Zireael |
Отправлено: 22 Февраля, 2021 - 13:54:44
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как так происходит??
mousemove перемещает курсор относительно координат 0, 0.
Допустим картинка в координатах 400, 300.
Если findimage будет искать с координат начала зоны поиска 0, 0, то вернёт координаты 400, 300.
Если findimage будет искать с координат начала зоны поиска, к примеру, 100, 50, то вернёт координаты 300, 250. И чтобы навести курсор на найденную картинку нужно прибавить координаты начала зоны поиска, т. е. 100 + 300, 50 + 250.
Цитата: то я должен вести отсчет не х=0 у=0 , а х-352 у=429, так чтоли? Очевидно что поиск контрольки не присваивает значение переменным хх уу.
Да. Примерно так:
CODE:mousemove(x_прд-4+352, y_прд-100+429); |
|
|
|