diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 1b6acb73..b390c1fb 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2506,6 +2506,96 @@ void GGListener::_SS_WSP_SocketDisconnect(f8::MsgHdr* hdr, const ss::SS_WSP_Sock void Team::FillMFSettlementNew(cs::MFSettlementNew* p) { + if (room->IsAlreadyRoomReportBattle()) { + p->set_version(20230321); + p->set_team_id(GetTeamId()); + p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString()); + p->set_room_mode(room->GetReportRoomMode()); + p->set_team_mode(1); + p->set_game_over(room->IsGameOver() ? 1 : 0); + //p->set_victory(stats->victory ? 1 : 0); + p->set_watchable(false); + p->set_map_mode_id(room->GetMapModeMeta()->id()); + p->set_map_mode(room->GetReportMapMode()); + p->set_map_id(room->GetMapMeta()->map_id()); + p->set_battle_uuid(GetBattleUuid()); + + if (room->IsPveRoom()) { + //p->set_pve_settlement_color(stats->settlement_color); + p->set_pve_wave(room->pve_data.GetPassedWave()); + p->set_pve_max_wave(room->pve_data.max_wave); + p->set_pve_instance_id(room->pve_instance->gemini_id()); + } else if (room->IsMobaModeRoom()) { + //p->set_moba_my_team_kills(GetTeam()->GetKillCount()); + if (room->GetMobaTeamA() == this) { + p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount()); + } else { + p->set_moba_enemy_team_kills(room->GetMobaTeamA()->GetKillCount()); + } + } else { + //p->set_pvp_settlement_type(stats->pvp_settlement_type); + //p->set_pvp_settlement_color(stats->settlement_color); + p->set_pvp_team_rank(team_rank); + p->set_pvp_total_human_num(room->GetHumanNum()); + p->set_pvp_alive_human_num(room->AliveCount()); + p->set_pvp_total_team_num(room->GetTeamNum()); + p->set_pvp_match_mode(room->GetPvpMatchMode()); + } + } else { + p->set_version(20230321); + p->set_team_id(GetTeamId()); + p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString()); + p->set_room_mode(room->GetReportRoomMode()); + p->set_team_mode(1); + p->set_game_over(room->IsGameOver() ? 1 : 0); + //p->set_victory(stats->victory ? 1 : 0); + { + int alive_team_num = room->GetAliveTeamNum(); + + #if 0 + if (stats->victory) { + p->set_watchable(false); + } else { + if (room->GetAliveTeamNum() > 1) { + p->set_watchable(true); + } else { + if (room->IsPveRoom()) { + p->set_watchable(!room->IsGameOver()); + } else { + p->set_watchable(false); + } + } + } + #endif + + } + p->set_map_mode_id(room->GetMapModeMeta()->id()); + p->set_map_mode(room->GetReportMapMode()); + p->set_map_id(room->GetMapMeta()->map_id()); + p->set_battle_uuid(GetBattleUuid()); + + if (room->IsPveRoom()) { + //p->set_pve_settlement_color(stats->settlement_color); + p->set_pve_wave(room->pve_data.GetPassedWave()); + p->set_pve_max_wave(room->pve_data.max_wave); + p->set_pve_instance_id(room->pve_instance->gemini_id()); + } else if (room->IsMobaModeRoom()) { + p->set_moba_my_team_kills(GetKillCount()); + if (room->GetMobaTeamA() == this) { + p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount()); + } else { + p->set_moba_enemy_team_kills(room->GetMobaTeamA()->GetKillCount()); + } + } else { + //p->set_pvp_settlement_type(stats->pvp_settlement_type); + //p->set_pvp_settlement_color(stats->settlement_color); + p->set_pvp_team_rank(team_rank); + p->set_pvp_total_human_num(room->GetHumanNum()); + p->set_pvp_alive_human_num(room->AliveCount()); + p->set_pvp_total_team_num(room->GetTeamNum()); + p->set_pvp_match_mode(room->GetPvpMatchMode()); + } + } std::vector sorted_members; for (Human* hum : members_) { sorted_members.push_back(hum);