Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - muryginds

Pages: [1]
1
Спасибо! То, что надо.

2
А можно сделать свою функцию, чтобы просто передавать туда свои параметры и вызвать ее в произвольном месте

Code: (clickermann) [Select]
IF_PICTURE_IN ($px1,$py1, $px2,$py2, $picture, -1, 90)
         $wait_level = 1
         WAITMS(500)
         MOVE($_return1+3, $_return2+3)
         WAITMS(500)
         LCLICK($_return1+3, $_return2+3)
END_IF

как альтернативой пользуюсь сейчас метками, но подумал - может есть что-то удобнее?

3
Holy shit! Thanks =)

4
Вот код:

Code: (clickermann) [Select]
$AUTOFIGHT = 0

AUTOFIGHT:
IF $AUTOFIGHT = 0
   wait(10)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (100,750, 173,810, "off.bmp", -1, 75)
      MOVE($_return1+3, $_return2+3)
      WAITMS(100)
      LCLICK($_return1+3, $_return2+3)
   else
      LOGWRITE ("not found - off")
   END_IF
   $AUTOFIGHT = 1
END_IF

Дальше идет код, после исполнения которого идет переход в метку AUTOFIGHT

В моем понимании представленная проверка if else проходит 1 раз при запуске, а при повторном попадании $AUTOFIGHT уже равен 1 и проверка должна пройти мимо. Но этого не происходит и LOGWRITE ("not found - off") всплывает несколько раз. Вопрос - почему?

5
Понял, всем спасибо. Будем ковырять дальше =)


6
Вот это нежданчик. Работаю удаленно на другом компьютере через teamviewer, похоже, что зараза кликерманн как-то неправильно координаты мыши считывает. Спасибо!


А вот такой вопрос. В начале скрипта есть объявление метки

Code: (clickermann) [Select]
skip:
LevelSearch
wait(4)

Есть кусок кода, в нем цикл и переход на метку LevelSearch

Code: (clickermann) [Select]
$wait_home = 0
WHILE($wait_home = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "home.bmp", -1, 75)
      $wait_home = 1
      MOVE($_return1+3, $_return2+3)
      WAITMS(100)
      LCLICK($_return1+3, $_return2+3)
      GOTO(LevelSearch)
   END_IF
   wait(5)
END_CYC

Вопрос - правильно ли я понял конструкцию переходов? и второй - в случае успешного поиска в цикле - перейдет - ли исполнение сразу на метку или сперва выполнится wait(5)



7
Назрел вопрос вдогонку.

Code: (clickermann) [Select]
GETSCREEN
   COLORMODE(6)
   SCREENSHOT
   SCREENSHOTEX(273,681, 360,709, "ho", 0)

Делаю скриншот приложения и его фрагмент. Фрагмент статичный. В первом случае текст есть - во втором - сами видите. Скрипт привязан к окну

Скрин - https://yadi.sk/i/Knd3vZ6rkZ8Nn
Фрагмент - https://yadi.sk/i/L5RxiL-bkZ8Mh - это часть кнопки, где размещено слово "домой"

8
я примерно так это себе и представил

на 75% нашел 56 вместо 54
на 80% нашел 54 - 1 раз, при следующем запуске - прошел мимо. прямо чудиса =)

попробую с искомой картинкой поиграть

П.С. усе, заработало! спасибо. картинку перевырезал

9
Может и поможет... только без анализа, выставленное на обум - не всегда. Наверно 95 слишком высокий процент.
Но при сглаживании текста одним процентом ничего не добиться. Слишком много пикселов меняется (в процентном соотношении). А выставлять 50%...40%... приведёт к нахождению чего попало там где его нет. Рабочий промежуток примерно 70-100%

Понятно, спасибо что доступно объяснили =)

а вы переделали картинку уровня после светокоррекции или просто рамки подрезали?

10
Не совсем понял вопрос про логику, почему картинка меняется?
95 - это же точность поиска. Прочитал в справке - думал, может поможет найти

в любом случае спасибо большое за подсказку -  вечером попробую!

11
Да, это я опечатался, вместо 40 должно быть 940. Но ситуацию это не спасает - немного изменил код и добавил в него GETSCREEN.

Code: (clickermann) [Select]
$wait_like = 0
WHILE($wait_like = 0)
   GETSCREEN
   SCREENSHOT
   IF_PICTURE_IN (400,75, 470,940, "level.bmp")
      $wait_like = 1
      MOVE($_return1+3, $_return2+3)
      WAITMS(60)
LCLICK($_return1+3, $_return2+3)
   Else
      postmessage($_HWND, $WM_LBUTTONDOWN, $MK_LBUTTON, $x1 + ($y1*65536))
      waitms(60)
      postmessage($_HWND, $WM_MOUSEMOVE, $MK_LBUTTON, $x2 + ($y2*65536))
      waitms(60)
      postmessage($_HWND, $WM_LBUTTONUP, $MK_LBUTTON, $x2 + ($y2*65536))
    waitms(2000)
END_IF
END_CYC

Вот что получилось после первой итерации - https://yadi.sk/i/Z8A_G0MXkXSWQ
Вот что после второй - https://yadi.sk/i/CzFnCHJUkXSWW

По логике цикл должен закончится и картинка найтись на второй итерации, но он идет дальше - не пойму в чем причина

12
Собственно код

$WM_LBUTTONDOWN = 0x0201 // Левая кнопка мыши зажата
$WM_LBUTTONUP = 0x0202 // Левая кнопка мыши отпущена
$MK_LBUTTON = 0x0001 // Левая кнопка мыши в нажатом состоянии
$WM_MOUSEMOVE = 0x0200  // Мышь передвинута
$x1 = 400 // Координата по оси X Начало
$y1 = 950 // Координата по оси Y
$x2 = 400 // Координата по оси X Конец
$y2 = 138 // Координата по оси Y

$wait_like = 0
WHILE($wait_like = 0)
   GETSCREEN
   IF_PICTURE_IN (400,75, 470,40, "level.bmp", -1, 95)
      $wait_like = 1
      MOVE($_return1+3, $_return2+3)
      WAITMS(60)
      LCLICK($_return1+3, $_return2+3)
      MOVE($_xmax,$_ymax)
      WAITMS(1000)
   Else //прокрутить немного
      postmessage($_HWND, $WM_LBUTTONDOWN, $MK_LBUTTON, $x1 + ($y1*65536))
      waitms(60)
      postmessage($_HWND, $WM_MOUSEMOVE, $MK_LBUTTON, $x2 + ($y2*65536))
      waitms(60)
      postmessage($_HWND, $WM_LBUTTONUP, $MK_LBUTTON, $x2 + ($y2*65536))
   END_IF
END_CYC

Суть задачи - поиск по заданному диапазону нужной картинки, при совпадении нажать. Если не нашло - чуть-чуть промотать вниз.

Проблема - не находит искомую картинку level.bmp - постоянно в цикле. Скрипт работает в оконном режиме (привязан к окну) Есть подозрение, что в GETSCREEN попадает что-то не то, как проверить не знаю.

Скриншот экрана с приложением - https://yadi.sk/i/EauGIzYtkXKu4

Pages: [1]