骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 32182|回复: 12

[版主推荐] 《骑马与砍杀2》MOD汉化指南

[复制链接]

125

主题

1896

回帖

2776

积分

子爵[版主]

黑骑工作室[负责人]

汉[Han]
联机ID:cnedwin

  船长

Rank: 7Rank: 7Rank: 7

UID
2960322
第纳尔
12230
精华
4
互助
162
荣誉
96
贡献
330
魅力
1018
注册时间
2017-12-12

战团正版勋章霸主正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之正义勋章[杰出会员荣誉勋章]大航海时代勋章舰长勋章

鲜花(977) 鸡蛋(0)
发表于 2020-6-19 10:26:51 | 显示全部楼层 |阅读模式
本帖最后由 cnedwin 于 2020-8-26 19:22 编辑

新上传了一个视频教程: https://www.bilibili.com/video/BV1Sf4y1Q74f/



为了防止Mod汉化的停更,前阵子我也发了一个招募帖,不过报名的人并不多,所以我打算把汉化的方法和经验写出来,让更多人受益。
这是招募贴:https://bbs.mountblade.com.cn/thread-2065554-1-1.html
这是懒人包:https://bbs.mountblade.com.cn/thread-2064803-1-1.html
这是141的列表:https://bbs.mountblade.com.cn/thread-2063606-1-1.html
这是142的列表:https://bbs.mountblade.com.cn/thread-2065111-1-1.html
这是143的列表: https://bbs.mountblade.com.cn/thread-2066300-1-2.html
这是150的列表:https://bbs.mountblade.com.cn/thread-2068024-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,会看到这样的一个界面。
1.png

将我们要修改的Mod目录里的 \bin\Win64_Shipping_Client 下所有.dll后缀的文件拖到左边那一栏。
以Telepathymod为例,然后点开要修改的主程序Telepathy.dll
2.png


我们要汉化的其实是右边的那些代码里面的字符(String)

3.png

我们看到一个字符串,在骑砍2中,通常是TextObject的对象,它本身是一个String类型。
因为汉化,不能破坏程序主体和代码,我们只汉化那些用双引号引起来橙色部分,类型是String的字符。
注意千万不要漏掉了左右两边的双引号

修改完之后,我们需要编译保存
编译的时候,会用到这个程序依赖的一些库,主要写在上面
如果你不拖进去,编译会报错,报错的英文里大概就是说缺少依赖的文件之类的。
4.png

