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