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>
89 lines
3.3 KiB
Bash
Executable File
89 lines
3.3 KiB
Bash
Executable File
#!/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
|