Skip to content

Iosif2321/Assetto-Corsa-Script

Repository files navigation

Assetto Corsa Script

Набор утилит и скриптов для Assetto Corsa (2014) под Windows:

  • чтение/запись телеметрии (Shared Memory);
  • компактный оверлей руля/педалей и запись значений;
  • маппер кнопок руля/геймпада → горячие клавиши;
  • интеграция с музыкой: системные медиаклавиши/SMTC, регулировка громкости по скорости, запись текущего трека в файл.

Проект ориентирован на Assetto Corsa (не ACC). Рекомендуются Content Manager (CM) и Custom Shaders Patch (CSP). Требуется Windows 10/11 и Python 3.10+ (лучше 3.11).


Фактическая структура репозитория

Все файлы лежат в корне:

Assetto-Corsa-Script/
├─ __pycache__/
├─ # moza_ac_music_combo.py   # файл с ведущим символом '#'. См. заметку ниже.
├─ README.md
├─ ac_telemetry.py
├─ ac_telemetry_calib.json
├─ moza_buttons_mapper.py
├─ moza_monitor.py
└─ ym_smtc_to_file.py

Заметка про # moza_ac_music_combo.py: имя начинается с # — это похоже на опечатку при загрузке. Windows и Python такое имя поддерживают, но из командной строки запускать удобнее после переименования в moza_ac_music_combo.py. Пока не переименовали, можно запускать так:
python "# moza_ac_music_combo.py" (в кавычках).


Установка

Рекомендуется изолировать зависимости в виртуальном окружении.

# 1) Клонирование
git clone https://github.com/Iosif2321/Assetto-Corsa-Script.git
cd Assetto-Corsa-Script

# 2) Виртуальное окружение
py -3.11 -m venv .venv
.\.venv\Scripts\activate

# 3) Зависимости (requirements.txt отсутствует — ставим вручную)
pip install pygame pywin32 keyboard psutil matplotlib Pillow winsdk

Для захвата геймпада вне фокуса некоторые скрипты используют SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS=1 (переменная выставляется из кода).


Скрипты и запуск

Ниже — краткое назначение и типичные способы запуска. Актуальные флаги/горячие клавиши смотрите в шапке соответствующего .py.

ac_telemetry.py

Чтение телеметрии AC (Shared Memory), отображение ключевых параметров, опциональный экспорт в файлы.

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

python ac_telemetry.py --csv telemetry.csv --fps 30

Типичные параметры:

  • --csv <path> — лог в CSV;
  • --json <path> — лог в JSON;
  • --fps <N> — частота обновления;
  • --headless — запись без окна.

moza_monitor.py

Компактный оверлей поверх всех окон: угол руля (в градусах и %), педали (0–100%), индикаторы. Поддерживается запись значений в файл и набор горячих клавиш (переключение мини/полного вида, always-on-top, запись и т.п.).

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

python moza_monitor.py

Если педали показывают 2–98%, откалибруйте в драйвере руля (MOZA Pit House и т.п.) и/или в самом скрипте (мертвые зоны/автокалибровка). Для руля задайте корректный угол блокировки (обычно 900°).

moza_buttons_mapper.py

Маппер кнопок руля/геймпада на горячие клавиши/комбинации (например: камеры, взгляд назад, мигалки, навигация по меню пит-стопа и др.). Эмуляция осуществляется через WinAPI/скан-коды, чтобы работало поверх любых окон.

Запуск (желательно от имени администратора):

python moza_buttons_mapper.py

moza_ac_music_combo.py (или временно # moza_ac_music_combo.py)

Связка AC ↔ плеер: системные медиаклавиши, опциональная регулировка громкости по скорости, пауза на пит-лейне, хоткеи след/пред трек и т.д.

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

python moza_ac_music_combo.py
# или если ещё не переименовали:
python "# moza_ac_music_combo.py"

Типичные параметры (если реализованы):

  • --player yandex|aimp|system
  • --speed-volume on|off
  • --hotkeys on|off

ym_smtc_to_file.py

Интеграция с SMTC (System Media Transport Controls) Windows: считывает текущий трек из активной медиасессии (Яндекс.Музыка, Spotify, браузер и т.п.) и пишет строку в файл (по умолчанию — aimp_now_playing.txt в Документах/Assetto Corsa). Также может обрабатывать кнопки на руле для Play/Pause/Next/Prev.

Запуск:

python ym_smtc_to_file.py

Для полноценной SMTC-интеграции нужен пакет winsdk. Путь файла можно поправить в константах в начале скрипта (ищите OUTPUT_FILE).


ac_telemetry_calib.json — калибровка осей

Файл хранит экстремумы и настройки инверсии осей для обнаруженных устройств. Пример структуры:

{
  "joystick": {
    "<DEVICE_ID>": {
      "min": -1.0,
      "max": 0.250213623046875,
      "invert": false
    }
  }
}
  • min/max — зафиксированные крайние значения;
  • invert — инверсия оси;
  • <DEVICE_ID> — уникальный ключ устройства.

Файл создаётся/обновляется автоматически соответствующими скриптами. Удалите его для «чистой» перекалибровки.


Автозапуск из Content Manager

CM → Settings → Drive → Launchers → Run program (Before/After):

Создайте .bat, чтобы активировать venv и поднять нужные процессы:

@echo off
cd /d "%~dp0"
call ".venv\Scripts\activate.bat"
start "" python "%~dp0\moza_monitor.py"
start "" python "%~dp0\moza_buttons_mapper.py"
rem при необходимости:
rem start "" python "%~dp0\moza_ac_music_combo.py"
  • Если нужен админ-доступ для маппера — запускайте .bat с повышенными правами (ярлык → Свойства → Совместимость → «Запуск от имени администратора») либо через Планировщик заданий с флажком Run with highest privileges.

Если проект полезен — ⭐ звезда репозиторию очень поможет. Удачи на трассе! 🏁

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages