在单机刷暗黑的世界里,PlugY 早已成为 Diablo II 玩家离不开的小伙伴:它让仓库翻倍、让 Uber 任务与世界事件离开 Battle.net 也能触发,还允许多人难度快捷生效。本文逐段拆解 plugY.ini,不仅告诉你每一行代码的底层机理,更通过真实范例展示如何把这些开关运用到极致。阅读完毕,你将能够像改 Windows 注册表那样,自信地定制属于自己的《暗黑破坏神 2》单机体验。
逻辑导航
阅读提示:本文遵循“段落—示例—背后逻辑—现实类比”的叙事节奏,避免繁琐的列表式流水账。每当见到 “💡案例” 字样,即表示马上进入动手演练。
LAUNCHING 段:决定游戏入口
Param / Library 这里指定启动参数与必须注入的动态链接库。Library=PlugY.dll 告诉游戏在加载原生 Game.exe 之前,先把 PlugY 代码注入进来,从而劫持部分内存地址,完成后续功能注入。(D2Mods, D2Mods)
💡案例:若想让 PlugY 与 BaseMod 共存,只需在 BaseMod 的 ini 内追加 LoadDll3="PlugY.dll",并保持此处不变。(Reddit)
GENERAL 段:全局控制台
选项作用常见取值ActivePlugin总开关,0 为停用,1 为启用1ActiveLogFile写调试日志0/1DllToLoad / DllToLoad2额外注入 DLL自定义
调试狂热者可把 ActiveLogFile 设为 1,PlugY 会在游戏根目录生成 PlugY.log,其中记录了每个补丁点的地址与结果,类似 Chrome 的 --enable-logging。(D2Mods, GitHub)
LANGUAGE 段:界面与文本本地化
ActiveChangeLanguage=0 表示沿用系统语言。若想强制中文,可改为 1 并把 SelectedLanguage=CHI。支持的语言枚举在源码里以三字母 ISO 代号硬编码。(GitHub)
💡案例:法语母语用户希望阅读简体中文攻略,又不想改 Windows 区域,只需按上述步骤即可。
SAVEPATH 段:把角色存档放哪儿?
当 ActiveSavePathChange=1 时,PlugY 会调用 Windows API CreateDirectoryA 把 SavePath 指向的新文件夹建立在游戏目录,从而绕过系统虚拟化导致的 “C:\Users\用户名\Saved Games” 混乱。(D2Mods)
现实类比:这相当于给 Photoshop 指定自定义预设目录,避免系统盘炸裂时丢失数据。
MAIN SCREEN 段:开屏信息定制
ActiveVersionTextChange 与 VersionText 决定主菜单左上角显示的字符串。ColorOfVersionText=4 对应调色板条目,数值涵盖 0–15 共 16 色。ActivePrintPlugYVersion=1 会在界面右上角打印当前 PlugY 版本号,方便判别是否打错补丁。(plugy.free.fr)
STASH 段:多页仓库的灵魂
核心参数
选项功能建议ActiveBigStash将仓库格子扩展为 10×10对超宽屏 UI 可能溢出ActiveMultiPageStash开启分页功能必开NbPagesPerIndex一级分页按钮数量10NbPagesPerIndex2二级分页数量100MaxPersonnalPages / MaxSharedPages0 意味无限根据硬盘调
PlugY 通过重写 CAccount::GetStashPage 的索引逻辑,把原本单页 6×8 的二维数组升级为三维:角色→页码→坐标。此举并不改变存档格式,因为 PlugY 采用了额外的 *.ss 文件来存放超出原本存档大小的数据块。(zyel.fandom.com, d2jsp Forums)
💡案例:PD2 玩家若觉得按钮遮挡仓库,可把 ActiveBigStash=0 保留多页,兼容项目组自带的 UI。(Reddit)
属性与技能重置:STAT… 与 SKILL…
ActiveStatsUnassignment=0 表示禁止洗点;若调成 1,按住 Alt(KeyUsed=18)点击属性即可回收。ActiveSkillsUnassignment=1 同理支持技能重置,并且 ActiveSkillsUnassignmentOneForOne=1 代表 “返还 1 点消耗 1 个重置卷轴”。(Diablo Archive)
现实类比:这像是把 Word 文档撤销步数从 20 调到无限,给 Build 党足够试错空间。
升级奖励:STAT ON LEVEL UP 与 SKILL ON LEVEL UP
两段控制角色升级时自动发放的属性或技能点。如果模组想制作 “半自动” 成长系统,只需把 ActiveStatPerLevelUp=1 并设定 StatPerLevelUp。
WORLD EVENT 段:单机也能刷暗黑克隆
PlugY 复制 Battle.net 的 SOJ 监控逻辑:当售出指定数量的 The Stone of Jordan,或计数器随机溢出,就在 Act 5 刷出 Diablo Clone(ID=333)。(Reddit, D2Mods)
OwnSOJSoldChargeFor=100 决定每当自己卖掉一颗 SOJ,计数器加多少。InititalSOJSoldMin / Max 与 TriggerAtEachSOJSoldMin / Max 用来模拟 Battle.net 横跨多个服务器的波动。ActiveAutoSell=1 将在后台定时“代售” SOJ,区间由 TimeBeforeAutoSellMin/Max 控制。
💡案例:想让克隆 15 分钟内必刷?把 InititalSOJSoldMin / Max 调成 10/30,再把自动售卖间隔缩小到 60–120 秒即可。(GameFAQs)
UBER QUEST 段:让钥匙不再摆设
ActiveUberQuest=1 直接解锁大秘境三 Boss 与 Pandemonium Event。在官方 Battle.net,只有 Ladder 玩家才拥有此权利;PlugY 改写服务器标识位,使离线模式也识别钥匙与器官。(Diablo Archive)
INTERFACE 段:新面板与标签页
ActiveNewStatsInterface 会替换为宽屏友好的属性窗口。SelectMainPageOnOpenning=1 让仓库总是默认跳转主页面,减少翻页次数。(D2Mods)
EXTRA 段:杂项黑科技
选项效果来源ActiveLaunchAnyNumberOfLOD允许同机多开(D2Mods)AlwaysRegenMapInSP1 为每局重置地图,0 为保存路径(Reddit, D2Mods)NBPlayersByDefault开局自动 /players X(GameFAQs)ActiveDisplayItemLevel物品提示栏显示 ilvl(zyel.fandom.com, Reddit)ActiveLadderRunewords打开所有 Ladder 专属符文语(D2Mods, GameFAQs)ActiveCowPortalWhenCowKingWasKilled重复开奶牛关(Diablo Archive)
💡案例:速刷派装备党常把 NBPlayersByDefault=8、AlwaysRegenMapInSP=0 组合,借助固定地图路线刷通宵,却维持高掉率。若你更喜欢随机迷宫感,把重置开关设回 1。
真实场景三连发
1 — 极限收集党:无限共用仓库
[STASH]
ActiveMultiPageStash=1
MaxSharedPages=0
SeparateHardcoreStash=0
硬核与软核角色共享符号片刻,即可直接跨模式转移装备,无需拷贝存档。
2 — 单机挑战 Uber Diablo
[WORLD EVENT]
ActiveWorldEvent=1
ActiveAutoSell=1
TimeBeforeAutoSellMin=60
TimeBeforeAutoSellMax=120
InititalSOJSoldMin=10
InititalSOJSoldMax=30
TriggerAtEachSOJSoldMin=1
TriggerAtEachSOJSoldMax=1
60 秒一售 SOJ,累计出售 10–30 颗后必定触发克隆——平均 20 分钟即可开战。
3 — 打造 Ladder 体验
[EXTRA]
ActiveLadderRunewords=1
ActiveUberQuest=1
NBPlayersByDefault=8
无需连网,即能在 8 人掉率下体验 Enigma、Infinity 等符文语与大 Boss 之战。
常见疑难与排错
多开后掉线 检查 ActiveLaunchAnyNumberOfLOD 是否为 1,并确认系统 WinMM.dll 补丁未被篡改。地图意外重置 确保正在编辑的 ini 属于当前 Mod 路径,D2SE 用户常犯把改动写进全局 PlugY。仓库分页按钮消失 大多因为 UI 分辨率太低,调高窗口尺寸或关闭 ActiveBigStash 即可解决。(Reddit)
现实世界类比
把 plugY.ini 想象成一份 Nginx 配置:不同段落对应虚拟主机、负载均衡与缓存策略。只要了解指令背后的 C++ 钩子,就能精准地开关功能,避免“一键脚本”带来的未知风险。
结语
PlugY 并不是简单的仓库放大器,而是一整套覆盖 UI、事件、多人模拟等多维度的离线增强框架。掌握 plugY.ini 的语法之后,你等同于拿到了 Diablo II 单机世界的“超级管理员”钥匙:既可留存经典原味,也能打造私人 MOD。动动手,把上文案例粘进自己的文件,下一次进入鲁高因时,或许就会发现完全不同的新伊甸。