4.7 KiB
4.7 KiB
PerfectKachalka
Бот для мини-игры со шкалой навыка (skill-check): синяя полупрозрачная шкала
с движущимся курсором и двумя цветными зонами. Бот распознаёт шкалу, зону и
курсор по экрану и нажимает E в нужный момент.
Требования
- Игра запущена в режиме Exclusive Fullscreen (не оконный безрамочный) -
это нужно для
bettercam, который умеет захватывать такой режим. - Зависимости уже установлены в
.venv(opencv-python,numpy,bettercam,pydirectinput,keyboard,mss). При необходимости переустановить:.venv\Scripts\python.exe -m pip install -r requirements.txt.
Проверка детекции (опционально, но рекомендуется)
.venv\Scripts\python.exe debug_snapshot.py
- Скрипт ждёт 5 секунд - успейте переключиться в игру так, чтобы шкала мини-игры была видна на экране.
- После снимка он напечатает найденные координаты шкалы/зоны/курсора и
сохранит
debug_snapshot.pngс нарисованными рамками: синяя рамка - шкала, красная - узкая (целевая) зона, пурпурная линия - курсор. - Если что-то не нашлось, скрипт сохранит
debug_full.png(полный кадр без рамок) - по нему можно подправить пороги вconfig.py.
Запуск бота
.venv\Scripts\python.exe bot.py
- В консоли появится строка
Захват экрана: bettercam(илиmss, если bettercam не сработал - тогда эксклюзивный фуллскрин может не захватываться). - Переключитесь в игру.
- F6 - включить/выключить бота. При включении он один раз сканирует экран на наличие шкалы (повторяет попытку раз в секунду, если шкала пока не видна).
- Ctrl+C в консоли - полностью завершить программу.
Если игра запущена с правами администратора
pydirectinput может не достучаться до окна игры из-за защиты Windows
(UIPI), если игра имеет более высокие привилегии, чем консоль. В этом случае
запускайте терминал/bot.py от имени администратора.
Подстройка таймингов
При каждом нажатии E в консоли печатается строка вида:
[Bot] E нажата | cursor_x=... predicted_x=... zone=(...,...) | задержка цикла=... мс
- Если E срабатывает позже, чем курсор визуально входит в узкую зону -
увеличьте
CURSOR_LEAD_TIMEвconfig.py, шаг ~0.02-0.03. - Если E срабатывает раньше входа в зону - уменьшите его.
- Если "задержка цикла" заметно больше ~16 мс - система не успевает за 60 FPS, это тоже добавляет задержку.
- Если в одном проходе курсора через зону E срабатывает несколько раз - потребуется сглаживание скорости курсора (сообщите, чтобы добавить).
Изменения в config.py применяются после перезапуска bot.py.
Структура проекта
bot.py- основной цикл: поиск шкалы, отслеживание курсора, нажатиеE, переключение по F6.vision.py- распознавание шкалы/зон/курсора по кадру (OpenCV/HSV).capture.py- захват экрана (bettercam, с откатом наmss).input_sender.py- отправка нажатия клавиши (pydirectinput).config.py- все настраиваемые пороги и параметры.debug_snapshot.py- однократный снимок экрана с визуализацией найденных шкалы/зоны/курсора, для отладки.