Найти тему

22.06.2021 - 05.07.2021. Автокликер и Трофейная рыбалка 2: определяем ночь и день

с сайта Express-k.kz
с сайта Express-k.kz

Сегодня 22 июня 2021 года 19 часов 19 минут, вторник. Похоладало, всего +30.
Всем доброго вечера!

В прошлых статьях:

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

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

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

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

мы ловили без учета времени.

Если это не принципиально, то и проблем нет. Но существуют, например, ночные рыбалки на определенный вид, а с утра клюют уже другие виды рыб. Поэтому не мешало бы настроить учет времени, чтобы не тратить ценную наживку.

Разделение времени поклевок:

  • Утро: с 5:00 до 11:00 у некоторых видов рыб до 13:00
  • День: с 11:00 до 17:00
  • Вечер: с 17:00 до 23:00 у некоторых видов рыб с 19:00
  • Ночь: с 23:00 до 5:00

Для учета времени необходимо иметь скрины контрольных значений.

Для тестирования фиксации времени необходимо отснять скрины с каждым игровым часом.

Игровой час длится 2 минуты 27 секунд. Для этого напишем скрипт:

//собираем скрин каждый час игрового времени
FOR($a=0, $a < 25)
GETSCREEN // Clickermann помещает в свой графический буфер скриншот ва экрана
COLORMODE(8) // Применяет к этому скриншоту режим //COLORMODE
SCREENSHOTFIX(0,0, $_xmax,$_ymax, STRCONCAT("scr_",$a,".bmp"))
//ждем 2 минуты 27 сек
WAIT(147)
END_CYC

Как выяснилось время нужно настраивать с задержкой 2 минуты 26 сек

учитывая сдвиги время будем проверять каждую минуту.

03 июля 2021 года 14 часов 16 минут

Думаю для отработки определенного времени нам понадобятся переходы:

goto(skip)
logwrite("nope") // пропускается
skip:
logwrite("yea") // выполнится

Да, вполне рабочий переход. Идем дальше...

Для теста пишем

WHILE($check = 0) // цикл ожидания
//проверяем время
GETSCREEN(558,672,644,755)
COLORMODE(8)
//23 часа
IF_PICTURE_IN (1447,717,1478,736, "pic\23.bmp", -1, 100)
LOGWRITE ("23 часа")
END_IF
//5 часов
IF_PICTURE_IN (1447,717,1478,736, "pic\5.bmp", -1, 100)
LOGWRITE ("5 часов")
END_IF

15 часов 28 минут

Наше определение времени не сработало.

От дурень... Забыл проставить нужную область в

GETSCREEN(558,672,644,755)

должно быть вот так:

GETSCREEN(1447,717,1478,736)

16 часов 16 минут

Лог файл (немного обрезал):

15:59:48 23 часа
15:59:52 23 часа
15:59:55 23 часа
15:59:59 23 часа
16:12:41 5 часов
16:12:45 5 часов
16:12:49 5 часов
16:12:52 5 часов

Отлично! Мы можем определять игровое время!

Теперь осталось добавить необходимы действия в зависимости от изменения времени.

В приоритете ночная рыбалка.

20 часов 19 минут

Код вроде работает, но при вытаскивании удочек утром надо учитывать возможность подсечения и при необходимости продавать рыбу.

авторский скриншот
авторский скриншот

Думаю для распознавания окна продажи выделенная область подойдет.

04 июля 2021 года 13 часов 30 минут

Отдельно пришлось тестировать участок по вытаскиванию удочек после 5 часов и продаже при необходимости. Выяснилось, что окно продажи проверял слишком рано и продажа не срабатывала. Также добавил периодические перемещения мыши в период ожидания 23 часов (чтобы скринсейвер не срабатывал при длительном простое).

05 июля 2021 года 16 часов 03 минуты.

Остался последний штрих - оттестировать.

17 часов 17 минут.

Все отработало отлично.

Рабочий код, как водится, в комментариях.

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