diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 8ca7cee..1775014 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1808,7 +1808,10 @@ void Human::GenBattleReportData(a8::MutableXObject* params) params->SetVal("rescue_member", stats.rescue_member); { - int coin_num = (rank * MetaMgr::Instance()->rank_param) + (stats.kills * MetaMgr::Instance()->kill_param); + float rank_param = MetaMgr::Instance()->GetRankRewardParam(rank); + float kill_param = MetaMgr::Instance()->GetKillRewardParam(stats.kills); + int coin_num = (rank_param * MetaMgr::Instance()->rank_param) + + (kill_param * MetaMgr::Instance()->kill_param); stats.gold = coin_num; params->SetVal("coin_num", coin_num); } diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index f4fed86..2fd1a25 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -156,4 +156,9 @@ namespace MetaData const metatable::RankReward* i = nullptr; }; + struct KillReward + { + const metatable::KillReward* i = nullptr; + }; + } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 5a41886..364f47b 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -41,6 +41,8 @@ public: std::list rankreward_list; std::list equipupgrade_meta_list; std::list equipupgrade_list; + std::list killreward_meta_list; + std::list killreward_list; std::map parameter_hash; std::map gamemap_hash; @@ -57,6 +59,7 @@ public: std::map dress_hash; std::map skill_hash; std::map rankreward_hash; + std::map killreward_hash; std::map equipupgrade_hash; void Load() @@ -91,6 +94,7 @@ public: f8::ReadCsvMetaFile(res_path + "dress@dress.csv", dress_meta_list); 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 + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list); BindToMetaData(); #if 1 @@ -236,6 +240,12 @@ private: rankreward_hash[item.i->rank()] = &item; } + for (auto& meta : killreward_meta_list) { + MetaData::KillReward& item = a8::FastAppend(killreward_list); + item.i = &meta; + killreward_hash[item.i->kill_num()] = &item; + } + for (auto& meta : equipupgrade_meta_list) { MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list); item.i = &meta; @@ -372,8 +382,14 @@ MetaData::Dress* MetaMgr::GetDress(int dress_id) return itr != loader_->dress_hash.end() ? itr->second : nullptr; } -MetaData::RankReward* MetaMgr::GetRankReward(int rank) +float MetaMgr::GetRankRewardParam(int rank) { auto itr = loader_->rankreward_hash.find(rank); - return itr != loader_->rankreward_hash.end() ? itr->second : nullptr; + return itr != loader_->rankreward_hash.end() ? itr->second->i->parameter() : 0.0f; +} + +float MetaMgr::GetKillRewardParam(int kill_num) +{ + auto itr = loader_->killreward_hash.find(kill_num); + return itr != loader_->killreward_hash.end() ? itr->second->i->parameter() : 0.0f; } diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index d6a3976..886a0de 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -33,7 +33,8 @@ class MetaMgr : public a8::Singleton MetaData::AirLine* RandAirLine(); MetaData::Skill* GetSkill(int skill_id); MetaData::Dress* GetDress(int dress_id); - MetaData::RankReward* GetRankReward(int rank); + float GetRankRewardParam(int rank); + float GetKillRewardParam(int kill_num); int gas_inactive_time = 10; int jump_time = 10; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 9c3c5fb..106612f 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -150,7 +150,13 @@ message Dress message RankReward { optional int32 rank = 1; - optional int32 parameter = 2; + optional float parameter = 2; +} + +message KillReward +{ + optional int32 kill_num = 1; + optional float parameter = 2; } //end