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>
This commit is contained in:
72
scripts/games/gog/setup-ja3-crossover.sh
Executable file
72
scripts/games/gog/setup-ja3-crossover.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
# CrossOver bottle JA3-GOG: D3D12 через D3DMetal (единственный подтверждённый путь на M1 Pro).
|
||||
# Whisky/Gcenx Wine не содержит D3DMetal hooks (см. Gcenx/macOS_Wine_builds#97).
|
||||
set -euo pipefail
|
||||
GOG_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
# shellcheck source=config.sh
|
||||
source "${GOG_DIR}/config.sh"
|
||||
|
||||
CX_APP="/Applications/CrossOver.app"
|
||||
CX="${CX_APP}/Contents/SharedSupport/CrossOver"
|
||||
CX_BOTTLE="JA3-GOG"
|
||||
CX_DIR="${HOME}/Library/Application Support/CrossOver/Bottles/${CX_BOTTLE}"
|
||||
JA3_SRC="${BOTTLE_DIR}/drive_c/GOG Games/Jagged Alliance 3"
|
||||
JA3_DEST="${CX_DIR}/drive_c/GOG Games/Jagged Alliance 3"
|
||||
|
||||
[[ -d "${CX_APP}" ]] || {
|
||||
echo "❌ Нет CrossOver.app"
|
||||
echo " brew install --cask crossover"
|
||||
exit 1
|
||||
}
|
||||
[[ -f "${JA3_SRC}/JA3.exe" ]] || {
|
||||
echo "❌ Нет JA3 в ${BOTTLE_NAME} — install-ja3-innoextract.sh"
|
||||
exit 1
|
||||
}
|
||||
|
||||
bash "${GOG_DIR}/finish-ja3-layout.sh" >/dev/null 2>&1 || true
|
||||
|
||||
if [[ ! -f "${CX_DIR}/system.reg" ]]; then
|
||||
echo "Создание CrossOver bottle ${CX_BOTTLE} (win10_64)…"
|
||||
"${CX}/bin/cxbottle" --create --bottle "${CX_BOTTLE}" --description "Jagged Alliance 3 GOG" --template win10_64
|
||||
fi
|
||||
|
||||
CONF="${CX_DIR}/cxbottle.conf"
|
||||
touch "${CONF}"
|
||||
sed -i '' '/^"WINED3DMETAL"/d;/^"WINEDXVK"/d' "${CONF}" 2>/dev/null || true
|
||||
{
|
||||
echo '"WINED3DMETAL" = "1"'
|
||||
echo '"WINEDXVK" = "0"'
|
||||
} >> "${CONF}"
|
||||
|
||||
mkdir -p "${CX_DIR}/drive_c/GOG Games"
|
||||
if [[ -L "${JA3_DEST}" ]] || [[ ! -d "${JA3_DEST}" ]]; then
|
||||
rm -f "${JA3_DEST}"
|
||||
echo "Клон игры в CrossOver bottle (APFS clonefile, ~0 доп. места)…"
|
||||
cp -cR "${JA3_SRC}" "${JA3_DEST}"
|
||||
elif [[ ! -f "${JA3_DEST}/CommonLua/Core/autorun.lua" ]]; then
|
||||
echo "Обновление CommonLua в CrossOver bottle…"
|
||||
rm -rf "${JA3_DEST}/CommonLua"
|
||||
cp -R "${JA3_SRC}/CommonLua" "${JA3_DEST}/CommonLua"
|
||||
fi
|
||||
|
||||
LS="${CX_DIR}/drive_c/users/crossover/AppData/Roaming/Jagged Alliance 3"
|
||||
mkdir -p "${LS}"
|
||||
if [[ ! -f "${LS}/LocalStorage.lua" ]]; then
|
||||
cat >"${LS}/LocalStorage.lua" <<'EOF'
|
||||
return {
|
||||
Options = {
|
||||
GraphicsApi = "d3d12",
|
||||
VideoPreset = "Low",
|
||||
},
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
export WINEPREFIX="${CX_DIR}"
|
||||
"${CX}/bin/wine" --bottle "${CX_BOTTLE}" reg add 'HKLM\Software\WOW6432Node\GOG.com\Games\1556263729' /v gameName /t REG_SZ /d 'Jagged Alliance 3' /f >/dev/null 2>&1 || true
|
||||
"${CX}/bin/wine" --bottle "${CX_BOTTLE}" reg add 'HKLM\Software\WOW6432Node\GOG.com\Games\1556263729' /v exe /t REG_SZ /d 'JA3.exe' /f >/dev/null 2>&1 || true
|
||||
"${CX}/bin/wine" --bottle "${CX_BOTTLE}" reg add 'HKLM\Software\WOW6432Node\GOG.com\Games\1556263729' /v path /t REG_SZ /d 'C:\GOG Games\Jagged Alliance 3\' /f >/dev/null 2>&1 || true
|
||||
|
||||
echo "OK: CrossOver ${CX_BOTTLE} + D3DMetal"
|
||||
bash "${GOG_DIR}/fix-ja3-crossover-mouse.sh"
|
||||
echo " Запуск: bash ${GOG_DIR}/run-ja3-crossover.sh"
|
||||
Reference in New Issue
Block a user