Найти тему

28.06.2021. Автокликер и Трофейная рыбалка 2: берем все поклевки.

с сайта Sprosi-sam.ru
с сайта Sprosi-sam.ru

Сегодня 28 июня 2021 года 8 часов 16 минут, понедельник. За бортом +24. Всем доброго дня!

Недавно наблюдал за автоматической ловлей рыбы в игре "Трофейная рыбалка 2" и тут мне в голову пришла гениальная мысль как брать все поклевки.

Попробую плавно подвести к решению задачи.

В статье

14.06.2021 - 16.06.2021. Автокликер и Трофейная рыбалка 2: Начало.

мы научились определять топящую поклевку. Контрольная картинка - полное отсутствие поплавка. Подсекает даже когда рыба уже подцепилась. Срабатывает на полное отсутствие поплавка.

Тут

16.06.2021. Автокликер и Трофейная рыбалка 2: ловим на 3 удочки.

мы адаптировали код под три удочки. Реагировали на поклевки клавишами 1,2,3.

Далее

19.06.2021 - 21.06.2021. Автокликер и Трофейная рыбалка 2: определяем разные поклевки

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

На различные виды поклевок так же пытались реагировать клавишами 1,2,3.

Что характерно, если поклевки нет, то удочки не реагируют на нажатие клавиш 1,2,3. Только переключаются.

Так как же брать все поклевки? Еще не догадались?

В стародавние времена, когда я ловил еще "руками", бывали моменты, когда надоедало следить за поклевками и тупо давил 1,2,3 по очереди, а потом вытаскивал то, что подсеклось.

Да! По факту, не нужно распознавать поклевки как таковые. Главное - контролировать, что подсеклось!

Контрольная картинка с отсутствием поплавка у нас есть и работает превосходно. Осталось только запустить в цикл подсечки клавишами 1,2,3 и контролировать факт подсечения.

Вот фрагмент кода, который в корне меняет концепцию ловли по распознаванию поклевок. Теперь надо распознавать только подсечение.

$check = 0
//активизируем окно игры
LCLICK(1002,278)
WAIT(1)
WHILE($check = 0) // цикл ожидания
KEYPRESS(#1) 
WAIT(1)
KEYPRESS(#2)
WAIT(1)
KEYPRESS(#3)
WAIT(1)
//вставляем много картинок по факту уже нет))
FOR($count = 1, $count<$a+1)
//формируем префикс вида поклевки.
IF($count=1)
$str= "pic\top_"
END_IF
IF($count=2)
$str= "pic\bult_"
END_IF
IF($count=3)
$str= "pic\lezh_"
END_IF
FOR($count2 = 1, $count2<$b+1)
//формируем окончание файла
$str2 = STRCONCAT($str,"00",$count2,".bmp")
GETSCREEN(558,672,644,755)
COLORMODE(8)
//первая уда
IF_PICTURE_IN (558,672,644,755, $str2, -1, 100)
KEYPRESS(#1)
WAIT(1)
RDOWN(RND(1010,1030),RND(540,565))
WAIT(1)
MOVE(RND(1010,1025),RND(300,315))
Wait(1)
KEYDOWN(#space)
...

Мы в цикле запустили нажатие клавиш 1,2,3 с задержкой в 1 сек. По факту если есть любая поклевка, она подсекается. Далее идет распознавание отсутствия поплавка (у нас это превосходно работает) и вытаскивание подсеченной рыбы на соответствующую удочку.

Запустил код на ночь. Наловил более 40 травы. Эксперимент не чистый, так как несколько раз слетал интернет.

Полный код в комментариях.

Канал "Дневник программиста 1С"