azerothCode-更改任务语言显示
使用了繁体的335客户端登录,发现有些任务文本是英文显示

按理繁体客户端不会有英文才对,猜测任务文本实际上是服务器下推的。
全局搜工程文件,发现如下两个配置表
quest_template英文配置表
找到对应的文本,id为924


quest_template_locale 本地化配置表
发现并没有zhTW版本的翻译,所以默认使用了英文

追一下服务器推送相关函数,证明我们的猜测:

问题到了语言是什么时候设置的,猜测是客户端告知的,然后在内存中就可以根据语言找对应版本的配置。
询问大模型,服务器什么时候设置,最终发现是
HandleAuthSessionCallback函数中创建了一个worldSession,在构造函数中传递了locale字段,locale又是从数据库中来的,并非客户端传递


语言定义如下:

既然是数据库中来的,追一下表就知道是什么表中保存了数据,发现acore_auth数据库中,account表有一个locale字段,刚好就是5(对应繁体),想着直接改掉会不会生效,就手动更改了(update account set locale=4)

最终发现客户端一登录到选角界面,该数据就又被修改为5

由此断定,数据是由登录服修改,游戏服只是读取
再请教一下大模型,发现AuthSession::HandleLogonProof中有关于account表的设置,追一下代码

全局搜一下代码,在AuthSession::HandleLogonChallenge函数中有关于变量的初始化(HandleReconnectChallenge还有一个地方也有相关处理,应该是断线处理的,暂时不处理),这里就是客户端传递过来的语言数据

编译,重启服务器,发现已经变成中文了

ps:理论上可以通过更改客户端配置来处理语言的问题,但是因为本人对客户端不熟悉,而且客户端没有源码,就不操作了
WTF目录下有个Config.wtf文件

我试过手动改为zhCN但是重启客户端会被覆盖回去

浙公网安备 33010602011771号