From 0ff618ffe4c0808a4c3c823aad29d918daaeac17 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 26 Sep 2021 11:35:59 +0800 Subject: [PATCH 1/5] 1 --- server/gameserver/human.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index b63c72f..5f2b3b5 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2228,6 +2228,7 @@ void Human::DecItem(int item_id, int item_num) if (battling_items_.find(item_id) == battling_items_.end()) { items_.erase(itr); } + items_.erase(itr); } } } From 2597c9d37eeb2ca897d8b4e177059a2853443e1f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 26 Sep 2021 11:37:47 +0800 Subject: [PATCH 2/5] 1 --- server/gameserver/player.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index f703d4f..e69def3 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -365,6 +365,7 @@ void Player::UpdateUseItemId() ProcUseItem(use_item_id); use_item_id = 0; has_use_item_id = false; + need_sync_active_player = true; } void Player::UpdateSpectate() From 27a10216dfe4f84f5e140711f3d4203f6d4fe2f5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 26 Sep 2021 11:41:36 +0800 Subject: [PATCH 3/5] 1 --- server/gameserver/human.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 5f2b3b5..531ba63 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2226,7 +2226,7 @@ void Human::DecItem(int item_id, int item_num) room->frame_event.AddItemChg(GetWeakPtrRef(), item_id, std::max(0, itr->second)); if (itr->second <= 0) { if (battling_items_.find(item_id) == battling_items_.end()) { - items_.erase(itr); + //items_.erase(itr); //为啥????? } items_.erase(itr); } From 3f9720f080fe98c3da4a95f91f9e39923695b523 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Sep 2021 22:49:37 +0800 Subject: [PATCH 4/5] 1 --- server/gameserver/matchteam.cc | 23 ++++++++++++++++++++--- server/gameserver/matchteam.h | 2 ++ server/gameserver/player.cc | 3 +++ server/gameserver/room.cc | 2 ++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 52a6d87..70910b3 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -63,11 +63,19 @@ void RawTeamMember::InitRobot() } } +MatchTeam::~MatchTeam() +{ + timer_attacher.ClearTimerList(); +#ifdef DEBUG + a8::XPrintf("~MatchTeam %s\n", {GetTeamUUid()}); +#endif +} + void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg) { master_team_ = this; create_tick_ = a8::XGetTickCount(); - a8::Timer::Instance()->AddRepeatTimerAndAttach + timer_ = a8::Timer::Instance()->AddRepeatTimerAndAttach (1000, a8::XParams() .SetSender(this), @@ -76,7 +84,14 @@ void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg) MatchTeam* team = (MatchTeam*)param.sender.GetUserData(); team->Update(); }, - &timer_attacher.timer_list_); + &timer_attacher.timer_list_, + [] (const a8::XParams& param) + { +#ifdef DEBUG + a8::XPrintf("~MatchTeam.timer\n", {}); +#endif + } + ); phase_= kMatchCombining; phase_start_tick_ = a8::XGetTickCount(); countdown_ = MetaMgr::Instance()->match_team_time; @@ -174,8 +189,10 @@ void MatchTeam::Update() UpdateSlave(); } master_team_->SyncMatchInfo(); - if (phase_ == kMatchStartGame) { + if (phase_ == kMatchStartGame && IsMasterTeam()) { StartGame(); + a8::Timer::Instance()->DeleteTimer(timer_); + timer_ = nullptr; } } diff --git a/server/gameserver/matchteam.h b/server/gameserver/matchteam.h index 1ca3985..bf6e76e 100644 --- a/server/gameserver/matchteam.h +++ b/server/gameserver/matchteam.h @@ -47,6 +47,7 @@ class MatchTeam { public: a8::TimerAttacher timer_attacher; + ~MatchTeam(); void Init(f8::MsgHdr& hdr, const cs::CMJoin& msg); @@ -93,6 +94,7 @@ class MatchTeam std::map> raw_member_hash_; std::shared_ptr first_member_; long long last_auto_choose_tick_ = 0; + timer_list* timer_ = nullptr; std::map combined_team_hash_; MatchTeam* master_team_ = nullptr; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 8dd1862..725fce1 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1198,6 +1198,9 @@ void Player::PushJoinRoomMsg() notifymsg.set_started(false); notifymsg.set_room_uuid(a8::XValue(room->GetRoomUuid()).GetString()); GGListener::Instance()->SendToClient(socket_handle, 0, notifymsg); + #ifdef DEBUG + a8::XPrintf("PushJoinRooMmsg %d\n", {GetUniId()}); + #endif } } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 66c9b31..56db670 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3959,9 +3959,11 @@ void Room::AddTeam(class MatchTeam* team) Player* hum = NewPlayer(); #if 1 a8::SetBitFlag(hum->status, CS_ForceTeam); + #if 0 member->msg.mutable_baseskin()->Clear(); member->msg.add_baseskin(1); #endif + #endif hum->ProcPreSettlementInfo(member->msg.pre_settlement_info()); PlayerMgr::Instance()-> CreatePlayerByCMJoin(hum, From febc83b04dc1cbf450f0810532d549b62766da18 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Sep 2021 23:01:43 +0800 Subject: [PATCH 5/5] 1 --- server/gameserver/metadata.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 1e90f5c..6245255 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -548,6 +548,9 @@ namespace MetaData for (auto& str : strings) { skin_id.push_back(a8::XValue(str)); } + if (skin_id.size() != 3) { + abort(); + } } }