From db1596076911a04625eaa7b6b716e8b6b639029e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 30 Jan 2024 22:34:56 +0800 Subject: [PATCH] 1 --- server/gameserver/pbutils.cc | 122 +++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 56 deletions(-) diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 80d078d3..1c07ad05 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -129,6 +129,71 @@ static void Human_FillBodyState(Human* self, ::google::protobuf::RepeatedPtrFiel } } +static Player* InternalCreatePlayer(std::shared_ptr p, + std::shared_ptr m, + std::shared_ptr net_team, + std::shared_ptr room_team, + cs::CMJoin& join_msg) +{ + Player* hum = p->GetRoom()->NewPlayer(); + //hum->ip_saddr = ip_saddr; + //hum->socket_handle = socket_handle; + hum->name = m->GetName(); + hum->room = p->GetRoom(); + hum->proto_version = join_msg.proto_version(); +#if 0 + hum->hero_uniid = a8::XValue(join_msg->hero_uniid()); +#endif + hum->battle_uuid = m->GetNetData()->battle_uuid; + hum->is_valid_battle = m->GetNetData()->is_valid_battle; + hum->payload = m->GetNetData()->payload; +#if 1 + join_msg.set_account_id(m->GetAccountId()); + join_msg.set_session_id(m->GetSessionId()); + join_msg.set_team_uuid(m->GetTeam()->GetTeamUuid()); + join_msg.set_name(m->GetName()); + join_msg.set_avatar_url(m->GetAvatarUrl()); + join_msg.set_head_frame(m->GetHeadFrame()); + join_msg.set_sex(m->GetSex()); + join_msg.set_hero_id(m->GetNetData()->GetHeroId()); +#endif + PlayerMgr::Instance()-> + CreatePlayerByCMJoin(hum, + 0, + 0, + join_msg + ); + hum->meta = mt::Hero::GetById(join_msg.hero_id()); + if (!hum->meta) { + hum->meta = mt::Param::s().human_meta; + } + hum->SetNetData(m->GetNetData()); + hum->GetNetData()->Init(hum); + { + long long hero_uniid = 0; + int hero_lv = 1; + int quality = 1; + hum->GetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality); + hum->hero_uniid = hero_uniid; + } + p->GetRoom()->AddPlayer(hum); + hum->ProcSkillList(); + hum->SetHP(hum->GetNetData()->GetMaxHP()); + hum->SetMaxHP(hum->GetHP()); + PlayerMgr::Instance()->IncAccountNum(join_msg.account_id()); + RoomMgr::Instance()->OnJoinRoomOk(join_msg, hum); + room_team->AddMember(hum); +#ifdef MYDEBUG + a8::XPrintf("moba init1 uniid:%d team_id:%d side:%d\n", + { + hum->GetUniId(), + hum->GetTeam()->GetTeamId(), + hum->side + }); +#endif + return hum; +} + void PBUtils::Ability_FillMFAttrAdditionList(Ability* self, Human* hum, cs::MFActivePlayerData* player_data) { _Ability_FillMFAttrAdditionList @@ -2727,62 +2792,7 @@ int Room::InitWithCustomBattle(long ip_saddr, int socket_handle, std::shared_ptr ( [join_msg, p, net_team, room_team] (std::shared_ptr m) mutable -> bool { - Player* hum = p->GetRoom()->NewPlayer(); - //hum->ip_saddr = ip_saddr; - //hum->socket_handle = socket_handle; - hum->name = m->GetName(); - hum->room = p->GetRoom(); - hum->proto_version = join_msg.proto_version(); -#if 0 - hum->hero_uniid = a8::XValue(join_msg->hero_uniid()); -#endif - hum->battle_uuid = m->GetNetData()->battle_uuid; - hum->is_valid_battle = m->GetNetData()->is_valid_battle; - hum->payload = m->GetNetData()->payload; -#if 1 - join_msg.set_account_id(m->GetAccountId()); - join_msg.set_session_id(m->GetSessionId()); - join_msg.set_team_uuid(m->GetTeam()->GetTeamUuid()); - join_msg.set_name(m->GetName()); - join_msg.set_avatar_url(m->GetAvatarUrl()); - join_msg.set_head_frame(m->GetHeadFrame()); - join_msg.set_sex(m->GetSex()); - join_msg.set_hero_id(m->GetNetData()->GetHeroId()); -#endif - PlayerMgr::Instance()-> - CreatePlayerByCMJoin(hum, - 0, - 0, - join_msg - ); - hum->meta = mt::Hero::GetById(join_msg.hero_id()); - if (!hum->meta) { - hum->meta = mt::Param::s().human_meta; - } - hum->SetNetData(m->GetNetData()); - hum->GetNetData()->Init(hum); - { - long long hero_uniid = 0; - int hero_lv = 1; - int quality = 1; - hum->GetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality); - hum->hero_uniid = hero_uniid; - } - p->GetRoom()->AddPlayer(hum); - hum->ProcSkillList(); - hum->SetHP(hum->GetNetData()->GetMaxHP()); - hum->SetMaxHP(hum->GetHP()); - PlayerMgr::Instance()->IncAccountNum(join_msg.account_id()); - RoomMgr::Instance()->OnJoinRoomOk(join_msg, hum); - room_team->AddMember(hum); -#ifdef MYDEBUG - a8::XPrintf("moba init1 uniid:%d team_id:%d side:%d\n", - { - hum->GetUniId(), - hum->GetTeam()->GetTeamId(), - hum->side - }); -#endif + Player* hum = InternalCreatePlayer(p, m, net_team, room_team, join_msg); return true; } );