闲来无事,搞搞游戏
第一款游戏:Legend Tower Defense: Idle RPG
发现最近好像游戏都要汉化,于是打开游戏,搜索字符串
发现字符串在dat文件中,在网上寻找到大佬做的工具UTTOOL.exe(不知道哪位大佬做的,感谢)可以一键导出dat中的所有文本,让我们有了批量修改的可能
加载globeldata.dat导出所有字符串
直接发给谷歌翻译,导入替换,不行直接闪退,可能是因为dat文件中的字符串不全部都是游戏文本内容,还包含一些函数名称什么的吧,所以我们就得将其中的游戏文本内容挑出来,这就很麻烦了,自己一条一条人工识别,一万多条,累死我算了
于是祭出AI工具,问他一下该怎么区分游戏文本内容,根据AI所言,dat作为元数据会被so去使用,那肯定会有将文本与其他区分开来的地方
所以我们去看看so,使用Il2CppDumper处理一下
ida打开so,加载脚本,Il2CppDumper处理后会生成一个字符串文件stringliteral.json
我们进去随便搜一个游戏文本字符串
根据地址去ida跳转搜索,发现了不一样的地方
我们发现所有的游戏文本内容都被一个叫LangEN的类的方法调用,这就给了我们思路,我们只要把这个类的所有方法所调用的字符串挑出来,不就行了嘛,去问问AI,让它给个脚本
去ida实践一下(一定要等so完全加载完,即输出窗口输出finish或者上面的加载提示灯变成绿色,加载大的文件很慢),有问题让它再多修改几次
最后运行下脚本,成功提取游戏文本!
然后就将文本全部翻译,自己看看没什么大问题,就可以填进去了(再让AI写一个根据英文回填的,没被回填的行就用原文本代替,就OK啦!)
再把修改好的globeldata.dat添加进安装包,这样就完成了!(但是这个游戏我也不知道为啥改了之后只有第一次能进,第二次就不行了)
第二款游戏
51316
第二款游戏,dat也有文本,但是它不是特定的类,查看调用,会发现游戏字符串都会作为info_stripe$$send_message这个方法的参数使用,所以让AI修改一下代码(图放不下了,就不放了)
得到新的代码,运行一下,成功!
仅仅给大家提供个思路,也不会写脚本,都是靠AI做的,写的不好,大家见谅。
请登录后发表评论
注册
停留在世界边缘,与之惜别