Author Topic: Верю - Clickermann сможет! ))  (Read 5149 times)

0 Members and 3 Guests are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Верю - Clickermann сможет! ))
« 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

Вот раскадровка нужного момента, так сказать - от и до:
[spoiler]

































[/spoiler]

Я пробовал поймать по стрелке под тригером, но она - гадина, полупрозрачная и в режиме COLORMODE(6) выглядит вот так:
[spoiler]


[/spoiler]

Если бы она хотя бы свой цвет не меняла, то проблемы не было бы.
Я много раз сталкивался с проблемами, с которыми, на первый взгляд (а в моем случае,и на второй, и на третий :) ), Clickermann не справится, но всегда оказывалось, что не справлялся не Clickermann, а мои познания в его языке и находчивость. Может есть у кого какие идеи? :)
« Last Edit: October 17, 2016, 04:28:25 PM by Hito »
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #1 on: October 17, 2016, 06:13:45 PM »
Здесь бы увидеть эту стрелку на разных фонах.
Как вариант, могу предлжить считать кол-во "рыжих" пикселеи раздельно по этим зонам (см. скрин).
Если больше в синей - крутим по часовой. В зелёной - против.

Но не факт. Может там такие фоны каверзные бывают что почти уравнивают количество по зонам, помимо стрелки.
« Last Edit: October 17, 2016, 06:23:31 PM by Vint »


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #2 on: October 17, 2016, 06:23:27 PM »
Как вариант, могу предлжить считать кол-во "рыжих" пикселеи раздельно по этим зонам (см. скрин).
Я думал над этим, но вот такая ситуация сводит эту идею на "нет"...
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #3 on: October 17, 2016, 06:24:57 PM »
Тогда считать сумму рыжих и жёлтых. Те цвета что из середины стрелки.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #4 on: October 17, 2016, 06:30:50 PM »
Или проверять несколько контрольных точек. как на картинке. Можно больше. И зеркально на левой половине.
Если все цвета с одной стороны имеют один из двух цветов (рыжий или жёлтый) то стрелка туда.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #5 on: October 17, 2016, 06:37:24 PM »
С подсчетом цветов идея пролетает... Я просто устал скрины загружать - там пердоманохль с цветами полный.
А вот мне пришла идея только что - ухватиться как-то за последовательность положений самого тригера... Он цвет не меняет, но можно ли поймать именно ПОСЛЕДОВАТЕЛЬНОСТЬ его положений? Надо пробовать...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #6 on: October 17, 2016, 07:12:53 PM »
Или проверять несколько контрольных точек. как на картинке. Можно больше. И зеркально на левой половине.
Если все цвета с одной стороны имеют один из двух цветов (рыжий или жёлтый) то стрелка туда.
Это для примера -  почему отпадает идея.
« Last Edit: October 17, 2016, 07:17:20 PM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #7 on: October 18, 2016, 01:24:02 AM »
В общем как-то вот, вот так... :)
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 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #8 on: October 18, 2016, 09:52:21 AM »
Если паузу ставишь в 20 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))

А ты в настройках кликера убрал паузу в 30 мс для KEYPRESS ?


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #9 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)
//.......
//.......


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #10 on: October 18, 2016, 12:03:09 PM »
Если паузу ставишь в 20 мс, то уже не всегда успеваешь выжить. Это попа... Я помню, как на этом боссе я сутки ломал джойстик... ))

А ты в настройках кликера убрал паузу в 30 мс для KEYPRESS ?
Ты про это?
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #11 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)
//.......
//.......

Я что-то твоей схемы не пойму... У тебя что - вся искомая картинка одним цветом получается?
Не... Ты убрал весь цикл перебора пикслей и у тебя вообще закрашивается только первый пиксель картинки... Или я чего-то не понимаю...?
Так... Я еще не проснулся... Сейчас кофе попью, покурю и попробую вникнуть. Ты тут и цикл свой какой-то впендюрил )) Просто залочил его зачем-то. Ща вкурю ))
« Last Edit: October 18, 2016, 12:27:02 PM by Hito »
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #12 on: October 18, 2016, 12:25:04 PM »
Ты про это?
:o

Про это:


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #13 on: October 18, 2016, 12:29:36 PM »
Я что-то твоей схемы не пойму... У тебя что - вся искомая картинка одним цветом получается?
Не... Ты убрал весь цикл перебора пикслей и у тебя вообще закрашивается только первый пиксель картинки... Или я чего-то не понимаю...?
PXLREPLACE меняет все пикселы N на M в области. Если область -это не один пиксель, то PXLREPLACE сам себе цикл внутри, который на делфи и который не нужно интерпретировать на каждом проходе.

Вот ты сеешь пшеницу... Зачем сажать по одному зёрнышку если команда позволяет взять в жменю и раскидать?
По одному можно тоже, но ооочень долго.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Верю - Clickermann сможет! ))
« Reply #14 on: October 18, 2016, 12:32:53 PM »
Ты про это?
:o

Про это:
Упс... А я в этот файл и не заглядывал никогда... ))) Это что за пауза? Это пауза, между нажатием клавиши и отпусканием, или просто - дополнительная пауза, после KEYPRESS?
Я не ду... Потому и не бу...