From cdd0946bcf1d8fc1ff9bd3fb9ab860db5297f83f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 2 Jan 2024 14:19:38 +0800 Subject: [PATCH] 1 --- server/gameserver/bornpoint.cc | 1 + server/gameserver/human.cc | 35 ++++++++++++++++++++++++++++++++-- server/gameserver/pbutils.cc | 6 ++++-- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/server/gameserver/bornpoint.cc b/server/gameserver/bornpoint.cc index 1aa568d4..dbe05678 100644 --- a/server/gameserver/bornpoint.cc +++ b/server/gameserver/bornpoint.cc @@ -7,6 +7,7 @@ #include "bornpoint.h" #include "room.h" #include "glmhelper.h" +#include "tracemgr.h" #include "mt/Map.h" diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index e790065a..fff9bcbc 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3924,8 +3924,39 @@ void Human::SendPersonalBattleReport() void Human::SetBornPoint(std::shared_ptr born_point) { -#ifdef MYDEBUG1 - TraceMgr::Instance()->PrintBackTrace(); +#ifdef MYDEBUG + auto itr = debug_data_.find(1); + if (itr == debug_data_.end()) { + debug_data_[1] = 1; + itr = debug_data_.find(1); + } else { + itr->second++; + } + if (itr->second > 1) { + //TraceMgr::Instance()->PrintBackTrace(); + } + a8::XPrintf + ( + "SetBornPoint uniid:%d wo_meta:%d\n", + { + GetUniId(), + (long long)born_point->wo_meta.get() + } + ); #endif + switch (side) { + case 1: + case 2: + { + if (born_point->wo_meta.get() != std::get<0>(room->GetMapMeta()->moba_born_points.at(side - 1)).get()) { + abort(); + } + } + break; + default: + { + break; + } + } born_point_ = born_point; } diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 0a78ece5..726f6982 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2464,7 +2464,9 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptr bool { hum->side = side; - hum->GetBornPoint()->wo_meta = std::get<0>(GetMapMeta()->moba_born_points.at(side - 1)); + std::shared_ptr born_point = std::make_shared(); + born_point->wo_meta = std::get<0>(GetMapMeta()->moba_born_points.at(side - 1)); + hum->SetBornPoint(born_point); hum->InitMobaRoad(); #ifdef MYDEBUG a8::XPrintf("moba init uniid:%d team_id:%d side:%d wo_meta:%d\n", @@ -2472,7 +2474,7 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptrGetUniId(), hum->GetTeam()->GetTeamId(), hum->side, - hum->GetBornPoint()->wo_meta.get() + (long long)hum->GetBornPoint()->wo_meta.get() }); #endif return true;