diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 3396b827..a3b1c4fd 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -110,7 +110,7 @@ void BattleDataContext::ParseResult(a8::XObject& obj) } } -void BattleDataContext::GetHeroLvQualit(int& hero_lv, int& quality) +void BattleDataContext::GetHeroLvQuality(int& hero_lv, int& quality) { hero_lv = 1; quality = 1; @@ -122,7 +122,7 @@ void BattleDataContext::GetHeroLvQualit(int& hero_lv, int& quality) } } -void BattleDataContext::GetWeaponLvQualit(int& weapon_lv, int& quality) +void BattleDataContext::GetWeaponLvQuality(int& weapon_lv, int& quality) { weapon_lv = 1; quality = 1; @@ -408,3 +408,16 @@ void BattleDataContext::Init(Creature* c) dodge_ = hero_ability_->GetDodge(); dodge_damage_ruduce_ = hero_ability_->GetDodgeDamageRuduce(); } + +void BattleDataContext::GetSkillList(std::vector& skill_list) +{ + int hero_lv = 1; + int quality = 1; + GetHeroLvQuality(hero_lv, quality); + MetaData::Skill* skill1 = MetaMgr::Instance()->GetSkill(hero_ability_->hero_meta->i->skill1list()); + MetaData::Skill* skill2 = MetaMgr::Instance()->GetSkill(hero_ability_->hero_meta->i->skill2list()); + MetaData::Skill* skill3 = MetaMgr::Instance()->GetSkill(hero_ability_->hero_meta->i->skill3list()); + if (skill1 && skill2 && skill3) { + + } +} diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index d62810d1..98563837 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -42,8 +42,8 @@ struct BattleDataContext BattleDataContext(); - void GetHeroLvQualit(int& hero_lv, int& quality); - void GetWeaponLvQualit(int& weapon_lv, int& quality); + void GetHeroLvQuality(int& hero_lv, int& quality); + void GetWeaponLvQuality(int& weapon_lv, int& quality); void ParseResult(a8::XObject& obj); @@ -64,6 +64,7 @@ struct BattleDataContext long long weapon2_uniid, MetaData::Equip* weapon2_meta); void Init(Creature* c); + void GetSkillList(std::vector& skill_list); private: void Clear(); @@ -89,4 +90,8 @@ private: float crit_damage_rate_ = 0; float dodge_ = 0; float dodge_damage_ruduce_ = 0; + + int skill1_lv = 1; + int skill2_lv = 1; + int skill3_lv = 1; }; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 01f9c30f..208f2246 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -112,13 +112,13 @@ void PlayerStats::Statement(Human* sender) if (a->GetBattleContext()) { int hero_lv = 0; int quality = 0; - a->GetBattleContext()->GetHeroLvQualit(hero_lv, quality); + a->GetBattleContext()->GetHeroLvQuality(hero_lv, quality); a_value = hero_lv + quality; } if (b->GetBattleContext()) { int hero_lv = 0; int quality = 0; - b->GetBattleContext()->GetHeroLvQualit(hero_lv, quality); + b->GetBattleContext()->GetHeroLvQuality(hero_lv, quality); b_value = hero_lv + quality; } if (a_value == b_value) { @@ -140,13 +140,13 @@ void PlayerStats::Statement(Human* sender) if (a->GetBattleContext()) { int weapon_lv = 0; int quality = 0; - a->GetBattleContext()->GetWeaponLvQualit(weapon_lv, quality); + a->GetBattleContext()->GetWeaponLvQuality(weapon_lv, quality); a_value = weapon_lv + quality; } if (b->GetBattleContext()) { int weapon_lv = 0; int quality = 0; - b->GetBattleContext()->GetWeaponLvQualit(weapon_lv, quality); + b->GetBattleContext()->GetWeaponLvQuality(weapon_lv, quality); b_value = weapon_lv + quality; } if (a_value == b_value) { diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index b7b4133d..7d004ea1 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -24,14 +24,10 @@ void RawTeamMember::FillMFMatchTeamMember(cs::MFMatchTeamMember* p) } else { p->set_hero_id(msg->hero_id()); *p->mutable_weapons() = msg->weapons(); - *p->mutable_skill_list() = msg->skill_list(); } p->set_is_leader(is_leader); p->set_state(state); p->set_head_frame(msg->head_frame()); - #if 0 - p->set_hero_skin(msg->hero_skin()); - #endif } void RawTeamMember::InitRobot() @@ -44,30 +40,8 @@ void RawTeamMember::InitRobot() robot_meta = MetaMgr::Instance()->RandRobot(refreshed_robot_set); if (robot_meta) { msg->set_avatar_url(a8::Format("%s", {50001 + (robot_meta->i->id() % 3)})); - #if 1 msg->set_hero_id(30100 + 100 * (robot_meta->i->id() % 3)); - #else - msg->set_hero_id(robot_meta->i->hero_id()); - #endif msg->set_name(robot_meta->i->name()); - #if 0 - auto skin = msg->add_skins(); - if (!robot_meta->skin_id.empty()) { - skin->set_skin_id(robot_meta->skin_id[0]); - skin->set_skin_lv(1); - } - #endif - #if 0 - { - MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(msg->hero_id()); - if (hero_meta) { - MetaData::Item* skin_meta = MetaMgr::Instance()->GetHeroSkin(msg->hero_id()); - if (skin_meta) { - msg->set_hero_skin(skin_meta->i->id()); - } - } - } - #endif } else { A8_ABORT(); } @@ -129,7 +103,6 @@ void MatchTeam::_CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg) member->msg->set_hero_id(msg.hero_id()); member->msg->set_hero_uniid(msg.hero_uniid()); *member->msg->mutable_weapons() = msg.weapons(); - *member->msg->mutable_skill_list() = msg.skill_list(); ++member->choose_hero_times; #ifdef DEBUG a8::XPrintf("matchchoose %s\n", {member->msg->account_id()}); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 9404e83c..5cf112a7 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -646,11 +646,12 @@ void Player::HumanInteraction(Human* hum) ); } -void Player::ProcSkillList(const ::google::protobuf::RepeatedPtrField< cs::MFPair >& - skill_list) +void Player::ProcSkillList() { - for (auto& pair : skill_list) { - AddSkill(pair.key()); + std::vector skill_list; + GetBattleContext()->GetSkillList(skill_list); + for (auto& skill_id : skill_list) { + AddSkill(skill_id); } } diff --git a/server/gameserver/player.h b/server/gameserver/player.h index c5a91436..5225c075 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -100,8 +100,7 @@ class Player : public Human void ObstacleInteraction(Obstacle* entity); void HumanInteraction(Human* hum); void ProcPreSettlementInfo(const std::string& pre_settlement_info); - void ProcSkillList(const ::google::protobuf::RepeatedPtrField< cs::MFPair >& - skill_list); + void ProcSkillList(); void PushJoinRoomMsg(); void _CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 42df9d3d..ebf10d25 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4066,7 +4066,7 @@ void Room::AddTeam(class MatchTeam* team) hum->SetBattleContext(member->battle_context); hum->GetBattleContext()->Init(hum); - hum->ProcSkillList(msg.skill_list()); + hum->ProcSkillList(); hum->SetHP(hum->GetBattleContext()->GetMaxHP()); hum->SetMaxHP(hum->GetHP()); PlayerMgr::Instance()->IncAccountNum(msg.account_id()); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index fed71a6f..7769ab7a 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -205,7 +205,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) room->AddPlayer(hum); hum->SetBattleContext(results.at(0)); hum->GetBattleContext()->Init(hum); - hum->ProcSkillList(msg.skill_list()); + hum->ProcSkillList(); hum->SetHP(hum->GetBattleContext()->GetMaxHP()); hum->SetMaxHP(hum->GetHP()); PlayerMgr::Instance()->IncAccountNum(msg.account_id()); diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 9dd43feb..a9060a3f 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -818,7 +818,6 @@ message MFMatchTeamMember optional string avatar_url = 3; //头像 optional int32 hero_id = 4; //英雄id repeated MFWeapon weapons = 5; //武器列表 - repeated MFPair skill_list = 7; //技能列表 key:技能id value:预留给之后扩展,目前传0就行 optional bool is_leader = 8; //是否队长 optional int32 state = 9; //0:准备 1:已准备 optional int32 head_frame = 10; //头像框 @@ -870,7 +869,6 @@ message CMJoin repeated MFTeamMember team_members = 51; //包括自己 optional int32 room_mode = 52; //0:吃鸡模式 1:歼灭模式 2:生存模式 optional int32 mapid = 53; //地图id 0:随机地图 - repeated MFPair skill_list = 54; //技能列表 key:技能id value:预留给之后扩展,目前传0就行 optional string user_data = 60 [default = ""]; //用户自定义数据 optional int32 hero_id = 61; //英雄id optional string hero_uniid = 71; //英雄唯一id diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index c76a48e4..d8258475 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -248,6 +248,9 @@ message Player optional float miss = 57; optional float miss_damage_ruduce = 58; + optional int32 skill1list = 60; + optional int32 skill2list = 61; + optional int32 skill3list = 62; } message Robot