#!/usr/bin/env bash # Сейвы 1/2/3: файлы на диске vs видимость в игре (Steam API / login). set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # shellcheck source=config.sh source "${SCRIPT_DIR}/config.sh" CONN_LOG="${STEAM_DIR}/logs/connection_log.txt" PLAYER_LOG="${BOTTLE_DIR}/drive_c/users/${USER}/AppData/LocalLow/Unfrozen/HeroesOldenEra/Player.log" USERS_ROOT="${BOTTLE_DIR}/drive_c/users/${USER}/AppData/LocalLow/Unfrozen/HeroesOldenEra/users" echo "=== HoMM Olden Era — диагностика сейвов ===" echo "Bottle: ${BOTTLE_NAME}" echo "" # --- файлы на диске --- if [[ -d "${USERS_ROOT}" ]]; then echo "Профили users/:" ls -1 "${USERS_ROOT}" 2>/dev/null || true sp="$(find "${USERS_ROOT}" -type d -path '*/saves/singleplayer' 2>/dev/null | head -1)" if [[ -n "${sp}" ]]; then echo "" echo "singleplayer на диске: ${sp}/" ls -lh "${sp}"/*.saveskirmish 2>/dev/null || echo " (нет *.saveskirmish)" else echo "singleplayer: не найден" fi else echo "Нет ${USERS_ROOT} — игра ещё не создавала профиль." fi echo "" # --- Steam login --- if [[ -f "${CONN_LOG}" ]]; then echo "Steam connection_log (хвост):" tail -4 "${CONN_LOG}" | sed 's/^/ /' if tail -20 "${CONN_LOG}" | grep -qE '\[Logged On'; then echo " → Steam в bottle: Logged On (OK для сейвов)" STEAM_OK=1 else echo " → Steam в bottle: Logged Off (сейвы в меню не подтянутся)" STEAM_OK=0 fi else echo "Нет connection_log.txt" STEAM_OK=0 fi echo "" # --- Player.log --- if [[ -f "${PLAYER_LOG}" ]]; then if grep -q 'SteamApi_Init failed\|ConnectToGlobalUser failed' "${PLAYER_LOG}" 2>/dev/null; then echo "Player.log: SteamApi_Init FAILED — игра без живого Steam-клиента." echo " (файлы на диске могут быть, слоты в UI пустые)" API_OK=0 elif grep -q 'Steam is probably not running' "${PLAYER_LOG}" 2>/dev/null; then echo "Player.log: Steam is probably not running" API_OK=0 else echo "Player.log: явных ошибок Steam API в последнем запуске нет." API_OK=1 fi if grep -q 'FileManager.*saves' "${PLAYER_LOG}" 2>/dev/null; then echo " FileManager видит папку saves (путь профиля на диске совпадает)." fi else echo "Нет Player.log — сначала запустите игру." API_OK=0 fi echo "" if [[ "${STEAM_OK:-0}" == "1" && "${API_OK:-0}" == "1" ]]; then echo "ВЕРДИКТ: контур сейвов выглядит здоровым. В игре: Загрузить → skirmish → слоты 1/2/3." exit 0 fi echo "ВЕРДИКТ: игра могла открыться, но сейвы не подтянутся, пока Steam не Logged On." echo "" echo "Цикл:" echo " bash ${SCRIPT_DIR}/start.sh reset" echo " bash ${SCRIPT_DIR}/fix-homm-steam-ui.sh # один раз, если пустой UI Steam" echo " bash ${SCRIPT_DIR}/start.sh steam-ui # login в аккаунт" echo " bash ${SCRIPT_DIR}/start.sh play # или Play в библиотеке" echo "" echo "Не использовать для сейвов: start.sh game без Logged On Steam." exit 1