From bde5efd020baf48312eb093f120d2b9094d2f994 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Jul 2016 20:25:56 +0300 Subject: Add packet SMSG_WALK_ERROR 0x0b21. --- src/being/localplayer.cpp | 6 +++++- src/being/localplayer.h | 4 ++++ src/net/eathena/packetsin.inc | 1 + src/net/eathena/playerrecv.cpp | 9 +++++++++ src/net/eathena/playerrecv.h | 1 + 5 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 01e4466bf..9f8ad71c4 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -2117,7 +2117,6 @@ void LocalPlayer::updateCoords() break; } } - if (mDrawPath && mShowNavigePath) { tmpLayer->clean(); @@ -2586,6 +2585,11 @@ void LocalPlayer::updateNavigateList() } } +void LocalPlayer::failMove(const int x A_UNUSED, + const int y A_UNUSED) +{ +} + void LocalPlayer::waitFor(const std::string &nick) { mWaitFor = nick; diff --git a/src/being/localplayer.h b/src/being/localplayer.h index b09e63828..5fa17b7f8 100644 --- a/src/being/localplayer.h +++ b/src/being/localplayer.h @@ -425,6 +425,9 @@ class LocalPlayer final : public Being, void freezeMoving(const int timeWaitTicks); + void failMove(const int x, + const int y); + protected: void updateCoords() override final; @@ -523,6 +526,7 @@ class LocalPlayer final : public Being, bool mShowNavigePath; bool mAllowRename; bool mFreezed; + bool mAllowNextStep; }; extern LocalPlayer *localPlayer; 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); -- cgit v1.2.3-60-g2f50