borderlands吧 关注:311,756贴子:4,890,249
  • 35回复贴,共1

【冷雨】无主之地2 Mod Python SDK 深度汉化补丁

只看楼主收藏回复

解决了原版 SDK 不支持汉化 快捷键菜单,MOD标题 的问题。
该补丁最好安装在 SDK汉化版 上,也可以下载我提供的已经打好补丁的SDK。


IP属地:黑龙江1楼2024-06-09 20:09回复
    此楼为地址楼。


    IP属地:黑龙江2楼2024-06-09 20:09
    收起回复
      2025-05-10 19:56:32
      广告
      打完补丁的 SDK 已经可以支持汉化所有内容。图中所示的我的汉化MOD合集也在2楼。



      IP属地:黑龙江3楼2024-06-09 20:12
      收起回复
        以下为技术讨论,供后来的开发者参考
        1.快捷键无法汉化 修复
        原版SDK 可以显示汉化的 MOD设置,却不能显示汉化的 快捷键设置,问题出在哪呢?
        问题出在,ModMenu.KeybindManager._extOnPopulateKey,这个函数体里有个 C++ 函数,AddKeyBindEntry,用 UE Explorer 可以找到它在 WillowGame.WillowScrollingListDataProviderKeyboardMouseOptions
        原型是
        function int AddKeyBindEntry(name Tag, name ActionName, string Caption)
        ModMenu 对它的调用长这样(239-240):
        tag = (_TAG_INPUT if rebindable else _TAG_UNREBINDABLE) + f".{mod.Name}.{name}"
        idx = caller.AddKeyBindEntry(tag, tag, " " * _INDENT + name)
        以下略过所有分析过程,直接讲结论:
        第三个参数 Caption 是显示名称,可以有中文。
        第一、二个参数 Tag,ActionName 是无主之地2的内部名称,不允许有中文。
        传入的第一、二个参数里含有 {mod.name} 和 {name},一旦汉化,因为函数不允许有中文,就会出错。问题的根源就在这里。
        我的修复办法:
        tag = (_TAG_INPUT if rebindable else _TAG_UNREBINDABLE) + f".mod{numA}.{numB}"
        其中 numA 和 numB 为自行定义的索引迭代量,0,1,2……这样 Tag,ActionName 就不可能包含任何中文了。而游戏中实际显示的是第三个参数,可以有中文。这样这个函数就可以正确运行,不会出错。汉化的快捷键自然也就能正常显示。
        2.Mod标题无法汉化 修复
        这个问题也是一样,ModMenu.KeybindManager._extOnPopulateKey,的另一段也包含了 AddKeyBindEntry 函数。这段是决定 Mod标题 无法汉化的关键因素。修正方法如上。


        IP属地:黑龙江4楼2024-06-09 20:19
        回复
          此修复我将会与SDK的作者探讨,争取下个版本实装。


          IP属地:黑龙江5楼2024-06-09 20:19
          收起回复
            安装方法:解压后得到 Mods 文件夹,拖进 Binaries\Win32 覆盖。


            IP属地:黑龙江7楼2024-06-09 20:29
            回复
              感谢楼主汉化,这样看着方便多了,继续期待楼主更多汉化和作品


              IP属地:广东来自Android客户端8楼2024-06-11 22:32
              回复
                支持大神


                IP属地:北京9楼2024-06-12 09:08
                回复
                  2025-05-10 19:50:32
                  广告
                  更新1.1版本
                  1.settings.json 也会正确显示中文。

                  2.支持将中文标题的 MOD 设为“喜爱”。


                  IP属地:黑龙江10楼2024-06-13 19:59
                  回复
                    更新1.2版本
                    1.修正 原汉化版SDK 和 英文版SDK 不兼容的问题
                    现在 深度汉化版SDK 和 英文版SDK 完全兼容,与 原汉化版SDK 不再兼容。
                    与英文版兼容主要是为后来的汉化者服务。
                    不兼容的问题主要导致 BL2Fix 汉化版 无法适用于 深度汉化版SDK。2楼链接 提供 BL2Fix 汉化版 深度汉化SDK兼容版本。此版本同时修正了其在任何SDK下都无法自动生成配置文件的BUG。


                    IP属地:黑龙江11楼2024-06-17 22:42
                    回复
                      以下为技术讨论:
                      ModMenu 的 ModObjects.py 中的 Action 为什么不能直接汉化?
                      因为 ModMenu 赋予了 Mod 作者 自定义 MODS 菜单中 Action 的权限,同时也给予了 Mod 作者显式声明默认Action 的权限,其中就包含了 Enable 和 Disable 这两个重要 Action,也就是 启用MOD 和 禁用MOD 这两个动作。这是 SDK作者 和 MOD作者 约定好的名字。直接汉化 Action ,Enable 汉化为 启用,Disable 汉化为 禁用,就改变了这个约定,但是英文版 MOD 的作者依旧遵守这个约定,这就会导致显式声明了 Action Enbale,Disable 的MOD出现无法自动生成 Settings.json,进而无法运行的BUG。
                      根据汉化的原则,汉化不应改变SDK的功能。
                      修复方法:使 Action的 实际值 与 显示值 分离,这样既汉化了菜单上的显示,又没有改变程序内部 Action 的实际值。


                      IP属地:黑龙江12楼2024-06-17 23:07
                      回复
                        2024.10.29 更新
                        打包文件中增加两个 Mod 支持库
                        Enums, Structs
                        这两个支持库,再加上之前就已经在 SDK 包中的 UserFeedBack,本身不做任何事情,只是为其他Mod提供支持,是很多 (英文)Mod 运行必须。详细信息如下:
                        Enums 作者:apple1417 版本:1.1
                        Structs 作者:apple1417 版本:1.1
                        Userfeedback 作者:apple1417 版本:1.6


                        IP属地:黑龙江13楼2024-11-02 20:09
                        回复