From 5128fde9fb3434aed425fe7160e35b81bd9126e6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 3 Jul 2020 15:26:36 +0800 Subject: [PATCH] 1 --- server/imserver/player.cc | 14 +++----------- server/imserver/player.h | 2 ++ server/imserver/playermgr.cc | 12 ++++++++++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/server/imserver/player.cc b/server/imserver/player.cc index a43b3f9..4fbd7fd 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -1117,7 +1117,9 @@ void Player::ProcessEventTimerFunc() { std::string account_id = param.sender.GetString(); long long curr_max_event_idx = param.param1; + #if 0 long long last_event_idx = param.param2; + #endif Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(account_id); if (hum) { hum->event_fetching_ = false; @@ -1249,20 +1251,10 @@ bool Player::CanAddFriend(const std::string& account_id) if (GetFriendById(account_id)) { return false; } - int target_channel = f8::ExtractChannelIdFromAccountId(account_id); int target_gameid = f8::ExtractGameIdFromAccountId(account_id); - int self_channel = f8::ExtractChannelIdFromAccountId(AccountId()); - int self_gameid = f8::ExtractGameIdFromAccountId(AccountId()); - if (target_gameid != self_gameid) { + if (target_gameid != gameid) { return false; } - #if 0 - if (self_channel != 6000 && target_channel != 6000) { - if (self_channel != target_channel) { - return false; - } - } - #endif return true; } diff --git a/server/imserver/player.h b/server/imserver/player.h index 82d352f..55becde 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -18,6 +18,8 @@ class Player Friend myself; RoleData role_data; + int gameid = 0; + int channel = 0; long ip_saddr = 0; int account_registertime = 0; diff --git a/server/imserver/playermgr.cc b/server/imserver/playermgr.cc index 2b170ab..5730b9f 100644 --- a/server/imserver/playermgr.cc +++ b/server/imserver/playermgr.cc @@ -144,6 +144,8 @@ void PlayerMgr::_SS_IM_PushUserOnlineState(f8::MsgHdr& hdr, const ss::SS_IM_Push void PlayerMgr::_SS_IM_RandomUsersRequest(f8::MsgHdr& hdr, const ss::SS_IM_RandomUsersRequest& msg) { + int gameid = f8::ExtractGameIdFromAccountId + (msg.context().user_info().base_data().account_id()); std::set exclude_account_ids; for (auto& account_id : msg.exclude_account_ids()) { exclude_account_ids.insert(account_id); @@ -151,8 +153,13 @@ void PlayerMgr::_SS_IM_RandomUsersRequest(f8::MsgHdr& hdr, const ss::SS_IM_Rando std::vector human_list; human_list.reserve(100); for (auto& pair : accountid_hash_) { + if (human_list.size() > 100) { + break; + } if (pair.second->GetFriendNum() < MAX_FRIEND_NUM && - exclude_account_ids.find(pair.second->AccountId()) == exclude_account_ids.end()) { + pair.second->gameid == gameid && + exclude_account_ids.find(pair.second->AccountId()) == exclude_account_ids.end() + ) { human_list.push_back(pair.second); } } @@ -470,6 +477,8 @@ void PlayerMgr::AsyncLoginOnOk(const std::string& account_id, hum = new Player(); hum->socket_handle = hdr->socket_handle; hum->ip_saddr = hdr->ip_saddr; + hum->gameid = f8::ExtractGameIdFromAccountId(account_id); + hum->channel = f8::ExtractChannelIdFromAccountId(account_id); hum->myself.base_data.account_id = account_id; hum->myself.base_data.nickname = nickname; hum->myself.base_data.avatar_url = avatar_url; @@ -550,4 +559,3 @@ void PlayerMgr::OnClientSocketDisconnect(int socket_handle) }); #endif } -