因此我们需要把它依赖的库(都是一些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 城镇驻军来举例:

5.png

你会发现,每一个字符,作者都预先给设定了一个ID,就是这个花括号里的英文。
如果你有对应的语言包,则在游戏里显示对应的语言,如果没有,则在游戏里默认显示花括号后面的英文。

我们会看到
\Mount & Blade II Bannerlord\Modules\ImprovedGarrisons\ModuleData\Languages
这个目录里面有一个str_CNS.xml 文件(这是我自己做的,原来没有)
用NotePad++打开编辑,你会发现这个:

6.png

原理你明白了么,就是在不破坏原来程序的基础上,我们做本地化的语言翻译,单独写一个xml来存放这些id的汉化内容。

一般作者发布Mod如果支持本地化,他会单独发一个语言包的模板,你下载下来,然后单独存放到\ModuleData\Languages 下面就行。
系统默认是,简体中文是CNs,也就是在Languages下面再建一个子目录CNs,繁体中文是CNt。
如果你有多个语言包,系统设置为什么语言,就会加载什么语言目录下对应的xml。
如果原作不支持本地化,一些有节操的汉化者,会自己给他们加ID,比如知楼大神。

7.png

注意,这些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文件的内容必须是这样的
8.png



第四章:修改DLL实现汉化

有些Mod,不支持本地化,没有引用 TaleWorlds.Localization.dll,也没有提取字符ID,你又懒得给他加。你可以直接用DNSPY反编译他的DLL文件,直接修改那些字符串来实现,比如Distinguished Service。

9.png

你只需要找到所有 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了。

10.png

另外有一些Mod,替换了骑砍2默认的一些界面,需要一些图片,那些图片也是存在GUI这个目录下的,你可以对照去看看。
汉化的时候自己做对应大小和尺寸的图片去替换。



第六章:常见的MCM和Modlib设置菜单汉化

很多时候,我们汉化一些Mod,并不需要汉化其他的文本,主要是看不懂他的设置菜单。
而大多数第三方Mod都使用MCM和Modlib作为菜单库,所以我们只要熟悉了怎么处理它的本地化就可以完成汉化工作。
以外交修复为例,它就是典型的使用了MCM的,进入游戏后,点选项,Mod选项,就能看到设置菜单。
他在dll里面一般是主要的名空间下,有一个Setting的类。

11.png

大多数Mod,设置菜单都喜欢叫xxxx Setting,选项都喜欢叫 xxxx Opiton。

再以最著名的Bannerlord Tweaks 综合设置为例(它是用的Modlib)
12.png


再拿很知名的技能实装的社区补丁Community Path举例子,我们直接汉他的主程序
这个Mod,直接编辑类是不能编译的,只能在右边,一行一行的用IL指令修改来汉。

13.png

这是一个判断函数,那个方法的名字我们不能汉,但是两个选项可以对应汉掉!
好了!现在你试试自己汉化一个Mod玩玩吧!!!

以后我会举更多例子,如果你汉化遇到问题,可以给我回帖,或者加这个QQ群 910445077


评分

参与人数 2荣誉 +1 第纳尔 +20 互助 +2 魅力 +11 收起 理由
Q5521122 + 1 您的帖子很有价值!
muyiboy + 1 + 20 + 2 + 10 感谢您对骑砍中文站的支持!

查看全部评分

鲜花鸡蛋

410163a  在2022-7-5 18:34  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
chrisyang14  在2022-4-11 14:15  送朵鲜花  并说:我从头看到尾,然后从入门到入土.
nijat8  在2022-4-1 18:02  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
256659573  在2021-10-6 20:20  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
ㄡPredoome々  在2020-7-23 05:38  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
【汉战队】长期招募热爱冷兵器战争游戏,追求竞技体验的骨灰级玩家。
【黑骑工作室】和《希绝大陆》长期招募致力于砍2的Mod开发的开发者。
【中文站Mod精选包】长期招募汉化组志愿者。

125

主题

1896

回帖

2776

积分

子爵[版主]

黑骑工作室[负责人]

汉[Han]
联机ID:cnedwin

  船长

Rank: 7Rank: 7Rank: 7

UID
2960322
第纳尔
12230
精华
4
互助
162
荣誉
96
贡献
330
魅力
1018
注册时间
2017-12-12

战团正版勋章霸主正版勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之正义勋章[杰出会员荣誉勋章]大航海时代勋章舰长勋章

鲜花(977) 鸡蛋(0)
 楼主| 发表于 2020-6-19 13:46:31 | 显示全部楼层
OK了,二楼留着备用。
【汉战队】长期招募热爱冷兵器战争游戏,追求竞技体验的骨灰级玩家。
【黑骑工作室】和《希绝大陆》长期招募致力于砍2的Mod开发的开发者。
【中文站Mod精选包】长期招募汉化组志愿者。

1

主题

72

回帖

27

积分

随仆

Rank: 1

UID
3169778
第纳尔
461
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2020-4-16
鲜花(2) 鸡蛋(0)
发表于 2020-6-20 00:43:52 | 显示全部楼层
超实用贴,满满干货厉害了!

56

主题

1274

回帖

929

积分

子爵[版主]

圣保罗骑士团[SP]
战团ID:SP_Notealot

谋略军士

Rank: 7Rank: 7Rank: 7

UID
2519759
第纳尔
5020
精华
0
互助
92
荣誉
7
贡献
125
魅力
1116
注册时间
2015-5-20

2023剑盾大赛奉献勋章骑砍中文百科会员勋章原版正版勋章战团正版勋章火与剑正版勋章拿破仑正版勋章维京征服正版勋章汉匈决战正版勋章霸主正版勋章骑士荣誉之维京征服汉化勋章骑士荣誉之霸主汉化勋章骑友真人秀Ⅷ勋章

QQ
鲜花(115) 鸡蛋(26)
发表于 2020-6-25 09:44:16 | 显示全部楼层
好家伙,这语法跟C/C++差不多啊,代码可读性属实好,那我从C/C++转过来学应该还是挺容易的

2

主题

54

回帖

17

积分

随仆

Rank: 1

UID
2716469
第纳尔
714
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2016-1-8

战团正版勋章维京征服正版勋章霸主正版勋章

鲜花(1) 鸡蛋(0)
发表于 2020-7-31 23:44:51 | 显示全部楼层
一脸懵逼的来 哈哈

61

主题

633

回帖

573

积分

骑士

Rank: 4Rank: 4

UID
295308
第纳尔
2627
精华
0
互助
55
荣誉
9
贡献
0
魅力
139
注册时间
2010-8-11

战团正版勋章

鲜花(121) 鸡蛋(0)
发表于 2020-12-29 17:12:43 | 显示全部楼层
谢谢C大教程~~

0

主题

41

回帖

17

积分

随仆

Rank: 1

UID
3260931
第纳尔
65
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2021-8-10
鲜花(0) 鸡蛋(0)
发表于 2021-8-21 16:04:34 | 显示全部楼层
你是真的想把我们教会

11

主题

319

回帖

104

积分

见习骑士

Rank: 3

UID
2732123
第纳尔
2332
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2016-3-26

汉匈决战正版勋章

鲜花(4) 鸡蛋(0)
发表于 2021-8-31 08:29:15 | 显示全部楼层
已经看晕,三克油!

0

主题

29

回帖

9

积分

平民

Rank: 1

UID
3309226
第纳尔
97
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2022-1-7
鲜花(0) 鸡蛋(0)
发表于 2022-12-5 05:32:18 | 显示全部楼层
搞土木的看起来好费劲

0

主题

12

回帖

9

积分

平民

Rank: 1

UID
3488315
第纳尔
28
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2023-2-24
鲜花(0) 鸡蛋(0)
发表于 2023-2-25 13:57:31 | 显示全部楼层
有用点很少也没说具体怎么

0

主题

12

回帖

9

积分

平民

Rank: 1

UID
3488315
第纳尔
28
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2023-2-24
鲜花(0) 鸡蛋(0)
发表于 2023-2-25 13:55:50 | 显示全部楼层
有用点很少,也没说具体怎么做 说个大概

5

主题

825

回帖

284

积分

见习骑士

汉[Han]
联机ID:[Han]嗜好拾荒Z

Rank: 3

UID
3203584
第纳尔
1767
精华
0
互助
7
荣誉
0
贡献
0
魅力
5
注册时间
2020-10-12

骑砍中文站APP会员勋章霸主正版勋章

鲜花(13) 鸡蛋(0)
发表于 2023-2-28 09:23:51 来自手机 | 显示全部楼层
非常感谢c大来自: Android客户端

0

主题

1

回帖

5

积分

平民

Rank: 1

UID
3533203
第纳尔
2
精华
0
互助
1
荣誉
0
贡献
0
魅力
0
注册时间
2023-7-2
鲜花(0) 鸡蛋(0)
发表于 2023-9-22 11:32:12 | 显示全部楼层
如果没有Settying应该怎么汉化呢?例如东方王朝
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-27 10:27 , Processed in 0.135425 second(s), 41 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表