diff options
-rw-r--r-- | src/actormanager.cpp | 10 | ||||
-rw-r--r-- | src/actormanager.h | 2 | ||||
-rw-r--r-- | src/net/tmwa/chatrecv.cpp | 5 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/actormanager.cpp b/src/actormanager.cpp index 6b27e3205..d851864a3 100644 --- a/src/actormanager.cpp +++ b/src/actormanager.cpp @@ -2062,6 +2062,16 @@ void ActorManager::updateSeenPlayers(const std::set<std::string> } } +std::string ActorManager::getSeenPlayerById(const BeingId id) +{ + if (!mEnableIdCollecting) + return std::string(); + + if (mIdName.find(id) != mIdName.end() && !mIdName[id].empty()) + return *(mIdName[id].begin()); + return std::string(); +} + #ifdef EATHENA_SUPPORT void ActorManager::removeRoom(const int chatId) { diff --git a/src/actormanager.h b/src/actormanager.h index 28aa25417..78f53a6d5 100644 --- a/src/actormanager.h +++ b/src/actormanager.h @@ -363,6 +363,8 @@ class ActorManager final: public ConfigListener void updateSeenPlayers(const std::set<std::string> &onlinePlayers); + std::string getSeenPlayerById(const BeingId id); + size_t size() const { return mActors.size(); } diff --git a/src/net/tmwa/chatrecv.cpp b/src/net/tmwa/chatrecv.cpp index 27ca74a41..f4bb3725d 100644 --- a/src/net/tmwa/chatrecv.cpp +++ b/src/net/tmwa/chatrecv.cpp @@ -314,7 +314,12 @@ void ChatRecv::processBeingChat(Net::MessageIn &msg) if (being) sender_name = being->getName(); if (sender_name.empty()) + { sender_name = "?" + toString(CAST_S32(beingId)); + const std::string name = actorManager->getSeenPlayerById(beingId); + if (!name.empty()) + sender_name.append(" ").append(name); + } } else if (being && sender_name != being->getName() && |