背景 Background
近期R348的更新突然更换了UI配置文件的格式,从以往的C:\Users\用户名\Documents\洛奇\cache\角色名@服务器_sc.tmp
变成了X:\客户端\路径\ui.##############.xml
。两者的本质其实是一样的,但是格式和编码略有不同。官方不知为何没有实现自动过渡的功能,米莱西安们不得已只能自行转换。
本工具的目的便是以最少的操作完成文件的转换。
原理 Principle
- 从
角色名@服务器.tmp
中提取角色ID(8个字节)。提取的偏移量取决于文件的第一个字节,如果是0x10或0x12,则偏移量为29。如果是0x13,则偏移量为37。 - 从
角色名@服务器_sc.tmp
(UTF-8)中提取整个<ui>
节点(第30个字节到文件尾-1),然后写入到X:\客户端\路径\ui.角色ID.xml
(UTF-16LE)中。
截图 Screenshot
使用说明 Instructions
- 请先不要运行客户端。否则
角色名@服务器_sc.tmp
文件会被新的默认文件覆盖。(你也可以先备份好再运行。) - 下载MabiUITmp2Xml_v0.0.0.1.zip并解压到客户端目录
- 直接运行
MabiUITmp2Xml.exe
。此方式会试图转换所有C:\Users\用户名\Documents\洛奇\cache\角色名@服务器_sc.tmp
文件。 - 或者可以将备份的
角色名@服务器_sc.tmp
文件(们)拖动到MabiUITmp2Xml.exe
上。此方式只会转换拖动的文件。
注意1:缺少文件或文件内容不正常时,会提示[WARNING]或者[ERROR]信息,可以自行根据信息查错。
注意2:如果你经历过合服并且没有改名,你的cache目录下可能会存在角色ID相同的角色名@旧服务器.tmp
和角色名@新服务器.tmp
。这种情况下使用本工具生成的ui.角色ID.xml
会来自二者之中最后被处理的文件。
Name | Value |
---|---|
SHA-256 | 0d3f819530902ef4b2a2e4a5413d4efa9e7f9afd7f018d85346ecae99ffef534 |
File name | MabiUITmp2Xml.exe |
Detection ratio | 5 / 72 |
Analysis date | 2020-07-02 00:55:19 UTC |
由于会读取Documents下的文件并且生成新文件,所以容易被误判为木马,不放心的话请不要使用。
吐槽 Remarks
不得不说官方的这次文件改动…很乱。账号角色稍多一点的米莱西安的客户端目录很快就会惨不忍睹。
此外角色ID这个东西,原本俺以为是单服务器内唯一的,现在这个弄法莫非意味着其实是跨服务器唯一值?否则玩不同服的相同角色ID角色的米莱西安的UI配置就会冲突。(虽然这个事件出现的几率不高,但总还是有可能的。)
其实可能用Python之类的脚本语言实现会容易不少,不过借此机会再熟悉熟悉C++也是不错的。从发布的角度来看,Python需要捆绑一整个运行环境(可能会超过5MB),而C++则可以仅占用几百KB。
祝各位米莱西安武运昌隆 _(:з」∠)_