diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index adf4d7b..88a9312 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -131,6 +131,15 @@ void Human::FillMFObjectFull(cs::MFObjectFull* full_data) p->set_vip(vip); p->set_sdmg(sdmg); p->set_kill_count(stats.kills); + if (emoji1 != 0) { + p->set_emoji1(emoji1); + } + if (emoji2 != 0) { + p->set_emoji2(emoji2); + } + if (parachute != 0) { + p->set_parachute(parachute); + } FillBodyState(p->mutable_states()); } @@ -155,6 +164,9 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb) stats_pb->set_gold(stats.gold); stats_pb->set_score(stats.score); + stats_pb->set_pass_score(stats.pass_score); + stats_pb->set_rank_score(stats.rank_score); + stats_pb->set_has_pass(has_pass); stats_pb->set_dead(dead); stats_pb->set_killer_id(stats.killer_id); @@ -2049,7 +2061,13 @@ void Human::GenBattleReportData(a8::MutableXObject* params) stats.gold = coin_num; params->SetVal("coin_num", coin_num); } + { + stats.pass_score = MetaMgr::Instance()->GetKillPointParam1(stats.kills); + stats.rank_score = MetaMgr::Instance()->GetKillPointParam1(stats.kills); + } params->SetVal("score", 0); + params->SetVal("pass_score", has_pass ? stats.pass_score * 2 : stats.pass_score); + params->SetVal("rank_score", has_pass ? stats.rank_score * 2 : stats.rank_score); } void Human::InternalSendGameOver() diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 9c8c56a..c2c6220 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -83,6 +83,10 @@ class Human : public Entity long long join_frameno = 0; int status = 0; float atk_add = 0.0f; + int emoji1 = 0; + int emoji2 = 0; + int parachute = 0; + bool has_pass = 0; Weapon default_weapon; std::vector weapons; diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 3e43f0d..9fe3760 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -170,4 +170,9 @@ namespace MetaData const metatable::KillReward* i = nullptr; }; + struct KillPoint + { + const metatable::KillPoint* i = nullptr; + }; + } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 71bc3a3..e5c4dd0 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -43,6 +43,8 @@ public: std::list equipupgrade_list; std::list killreward_meta_list; std::list killreward_list; + std::list killpoint_meta_list; + std::list killpoint_list; std::list robot_meta_list; std::vector robot_list; @@ -62,6 +64,7 @@ public: std::map skill_hash; std::map rankreward_hash; std::map killreward_hash; + std::map killpoint_hash; std::map equipupgrade_hash; std::map robot_hash; @@ -98,6 +101,7 @@ public: f8::ReadCsvMetaFile(res_path + "skill@skill.csv", skill_meta_list); f8::ReadCsvMetaFile(res_path + "rankReward@rankReward.csv", rankreward_meta_list); f8::ReadCsvMetaFile(res_path + "killReward@killReward.csv", killreward_meta_list); + f8::ReadCsvMetaFile(res_path + "killPoint@killPoint.csv", killpoint_meta_list); f8::ReadCsvMetaFile(res_path + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list); f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list); BindToMetaData(); @@ -249,23 +253,29 @@ private: } for (auto& meta : killreward_meta_list) { - MetaData::KillReward& item = a8::FastAppend(killreward_list); - item.i = &meta; - killreward_hash[item.i->kill_num()] = &item; - } + MetaData::KillReward& item = a8::FastAppend(killreward_list); + item.i = &meta; + killreward_hash[item.i->kill_num()] = &item; + } + + for (auto& meta : killpoint_meta_list) { + MetaData::KillPoint& item = a8::FastAppend(killpoint_list); + item.i = &meta; + killpoint_hash[item.i->kill_num()] = &item; + } for (auto& meta : equipupgrade_meta_list) { - MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list); - item.i = &meta; - equipupgrade_hash[meta.id()] = &item; - } + MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list); + item.i = &meta; + equipupgrade_hash[meta.id()] = &item; + } for (auto& meta : robot_meta_list) { - MetaData::Robot& item = a8::FastAppend(robot_list); - item.i = &meta; - item.Init(); - robot_hash[meta.id()] = &item; - } + MetaData::Robot& item = a8::FastAppend(robot_list); + item.i = &meta; + item.Init(); + robot_hash[meta.id()] = &item; + } } @@ -409,6 +419,18 @@ float MetaMgr::GetKillRewardParam(int kill_num) return itr != loader_->killreward_hash.end() ? itr->second->i->parameter() : 0.0f; } +int MetaMgr::GetKillPointParam1(int kill_num) +{ + auto itr = loader_->killpoint_hash.find(kill_num); + return itr != loader_->killpoint_hash.end() ? itr->second->i->parameter() : 0; +} + +int MetaMgr::GetKillPointParam2(int kill_num) +{ + auto itr = loader_->killpoint_hash.find(kill_num); + return itr != loader_->killpoint_hash.end() ? itr->second->i->parameter2() : 0; +} + std::vector* MetaMgr::GetRobotList() { return &loader_->robot_list; diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index 9b3955b..54a4d4a 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -35,6 +35,8 @@ class MetaMgr : public a8::Singleton MetaData::Dress* GetDress(int dress_id); float GetRankRewardParam(int rank); float GetKillRewardParam(int kill_num); + int GetKillPointParam1(int kill_num); + int GetKillPointParam2(int kill_num); std::vector* GetRobotList(); MetaData::Robot* GetRobot(int robot_id); diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index 216af5b..53f066d 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -54,6 +54,10 @@ Player* PlayerMgr::CreatePlayerByCMJoin(long ip_saddr, int socket, const cs::CMJ hum->create_tick = a8::XGetTickCount(); hum->account_registertime = f8::ExtractRegisterTimeFromSessionId(msg.session_id()); hum->atk_add = msg.atk_add(); + hum->emoji1 = msg.emoji1(); + hum->emoji2 = msg.emoji2(); + hum->parachute = msg.parachute(); + hum->has_pass = msg.has_pass(); if (hum->atk_add > 0.9999f) { hum->atk_add = hum->atk_add / 100.0f; a8::SetBitFlag(hum->status, HS_AtkAdd); diff --git a/server/gameserver/types.h b/server/gameserver/types.h index 273b7dc..5e085f1 100755 --- a/server/gameserver/types.h +++ b/server/gameserver/types.h @@ -82,6 +82,8 @@ struct PlayerStats int gold = 0; int score = 0; + int pass_score = 0; + int rank_score = 0; std::vector> extra_drop; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index b7726c3..05da9bd 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -190,6 +190,9 @@ message MFPlayerFull optional int32 max_energy_shield = 22; //最大能量护盾 repeated MFBodyState states = 23; //角色状态 optional int32 kill_count = 24; //击杀数 + optional int32 emoji1 = 25; //表情1 + optional int32 emoji2 = 26; //表情2 + optional int32 parachute = 27; //降落伞 } //阻挡物-部分 @@ -555,6 +558,9 @@ message MFPlayerStats optional int32 gold = 10; //金币 optional int32 score = 11; //积分 + optional int32 pass_score = 9; //通行证积分 + optional int32 rank_score = 13; //排名积分 + optional bool has_pass = 27; //是否有通行证 repeated MFPair extra_drop = 12; //额外掉落,key:item_id value:数量(看广告) @@ -630,6 +636,10 @@ message CMJoin optional string from_appid = 21; //from_appid optional float atk_add = 22; //攻击加成 optional string pre_settlement_info = 23; //透传game2001api预结算信息(为了本地结算用) + optional int32 emoji1 = 24; //表情1 + optional int32 emoji2 = 25; //表情2 + optional int32 parachute = 26; //降落伞 + optional bool has_pass = 27; //是否有通行证 } //移动 diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 0b560ba..9a16c0d 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -171,6 +171,13 @@ message KillReward optional float parameter = 2; } +message KillPoint +{ + optional int32 kill_num = 1; + optional int32 parameter = 2; + optional int32 parameter2 = 3; +} + //end message DoorObjJson