diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/net/eathena/generalhandler.cpp | 13 | ||||
-rw-r--r-- | src/net/eathena/generalhandler.h | 2 | ||||
-rw-r--r-- | src/net/eathena/packets.h | 2 | ||||
-rw-r--r-- | src/net/eathena/protocol.h | 1 |
4 files changed, 17 insertions, 1 deletions
diff --git a/src/net/eathena/generalhandler.cpp b/src/net/eathena/generalhandler.cpp index c5730556a..aa939acb5 100644 --- a/src/net/eathena/generalhandler.cpp +++ b/src/net/eathena/generalhandler.cpp @@ -118,6 +118,7 @@ GeneralHandler::GeneralHandler() : static const uint16_t _messages[] = { SMSG_CONNECTION_PROBLEM, + SMSG_MAP_NOT_FOUND, 0 }; handledMessages = _messages; @@ -147,6 +148,10 @@ void GeneralHandler::handleMessage(Net::MessageIn &msg) processConnectionProblem(msg); break; + case SMSG_MAP_NOT_FOUND: + processMapNotFound(msg); + break; + default: break; } @@ -254,6 +259,14 @@ void GeneralHandler::processConnectionProblem(Net::MessageIn &msg) client->setState(STATE_ERROR); } +void GeneralHandler::processMapNotFound(Net::MessageIn &msg) +{ + const int sz = msg.readInt16("len") - 4; + msg.readString(sz, "map name?"); + errorMessage = _("Map not found"); + client->setState(STATE_ERROR); +} + void GeneralHandler::load() { (new Network)->registerHandler(this); diff --git a/src/net/eathena/generalhandler.h b/src/net/eathena/generalhandler.h index 40ec4d053..cf6c33f4d 100644 --- a/src/net/eathena/generalhandler.h +++ b/src/net/eathena/generalhandler.h @@ -63,6 +63,8 @@ class GeneralHandler final : public MessageHandler, protected: static void processConnectionProblem(Net::MessageIn &msg); + static void processMapNotFound(Net::MessageIn &msg); + MessageHandlerPtr mAdminHandler; MessageHandlerPtr mBeingHandler; MessageHandlerPtr mBuySellHandler; diff --git a/src/net/eathena/packets.h b/src/net/eathena/packets.h index 1581a8dd9..5211e5ea3 100644 --- a/src/net/eathena/packets.h +++ b/src/net/eathena/packets.h @@ -220,7 +220,7 @@ int16_t packet_lengths[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 26, 0, // #0x0840 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/src/net/eathena/protocol.h b/src/net/eathena/protocol.h index 31b4c4b40..9a6824ba4 100644 --- a/src/net/eathena/protocol.h +++ b/src/net/eathena/protocol.h @@ -28,6 +28,7 @@ *********************************/ #define SMSG_SERVER_PING 0x007f /**< Contains server tick */ #define SMSG_CONNECTION_PROBLEM 0x0081 +#define SMSG_MAP_NOT_FOUND 0x0840 #define SMSG_LOGIN_DATA 0x0069 #define SMSG_LOGIN_ERROR 0x006a |