Skip to content

Repository files navigation

D2PT Grid Installer

Автоматическая загрузка и установка hero grid'ов из Dota2ProTracker прямо в Steam.

Скрипт работает автономно — не требует Minify или других фреймворков. Просто Python + requests.


📋 Требования

  • Python 3.8 или новее
  • Windows (Steam должен быть установлен в стандартном пути или указан вручную)
  • Аккаунт Steam с Dota 2

🚀 Быстрый старт

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

git clone https://github.com/ТВОЙ_НИК/d2pt-grid.git
cd d2pt-grid

2. Установка зависимостей

pip install -r requirements.txt

Если requests уже установлен — этот шаг можно пропустить.

3. Настройка конфигурации

Скопируй пример конфига:

copy config.example.json config.json

Открой config.json и замени "steam_id": "123456789" на свой настоящий Steam ID.

💡 Где взять Steam ID? Открой Steam → свой профиль → скопируй число из URL (steamcommunity.com/profiles/XXXXXXXXX) или используй сайт steamid.io.

4. Запуск

python script.py

При первом запуске скрипт:

  1. Скачает актуальные гриды с Dota2ProTracker
  2. Сделает бэкап текущего hero_grid_config.json
  3. Установит новые гриды в папку Steam

⚙️ Параметры конфигурации

Все настройки задаются в файле config.json (создаётся из config.example.json).

Параметр Тип Описание
steam_id string Твой Steam ID. Если пусто — скрипт применит гриды ко всем аккаунтам на ПК.
grid_sources list Источники данных: "matches_wr" (винрейт по матчам), "d2ptrating" (рейтинг D2PT).
patch string Патч Dota 2. "latest" — актуальный.
max_per_role int / null Максимум героев в одной роли (например, 7). null — без ограничений.
all_heroes_width int / null Ширина блока «All Heroes». null — по умолчанию.
role_width int Ширина колонки роли (Carry, Mid и т.д.).
all_heroes_height int Высота блока «All Heroes».
all_heroes_x int Позиция X блока «All Heroes».
synergy_col_width int Ширина колонки синергии/контрпика.
synergy_gap int Отступ между колонками синергии.
synergy_start_x int Начальная позиция X для синергий.
max_screen_width int Максимальная ширина экрана для авто-подстройки.
backup_limit int Сколько бэкапов хранить (старые удаляются автоматически).
cache_ttl_hours int Время жизни кэша в часах.
dry_run bool true — тестовый запуск без записи в Steam. Полезно для проверки.
install_configs list Какие гриды ставить: ["All Roles", "Carry", "Mid", "Offlane", "Support", "Hard Support"].
short_labels dict Короткие метки источников (отображаются в названии грида).
combined_label string Метка для объединённого грида (когда несколько источников).

Пример config.json

{
    "steam_id": "123456789",
    "grid_sources": ["matches_wr", "d2ptrating"],
    "patch": "latest",
    "max_per_role": 7,
    "all_heroes_width": 760,
    "role_width": 500,
    "all_heroes_height": 450,
    "all_heroes_x": 520,
    "synergy_col_width": 220,
    "synergy_gap": 10,
    "synergy_start_x": 75,
    "max_screen_width": 1080,
    "backup_limit": 10,
    "cache_ttl_hours": 1,
    "dry_run": false,
    "install_configs": ["All Roles", "Carry", "Mid", "Offlane", "Support", "Hard Support"],
    "short_labels": {
        "matches_wr": "WR",
        "d2ptrating": "RT"
    },
    "combined_label": "CMB"
}

🛡️ Безопасность и приватность

  • Файл config.json добавлен в .gitignore — он никогда не попадёт в репозиторий и на GitHub.
  • В репозитории лежит только config.example.json с фейковым steam_id.
  • Никогда не коммить config.json с реальным steam_id.
  • Если хочешь максимальную безопасность — убери steam_id из config.json и передай через переменную окружения:
    $env:D2PT_STEAM_ID="123456789"
    python script.py

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

d2pt-grid/
├── script.py              # Основной скрипт
├── config.example.json    # Пример конфигурации (без реальных данных)
├── config.json            # Твой личный конфиг (игнорируется git'ом)
├── requirements.txt       # Зависимости Python
├── .gitignore             # Что не пушить на GitHub
├── README.md              # Этот файл
├── cache_*.json           # Кэш ответов API (создаётся автоматически)
└── backup/                # Бэкапы hero_grid_config.json (создаётся автоматически)

🔄 Как это работает

  1. Загрузка — скрипт параллельно скачивает гриды с Dota2ProTracker по выбранным источникам.
  2. Кэширование — ответы API сохраняются локально на 1 час (настраивается), чтобы не дудосить сервер.
  3. Объединение — если выбрано несколько источников, скрипт объединяет их в один "combined" грид.
  4. Фильтрация — оставляет только те гриды, которые указаны в install_configs.
  5. Разметка — подгоняет ширину/высоту/координаты под твой экран.
  6. Бэкап — копирует текущий hero_grid_config.json в папку backup/.
  7. Установка — записывает новые гриды в Steam/userdata/<id>/570/remote/cfg/hero_grid_config.json.

🐛 Возможные проблемы

Проблема Решение
No accounts found in ...\userdata Проверь путь к Steam. Если Steam установлен не в C:\Program Files (x86)\Steam, укажи правильный путь в config.json (или через STEAM_ROOT в коде).
Failed 'matches_wr' Проверь интернет-соединение. Сайт Dota2ProTracker может быть недоступен. Попробуй увеличить cache_ttl_hours и подождать.
Гриды не появились в Dota Перезапусти Dota 2. Убедись, что steam_id указан верно.
Старые гриды пропали Нет, они не пропали — скрипт делает бэкап в папку backup/. Если что-то пошло не так — скопируй бэкап обратно.

📜 Лицензия

MIT — делай что хочешь, но автор не несёт ответственности за бан аккаунта или сломанные гриды. Всё используешь на свой страх и риск.


💡 Идеи для улучшения

  • Добавить GUI (tkinter или PyQt)
  • Поддержку Linux/Proton (Steam на Linux хранит cfg по другому пути)
  • Автозапуск по расписанию (Windows Task Scheduler)
  • Интеграцию с другими источниками (Dotabuff, OpenDota)

Автор: zebr3nt

About

Auto-install Dota 2 hero grids from Dota2ProTracker

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages