第 1 卷第 1 章:1–9 年

This commit is contained in:
Chen Yi
2026-10-05 17:30:11 +08:00
parent c56394afdd
commit 3468433c9a
34 changed files with 2564 additions and 4 deletions
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# 在 Windows 侧安装 矮人要塞 免费版 + DFHack(经 WSL 的 /mnt/c 操作,免管理员权限)
#
# scripts/install-df.sh 安装/校验
# scripts/install-df.sh --download 重新下载缺的文件
set -euo pipefail
WIN_USER="${WIN_USER:-23518}"
ROOT="/mnt/c/Users/${WIN_USER}/DwarfFortress"
DF_ZIP="df_53_16_win.zip"
DFHACK_ZIP="dfhack-53.16-r2-Windows-64bit.zip"
DF_URL="https://www.bay12games.com/dwarves/${DF_ZIP}"
DFHACK_URL="https://github.com/DFHack/dfhack/releases/download/53.16-r2/${DFHACK_ZIP}"
mkdir -p "$ROOT"
cd "$ROOT"
download() {
local url="$1" out="$2"
echo "== 下载 $out"
for _ in $(seq 1 300); do
wget -c -q --timeout=30 --tries=2 -O "$out" "$url" && return 0
sleep 5
done
echo "下载失败:$url" >&2
return 1
}
if [[ "${1:-}" == "--download" ]]; then
[[ -s "$DF_ZIP" ]] || download "$DF_URL" "$DF_ZIP"
[[ -s "$DFHACK_ZIP" ]] || download "$DFHACK_URL" "$DFHACK_ZIP"
fi
for f in "$DF_ZIP" "$DFHACK_ZIP"; do
[[ -s "$f" ]] || { echo "缺少 $f(先跑 --download)" >&2; exit 1; }
unzip -t "$f" >/dev/null || { echo "$f 已损坏" >&2; exit 1; }
done
echo "== 解压游戏本体"
DF_DIR="$(unzip -Z1 "$DF_ZIP" | head -1 | cut -d/ -f1)"
if [[ ! -d "$DF_DIR" ]]; then
unzip -q -o "$DF_ZIP"
fi
echo " 游戏目录:$ROOT/$DF_DIR"
echo "== 解压 DFHack(覆盖进游戏目录)"
unzip -q -o "$DFHACK_ZIP" -d "$DF_DIR"
echo "== 校验"
ls -1 "$DF_DIR" | head -20
if [[ -f "$DF_DIR/Dwarf Fortress.exe" ]]; then
echo " ✓ 启动器存在:Dwarf Fortress.exe"
else
echo " ✗ 未找到 Dwarf Fortress.exe" >&2
fi
if [[ -d "$DF_DIR/dfhack-config" && -d "$DF_DIR/hack" ]]; then
echo " ✓ DFHack 已就位(hack/ + dfhack-config/)"
else
echo " ✗ DFHack 目录缺失" >&2
fi
echo "$ROOT/$DF_DIR"