Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Поиск наличия двух картинок одновременно, Поиск наличия двух картинок одновременно
Ahat
сообщение 21.6.2018, 10:22
Сообщение #1


*

Registred
Сообщений: 3
Регистрация: 21.6.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.977
Возраст: 38



Привет!

Подскажите, пожалуйста, как искать одновременно две картинки на экране и применять к ним условия?
Пока что написал стартовый скрипт поиска и вывода хинта о том, что на экране найдены две картинки.
А как теперь к ним разные условия прилепить? Например, если две картинки рядом?

set #startX 0
set #startY 0
set #endX 1920
set #endY 1080
set $a findimage (#startX #startY #endX #endY (images\cash_cut.bmp) %coordscash 2)
set $b findimage (#startX #startY #endX #endY (images\magic_cut.bmp) %coordsmagic 2)
if $a>0 AND $b>0
hint Zdes' dvoe!
wait 3s
end_if
wait 3s
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 21.6.2018, 11:49
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Например, если две картинки рядом?

В массиве %coordscash хранятся координаты первой картинки, в %coordsmagic второй. Сравнивайте их.
Код
if  $a>0 AND $b>0
    hint Zdes' dvoe!

    set #a1 %coordscash [1 1] - %coordsmagic [1 1]   // Разница между координатами X
    set #a2 %coordscash [1 2] - %coordsmagic [1 2]   // Разница между координатами Y
    log abs(#a1)    abs(#a2)   // abs это модуль числа

    if abs(#a1) < 50 and abs(#a2) < 50   // если разница между координатами X и Y меньше 50 (указать нужное значение)
        log Картинки рядом
    else
        log Картинки не рядом
    end_if

    wait 3s
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ahat
сообщение 21.6.2018, 17:37
Сообщение #3


*

Registred
Сообщений: 3
Регистрация: 21.6.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.977
Возраст: 38



Спасибо. Написал скрипт для поиска картинок в определённых зонах.
Но почему-то ругается на неверный синтаксис в case 100. Как сделать множественную проверку условий?

Код
//if 1140, 419 11325666 //ждем появления кнопки
//wait 2s
//left 1186, 421 //нажимаем на поиск

//ищем аватары как у =1= и ~2~
set #Result1 FindImage (645 405 1255 495 (C:\Users\HOSTUSER\pilot\images\cash_cut3.bmp) %ResultArray1 2)
set #Result2 FindImage (645 405 1255 495 (C:\Users\HOSTUSER\pilot\images\magic_cut3.bmp) %ResultArray2 2)
set #n #Result1 + #Result2

switch #n
    case 0: hint Nobody!               //ни одного, ни второго не нашли
        move 1175 445
        wait 9s
        left 1175 445                   //кликаем в 4-й аватар
        wait 2s
        break
    case 100: hint 1 of 2!
            if (%ResultArray1 [1 1] or %ResultArray2 [1 1]) > 958    //нашли одного из двух
                move 1015 445
                wait 9s
                left 1015 445           // если в 4-м аватаре c или m, кликаем на 3-м аватаре
              else
                move 1175 445
                wait 9s
                left 1175 445          //кликаем в 4-й аватар
                wait 2s
                end_if
        break
    case 200: hint Both!
            if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 1064338 //если оба в 3 и 4, умножаем координаты X для аваторов 3 и 4
              move 864 445
              wait 9s
              left 864 445              //кликаем на 2-м аватаре
              wait 2s
                if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 527124 //если оба в 1 и 2, умножаем координаты для 1 и 2
                    move 1015 445
                    wait 9s
                    left 1015 445       //кликаем на 3-м аватаре
                    wait 2s
                        if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 772148 //если один в 2, другой в 3
                            move 1175 445
                            wait 9s
                            left 1175 445          //кликаем в 4-й аватар
                            wait 2s
                               if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 726594 //если один в 1, другой в 4
                                    move 1015 445
                                    wait 9s
                                    left 1015 445       //кликаем на 3-м аватаре
                                    wait 2s
                                        if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 895466
                                            move 1015 445
                                            wait 9s
                                            left 1015 445       //кликаем на 3-м аватаре
                                            wait 2s
                                                if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 626532
                                                    move 1175 445
                                                    wait 9s
                                                    left 1175 445          //кликаем в 4-й аватар
                                                    wait 2s
                                                end_if
                                        end_if
                                end_if
                        end_if
                end_if
            end_if
        break
end_switch
end_if
wait 10s


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Ahat
сообщение 21.6.2018, 19:33
Сообщение #4


*

Registred
Сообщений: 3
Регистрация: 21.6.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.977
Возраст: 38



Цитата(cirus @ 21.6.2018, 11:49) *

В массиве %coordscash хранятся координаты первой картинки, в %coordsmagic второй. Сравнивайте их.
Код

    set #a1 %coordscash [1 1] - %coordsmagic [1 1]   // Разница между координатами X



Разницу не считает! Выводит ошибку Access Violation...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 22.6.2018, 1:33
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
if (%ResultArray1 [1 1] or %ResultArray2 [1 1]) > 958 //нашли одного из двух

Надо так:
Код
if %ResultArray1 [1 1] > 958 or %ResultArray2 [1 1] > 958

Цитата
if %ResultArray1 [1 1] * %ResultArray2 [1 1] = 1064338 //если оба в 3 и 4, умножаем координаты X для аваторов 3 и 4

Вычисления в условиях не допускаются. Используйте доп. переменную.
Код
set #x %ResultArray1 [1 1] * %ResultArray2 [1 1]
if #x = 1064338
    // какие-то действия
end_if

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 1:16
Designed by Nickostyle