#!/bin/bash # ============================================================ # Русская озвучка Path of Exile 2 — установка на Steam Deck # НАТИВНАЯ версия (Linux-патчер от автора, без Proton/Wine) # Озвучка: NGC404 (boosty.to/ngc404). Установка на Deck: nikiforge.ru # # КАК ПОЛЬЗОВАТЬСЯ: # 1. Распакуйте архив озвучки (получится audio.zip и папка tools/) # 2. Положите рядом linux-x64.zip (Linux-патчер от автора) и этот файл # 3. Откройте здесь Konsole и выполните: bash install-deck.sh # ============================================================ echo "================================================" echo " Русская озвучка Path of Exile 2 для Steam Deck" echo " (нативная установка, без Proton)" echo "================================================" echo HERE="$(cd "$(dirname "$0")" && pwd)" cd "$HERE" || exit 1 # --- audio.zip --- ZIPFILE="" for z in audio.zip Audio.zip AUDIO.zip; do [ -f "$HERE/$z" ] && ZIPFILE="$HERE/$z"; done if [ -z "$ZIPFILE" ]; then echo "[Ошибка] Не вижу audio.zip. Распакуйте архив озвучки полностью (все 3 тома)." exit 1 fi # --- Linux-патчер: распаковываем linux-x64.zip в tools/, если ещё не --- if [ ! -x "$HERE/tools/PatchBundle3" ]; then if [ -f "$HERE/linux-x64.zip" ]; then echo "Распаковываю Linux-патчер в tools/..." mkdir -p "$HERE/tools" rm -rf "$HERE/_lx"; unzip -oq "$HERE/linux-x64.zip" -d "$HERE/_lx" # файлы лежат внутри папки linux-x64/ SRC="$HERE/_lx/linux-x64"; [ -d "$SRC" ] || SRC="$HERE/_lx" cp -f "$SRC"/* "$HERE/tools/" 2>/dev/null rm -rf "$HERE/_lx" fi fi if [ ! -f "$HERE/tools/PatchBundle3" ]; then echo "[Ошибка] Нет Linux-патчера. Положите linux-x64.zip рядом со скриптом." echo "(это маленький архив с файлами патчера под Linux — берётся у автора)" exit 1 fi chmod +x "$HERE/tools/PatchBundle3" 2>/dev/null # --- поиск игры (внутренняя память + SD-карта) --- echo "Ищу установленную Path of Exile 2..." if [ -n "$GAME" ] && [ -f "$GAME/Bundles2/_.index.bin" ]; then echo " Использую путь, указанный вручную: $GAME" else GAME="" for c in \ "$HOME/.local/share/Steam/steamapps/common/Path of Exile 2" \ /run/media/deck/*/steamapps/common/"Path of Exile 2" \ /run/media/*/steamapps/common/"Path of Exile 2" ; do if [ -f "$c/Bundles2/_.index.bin" ]; then GAME="$c"; break; fi done fi if [ -z "$GAME" ]; then echo "[Ошибка] Игра не найдена автоматически." echo "Запустите, подставив свой путь:" echo ' GAME="/run/media/deck/ВАША-SD/steamapps/common/Path of Exile 2" bash install-deck.sh' exit 1 fi echo " Игра найдена: $GAME" INDEX="$GAME/Bundles2/_.index.bin" # --- .NET 8 для Linux (portable, скачиваем один раз) --- if [ ! -x "$HERE/dotnet/dotnet" ]; then echo "Скачиваю .NET 8 для Linux (нужен патчеру, ~30 МБ)..." if ! curl -L --fail -o "$HERE/dn.tar.gz" \ "https://builds.dotnet.microsoft.com/dotnet/Runtime/8.0.28/dotnet-runtime-8.0.28-linux-x64.tar.gz"; then echo "[Ошибка] Не удалось скачать .NET. Проверьте интернет (помогает VPN) и повторите." exit 1 fi mkdir -p "$HERE/dotnet" tar -xzf "$HERE/dn.tar.gz" -C "$HERE/dotnet" && rm -f "$HERE/dn.tar.gz" fi # --- бэкап индекса (для отката) --- if [ ! -f "$HERE/_.index.bin.backup" ]; then cp "$INDEX" "$HERE/_.index.bin.backup" && echo " Бэкап индекса сохранён рядом со скриптом." fi # --- запуск НАТИВНОГО патчера (без Proton; Linux-пути напрямую) --- echo echo "Устанавливаю озвучку — подождите 2-5 минут, не закрывайте окно..." echo export DOTNET_ROOT="$HERE/dotnet" export LD_LIBRARY_PATH="$HERE/tools:$LD_LIBRARY_PATH" # чтобы нашёлся liboo2core.so cd "$HERE/tools" || exit 1 ./PatchBundle3 "$INDEX" "$ZIPFILE" RC=$? echo if [ "$RC" = "0" ]; then echo "================================================" echo " ГОТОВО! Озвучка установлена." echo "================================================" echo "Запустите игру и проверьте русскую речь в диалогах." echo echo "ВАЖНО: не нажимайте в Steam 'Проверить целостность файлов' —" echo "это вернёт английскую озвучку. После обновления игры — запустите скрипт снова." else echo "[Ошибка] Патчер вернул код $RC. Игра не повреждена." echo "Откат при необходимости: верните _.index.bin.backup на место Bundles2/_.index.bin" fi