diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/eathena/packetsin.inc | 1 | ||||
-rw-r--r-- | src/net/eathena/playerrecv.cpp | 9 | ||||
-rw-r--r-- | src/net/eathena/playerrecv.h | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 8e847a1cd..49d5a3e5d 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -808,6 +808,7 @@ if (serverVersion > 0) packet(SMSG_SKILL_CASTING2, 0x0b1e, -1, &BeingRecv::processSkillCasting2, 0); packet(SMSG_PLAYER_ADD_SKILL2, 0x0b1f, -1, &SkillRecv::processSkillAdd2, 0); packet(SMSG_PLAYER_UPDATE_SKILL2, 0x0b20, -1, &SkillRecv::processSkillUpdate2, 0); + packet(SMSG_WALK_ERROR, 0x0b21, 10, &PlayerRecv::processWalkError, 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 eb958a764..6f9f5a43c 100644 --- a/src/net/eathena/playerrecv.cpp +++ b/src/net/eathena/playerrecv.cpp @@ -220,6 +220,15 @@ void PlayerRecv::processWalkResponse(Net::MessageIn &msg) BLOCK_END("PlayerRecv::processWalkResponse") } +void PlayerRecv::processWalkError(Net::MessageIn &msg) +{ + msg.readInt32("tick"); + const int x = msg.readInt16("x"); + const int y = msg.readInt16("y"); + if (localPlayer) + localPlayer->failMove(x, y); +} + void PlayerRecv::processPvpInfo(Net::MessageIn &msg) { UNIMPLIMENTEDPACKET; diff --git a/src/net/eathena/playerrecv.h b/src/net/eathena/playerrecv.h index b768edd0d..d0ce72b74 100644 --- a/src/net/eathena/playerrecv.h +++ b/src/net/eathena/playerrecv.h @@ -40,6 +40,7 @@ namespace EAthena void processPlayerHeal(Net::MessageIn &msg); void processPlayerSkillMessage(Net::MessageIn &msg); void processWalkResponse(Net::MessageIn &msg); + void processWalkError(Net::MessageIn &msg); void processNotifyMapInfo(Net::MessageIn &msg); void processPlayerFameBlacksmith(Net::MessageIn &msg); void processPlayerFameAlchemist(Net::MessageIn &msg); |