diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/guildrecv.cpp | 17 | ||||
-rw-r--r-- | src/net/eathena/guildrecv.h | 1 | ||||
-rw-r--r-- | src/net/eathena/packetsin.inc | 6 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/net/eathena/guildrecv.cpp b/src/net/eathena/guildrecv.cpp index 574090c8f..b5450e1aa 100644 --- a/src/net/eathena/guildrecv.cpp +++ b/src/net/eathena/guildrecv.cpp @@ -802,4 +802,21 @@ void GuildRecv::processOnlineInfo(Net::MessageIn &msg) msg.readInt32("online"); } +void GuildRecv::processGuildSetPosition(Net::MessageIn &msg) +{ + const int positionLen = msg.readInt16("len") - 8; + const BeingId beingId = msg.readBeingId("being id"); + std::string position; + if (positionLen > 0) + { + position = msg.readString(positionLen, "position"); + } + Being *const dstBeing = actorManager->findBeing(beingId); + if (dstBeing != nullptr) + { + dstBeing->setGuildPos(position); + dstBeing->addToCache(); + } +} + } // namespace EAthena diff --git a/src/net/eathena/guildrecv.h b/src/net/eathena/guildrecv.h index 35548048d..a9ce1251c 100644 --- a/src/net/eathena/guildrecv.h +++ b/src/net/eathena/guildrecv.h @@ -69,6 +69,7 @@ namespace EAthena void processGuildExpulsionList(Net::MessageIn &msg); void processGuildEmblem(Net::MessageIn &msg); void processOnlineInfo(Net::MessageIn &msg); + void processGuildSetPosition(Net::MessageIn &msg); } // namespace GuildRecv extern Guild *taGuild; } // namespace EAthena diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 194798849..b1a7475bb 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -1195,6 +1195,12 @@ if (packetVersion >= 20180418) packet(SMSG_ITEM_DROPPED, 0x0add, 22, &ItemRecv::processItemDropped, 20180418); } +// 20180605 +if (packetVersion >= 20180605) +{ + packet(SMSG_GUILD_SET_POSITION, 0x0afd, -1, &GuildRecv::processGuildSetPosition, 20180605); +} + // re 20180620 if (packetVersionMain >= 20180620) { |