From d3010ba93e3f30b4af2314434c21f114459b8ef7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 26 Oct 2015 20:22:29 +0300 Subject: Add packet SMSG_NPC_SKIN 0x0b1c. --- src/gui/windows/npcdialog.cpp | 4 ++++ src/gui/windows/npcdialog.h | 2 ++ src/net/eathena/network.h | 2 +- src/net/eathena/npcrecv.cpp | 12 ++++++++++++ src/net/eathena/npcrecv.h | 1 + src/net/eathena/packetsin.inc | 1 + 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/gui/windows/npcdialog.cpp b/src/gui/windows/npcdialog.cpp index f81b3c9a7..32bf7bdab 100644 --- a/src/gui/windows/npcdialog.cpp +++ b/src/gui/windows/npcdialog.cpp @@ -1061,3 +1061,7 @@ void NpcDialog::copyToClipboard(const BeingId npcId, sendBuffer(str); } } + +void NpcDialog::setSkin(const std::string &skin) +{ +} diff --git a/src/gui/windows/npcdialog.h b/src/gui/windows/npcdialog.h index fcd4b7e15..4f6a0f3cf 100644 --- a/src/gui/windows/npcdialog.h +++ b/src/gui/windows/npcdialog.h @@ -214,6 +214,8 @@ class NpcDialog final : public Window, int isCloseState() const { return mActionState == NPC_ACTION_CLOSE; } + void setSkin(const std::string &skin); + static void copyToClipboard(const BeingId npcId, const int x, const int y); diff --git a/src/net/eathena/network.h b/src/net/eathena/network.h index 006ad4a6e..708d80b12 100644 --- a/src/net/eathena/network.h +++ b/src/net/eathena/network.h @@ -29,7 +29,7 @@ * Protocol version, reported to the eAthena char and mapserver who can adjust * the protocol accordingly. */ -#define CLIENT_PROTOCOL_VERSION 14 +#define CLIENT_PROTOCOL_VERSION 15 namespace EAthena { diff --git a/src/net/eathena/npcrecv.cpp b/src/net/eathena/npcrecv.cpp index f6058e682..2c0fa6d2f 100644 --- a/src/net/eathena/npcrecv.cpp +++ b/src/net/eathena/npcrecv.cpp @@ -25,7 +25,10 @@ #include "being/being.h" +#include "gui/windows/npcdialog.h" + #include "net/messagein.h" +#include "net/npchandler.h" #include "net/ea/npcrecv.h" @@ -100,4 +103,13 @@ void NpcRecv::processProgressBarAbort(Net::MessageIn &msg) UNIMPLIMENTEDPACKET; } +void NpcRecv::processNpcSkin(Net::MessageIn &msg) +{ + const int len = msg.readInt16("len"); + npcHandler->getNpc(msg, NpcAction::Other); + const std::string skin = msg.readString(len - 8, "skin"); + if (Ea::NpcRecv::mDialog) + Ea::NpcRecv::mDialog->setSkin(skin); +} + } // namespace EAthena diff --git a/src/net/eathena/npcrecv.h b/src/net/eathena/npcrecv.h index ed2e2f670..cf25a36e6 100644 --- a/src/net/eathena/npcrecv.h +++ b/src/net/eathena/npcrecv.h @@ -37,6 +37,7 @@ namespace EAthena void processArea(Net::MessageIn &msg); void processShowDigit(Net::MessageIn &msg); void processProgressBarAbort(Net::MessageIn &msg); + void processNpcSkin(Net::MessageIn &msg); } // namespace NpcRecv } // namespace EAthena diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index b1f785e95..7c35c31b1 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -260,6 +260,7 @@ packet(SMSG_NPC_SHOW_DIGIT, 0x01b1, 7, &NpcRecv::processShowDig packet(SMSG_NPC_SHOW_PROGRESS_BAR, 0x02f0, 10, &NpcRecv::processNpcShowProgressBar); packet(SMSG_NPC_STR_INPUT, 0x01d4, 6, &Ea::NpcRecv::processNpcStrInput); packet(SMSG_NPC_VIEWPOINT, 0x0144, 23, &NpcRecv::processNpcViewPoint); +packet(SMSG_NPC_SKIN, 0x0b1c, -1, &NpcRecv::processNpcSkin); packet(SMSG_ONLINE_LIST, 0x0b10, -1, &PlayerRecv::processOnlineList); packet(SMSG_PARTY_CREATE, 0x00fa, 3, &Ea::PartyRecv::processPartyCreate); packet(SMSG_PARTY_INFO, 0x00fb, -1, &PartyRecv::processPartyInfo); -- cgit v1.2.3-70-g09d2