diff --git a/server/gameserver/httpproxy.cc b/server/gameserver/httpproxy.cc index 7e1dc8db..06af8968 100644 --- a/server/gameserver/httpproxy.cc +++ b/server/gameserver/httpproxy.cc @@ -33,7 +33,7 @@ static void _ProxyCallback(f8::JsonHttpRequest* request) if (req) { a8::XObject data; - data.ReadFromJsonString(request->request.Get("response").GetString()); + data.ReadFromJsonString(request->request.Get("data").GetString()); if (data.GetType() == a8::XOT_SIMPLE) { data.ReadFromJsonString("{}"); } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 0cbd94e2..226f854c 100644 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -191,6 +191,7 @@ public: std::list terrain_meta_list; std::list talent_meta_list; std::list formula_pvp_meta_list; + std::list formula_pvp_list; std::list hero_quality_meta_list; std::list gun_quality_meta_list; @@ -915,6 +916,12 @@ private: talent_hash[a8::MakeInt64(meta.talent_id(), meta.talent_lv())] = item; } + for (auto& meta : formula_pvp_meta_list) { + MetaData::FormulaPvp item; + item.i = &meta; + formula_pvp_list.push_back(item); + } + for (auto& meta : hero_quality_meta_list) { MetaData::HeroQuality item; item.i = &meta; @@ -926,7 +933,6 @@ private: item.i = &meta; gun_quality_hash[meta.quality()] = item; } - } private: @@ -1264,18 +1270,23 @@ MetaData::Item* MetaMgr::GetHeroSkin(int hero_id) MetaData::HeroQuality* MetaMgr::GetHeroQuality(int quality) { - return nullptr; + auto itr = loader_->hero_quality_hash.find(quality); + return itr != loader_->hero_quality_hash.end() ? &itr->second : nullptr; } MetaData::GunQuality* MetaMgr::GetGunQuality(int quality) { - return nullptr; + auto itr = loader_->gun_quality_hash.find(quality); + return itr != loader_->gun_quality_hash.end() ? &itr->second : nullptr; } MetaData::FormulaPvp* MetaMgr::GetFormulaPvp(float ranked_topx) { - for (auto& meta : loader_->formula_pvp_meta_list) { - + MetaData::FormulaPvp* last_meta = nullptr; + for (auto& meta : loader_->formula_pvp_list) { + if (ranked_topx <= meta.i->top()) { + return &meta; + } } - return nullptr; + return last_meta; }