如何启用 NetHack Stuff 上的 itemcat 和 dynkey 补丁

这两个补丁都不是“下载即用”的成品,而是需要你自己编译进 NetHack 源码的 diff 文件。启用方式分两步:先在 config.h 里打开对应的编译开关,再按补丁要求修改配置文件或源码。itemcat 的开关是 ITEMCAT 和 ITEMCAT_JP,dynkey 的开关是 DYNKEY。补丁文件名后缀标明了适用的 NetHack 版本,选错版本会导致打补丁失败。

先确认版本匹配

NetHack Stuff 上的补丁用文件名后缀标注 NetHack 版本号,例如 itemcat-343.diff 对应 3.4.3,dynkey-343.diff 同样对应 3.4.3。SLASH'EM 有单独的 itemcat-007e6f3.diff。

选择补丁前先确认你手上的源码版本,再挑后缀一致的 diff。站点也提醒,如果补丁很新,可能带有较严重的 bug;如果某个补丁用起来问题很大,换旧版本可能更稳。

启用 itemcat

itemcat 的作用是在 drop、put_in、take_out 菜单里增加额外的物品分类选项。根据站点说明,它新增的分类包括:

分类键 含义
I 未鉴定物品(若还想选 b/u/c 状态未知的物品,用 I 加 X)
P 刚取出或刚拾取的物品(取决于你上一个动作)
Q 自动拾取的物品(会尊重自动拾取例外设置)
r 已知易锈物品(需设置类似 like_swimming 的选项)
Z 反选,即选中除正常选择之外的所有物品(通常与按 @ 不同)

启用步骤:

  1. 把对应版本的 itemcat-*.diff 应用到 NetHack 源码。
  2. 打开 config.h,定义 ITEMCAT 和 ITEMCAT_JP 来启用该补丁。
  3. 重新编译。编译时可以选择启用一个或多个额外物品分类。

站点提到该补丁的多个分类建议来自 M. Drew Streib、Pasi Kallinen、Keiran 等人,SLASH'EM 版本由 Justin Flude 完成。

启用 dynkey

dynkey 用于动态键位绑定。启用步骤:

  1. 应用对应版本的 dynkey-*.diff。
  2. 在 config.h 中启用 DYNKEY。
  3. 在配置文件里添加绑定行,例如:
    • MAP=z y
    • SWAP=C-d q
  4. 重新编译并加载你的配置文件。

站点说明 dynkey 0.2 版修改了 do_name.c。更完整的配置说明需要参考补丁自带的文档。

常见卡点

  • 版本不匹配:diff 后缀和源码版本不一致时,打补丁会报错或产生错误结果。
  • 忘记改 config.h:只应用 diff 而不定义 ITEMCAT、ITEMCAT_JP 或 DYNKEY,功能不会生效。
  • Guidebook.txt 被改动:部分补丁会修改 Guidebook.txt。这对在 PC 上阅读的 Windows 用户有帮助,但如果需要正确的排版,得从 Guidebook.mn 重新生成。
  • 存档与骨骼兼容性:站点明确说明这些补丁不会破坏骨骼或存档兼容性,所以不必担心旧存档无法继续使用。
  • 新补丁的 bug 风险:站点提醒很新的补丁可能含有严重 bug,遇到问题可回退到旧版本。
nh.gmuf.com