ivantu |
Отправлено: 14 Августа, 2019 - 09:51:51
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Друзья по умолчанию, в визуальном редакторе есть функция поиска картинки, и там можно указать время для ожидания появления изображения на экране, пытался изучить код, чтоб повторить без ненужных настроек, но там такая каша....
Может кто то подсказать как сделать время ожидания появления картинки, т.е. пока идет время ищем, нашли не дожидаемся указанного времени продолжаем скрипт, либо ждем пока время не вышло, а затем так же продолжаем скрипт. |
|
|
ivantu |
Отправлено: 14 Августа, 2019 - 10:05:04
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Спасибо Владимир!
(Добавление)
Что то туплю..., ругается на отсутсвие переменной "X"
CODE:
findimage_(1, #Image_19[0][0], -1, #x[0], #y[0], 0, 0, 993, 554, 5000, wind);
function findimage_ (int #Image, int fon, int #x, int #y, int xs, int ys, int xf, int yf, int t_wait) {
looptime(t_wait)
{
if findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, wind)>0);
messagebox("Нашли картинку выходим не дожидаясь");
break;
}
}
|
|
|
Zireael |
Отправлено: 14 Августа, 2019 - 11:12:27
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: findimage_(1
function findimage_ (int #Image
Первым параметром передаётся число, а принимается указатель на массив.
В функцию передаёся 11 параметров, а принимается 9.
Цитата: if findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, wind)>0);
messagebox("Нашли картинку выходим не дожидаясь" );
break;
Точка с запятой после if лишняя.
Отсутствуют фигурные скобки. Поэтому break сработает в любом случае.
Их можно не ставить если в условии только одно действие. В данном случае их 2, messagebox и break.
CODE:if findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, wind)>0)
{
messagebox("Нашли картинку выходим не дожидаясь");
break;
}
sleep(10); |
|
|
ivantu |
Отправлено: 14 Августа, 2019 - 11:17:53
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Спасибо всем за помошь, разобрался, захожу чтоб отписаться об этом Zireael уже все расписал, но гордость немного наполняет когда всетаки хватило мозгов самому разобраться )
вот рабочий код:
CODE:
win wind;
int x[512];int y[512];
loop(){
findimage_(#Image_20[0][0], -1, #x[0], #y[0], 0, 0, 993, 554, 5000);
messagebox("5 секунд прошло... ");
pause(500);
}
function findimage_ (int #Image, int fon, int #x, int #y, int xs, int ys, int xf, int yf, int time) {
looptime(time)
{
if (findimage(1, #Image[0][0], fon, #x[0], #y[0], xs, ys, xf, yf, wind)>0){
messagebox("Нашли картинку выходим не дожидаясь");
break;
}
textout(1, 10, 10, "Ждем картинку на экране "+ format(time), 0);
}
}
(Отредактировано автором: 14 Августа, 2019 - 11:27:42) |
|
|
Zireael |
Отправлено: 14 Августа, 2019 - 11:30:53
|
Эксперт
Покинул форум
Сообщений всего: 4467
Дата рег-ции: Нояб. 2017
Репутация: 585
|
В looptime добавьте sleep, чтобы проц не грузило.
Цитата: messagebox("5 секунд прошло... " );
Это если картинка не найдётся. Иначе пройдёт меньше времени.
Цитата: win wind;
Указатель на окно тоже можно передавать. Кстати, поиска окна нет, а в findimage последним параметром используется указатель на окно. |
|
|
ivantu |
Отправлено: 14 Августа, 2019 - 11:40:09
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Zireael пишет: Кстати, поиска окна нет
У меня оно указано забыл скопировать, спасибо большое за поправки.
(Добавление)
Еще последний вопросик, а сильно критично вызывать одну функцию из другой
CODE:function func1 () {
func2();
func3();
} (Отредактировано автором: 14 Августа, 2019 - 11:45:33) |
|
|
|