diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index 7cfea4c6..a4013825 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -470,6 +470,7 @@ void BattleDataContext::ParseResult(a8::XObject& obj) } } } + parse_ok = hero_ability_->hero_meta != nullptr; } void BattleDataContext::GetHeroLvQuality(long long& hero_uniid, int& hero_lv, int& quality) diff --git a/server/gameserver/netdata.h b/server/gameserver/netdata.h index 9b1231e1..70ba0e68 100644 --- a/server/gameserver/netdata.h +++ b/server/gameserver/netdata.h @@ -22,6 +22,7 @@ struct BattleDataContext std::string payload; int errcode = 0; std::string errmsg; + bool parse_ok = false; std::shared_ptr hero_dto; std::shared_ptr weapon_dto1; diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 99695fef..1db31b80 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -176,6 +176,9 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) RoomMgr::Instance()->JoinErrorHandle(msg, 2, socket_handle); return; } + if (!results.at(0)->parse_ok) { + return; + } int game_times = 0; RoomType_e self_room_type = GetHumanRoomType(msg, game_times); if (self_room_type < RT_OldBrid1) {