游戏狂人
 
- 贡献度
- 298
- 金元
- 6728
- 积分
- 1885
- 精华
- 2
- 注册时间
- 2013-12-5
|
本帖最后由 cnedwin 于 2020-6-12 19:21 编辑
最近骑砍2更新越来越慢,很多作者也热情消退,估计会进入一个暂时的低谷期,除非官方能够更新一些新的内容,或者彻底开放Mod编辑器和API。
N网上的,绝大部分Mod都是由纸篓(他的马甲:luckysky426、WPB)、casebo、悠悠小墨汉化的,我的作品是不发布N网的。
最近一些合集帖在转载时,连出处和署名都不写,强烈谴责这些行为,为此纸篓甚至考虑解散他的QQ群了。
为了防止Mod汉化的停更,前阵子我也发了一个招募帖,不过报名的人并不多,所以我打算把汉化的方法和经验写出来,让更多人受益。
这是招募贴:https://bbs.mountblade.com.cn/thread-2065554-1-1.html
这是懒人包:https://bbs.mountblade.com.cn/thread-2064803-1-1.html
我的网盘地址:链接 https://quqi.gblhgk.com/s/1845019/ZFgk5BVyw4cWr4o1 查阅码 qWUr2r
不要问我为什么不用百度网盘,下载量太大,每天被封几次你就知道了。
第一章:如何使用DNSPY反编译DLL和使用NotePad++编辑XML
主流的汉化圈,基本用DNSPY来反编译DLL,修改里面的代码实现的,DNSPY的下载链接在这里:https://github.com/0xd4d/dnSpy/releases
因为骑马与砍杀2是基于.Net 4.7.2开发的,所以我们选择 dnSpy-net472.zip
这是一个绿色软件,不需要安装,解压缩后,直接运行dnSpy.exe,会看到这样的一个界面。
将我们要修改的Mod目录里的 \bin\Win64_Shipping_Client 下所有.dll后缀的文件拖到左边那一栏。
以Telepathymod为例,然后点开要修改的主程序Telepathy.dll
我们要汉化的其实是右边的那些代码里面的字符(String)
我们看到一个字符串,在骑砍2中,通常是TextObject的对象,它本身是一个String类型。
因为汉化,不能破坏程序主体和代码,我们只汉化那些用双引号引起来橙色部分,类型是String的字符。
注意千万不要漏掉了左右两边的双引号。
修改完之后,我们需要编译和保存。
编译的时候,会用到这个程序依赖的一些库,主要写在上面
如果你不拖进去,编译会报错,报错的英文里大概就是说缺少依赖的文件之类的。
因此我们需要把它依赖的库(都是一些DLL),也拖到DNSPY的左边,或者在编辑类的时候,左下角有一个引用程序集,把需要的库选中。
通常这些库,它们在三个位置:游戏的基础库:
\Steam\steamapps\common\Mount & Blade II Bannerlord\bin\Win64_Shipping_Client
游戏默认Mod的一些运行库:
\Steam\steamapps\common\Mount & Blade II Bannerlord\Modules\Native\bin\Win64_Shipping_Client
\Steam\steamapps\common\Mount & Blade II Bannerlord\Modules\Sandbox\bin\Win64_Shipping_Client
\Steam\steamapps\common\Mount & Blade II Bannerlord\Modules\StoryMode\bin\Win64_Shipping_Client
游戏依赖的第三方库,比如MCM和Modlib
注意这些依赖的库dll,版本一定要选对,否则进游戏就会崩溃,比如你输出1.4.1的版本,千万别选成1.4.2的dll。
你看一下上图,白色字,引用里缺的文件名字叫什么,去找到,给他拖进去就行了。
然后点编译,如果通过了,再点保存项目,导出新的dll。
如果有啥不懂的,只能靠你自己摸索了。
至于编辑XML,很多人直接用记事本,这个是骑砍2官方强烈反对的,因为会修改文件头和编码,导致文件不可用。
所以大家可以去我的网盘,下载一个NotePad++,或者用Vistual Cose,这种适合编辑XML的编辑器。
DNSPY编辑DLL,毕竟是反编译,所以跟原始程序还是有区别的,所以分为三种编辑模式:
1,编辑类 (黄色的名空间的下一级就是绿色的类,如果反编译的比较完整,直接编译类,就可以编译了。)
2,编辑类方法 (绿色的类下面,还会有一级,浅绿色的是类方法,也就是俗称的函数,有时候直接编译类方法就可以实现修改。)
3,IL指令修改(有一些程序不让反编译,或者有加密和签名,我们只能在右侧,单独点那一行,右键,IL指令编辑,然后利用0Harmony机制,在运行是偷换类方法来实现程序替换)
第二章:骑砍2的本地化机制
骑砍2,默认是支持多语言的,因此他在TaleWorlds.Localization.dll里面写好了本地化的机制。
关于这方面,悠悠小墨,他做过两个教程
第一个在N网: https://www.nexusmods.com/mountandblade2bannerlord/mods/1211
第二个在B站有视频: https://www.bilibili.com/video/BV1Tt4y117K2/
有了这个机制,如果dll里面已经给所有的字符串写好ID了,你只需要制作XML,放到指定的目录里,就可以汉化。我这里拿我汉化的Improved Garrisons 城镇驻军来举例:
你会发现,每一个字符,作者都预先给设定了一个ID,就是这个花括号里的英文。
如果你有对应的语言包,则在游戏里显示对应的语言,如果没有,则在游戏里默认显示花括号后面的英文。
我们会看到
\Mount & Blade II Bannerlord\Modules\ImprovedGarrisons\ModuleData\Languages
这个目录里面有一个str_CNS.xml 文件(这是我自己做的,原来没有)
用NotePad++打开编辑,你会发现这个:
原理你明白了么,就是在不破坏原来程序的基础上,我们做本地化的语言翻译,单独写一个xml来存放这些id的汉化内容。
一般作者发布Mod如果支持本地化,他会单独发一个语言包的模板,你下载下来,然后单独存放到\ModuleData\Languages 下面就行。
系统默认是,简体中文是CNs,也就是在Languages下面再建一个子目录CNs,繁体中文是CNt。
如果你有多个语言包,系统设置为什么语言,就会加载什么语言目录下对应的xml。
如果原作不支持本地化,一些有节操的汉化者,会自己给他们加ID,比如知楼大神。
注意,这些id,必须是唯一的,越长越好,最好不容易重复,否则跟其他的地方冲突就麻烦了。
\Mount & Blade II Bannerlord\Modules\ 这个目录是骑砍2存放配置文件的目录,一般都是放语言包和设置文件还有缓存的。
\Mount & Blade II Bannerlord\Modules\DiplomacyFixes\ModuleData\Languages\CNs 以外交修复为例,简体中文的语言包放在这个目录里。
你不需要修改任何程序,他默认都会自动加载,不管你文件名叫什么 .xml ,他都会按顺序加载,哪怕是好几个文件。
但是也有一些作者做的很不规范,他没有锁目录,比如我刚才举例子的IG,曾经几个版本把我都搞晕了。
第三章:如何提取字符串ID和制作XML语言包
上一章,其实已经讲得差不多了,相信你已经会提取id和自己做本地化的语言包了。
提取ID必须用DNSPY打开dll文件,去一个个找,如果没有你也可以自己加,但是千万别破坏程序结构,也别漏掉双引号。
而XML语言包,一般放在Mod文件夹的这个目录
\ModuleData\Languages\CNs
名字叫什么无所谓,如果作者给你英文的模板,你直接下载,建立文件夹,放进去,然后改英文字符为中文就行。
XML文件的内容必须是这样的
第四章:修改DLL实现汉化
有些Mod,不支持本地化,没有引用 TaleWorlds.Localization.dll,也没有提取字符ID,你又懒得给他加。你可以直接用DNSPY反编译他的DLL文件,直接修改那些字符串来实现,比如Distinguished Service。
你只需要找到所有 new TextObject("最佳服务勋章", null).ToString(), 这样子的对象。
new是创建一个新的,TextObject是一个文本对象的意思,双引号里面的代表字符,后面的ToString()代表这个是一个字符类型的对象。
双引号里面的,你改成什么文本都不会破坏程序本身。
但是你不要看到任何字符都去汉化,先编译试试,能不能正常编译。
如果能正常编译,你保存项目,导出dll,进游戏看看,能不能正常用。
如果不能,说明你把不该汉化的代码都给翻译了。。。
第五章:修改GUI和页面实现汉化
骑砍2,有一些需要汉化的地方,并不在DLL里面,而是在GUI界面上,或者在页面上(例如百科)。他们通常在这个目录下,我拿TelepathyMod心灵感应举例子。
\Modules\Telepathy\GUI\ 这个目录下放的都是一些游戏里的图形界面,比如弹窗啊,或者页面。
心灵感应是在角色的百科页面加了一个按钮,是在这里:
\Modules\Telepathy\GUI\Prefabs\Encyclopedia\EncyclopediaSubPages\EncyclopediaHeroPage.xml
字面意思你都能看出来,它是替换了百科页面的英雄这个子页面,游戏把它封装成一个XML了。
另外有一些Mod,替换了骑砍2默认的一些界面,需要一些图片,那些图片也是存在GUI这个目录下的,你可以对照去看看。
汉化的时候自己做对应大小和尺寸的图片去替换。
第六章:常见的MCM和Modlib设置菜单汉化
很多时候,我们汉化一些Mod,并不需要汉化其他的文本,主要是看不懂他的设置菜单。
而大多数第三方Mod都使用MCM和Modlib作为菜单库,所以我们只要熟悉了怎么处理它的本地化就可以完成汉化工作。
以外交修复为例,它就是典型的使用了MCM的,进入游戏后,点选项,Mod选项,就能看到设置菜单。
他在dll里面一般是主要的名空间下,有一个Setting的类。
大多数Mod,设置菜单都喜欢叫xxxx Setting,选项都喜欢叫 xxxx Opiton。
再以最著名的Bannerlord Tweaks 综合设置为例(它是用的Modlib)
再拿很知名的技能实装的社区补丁Community Path举例子,我们直接汉他的主程序
这个Mod,直接编辑类是不能编译的,只能在右边,一行一行的用IL指令修改来汉。
这是一个判断函数,那个方法的名字我们不能汉,但是两个选项可以对应汉掉!
好了!现在你试试自己汉化一个Mod玩玩吧!!!
以后我会举更多例子,如果你汉化遇到问题,可以给我回帖,或者加这个QQ群 910445077
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
3
查看全部评分
-
|