Сегодня 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С"