Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Hito on October 17, 2016, 04:19:54 PM

Title: Верю - Clickermann сможет! ))
Post by: Hito on October 17, 2016, 04:19:54 PM
Ребят, бьюсь над ловлей тригера уже более двух суток. На видео сначала появляется тригер, который просто нужно теребить вправо-влево. С ним проблем нет. У него на раскадровке просто несколько положений и их можно поймать. Проблем с ним нет потому, что поймав одно из положений, нам не нужно гадать - в какую сторону им теребить, а просто вызываем:
[spoiler]
Code: (clickermann) [Select]
SUB(t_triger)
   $var=0
   WHILE($var < 15)
      KEYPRESS(#A)
      WAITMS(30)
      KEYPRESS(#D)
      WAITMS(30)
      $var=$var+1
   END_CYC
END_SUB
[/spoiler]

В этом случае все работает. На видео с этим как раз справляется кликер.
А вот в конце видео появляется тригер, который нужно крутить, вызвав:
[spoiler]
Code: (clickermann) [Select]
SUB(n_po_chas_p)
   KEYDOWN(#D)
   WAITMS(30)
   KEYDOWN(#S)
   WAITMS(30)
   KEYUP(#D)
   WAITMS(30)
   KEYDOWN(#A)
   WAITMS(30)
   KEYUP(#S)
   WAITMS(30)
   KEYDOWN(#W)
   WAITMS(30)
   KEYUP(#A)
   WAITMS(30)
   KEYDOWN(#D)
   WAITMS(30)
   KEYUP(#W)
   WAITMS(30)
   KEYDOWN(#S)
   WAITMS(30)
   KEYUP(#D)
   WAITMS(30)
   KEYDOWN(#A)
   WAITMS(30)
   KEYUP(#S)
   WAITMS(30)
   KEYUP(#A)
   WAITMS(30)
END_SUB
[/spoiler]

Но в этом случае кликеру мало - понять, что картинка с тригером появилась.
Его еще нужно заставить понять - в какую именно сторону крутить этот тригер.

Вот видео:
https://youtu.be/UgaclIzHo8M (https://youtu.be/UgaclIzHo8M)

Вот раскадровка нужного момента, так сказать - от и до:
[spoiler](http://f3.s.qip.ru/~17zmt2zpg.png) (http://shot.qip.ru/00R6pv-317zmt2zpg/)
(http://f6.s.qip.ru/~17zmt2zpk.png) (http://shot.qip.ru/00R6pv-617zmt2zpk/)
(http://f6.s.qip.ru/~17zmt2zpl.png) (http://shot.qip.ru/00R6pv-617zmt2zpl/)
(http://f5.s.qip.ru/~17zmt2zpm.png) (http://shot.qip.ru/00R6pv-517zmt2zpm/)
(http://f5.s.qip.ru/~17zmt2zpo.png) (http://shot.qip.ru/00R6pv-517zmt2zpo/)
(http://f3.s.qip.ru/~17zmt2zpq.png) (http://shot.qip.ru/00R6pv-317zmt2zpq/)
(http://f5.s.qip.ru/~17zmt2zps.png) (http://shot.qip.ru/00R6pv-517zmt2zps/)
(http://f6.s.qip.ru/~17zmt2zpt.png) (http://shot.qip.ru/00R6pv-617zmt2zpt/)
(http://f1.s.qip.ru/~17zmt2zpv.png) (http://shot.qip.ru/00R6pv-117zmt2zpv/)
(http://f1.s.qip.ru/~17zmt2zpw.png) (http://shot.qip.ru/00R6pv-117zmt2zpw/)
(http://f6.s.qip.ru/~17zmt2zpx.png) (http://shot.qip.ru/00R6pv-617zmt2zpx/)
(http://f1.s.qip.ru/~17zmt2zpy.png) (http://shot.qip.ru/00R6pv-117zmt2zpy/)
(http://f3.s.qip.ru/~17zmt2zpz.png) (http://shot.qip.ru/00R6pv-317zmt2zpz/)
(http://f2.s.qip.ru/~17zmt2zpA.png) (http://shot.qip.ru/00R6pv-217zmt2zpA/)
(http://f3.s.qip.ru/~17zmt2zpB.png) (http://shot.qip.ru/00R6pv-317zmt2zpB/)
(http://f6.s.qip.ru/~17zmt2zpC.png) (http://shot.qip.ru/00R6pv-617zmt2zpC/)
(http://f5.s.qip.ru/~17zmt2zpD.png) (http://shot.qip.ru/00R6pv-517zmt2zpD/)
(http://f3.s.qip.ru/~17zmt2zpE.png) (http://shot.qip.ru/00R6pv-317zmt2zpE/)
(http://f2.s.qip.ru/~17zmt2zpG.png) (http://shot.qip.ru/00R6pv-217zmt2zpG/)
(http://f5.s.qip.ru/~17zmt2zpH.png) (http://shot.qip.ru/00R6pv-517zmt2zpH/)
(http://f5.s.qip.ru/~17zmt2zpJ.png) (http://shot.qip.ru/00R6pv-517zmt2zpJ/)
(http://f4.s.qip.ru/~17zmt2zpK.png) (http://shot.qip.ru/00R6pv-417zmt2zpK/)
(http://f5.s.qip.ru/~17zmt2zpM.png) (http://shot.qip.ru/00R6pv-517zmt2zpM/)
(http://f1.s.qip.ru/~17zmt2zpN.png) (http://shot.qip.ru/00R6pv-117zmt2zpN/)
(http://f4.s.qip.ru/~17zmt2zpO.png) (http://shot.qip.ru/00R6pv-417zmt2zpO/)
(http://f6.s.qip.ru/~17zmt2zpP.png) (http://shot.qip.ru/00R6pv-617zmt2zpP/)
(http://f6.s.qip.ru/~17zmt2zpQ.png) (http://shot.qip.ru/00R6pv-617zmt2zpQ/)
(http://f5.s.qip.ru/~17zmt2zpR.png) (http://shot.qip.ru/00R6pv-517zmt2zpR/)
(http://f4.s.qip.ru/~17zmt2zpS.png) (http://shot.qip.ru/00R6pv-417zmt2zpS/)
(http://f5.s.qip.ru/~17zmt2zpT.png) (http://shot.qip.ru/00R6pv-517zmt2zpT/)
(http://f3.s.qip.ru/~17zmt2zpU.png) (http://shot.qip.ru/00R6pv-317zmt2zpU/)
(http://f3.s.qip.ru/~17zmt2zpV.png) (http://shot.qip.ru/00R6pv-317zmt2zpV/)
(http://f4.s.qip.ru/~17zmt2zpW.png) (http://shot.qip.ru/00R6pv-417zmt2zpW/)
(http://f5.s.qip.ru/~17zmt2zpX.png) (http://shot.qip.ru/00R6pv-517zmt2zpX/)
(http://f3.s.qip.ru/~17zmt2zpY.png) (http://shot.qip.ru/00R6pv-317zmt2zpY/)[/spoiler]

Я пробовал поймать по стрелке под тригером, но она - гадина, полупрозрачная и в режиме COLORMODE(6) выглядит вот так:
[spoiler](http://f3.s.qip.ru/~17zmt2zq2.png) (http://shot.qip.ru/00R6pv-317zmt2zq2/)
(http://f5.s.qip.ru/~17zmt2zq3.png) (http://shot.qip.ru/00R6pv-517zmt2zq3/)
(http://f2.s.qip.ru/~17zmt2zq5.png) (http://shot.qip.ru/00R6pv-217zmt2zq5/)
(http://f5.s.qip.ru/~17zmt2zq6.png) (http://shot.qip.ru/00R6pv-517zmt2zq6/)[/spoiler]

Если бы она хотя бы свой цвет не меняла, то проблемы не было бы.
Я много раз сталкивался с проблемами, с которыми, на первый взгляд (а в моем случае,и на второй, и на третий :) ), Clickermann не справится, но всегда оказывалось, что не справлялся не Clickermann, а мои познания в его языке и находчивость. Может есть у кого какие идеи? :)
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 17, 2016, 06:13:45 PM
Здесь бы увидеть эту стрелку на разных фонах.
Как вариант, могу предлжить считать кол-во "рыжих" пикселеи раздельно по этим зонам (см. скрин).
Если больше в синей - крутим по часовой. В зелёной - против.

Но не факт. Может там такие фоны каверзные бывают что почти уравнивают количество по зонам, помимо стрелки.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 17, 2016, 06:23:27 PM
Как вариант, могу предлжить считать кол-во "рыжих" пикселеи раздельно по этим зонам (см. скрин).
Я думал над этим, но вот такая ситуация сводит эту идею на "нет"...
(http://f4.s.qip.ru/~17zmt2zqW.png) (http://shot.qip.ru/00R6pv-417zmt2zqW/)
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 17, 2016, 06:24:57 PM
Тогда считать сумму рыжих и жёлтых. Те цвета что из середины стрелки.
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 17, 2016, 06:30:50 PM
Или проверять несколько контрольных точек. как на картинке. Можно больше. И зеркально на левой половине.
Если все цвета с одной стороны имеют один из двух цветов (рыжий или жёлтый) то стрелка туда.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 17, 2016, 06:37:24 PM
С подсчетом цветов идея пролетает... Я просто устал скрины загружать - там пердоманохль с цветами полный.
А вот мне пришла идея только что - ухватиться как-то за последовательность положений самого тригера... Он цвет не меняет, но можно ли поймать именно ПОСЛЕДОВАТЕЛЬНОСТЬ его положений? Надо пробовать...
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 17, 2016, 07:12:53 PM
Или проверять несколько контрольных точек. как на картинке. Можно больше. И зеркально на левой половине.
Если все цвета с одной стороны имеют один из двух цветов (рыжий или жёлтый) то стрелка туда.
Это для примера -  почему отпадает идея.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 01:24:02 AM
В общем как-то вот, вот так... :)
https://youtu.be/MitNDDx239A (https://youtu.be/MitNDDx239A)

В итоге пришлось все таки пиксели перебирать и красить:
Code: (clickermann) [Select]
FOR($y=$y1,$y<$y2+1)
   FOR($x=$x1,$x<$x2+1)
      $color = pxl($x,$y)
      IF($color = 8372159)
         PXLREPLACE($x,$y,$x,$y,$color,8372223)
      END_IF
      IF($color = 8388607)
         PXLREPLACE($x,$y,$x,$y,$color,8372223)
      END_IF
      IF($color ! 8372223)
         PXLREPLACE($x,$y,$x,$y,$color,0)
      END_IF
   END_CYC
END_CYC

IF_PICTURE_IN ($x1,$y1,$x2,$y2, "screens\u_t_l.bmp", -1, 80)
   $ms2=$_ms
   $chek=0
   SETTHREAD (n_po_chas_p, 1)
ELSE
   IF($_ms > $ms2+100)
      SETTHREAD (n_po_chas_p, 2)
      IF($chek = 0)
         KEYUP(#W)
         KEYUP(#D)
         KEYUP(#S)
         KEYUP(#A)
         $chek = 1
      END_IF
   END_IF
END_IF

Только сами действия (при обнаружении условия), пришлось выкинуть не в подпрограммы, а в потоки, которые запускаются, а потом останавливаются при условии, что нужная картинка не найдена в течении секунды-полторы (на тот случай, если стрелку на мгновение прикрыл тригер). А вообще я конечно херею... Там, где нужно теребить тригер в стороны, чтобы выйти из каменного состояния, у меня в коде стоит:
Code: (clickermann) [Select]
THREAD(t_triger, 0)
   KEYPRESS(#A)
   WAITMS(10)
   KEYPRESS(#D)
   WAITMS(10)
END_THREAD

Если паузу ставишь в 20 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 18, 2016, 09:52:21 AM
Если паузу ставишь в 20 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))

А ты в настройках кликера убрал паузу в 30 мс для KEYPRESS ?
Title: Re: Верю - Clickermann сможет! ))
Post by: dramster on October 18, 2016, 11:05:26 AM
и снова много лишних действий  :D .
можно обойтись без перебтрания всех пикселей. и зачем менять цвета 8372159 и 8388607 на 8372223. можно же их свести в один из уже существующих, в 8372159 или 8388607 (если конечно 8372223 не существующий).
ладно, принцип такой
Code: (clickermann) [Select]
PXLREPLACE($x1,$y1,$x2,$y2,8372159,8388607)
//PXLREPLACE($x1,$y1,$x2,$y2,8372223,8388607)      // это только если 8372223 уже есть на скрине, и тебе нужно учитывать уже существующие цвета 8372223.


//FOR($y=$y1,$y<$y2+1)        //используется только для создания заготовки, которую будем использовать при поиске картинки с использованием игнорируемого цвета 255
//   FOR($x=$x1,$x<$x2+1)
//      $color = pxl($x,$y)
//      IF($color ! 8372223)
//         PXLREPLACE($x,$y,$x,$y,$color,255)
//      END_IF
//   END_CYC
//END_CYC
IF_PICTURE_IN ($x1,$y1,$x2,$y2, "screens\u_t_l.bmp", 255, 80)
//.......
//.......

Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 12:03:09 PM
Если паузу ставишь в 20 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))

А ты в настройках кликера убрал паузу в 30 мс для KEYPRESS ?
Ты про это?
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 12:06:46 PM
и зачем менять цвета 8372159 и 8388607 на 8372223. можно же их свести в один из уже существующих, в 8372159 или 8388607 (если конечно 8372223 не существующий).
Там три цвета ) Два первых я крашу в третий, а третьим условием закрашиваю все, кроме этого третьего цвета.

Code: (clickermann) [Select]
PXLREPLACE($x1,$y1,$x2,$y2,8372159,8388607)
//PXLREPLACE($x1,$y1,$x2,$y2,8372223,8388607)      // это только если 8372223 уже есть на скрине, и тебе нужно учитывать уже существующие цвета 8372223.


//FOR($y=$y1,$y<$y2+1)        //используется только для создания заготовки, которую будем использовать при поиске картинки с использованием игнорируемого цвета 255
//   FOR($x=$x1,$x<$x2+1)
//      $color = pxl($x,$y)
//      IF($color ! 8372223)
//         PXLREPLACE($x,$y,$x,$y,$color,255)
//      END_IF
//   END_CYC
//END_CYC
IF_PICTURE_IN ($x1,$y1,$x2,$y2, "screens\u_t_l.bmp", 255, 80)
//.......
//.......

Я что-то твоей схемы не пойму... У тебя что - вся искомая картинка одним цветом получается?
Не... Ты убрал весь цикл перебора пикслей и у тебя вообще закрашивается только первый пиксель картинки... Или я чего-то не понимаю...?
Так... Я еще не проснулся... Сейчас кофе попью, покурю и попробую вникнуть. Ты тут и цикл свой какой-то впендюрил )) Просто залочил его зачем-то. Ща вкурю ))
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 18, 2016, 12:25:04 PM
Ты про это?
:o

Про это:
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 18, 2016, 12:29:36 PM
Я что-то твоей схемы не пойму... У тебя что - вся искомая картинка одним цветом получается?
Не... Ты убрал весь цикл перебора пикслей и у тебя вообще закрашивается только первый пиксель картинки... Или я чего-то не понимаю...?
PXLREPLACE меняет все пикселы N на M в области. Если область -это не один пиксель, то PXLREPLACE сам себе цикл внутри, который на делфи и который не нужно интерпретировать на каждом проходе.

Вот ты сеешь пшеницу... Зачем сажать по одному зёрнышку если команда позволяет взять в жменю и раскидать?
По одному можно тоже, но ооочень долго.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 12:32:53 PM
Ты про это?
:o

Про это:
Упс... А я в этот файл и не заглядывал никогда... ))) Это что за пауза? Это пауза, между нажатием клавиши и отпусканием, или просто - дополнительная пауза, после KEYPRESS?
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 12:40:30 PM
PXLREPLACE меняет все пикселы N на M в области. Если область -это не один пиксель, то PXLREPLACE сам себе цикл внутри, который на делфи и который не нужно интерпретировать на каждом проходе.

Вот ты сеешь пшеницу... Зачем сажать по одному зёрнышку если команда позволяет взять в жменю и раскидать?
По одному можно тоже, но ооочень долго.
Сорри за тормоза, но для чего в нем тогда координаты указываются? - PXLREPLACE($x1,$y1,$x2,$y2,8372159,8388607) И они же не меняются без цикла...
Аааааа! Это же коры первой и последней точки картинки...!
Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 18, 2016, 12:45:02 PM
Упс... А я в этот файл и не заглядывал никогда... ))) Это что за пауза? Это пауза, между нажатием клавиши и отпусканием, или просто - дополнительная пауза, после KEYPRESS?

Между. Но на общее время влияет.
Для быстрых-быстрых действий нужно править настройку. Я предпочитаю, после скачивания новой версии, сразу её ставить 0, а задержками управлять в скрипте как нужно.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 12:49:38 PM
Между.
Благодарю.
Но на общее время влияет.
Это и ежику понятно )) Если вклинивается 30 мс, то выполнение следующей части скрипта сдвигается )

то PXLREPLACE сам себе цикл внутри, который на делфи и который не нужно интерпретировать на каждом проходе.
Иными словами - в цикле:
Code: (clickermann) [Select]
FOR($y=$y1,$y<$y2+1)
   FOR($x=$x1,$x<$x2+1)
      $color = pxl($x,$y)
      IF($color = 8372159)
         PXLREPLACE($x,$y,$x,$y,$color,8372223) // Тут мы зачем-то запускаем еще и внутренний цикл каждый раз?
      END_IF
   END_CYC
END_CYC

Ептыть...! А почему у меня раньше не возникло вопроса - почему в команде PXLREPLACE четыре координаты, а не две...?
Тогда вот так вот получается?
Code: (clickermann) [Select]
PXLREPLACE($x1,$y1,$x2,$y2,8372159,8372223)
PXLREPLACE($x1,$y1,$x2,$y2,8388607,8372223)

FOR($y=$y1,$y<$y2+1)
   FOR($x=$x1,$x<$x2+1)
      $color = pxl($x,$y)
      IF($color ! 8372223)
         PXLREPLACE($x,$y,$x,$y,$color,0)
      END_IF
   END_CYC
END_CYC
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 02:36:23 PM
Ну вообще здорово... Этот эмулятор PS2 еще и картинки меняет что ли...? Вчера картинка на шляпке тригера была одной, а сегодня другая... И сегодня все, что работало вчера, не работает...

Title: Re: Верю - Clickermann сможет! ))
Post by: Vint on October 18, 2016, 03:36:51 PM
А размер окна тот же? Может потянул.
Title: Re: Верю - Clickermann сможет! ))
Post by: Hito on October 18, 2016, 04:03:28 PM
А размер окна тот же? Может потянул.
Да не - все то же самое... Даже по скринам видно, что размер-то "болта" тот же самый...