0x00 前言
相信不少同学在实装 2023 的新特性符文石碑后,发现多处出现了韩文、或者 ??
乱码:
这些乱码需要在不同的位置中修正:
- 界面变量文字:
data/msgstringtable.csv
- 界面固定文字: GRF 图档
- 符文描述:
System/Rune
- 硬编码文字:
Ragexe
0x10 界面变量文字(msgstringtable)
2022 之前的客户端中,如果界面需要定义字符串变量,大部分都在 data/msgstringtable.txt
中。
但是从 2023 开始,改用了 data/msgstringtable.csv
,内容使用了 Base64 逐行编码。
对其解码后,找到 MSI_RUNESYSTEM_RUNE
前缀的变量进行汉化,这些都是符文石碑界面的字符串变量:
MSI_RUNESYSTEM_RUNESET_TITLE,符文 %s 套装
MSI_RUNESYSTEM_RUNE_TITLE,%s 的符文碎片
MSI_RUNESYSTEM_RUNE_UPGRADEPER,强化概率
MSI_RUNESYSTEM_RUNE_FAILDESC,失败时成功几率增加 %.2f%%
MSI_RUNESYSTEM_RUNE_UPGRADEMAXDESC,最大强化等级
MSI_RUNESYSTEM_RUNE_UNACTIVEDESC,这是禁用状态下无法实现的功能
MSI_RUNESYSTEM_RUNE_RUNE_NULL,信息不存在
MSI_RUNESYSTEM_RUNESET_DESC,%d 套装效果
注意修改后需要重新编码为 Base64,建议用 python 批量编解码
影响位置:
0x20 界面固定文字(GRF 图档)
符文石碑的界面固定文字的图档主要集中在 data/textture/蜡历牢磐其捞胶/runesystem
目录下:
使用 GRF-Editor 提取这些图档,然后在 PS 修改图片中的文字即可:
不想自己修图的同学,可以使用《2023 符文石碑系统资源包》
影响位置:
0x30 符文描述(System/Rune)
符文石碑的配置文件主要在 System/Rune
目录下:
其中相关的描述文件为:
rune_desc.lub
: 可以设置【符文碎片】的显示名称runeset_desc.lub
: 可以设置【符文套装效果】的描述
影响位置:
0x40 硬编码文字(Ragexe)
当你汉化完前面所有位置的文字后,还有一个位置是没有汉化的:
在【符文碎片】中,标题乱码文字 狼 烽 炼阿
是最难找的。
但在其他所有位置都已经修改了的情况下,已经可以猜它应该在 Ragexe 中硬编码了。
修改前需要先确保你的 Ragexe 已经 DIFF 完毕(DIFF 的原胚版本至少 2023-08-17 才会找到)
首先使用 c32asm 以十六进制模式打开 Ragexe,搜索 ANSI 字符串 狼 烽 炼阿
,可以查询到唯一结果:
而且这个位置的上下文英文都是 runesystem 相关,可以判断没有找错位置。
所标记 狼 烽 炼阿
对应的十六进制编码为 C0 C7 20 B7 E9 20 C1 B6 B0 A2
,而且后面跟着 4 个空字节 00 00 00 00
,换言之这个位置一共有 10 + 4 = 14
字节,相当于 GBK 编码 5 + 2 = 7
个汉字。
如果要汉化这里,至少应该用 5 个汉字覆盖 狼 烽 炼阿
(最多可设置 7 个汉字)。
但应该汉化成什么呢?
其实 狼 烽 炼阿
并不是乱码,它本来是韩文,只是因为在简体中文系统打开游戏,导致使用了 GBK 编码显示韩文、才变成了乱码。
我们可以利用 VSCode 等文本编辑器找到它原本的含义。
首先用 GBK 编码(简体中文)存储 狼 烽 炼阿
文字到 txt 文件:
然后用 ISO-8859-1 编码(英文)重新打开这个文件,可以发现显示的文字与 c32asm 显示的十六进制一样 ÀÇ ·é Á¶°¢
:
接着用 EUC-KR 编码(韩文)重新打开这个文件,发现显示成韩文 의 룬 조각
了:
翻译韩文 의 룬 조각
得到它的中文意思为 符文碎片
:
但这里要注意:
- 韩文
狼 烽 炼阿
算上中间 2 个空格,长度是 10 个字节(即 5 个字) - 中文
符文碎片
只有 4 个字(即 8 字节)
前面已经说过,为了覆盖这里的韩文,至少应该用 5 个汉字、最多可设置 7 个汉字。
因此最终加了 1 个字,使用 的符文碎片
对 exe 对应位置进行汉化:
最终效果: