diff --git a/server/imserver/chatmgr.cc b/server/imserver/chatmgr.cc index 2990481..e655bf9 100644 --- a/server/imserver/chatmgr.cc +++ b/server/imserver/chatmgr.cc @@ -73,17 +73,21 @@ void ChatMgr::ProcWorldChat(Player* hum, const cs::CMSendChatMsg& msg) void ChatMgr::ProcPrivateChat(Player* hum, const cs::CMSendChatMsg& msg) { + Player* target_hum = PlayerMgr::Instance()->GetPlayerByAccountId(msg.target()); + if (!target_hum) { + return; + } ++private_msg_id_; cs::MFChatMsg* p = new cs::MFChatMsg(); p->set_msg_uuid(private_msg_id_); + hum->FillMFUserInfo(p->mutable_sender()); p->set_chat_channel(msg.chat_channel()); p->set_msg_type(msg.msg_type()); p->set_msg_body(msg.msg_body()); p->set_send_time(time(nullptr)); ChatMgr::Instance()->SyncPrivateChatMsg(hum); - Player* target_hum = PlayerMgr::Instance()->GetPlayerByAccountId(msg.target()); if (target_hum) { ChatMgr::Instance()->SyncPrivateChatMsg(target_hum); } @@ -98,6 +102,7 @@ void ChatMgr::ProcGuildChat(Player* hum, const cs::CMSendChatMsg& msg) cs::MFChatMsg* p = new cs::MFChatMsg(); p->set_msg_uuid(guild_msg_id_); + hum->FillMFUserInfo(p->mutable_sender()); p->set_chat_channel(msg.chat_channel()); p->set_msg_type(msg.msg_type()); p->set_msg_body(msg.msg_body()); diff --git a/server/imserver/chatmgr.h b/server/imserver/chatmgr.h index 0fcf6f0..207e73a 100644 --- a/server/imserver/chatmgr.h +++ b/server/imserver/chatmgr.h @@ -9,17 +9,19 @@ struct ChatMsgRec long long last_id = 0; std::list msg_list; - void Pop(int max_num) + void Pop(size_t max_num) { while (msg_list.size() > max_num) { msg_list.erase(msg_list.begin()); } } - void PopAndDelete(int max_num) + void PopAndDelete(size_t max_num) { while (msg_list.size() > max_num) { + cs::MFChatMsg* msg = *msg_list.begin(); msg_list.erase(msg_list.begin()); + delete msg; } }