Author Topic: Неверно вычисляет координаты IF_PICTURE_IN  (Read 3364 times)

0 Members and 1 Guest are viewing this topic.

Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
Написал бота, на том компе где написан скрипт все отлично работает. Для максимальной совместимости прикрутил коррекцию цветов и снизил точность поиска картинок до 70%
Принес на рабочий комп - не отрабатывает все нажатия. Вычислил где, не пойму почему. Прошу помощи.
Для начала в этой подпрограмме:
Code: (clickermann) [Select]
$donat = 2 // 0 - не скидываем, 1 - только бабло, 2 - бабло и ресы, 3 - только ресы
SUB(donate) // скидываем награбленное в клановую казну
   IF($donat > 0)
      coord() // сверяем координаты, если сместилось корректируем с помощью $x и $y (по умолчанию они = 0)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (253+$x,569+$y, 355+$x,764+$y, "1.bmp", -1, 70) // страница клана
         LCLICK($_return1, $_return2)
         waiting() // ждем прогрузки страницы
      END_IF
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (448+$x,627+$y, 600+$x,848+$y, "2.bmp", -1, 70) // казна клана
         LCLICK($_return1, $_return2)
         waiting() // ждем прогрузки страницы
      END_IF
      FOR($a=0, $a < 10) // перемотка экрана вниз
         KEYPRESS(#DOWN)
         WAITMS(300)
      END_CYC
      WAITMS(500)
         GETSCREEN
         COLORMODE(6)
      IF(($donat = 1) | ($donat = 2))
         IF_PICTURE_IN (357+$x,438+$y, 600+$x,631+$y, "plus.bmp", -1, 70) // плюсик рядом с окном ввода суммы бабла чтобы положить сразу все из кармана
            LCLICK($_return1, $_return2)
            WAIT(1)
         END_IF
      END_IF
      IF(($donat = 2) | ($donat = 3))
         IF_PICTURE_IN (587+$x,438+$y, 840+$x,631+$y, "plus.bmp", -1, 70) // плюсик рядом с окном ввода суммы ресурса чтобы положить сразу все из кармана
            LCLICK($_return1, $_return2)
            WAIT(1)
         END_IF
      END_IF
      IF_PICTURE_IN (557+$x,445+$y, 875+$x,724+$y, "down.bmp", -1, 70) // кнопка ОК
         LCLICK($_return1, $_return2)
         waiting()
      END_IF
      KEYPRESS(#HOME) //если не сработает то поднять страницу в исходное для работы следующих подпрограмм
      WAITMS(500)
      PRINT("скинул ништяки") // контролим в логе по отчетам где затык
      waiting()
   END_IF
END_SUB

Изначально работает в привязке к окну, но тут для выявления проблемы привязку отключил, координаты поправил. Чтобы видеть куда приходит курсор для клика.

Первую и вторую картинки находит и по кнопкам отрабатывает.
Вниз экран скроллит.
По плюсикам - картинки находит, но кликает уже на 1-1,5см левее и выше этих кнопок.
По кнопке ОК не кликает, находит ее или нет я не понял.
« Last Edit: December 03, 2014, 10:52:41 AM by Kedrick »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Неверно вычисляет координаты IF_PICTURE_IN
« Reply #1 on: December 03, 2014, 10:52:54 AM »
Может с процентом переборщил? Вот и находит левое.


Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
Re: Неверно вычисляет координаты IF_PICTURE_IN
« Reply #2 on: December 03, 2014, 11:02:27 AM »
Начал сперва без колормода но с 80% - не работает.
Прикрутил колормод и переделал картинки - не работает.
Начал крутить точность и докрутил уже до 70.
Дома все работает, в любом раскладе.
Коррекцию координат отключал, все десять раз перепроверил, но что-то видимо упустил, или комп тут особенный.

Kedrick

  • Освоившийся
  • **
  • Posts: 70
    • View Profile
Re: Неверно вычисляет координаты IF_PICTURE_IN
« Reply #3 on: December 03, 2014, 11:36:52 AM »
Приблизительно разобрался
Часть картинок нормально находится и при 100%, часть только при 90, пресловутые плюсики только при 80% находит уверенно, еще часть картинок при 70% :(

Не получится так универсального бота нарисовать, если на каждом другом компе придется со всеми картинками так выёживаться и регулировать. А тупо на каждом компе по новой свои картинки мутить, это тоже геморняк, ибо некоторые картинки (на попапах) ловить приходится по несколько дней, пока все условия совпадут и оно выскочит, какие-то картинки только в полночь появляются, а сидеть каждый раз до полуночи так и бот нафиг не нужен - раз сидишь то и руками потыкаешь.

Буду много думать, как это обойти/решить красиво.

На Ацтулзе я заставлял пользователя при запуске указывать "нулевую точку" в окне игры, от которой скрипт рассчитывал все точки для кликов и тупо без картинок кликал. Но не хочется и тут такое применять, ибо именно от этого я сюда и ушел для быстрого поиска по картинкам :)