summaryrefslogtreecommitdiff
path: root/src/net/eathena/beingrecv.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2019-05-15 02:00:02 +0300
committerAndrei Karas <akaras@inbox.ru>2019-05-15 02:00:02 +0300
commit1517630edf7dd30560fde38bcafa9cee7e08f8f6 (patch)
treedce005f2d5c46d807581b07586c333cc0beec824 /src/net/eathena/beingrecv.cpp
parentebeb2c4f224016bf076f9a97d7f03afc16a102cf (diff)
downloadManaVerse-1517630edf7dd30560fde38bcafa9cee7e08f8f6.tar.gz
ManaVerse-1517630edf7dd30560fde38bcafa9cee7e08f8f6.tar.bz2
ManaVerse-1517630edf7dd30560fde38bcafa9cee7e08f8f6.tar.xz
ManaVerse-1517630edf7dd30560fde38bcafa9cee7e08f8f6.zip
Add packet SMSG_NAME_RESPONSE_TITLE 0x0adf
Diffstat (limited to 'src/net/eathena/beingrecv.cpp')
-rw-r--r--src/net/eathena/beingrecv.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp
index 981dd9ef1..1961be9a7 100644
--- a/src/net/eathena/beingrecv.cpp
+++ b/src/net/eathena/beingrecv.cpp
@@ -34,6 +34,8 @@
#include "enums/resources/notifytypes.h"
+#include "enums/resources/map/mapitemtype.h"
+
#include "particle/particleengine.h"
#include "input/keyboardconfig.h"
@@ -1674,6 +1676,64 @@ void BeingRecv::processBeingResurrect(Net::MessageIn &msg)
BLOCK_END("BeingRecv::processBeingResurrect")
}
+void BeingRecv::processNameResponseTitle(Net::MessageIn &msg)
+{
+ if (actorManager == nullptr)
+ return;
+
+ const BeingId beingId = msg.readBeingId("being id");
+ msg.readInt32("group id"); // +++ can be used for icon or other
+ const std::string name = msg.readString(24, "name");
+ msg.readString(24, "title"); // +++ can be used for second name part
+ Being *const dstBeing = actorManager->findBeing(beingId);
+
+ actorManager->updateNameId(name, beingId);
+
+ if (dstBeing != nullptr)
+ {
+ if (beingId == localPlayer->getId())
+ {
+ localPlayer->pingResponse();
+ }
+ else
+ {
+ if (dstBeing->getType() != ActorType::Portal)
+ {
+ dstBeing->setName(name);
+ }
+ else if (viewport != nullptr)
+ {
+ Map *const map = viewport->getMap();
+ if (map != nullptr)
+ {
+ map->addPortalTile(name, MapItemType::PORTAL,
+ dstBeing->getTileX(), dstBeing->getTileY());
+ }
+ }
+ dstBeing->updateGuild();
+ dstBeing->addToCache();
+
+ if (dstBeing->getType() == ActorType::Player)
+ dstBeing->updateColors();
+
+ if (localPlayer != nullptr)
+ {
+ const Party *const party = localPlayer->getParty();
+ if (party != nullptr && party->isMember(dstBeing->getId()))
+ {
+ PartyMember *const member = party->getMember(
+ dstBeing->getId());
+
+ if (member != nullptr)
+ member->setName(dstBeing->getName());
+ }
+ localPlayer->checkNewName(dstBeing);
+ }
+ return;
+ }
+ }
+}
+
void BeingRecv::processPlayerGuilPartyInfo(Net::MessageIn &msg)
{
BLOCK_START("BeingRecv::processPlayerGuilPartyInfo")