diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index a0d17459..4ba52ed9 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -911,6 +911,7 @@ void Human::UpdateMove() Creature::UpdateMove(); } +#if 0 void Human::GenBattleReportData(a8::MutableXObject* params) { params->SetVal("room_mode", room->GetRoomMode()); @@ -1162,7 +1163,7 @@ void Human::GenBattleReportData(a8::MutableXObject* params) params->SetVal("__POST", post_data->ToJsonStr()); } } - +#endif void Human::DeadDrop() { if (room->IsMobaModeRoom()) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 1728c110..6df28798 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -318,7 +318,6 @@ protected: void DropWeapon(int weapon_idx, int num); private: - void GenBattleReportData(a8::MutableXObject* params); void FillSMGameOver(cs::SMGameOver& msg); void SendBattleSettlement(); void SendPersonalBattleReport(); diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index b390c1fb..523ecbbd 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -1131,203 +1131,14 @@ void Human::FillSMGameOver(cs::SMGameOver& msg) msg.mutable_settlement_new()->set_box_payload(custom_data); } if (room->IsAlreadyRoomReportBattle()) { - msg.mutable_settlement_new()->set_settlement_status(1); auto p = msg.mutable_settlement_new(); - p->set_version(20230321); - p->set_team_id(GetTeam()->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(GetTeam()->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() == GetTeam()) { - 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(GetTeam()->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()); - } GetTeam()->FillMFSettlementNew(msg.mutable_settlement_new()); return; } else { - msg.mutable_settlement_new()->set_settlement_status(0); auto p = msg.mutable_settlement_new(); - p->set_version(20230321); - p->set_team_id(GetTeam()->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 (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); - } - } - } - - } - 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(GetTeam()->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() == GetTeam()) { - 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(GetTeam()->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()); - } GetTeam()->FillMFSettlementNew(msg.mutable_settlement_new()); return; } - int alive_team_num = room->GetAliveTeamNum(); - - if (stats->victory) { - msg.set_watchable(false); - } else { - if (room->GetAliveTeamNum() > 1) { - msg.set_watchable(true); - } else { - if (room->IsPveRoom()) { - msg.set_watchable(!room->IsGameOver()); - } else { - msg.set_watchable(false); - } - } - } - msg.set_map_id(room->GetMapMeta()->map_id()); - msg.set_team_id(team_id); - msg.set_team_rank(GetTeam()->team_rank); - msg.set_personal_rank(stats->rank); - if (room->IsPveRoom()) { - msg.set_game_over(room->IsGameOver()); - } else { - msg.set_game_over(room->IsGameOver() || (alive_team_num == 1)); - } - msg.set_victory(stats->victory); - msg.set_room_uuid(a8::XValue(room->GetRoomUuid())); - msg.set_total_human_num(room->GetHumanNum()); - msg.set_alive_human_num(room->AliveCount()); - if (GetTeam()) { - GetTeam()->TraverseMembers - ( - [this, &msg] (Human* member) -> bool - { - { - member->FillMFTeamData(this, msg.add_team_data(), true); - cs::MFPlayerStats* p = msg.add_player_stats(); - member->FillMFPlayerStats(p); - } - return true; - }); - } - { - msg.set_total_team_num(room->GetTeamNum()); - if (room->IsPveRoom()) { - msg.set_pve_wave(room->pve_data.GetPassedWave()); - msg.set_pve_max_wave(room->pve_data.max_wave); - msg.set_pve_instance_id(room->pve_instance->gemini_id()); - msg.set_pve_boss_killed(room->pve_data.boss_state == 2 ? 1 : 0); - } - } - TypeConvert::ToPb(stats->over_reward, msg.mutable_reward()); - { - if (!stats->over_reward.total_ceg.empty()) { - auto p = msg.add_spoils_items(); - p->add_values("10001"); - p->add_values(stats->over_reward.total_ceg); - } - for (auto& tuple : stats->over_reward.items) { - auto p = msg.add_spoils_items(); - p->add_values(a8::XValue(std::get<0>(tuple)).GetString()); - p->add_values(std::get<1>(tuple)); - } - } - { - if (room->IsPveRoom()) { - msg.set_mode(GetTeam()->GetMemberNum() <= 1 ? 1 : 2); - msg.set_my_rank(room->pve_data.GetPassedWave()); - msg.set_max_rank(room->pve_data.max_wave); - } else { - if (GetTeam()->GetMemberNum() <= 1) { - msg.set_mode(1); - msg.set_my_rank(stats->rank); - msg.set_max_rank(room->GetHumanNum()); - } else { - if (GetTeam()->team_rank <= 0) { - msg.set_mode(1); - msg.set_my_rank(stats->rank); - msg.set_max_rank(room->GetHumanNum()); - } else { - msg.set_mode(2); - msg.set_my_rank(GetTeam()->team_rank); - msg.set_max_rank(room->GetTeamNum()); - } - } - } - } -#if 1 - if (room->GetBattleStartFrameNo() <= 0 && - dead_frameno) { - msg.set_team_rank(0); - msg.set_personal_rank(0); - msg.set_my_rank(0); - } -#endif - if (IsPlayer()) { - Player* p = (Player*)this; - if (!p->settlement) { - p->settlement = std::make_shared(); - FillMFSettlement(&msg, p->settlement.get()); - } - *msg.mutable_settlement() = *p->settlement; - } } void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data) @@ -2507,6 +2318,7 @@ void GGListener::_SS_WSP_SocketDisconnect(f8::MsgHdr* hdr, const ss::SS_WSP_Sock void Team::FillMFSettlementNew(cs::MFSettlementNew* p) { if (room->IsAlreadyRoomReportBattle()) { + p->set_settlement_status(1); p->set_version(20230321); p->set_team_id(GetTeamId()); p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString()); @@ -2514,6 +2326,11 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p) p->set_team_mode(1); p->set_game_over(room->IsGameOver() ? 1 : 0); //p->set_victory(stats->victory ? 1 : 0); + if (room->IsPveRoom()) { + p->set_victory(room->pve_data.pve_kill_boss == 1 ? 1 : 0); + } else { + p->set_victory(team_rank == 1 ? 1 : 0); + } p->set_watchable(false); p->set_map_mode_id(room->GetMapModeMeta()->id()); p->set_map_mode(room->GetReportMapMode()); @@ -2526,7 +2343,7 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p) 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()); + p->set_moba_my_team_kills(GetKillCount()); if (room->GetMobaTeamA() == this) { p->set_moba_enemy_team_kills(room->GetMobaTeamB()->GetKillCount()); } else { @@ -2542,6 +2359,7 @@ void Team::FillMFSettlementNew(cs::MFSettlementNew* p) p->set_pvp_match_mode(room->GetPvpMatchMode()); } } else { + p->set_settlement_status(0); p->set_version(20230321); p->set_team_id(GetTeamId()); p->set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString());