ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

azerothCode-更改任务语言显示

azerothCode-更改任务语言显示

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

image

 追了一下代码发现,按理繁体客户端不会有英文才对,所以任务文本实际上是服务器下推的,推送相关函数如下:

企业微信截图_17702925063469

quest_template英文配置表

找到对应的文本,id为924

image

image

 

quest_template_locale 本地化配置表

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

image

 

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

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

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但是重启客户端会被覆盖回去

 

返回列表