From 5c093d150521612074568dcffbabe7f5f1d45f61 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 10 Aug 2020 16:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=96=AD=E7=BA=BF=E9=87=8D?= =?UTF-8?q?=E8=BF=9E=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/player.cc | 1 + server/gameserver/playermgr.cc | 6 ++++++ server/gameserver/playermgr.h | 1 + server/gameserver/roommgr.cc | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 3f61ee4..6613be8 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -921,6 +921,7 @@ void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg) respmsg.set_errcode(0); respmsg.set_errmsg("战斗重连成功"); SendNotifyMsg(respmsg); + PlayerMgr::Instance()->ReBindSocket(this); } void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index 12761b4..2db99ad 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -194,3 +194,9 @@ void PlayerMgr::DecAccountNum(const std::string& account_id) ); } } + +void PlayerMgr::ReBindSocket(Player* hum) +{ + socket_hash_[hum->socket_handle] = hum; + IncAccountNum(hum->account_id); +} diff --git a/server/gameserver/playermgr.h b/server/gameserver/playermgr.h index 3da7306..75d2396 100644 --- a/server/gameserver/playermgr.h +++ b/server/gameserver/playermgr.h @@ -36,6 +36,7 @@ class PlayerMgr : public a8::Singleton size_t GetAccountNum() { return account_num_hash_.size(); } void IncAccountNum(const std::string& account_id); void DecAccountNum(const std::string& account_id); + void ReBindSocket(Player* hum); private: std::map socket_hash_; diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 9d379fa..f6b65df 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -190,7 +190,7 @@ void RoomMgr::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg) send_reconnect_failed(hdr.socket_handle, 1, "房间已销毁"); return; } - if (room->GetRoomMode() == kChiJiMode) { + if (room->GetRoomMode() != kChiJiMode) { send_reconnect_failed(hdr.socket_handle, 1, "只有吃鸡模式支持重连"); return; }