diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/charserverrecv.cpp | 44 | ||||
-rw-r--r-- | src/net/eathena/charserverrecv.h | 1 | ||||
-rw-r--r-- | src/net/eathena/packetsin.inc | 20 |
3 files changed, 35 insertions, 30 deletions
diff --git a/src/net/eathena/charserverrecv.cpp b/src/net/eathena/charserverrecv.cpp index 85662e92b..3100aaebb 100644 --- a/src/net/eathena/charserverrecv.cpp +++ b/src/net/eathena/charserverrecv.cpp @@ -349,38 +349,24 @@ void CharServerRecv::processPincodeStatus(Net::MessageIn &msg) { pincodeManager.setSeed(msg.readUInt32("pincode seed")); pincodeManager.setAccountId(msg.readBeingId("account id")); + pincodeManager.setPincodeLockFlag(false); + if (pincodeManager.processPincodeStatus(CAST_U16( + msg.readInt16("state"))) == false) + { + UNIMPLEMENTEDPACKET; + } +} + +void CharServerRecv::processPincodeStatus2(Net::MessageIn &msg) +{ + pincodeManager.setSeed(msg.readUInt32("pincode seed")); + pincodeManager.setAccountId(msg.readBeingId("account id")); const uint16_t state = CAST_U16(msg.readInt16("state")); - switch (state) + pincodeManager.setPincodeLockFlag(msg.readInt16("flag") == 0); + if (pincodeManager.processPincodeStatus(state) == false) { - case 0: // pin ok - pincodeManager.pinOk(); - break; - case 1: // ask for pin - pincodeManager.setState(PincodeState::Ask); - break; - case 2: // create new pin - case 4: // create new pin? - { - pincodeManager.setState(PincodeState::Create); - break; - } - case 3: // pin must be changed - pincodeManager.setState(PincodeState::Change); - break; - case 8: // pincode was incorrect - case 5: // client show error? - pincodeManager.wrongPin(); - return; - case 6: // Unable to use your KSSN number - break; - case 7: // char select window shows a button - break; - default: - UNIMPLEMENTEDPACKET; - break; + UNIMPLEMENTEDPACKET; } - if (client) - client->updatePinState(); } void CharServerRecv::processPincodeMakeStatus(Net::MessageIn &msg) diff --git a/src/net/eathena/charserverrecv.h b/src/net/eathena/charserverrecv.h index 5b776f82d..78092d3dd 100644 --- a/src/net/eathena/charserverrecv.h +++ b/src/net/eathena/charserverrecv.h @@ -44,6 +44,7 @@ namespace EAthena void readPlayerData(Net::MessageIn &msg, Net::Character *const character); void processPincodeStatus(Net::MessageIn &msg); + void processPincodeStatus2(Net::MessageIn &msg); void processPincodeMakeStatus(Net::MessageIn &msg); void processPincodeEditStatus(Net::MessageIn &msg); void processCharLogin2(Net::MessageIn &msg); diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc index 83d30570a..8fa74e371 100644 --- a/src/net/eathena/packetsin.inc +++ b/src/net/eathena/packetsin.inc @@ -1037,6 +1037,24 @@ if (packetVersion >= 20171207) packet(SMSG_PARTY_INFO, 0x0ae5, -1, &PartyRecv::processPartyInfo, 20171207); } +// main 20180124 +if (packetVersionMain >= 20180124) +{ + packet(SMSG_CHAR_PINCODE_STATUS2, 0x0ae9, 13, &CharServerRecv::processPincodeStatus2, 20180124); +} + +// re 20180124 +if (packetVersionRe >= 20180124) +{ + packet(SMSG_CHAR_PINCODE_STATUS2, 0x0ae9, 13, &CharServerRecv::processPincodeStatus2, 20180124); +} + +// zero 20180131 +if (packetVersionZero >= 20180131) +{ + packet(SMSG_CHAR_PINCODE_STATUS2, 0x0ae9, 13, &CharServerRecv::processPincodeStatus2, 20180124); +} + // re 20180221 if (packetVersionRe >= 20180221) { @@ -1081,7 +1099,7 @@ if (packetVersionZero >= 20180411) } // 20180418 -if (packetVersion == 20180418) +if (packetVersion >= 20180418) { packet(SMSG_ITEM_DROPPED, 0x0add, 22, &ItemRecv::processItemDropped, 20180418); } |