From a86a068c3a5d97377deee915c93c5a29889f1a59 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 27 Apr 2016 20:54:14 +0300 Subject: Add packet SMSG_PLAYER_KILLED_BY 0x0b1d. Change protocol version to 17. --- src/net/eathena/network.h | 2 +- src/net/eathena/packetsin.inc | 1 + src/net/eathena/playerrecv.cpp | 30 +++++++++++++++++++++++++++++- src/net/eathena/playerrecv.h | 1 + src/net/eathena/serverfeatures.cpp | 5 +++++ 5 files changed, 37 insertions(+), 2 deletions(-) (limited to 'src/net/eathena') diff --git a/src/net/eathena/network.h b/src/net/eathena/network.h index 0b628256f..7b737bdec 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 16 +#define CLIENT_PROTOCOL_VERSION 17 namespace EAthena { diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index bba0e64e7..affdc4b81 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -799,6 +799,7 @@ if (serverVersion > 0) packet(SMSG_BATTLE_EMBLEM2, 0x0b1a, 34, &BattleGroundRecv::processBattleEmblem2, 0); packet(SMSG_MAP_SET_TILES_TYPE, 0x0b1b, 34, &MapRecv::processSetTilesType, 0); packet(SMSG_NPC_SKIN, 0x0b1c, -1, &NpcRecv::processNpcSkin, 0); + packet(SMSG_PLAYER_KILLED_BY, 0x0b1d, 6, &PlayerRecv::processKilledBy, 0); // char server packet(SMSG_CHAR_PASSWORD_RESPONSE, 0x0062, 3, &LoginRecv::processCharPasswordResponse, 0); diff --git a/src/net/eathena/playerrecv.cpp b/src/net/eathena/playerrecv.cpp index f7a6e637d..b58872712 100644 --- a/src/net/eathena/playerrecv.cpp +++ b/src/net/eathena/playerrecv.cpp @@ -22,6 +22,7 @@ #include "net/eathena/playerrecv.h" +#include "actormanager.h" #include "configuration.h" #include "notifymanager.h" #include "party.h" @@ -37,9 +38,12 @@ #include "gui/windows/statuswindow.h" #include "gui/windows/whoisonline.h" -#include "net/messagein.h" +#include "gui/widgets/tabs/chat/chattab.h" #include "net/eathena/sp.h" +#include "net/messagein.h" + +#include "utils/gettext.h" #include "debug.h" @@ -428,4 +432,28 @@ void PlayerRecv::processDressRoomOpen(Net::MessageIn &msg) msg.readInt16("view"); } +void PlayerRecv::processKilledBy(Net::MessageIn &msg) +{ + const BeingId id = msg.readBeingId("killer id"); + Being *const dstBeing = actorManager->findBeing(id); + if (id == BeingId_zero) + { + debugMsg(strprintf( + // TRANSLATORS: player killed message + _("You were killed by unknown source."))); + } + else + { + std::string name; + if (dstBeing) + name = dstBeing->getName(); + else + name = strprintf("?%u", CAST_U32(id)); + debugMsg(strprintf( + // TRANSLATORS: player killed message + _("You were killed by %s."), + name.c_str())); + } +} + } // namespace EAthena diff --git a/src/net/eathena/playerrecv.h b/src/net/eathena/playerrecv.h index 22cb57822..b768edd0d 100644 --- a/src/net/eathena/playerrecv.h +++ b/src/net/eathena/playerrecv.h @@ -51,6 +51,7 @@ namespace EAthena void processPlayerRankPoints(Net::MessageIn &msg); void processOnlineList(Net::MessageIn &msg); void processDressRoomOpen(Net::MessageIn &msg); + void processKilledBy(Net::MessageIn &msg); } // namespace PlayerRecv } // namespace EAthena diff --git a/src/net/eathena/serverfeatures.cpp b/src/net/eathena/serverfeatures.cpp index f995f55ad..e8abbfdcf 100644 --- a/src/net/eathena/serverfeatures.cpp +++ b/src/net/eathena/serverfeatures.cpp @@ -295,4 +295,9 @@ bool ServerFeatures::haveMoveWhileSit() const return serverVersion > 0; } +bool ServerFeatures::haveKillerId() const +{ + return serverVersion >= 14; +} + } // namespace EAthena -- cgit v1.2.3-60-g2f50