diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-02-12 01:10:55 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-02-12 01:10:55 +0300 |
commit | bfd533ab5469c1c5998ee823cd861968f4ce4ef4 (patch) | |
tree | 6701f8a5802da3ae526f5122892878f96595a201 | |
parent | 121273a1f81b6476f12b32feb5c22e005623b211 (diff) | |
download | mv-bfd533ab5469c1c5998ee823cd861968f4ce4ef4.tar.gz mv-bfd533ab5469c1c5998ee823cd861968f4ce4ef4.tar.bz2 mv-bfd533ab5469c1c5998ee823cd861968f4ce4ef4.tar.xz mv-bfd533ab5469c1c5998ee823cd861968f4ce4ef4.zip |
Show also last seen in memory nick for invisible players chat messages (tmwa)
-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() && |