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; }