From e56ab67d9249231e022d5890b0beeed039500e6a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 30 Jan 2024 16:14:08 +0800 Subject: [PATCH] 1 --- server/gameserver/mobabattle.cc | 4 ++-- server/gameserver/mobabattle.h | 2 +- server/gameserver/pbutils.cc | 29 ++++++++++++++++++++--------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/server/gameserver/mobabattle.cc b/server/gameserver/mobabattle.cc index 57289f2e..e240c651 100644 --- a/server/gameserver/mobabattle.cc +++ b/server/gameserver/mobabattle.cc @@ -160,10 +160,10 @@ void MobaBattle::ParseResult(a8::XObject& obj) parse_ok_ = true; } -void MobaBattle::TraverseObList(std::function cb) +void MobaBattle::TraverseObList(std::function)> cb) { for (auto& pair : ob_id_hash_) { - if (!cb(pair.second.get())) { + if (!cb(pair.second)) { break; } } diff --git a/server/gameserver/mobabattle.h b/server/gameserver/mobabattle.h index 7a22564d..c37e43bc 100644 --- a/server/gameserver/mobabattle.h +++ b/server/gameserver/mobabattle.h @@ -76,7 +76,7 @@ class MobaBattle int GetMemberNum(); int GetTeamNum(); void TraverseMemberList(std::function func); - void TraverseObList(std::function func); + void TraverseObList(std::function)> func); void TraverseTeam(std::function)> cb); private: diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index d45df189..05493ae5 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -49,6 +49,7 @@ #include "mobabattle.h" #include "roommgr.h" #include "bornpoint.h" +#include "roomob.h" #include "mt/Param.h" #include "mt/Buff.h" @@ -2530,14 +2531,11 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptraccount_id()); - if (hum) { - hum->ReJoin(ip_saddr, socket_handle, msg, p); - } else { - auto m = p->GetObByAccountId(msg->account_id()); - if (m) { + p->TraverseObList + ( + [ip_saddr, socket_handle, join_msg, p] (std::shared_ptr m) mutable -> bool + { Player* hum = p->GetRoom()->NewPlayer(); //hum->ip_saddr = ip_saddr; //hum->socket_handle = socket_handle; @@ -2579,6 +2577,8 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptrGetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality); hum->hero_uniid = hero_uniid; } + a8::SetBitFlag(hum->status, CS_IsOb); + p->GetRoom()->GetRoomOb()->AddOb(hum); p->GetRoom()->AddPlayer(hum); hum->ProcSkillList(); hum->SetHP(hum->GetNetData()->GetMaxHP()); @@ -2586,15 +2586,26 @@ int Room::InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptrIncAccountNum(join_msg.account_id()); RoomMgr::Instance()->OnJoinRoomOk(join_msg, hum); //new_team->AddMember(hum); - hum->ReJoin(ip_saddr, socket_handle, msg, p); + //hum->ReJoin(ip_saddr, socket_handle, msg, p); #ifdef MYDEBUG - a8::XPrintf("moba init1 uniid:%d team_id:%d side:%d\n", + a8::XPrintf("moba init11 uniid:%d team_id:%d side:%d\n", { hum->GetUniId(), hum->GetTeam()->GetTeamId(), hum->side }); #endif + return true; + }); + } + #if 1 + { + auto hum = GetPlayerByAccountId(msg->account_id()); + if (hum) { + hum->ReJoin(ip_saddr, socket_handle, msg, p); + } else { + auto m = p->GetObByAccountId(msg->account_id()); + if (m) { } } }