From 8cc52b6e9cf46643cc6300df844e70b8dcb85212 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 31 Aug 2014 16:05:40 +0300 Subject: eathena: add basic handling for packet SMSG_CHAR_PINCODE_STATUS 0x08b9. --- src/net/eathena/charserverhandler.cpp | 37 +++++++++++++++++++++++++++++++++++ src/net/eathena/charserverhandler.h | 2 ++ src/net/eathena/packets.h | 2 +- src/net/eathena/protocol.h | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) (limited to 'src/net') diff --git a/src/net/eathena/charserverhandler.cpp b/src/net/eathena/charserverhandler.cpp index 3dd5134e0..af3c012dd 100644 --- a/src/net/eathena/charserverhandler.cpp +++ b/src/net/eathena/charserverhandler.cpp @@ -71,6 +71,7 @@ CharServerHandler::CharServerHandler() : SMSG_CHAR_DELETE_FAILED, SMSG_CHAR_MAP_INFO, SMSG_CHANGE_MAP_SERVER, + SMSG_CHAR_PINCODE_STATUS, 0 }; handledMessages = _messages; @@ -114,6 +115,10 @@ void CharServerHandler::handleMessage(Net::MessageIn &msg) processChangeMapServer(msg); break; + case SMSG_CHAR_PINCODE_STATUS: + processPincodeStatus(msg); + break; + default: break; } @@ -371,4 +376,36 @@ void CharServerHandler::processChangeMapServer(Net::MessageIn &msg) BLOCK_END("CharServerHandler::processChangeMapServer") } +void CharServerHandler::processPincodeStatus(Net::MessageIn &msg) +{ + msg.readInt32("pincode seed"); + msg.readInt32("account id"); + const uint16_t state = static_cast(msg.readInt16("state")); + switch (state) + { + case 0: // pin ok + break; + case 1: // ask for pin + break; + case 2: // create new pin + break; + case 3: // pin must be changed + break; + case 4: // create new pin? + break; + case 5: // client show error? + break; + case 6: // Unable to use your KSSN number + break; + case 7: // char select window shows a button + break; + case 8: // pincode was incorrect + break; + default: + logger->log("processPincodeStatus: unknown pin state: %d", + static_cast(state)); + break; + } +} + } // namespace EAthena diff --git a/src/net/eathena/charserverhandler.h b/src/net/eathena/charserverhandler.h index 6da7e32fe..9a58a50e7 100644 --- a/src/net/eathena/charserverhandler.h +++ b/src/net/eathena/charserverhandler.h @@ -67,6 +67,8 @@ class CharServerHandler final : public MessageHandler, void readPlayerData(Net::MessageIn &msg, Net::Character *const character, const bool) const override final; + + void processPincodeStatus(Net::MessageIn &msg); }; } // namespace EAthena diff --git a/src/net/eathena/packets.h b/src/net/eathena/packets.h index dd5994fd1..72ae89dfe 100644 --- a/src/net/eathena/packets.h +++ b/src/net/eathena/packets.h @@ -228,7 +228,7 @@ int16_t packet_lengths[] = 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, 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, 12, 0, 0, 0, 0, 0, 0, // #0x08C0 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 3251c5faf..a716d8a6e 100644 --- a/src/net/eathena/protocol.h +++ b/src/net/eathena/protocol.h @@ -44,6 +44,7 @@ #define SMSG_CHAR_LOGIN_ERROR 0x006c #define SMSG_CHAR_CREATE_SUCCEEDED 0x006d #define SMSG_CHAR_CREATE_SUCCEEDED2 0x0221 +#define SMSG_CHAR_PINCODE_STATUS 0x08b9 #define SMSG_CHAR_CREATE_FAILED 0x006e #define SMSG_CHAR_DELETE_SUCCEEDED 0x006f -- cgit v1.2.3-60-g2f50