Files
local_machine/scripts/games/diagnose-homm-saves.sh
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

89 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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