343换队伍客户端崩溃问题
2025年1月26日大约 1 分钟
目前这个问题需要通过修复服务器代码来解决,下面会阐述引起问题的原因,以及如何修复
问题原因
以下以az核心(azerothcore)代码为例,当一个团队中,不同的团队成员互换位置的时候,客户端会向服务器发送 “CMSG_GROUP_SWAP_SUB_GROUP” 协议,然后服务器收到之后应该返回调整之后的 “SMSG_GROUP_LIST” 协议
理论上服务器只需要返回给客户端一次“SMSG_GROUP_LIST”协议即可,但是实际上返回了两次。这就是343客户端崩溃的原因
如何解决
我们现在知道原理了,那就想办法只让服务器下发一次即可,下面是示例代码
首先在如图位置,将第一个哥ChangeMembersGroup方法的第三个参数设置为false,因为我们不想让这次改动下发到客户端
然后修改一下ChangeMembersGroup方法的定义和实现
最后在ChangeMembersGroup方法内,发送协议包的位置加一个判断即可。
这就是针对这个问题的服务器代码调整,我个人不是c++代码专家,如果有更好的方式可以自己另行实现。