2026-09-04 21:03:11 +03:00

DirtyLeague Autonomous FSM Bot

Автономный бот для игры DirtyLeague на движке Unity (Windows), основанный на конечном автомате (FSM), компьютерном зрении (OpenCV Template Matching) и Windows Native OCR.

Бот автоматически управляет экранами игры, отслеживает статистику матчей, собирает сундуки (нижние 4 слота и сундук корон), контролирует трофеи/MMR и выполняет мгновенную капитуляцию при достижении лимита побед или превышении порога кубков.


📋 Требования к системе

  • ОС: Windows 10 или Windows 11 (64-bit) — встроенный движок Windows Media OCR (winrt-Windows.Media.Ocr).
  • Python: версия 3.10, 3.11, 3.12 или 3.13 (обязательно отметить галочку "Add python.exe to PATH" при установке). Visual Studio или C++ компиляторы НЕ требуются (все пакеты используют готовые бинарные wheels).
  • Языковые пакеты Windows: В системе должен быть установлен английский язык (English (United States) в Параметры -> Время и язык -> Язык и регион) для работы OCR.
  • Права: Запуск командной строки / батника с правами Администратора (необходимо для перехвата глобального Kill Switch клавишей Q и корректной эмуляции кликов в окно Unity).
  • Игра: Запущенная игра DirtyLeague (рекомендуемое разрешение: 1920×1080 или в окне с соотношением 16:9).

🚀 Быстрая установка на новом компьютере

Шаг 1. Клонирование репозитория

Откройте командную строку (CMD или PowerShell) и выполните:

git clone https://gitem.volandsz.ru/volandsz/DirtyLeague_Bot.git
cd DirtyLeague_Bot

Шаг 2. Автоматическая установка (Рекомендуется)

Запустите скрипт setup.bat:

  • Двойным кликом по файлу setup.bat, либо через консоль:
    setup.bat
    

Скрипт автоматически проверит наличие Python, создаст виртуальное окружение .venv и установит все необходимые зависимости из requirements.txt.

Альтернатива: Ручная установка через консоль

Если вы предпочитаете настроить окружение вручную:

# 1. Создание виртуального окружения
python -m venv .venv

# 2. Активация окружения (Windows CMD):
.venv\Scripts\activate.bat

# Или в PowerShell:
# .venv\Scripts\Activate.ps1

# 3. Обновление pip и установка пакетов
pip install --upgrade pip
pip install -r requirements.txt

⚙️ Конфигурация (config.json)

Основные параметры бота настраиваются в файле config.json:

{
  "target_window": {
    "title": "DirtyLeague",
    "process_name": "DirtyLeague.exe"
  },
  "bot": {
    "max_wins_limit": 3,
    "poll_interval_sec": 0.8,
    "confidence_threshold": 0.8,
    "action_delay_sec": 0.5,
    "kill_switch_key": "q"
  },
  "league_retention": {
    "upper_trophy_threshold": 2125,
    "lower_trophy_threshold": 125,
    "points_per_win": 50,
    "points_per_loss": 50
  },
  "assets_dir": "assets",
  "log_level": "INFO"
}
  • max_wins_limit: Максимальное количество побед подряд до включения режима сброса рейтинга (слива боев).
  • upper_trophy_threshold: Верхний порог кубков лиги (при превышении бот начинает быстро сдаваться).
  • lower_trophy_threshold: Нижний порог кубков (при опускании ниже бот играет на победу).
  • kill_switch_key: Клавиша для экстренного выключения бота (по умолчанию q).

🎮 Запуск бота

⚠️ Важно: Рекомендуется запускать от имени Администратора, чтобы бот мог перехватывать нажатие Kill Switch и посылать клики в окно игры.

Способ 1: Быстрый запуск через батник

  1. Запустите игру DirtyLeague и откройте главное лобби (экран башни).
  2. Нажмите правой кнопкой мыши по start_bot.bat -> Запуск от имени администратора (или просто двойным кликом).

Способ 2: Запуск через командную строку

# Активируйте виртуальное окружение
.venv\Scripts\activate

# Обычный запуск (бесконечный цикл до нажатия Q или Ctrl+C)
python run.py

# Ограничить работу по времени (например, 3600 секунд):
python run.py --duration 3600

# Ограничить работу количеством боев/циклов (например, 20 боев):
python run.py --cycles 20

🛑 Управление и безопасность

  • Экстренная остановка (Kill Switch): Нажмите клавишу Q в любой момент времени (в том числе в свернутом режиме). Бот немедленно остановит клики и завершит работу.
  • Логирование: Все действия бота подробно записываются в консоль и сохраняются в папку logs/ в формате bot_YYYYMMDD_HHMMSS.log.

📂 Структура проекта

DirtyLeague_Bot/
├── assets/               # Эталонные шаблоны UI (кнопки, баннеры, сундуки)
├── logs/                 # Автоматические логи работы бота
├── bot_core.py           # Главный конечный автомат (FSM) и логика принятия решений
├── window_utils.py       # Захват экрана, фокус окна, масштабирование кликов (Unity Canvas Scaler)
├── ocr_utils.py          # Windows Native Media OCR для считывания трофеев и счетчиков
├── calibrate_tool.py     # Инструмент калибровки и нарезки шаблонов
├── run.py                # Точка входа в программу с обработкой Kill Switch
├── config.json           # Файл конфигурации параметров
├── requirements.txt      # Список зависимостей Python
├── setup.bat             # Скрипт автоматической установки окружения
├── start_bot.bat         # Скрипт быстрого запуска бота
└── README.md             # Инструкция по установке и запуску

🛠️ Возможные проблемы и решения

  1. Target window 'DirtyLeague' not found
    • Убедитесь, что игра запущена. Заголовок окна должен содержать DirtyLeague.
  2. PermissionError или не реагирует клавиша Q
    • Запустите консоль или start_bot.bat с правами Администратора (библиотека keyboard требует повышенных привилегий в Windows).
  3. Ошибки winsdk / OCR
    • Убедитесь, что в Windows установлен языковой пакет английского языка (Settings -> Time & Language -> Language & Region).
Description
No description provided
Readme MIT 99 MiB
Languages
Python 97.5%
Batchfile 2.5%