AutoKachalka/config.py

67 lines
4.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from dotenv import load_dotenv
load_dotenv()
# Горячая клавиша вкл/выкл бота. Можно задать комбинацию с модификатором,
# например "ctrl+f6", "alt+f6", "ctrl+alt+f6" (синтаксис библиотеки keyboard).
# Значение задаётся в .env (TOGGLE_HOTKEY) для удобной подстройки без правки кода.
TOGGLE_HOTKEY = os.getenv("TOGGLE_HOTKEY", "f6")
# Клавиша, которую бот нажимает при попадании курсора в узкую (целевую) зону
ACTION_KEY = "e"
KEY_PRESS_DELAY = 0.03 # длительность удержания клавиши, сек
# HSV-диапазон (OpenCV: H 0-179) для "синего" - им окрашены и сама шкала, и курсор.
# Панель полупрозрачная, поэтому яркость/насыщенность шкалы заметно меняются
# в зависимости от того, что видно позади неё (тёмная сцена против яркой) -
# пороги намеренно ослаблены, чтобы захватывать оба случая.
BLUE_HUE_MIN = 85
BLUE_HUE_MAX = 135
BLUE_SAT_MIN = 100
BLUE_VAL_MIN = 100
# Критерии формы шкалы (вытянутый синий прямоугольник)
BAR_MIN_WIDTH_RATIO = 0.06 # минимальная ширина шкалы относительно ширины экрана
BAR_MAX_HEIGHT_RATIO = 0.08 # максимальная высота шкалы относительно высоты экрана
BAR_MIN_ASPECT_RATIO = 4.0 # ширина / высота
BAR_COLUMN_MERGE_GAP_RATIO = 0.05 # макс. разрыв между фрагментами шкалы (из-за зон), относительно ширины экрана
BAR_MIN_FILL_RATIO = 0.6 # доля синих пикселей внутри прямоугольника шкалы (она почти сплошная)
# Критерии курсора (отдельное синее пятно под шкалой)
CURSOR_MAX_WIDTH_RATIO = 0.5 # относительно ширины шкалы
CURSOR_SEARCH_HEIGHT_RATIO = 2.0 # во сколько раз зона поиска курсора выше шкалы
# Зоны (узкая/широкая) - яркие цветные пятна внутри шкалы, не считая синего
# фона самой шкалы. В разных мини-играх насыщенность зон отличается заметно
# (вплоть до ~45 у блёклой кремовой широкой зоны), поэтому порог занижен -
# от ложных срабатываний защищает исключение синего оттенка (_blue_hue_mask).
ZONE_SAT_MIN = 40
ZONE_VAL_MIN = 100
ZONE_MIN_AREA = 30 # минимальный размер пятна-зоны, в пикселях
ZONE_MIN_HEIGHT_RATIO = 0.5 # пятно должно покрывать минимум половину высоты шкалы
# Интервал повторных попыток найти шкалу, когда она не видна на экране (сек)
LOCATE_RETRY_INTERVAL = 1
# После скольких подряд неудачных кадров считать, что шкала исчезла, и искать заново
MAX_TRACK_MISSES = 30
# Звуковой сигнал при включении/выключении бота по горячей клавише
# (частота в Гц, длительность в мс)
SOUND_ON_FREQ = 880
SOUND_OFF_FREQ = 440
SOUND_DURATION_MS = 150
# Целевая частота опроса в режиме отслеживания курсора (кадров/сек)
TRACK_FPS = 60
# На сколько секунд вперёд предсказывать положение курсора при проверке
# попадания в зону - компенсирует суммарную задержку (захват кадра + обработка
# + время до того, как нажатие клавиши подействует в игре). Курсор может
# проскочить узкую зону за время этой задержки, поэтому решение о нажатии
# принимается по предсказанной позиции = текущая + скорость * это время.
# Увеличивайте, если нажатие происходит позже, чем нужно; уменьшайте/обнулите,
# если нажатие происходит раньше входа в зону.
CURSOR_LEAD_TIME = 0.10