azerothCode-更改任务语言显示

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

image

 按理繁体客户端不会有英文才对,猜测任务文本实际上是服务器下推的。

全局搜工程文件,发现如下两个配置表

quest_template英文配置表

找到对应的文本,id为924

image

image

 

quest_template_locale 本地化配置表

发现并没有zhTW版本的翻译,所以默认使用了英文

image

 

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

企业微信截图_17702925063469

问题到了语言是什么时候设置的,猜测是客户端告知的,然后在内存中就可以根据语言找对应版本的配置。

 

询问大模型,服务器什么时候设置,最终发现是

HandleAuthSessionCallback函数中创建了一个worldSession,在构造函数中传递了locale字段,locale又是从数据库中来的,并非客户端传递

企业微信截图_17702935399459

企业微信截图_17702936828693

 

 语言定义如下:

image

 

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

企业微信截图_17702931797967

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

 

企业微信截图_17702933377027

由此断定,数据是由登录服修改,游戏服只是读取

 

再请教一下大模型,发现AuthSession::HandleLogonProof中有关于account表的设置,追一下代码

企业微信截图_17702939658508

 

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

企业微信截图_17702941001137

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

image

 

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

WTF目录下有个Config.wtf文件

image

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

 

posted @ 2026-02-05 20:28  乐swap火  阅读(5)  评论(0)    收藏  举报