diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 67faab38..153e4cef 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3544,34 +3544,41 @@ int Room::GetMaxTeamNum() void Room::FillCustomBattleHuman() { + Player* target = nullptr; + for (auto& pair : accountid_hash_) { + target = pair.second; + break; + } + if (!target) { + abort(); + } custom_battle_->TraverseMemberList ( [this] (CustomMember* member) -> bool { if (!member->IsJoined()) { auto p = custom_battle_; - cs::CMJoin msg; CustomTeam *team = member->GetTeam(); int socket_handle = 0; int ip_saddr = 0; Player* hum = NewPlayer(); - hum->proto_version = msg.proto_version(); + hum->proto_version = member->GetNetData()->join_msg->proto_version(); #if 0 hum->hero_uniid = a8::XValue(msg.hero_uniid()); #endif hum->battle_uuid = member->GetNetData()->battle_uuid; hum->is_valid_battle = member->GetNetData()->is_valid_battle; hum->payload = member->GetNetData()->payload; - msg.set_session_id(member->GetSessionId()); - msg.set_team_uuid(team->GetTeamUuid()); + member->GetNetData()->join_msg->set_session_id(member->GetSessionId()); + member->GetNetData()->join_msg->set_team_uuid(team->GetTeamUuid()); PlayerMgr::Instance()-> CreatePlayerByCMJoin(hum, ip_saddr, socket_handle, - msg + *member->GetNetData()->join_msg ); - hum->meta = mt::Hero::GetById(msg.hero_id()); + hum->meta = mt::Hero::GetById(member->GetNetData()->join_msg->hero_id()); if (!hum->meta) { hum->meta = mt::Param::s().human_meta; } @@ -3590,7 +3597,7 @@ void Room::FillCustomBattleHuman() hum->SetHP(hum->GetBattleContext()->GetMaxHP()); hum->SetMaxHP(hum->GetHP()); member->Join(hum); - PlayerMgr::Instance()->IncAccountNum(msg.account_id()); + PlayerMgr::Instance()->IncAccountNum(hum->account_id); } return true; }); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 99420fd6..ac616d03 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -953,6 +953,7 @@ void RoomMgr::_CMJoinCustomBattle(f8::MsgHdr& hdr, const cs::CMJoin& msg) msg.mapid(), p); } + member->GetNetData()->join_msg = join_msg; Player* hum = p->GetRoom()->NewPlayer(); hum->proto_version = msg.proto_version(); #if 0