From b3f38fd1cac82b68fb057db5cf6c6e80e0cdfd90 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 10 Mar 2016 16:36:52 +0300 Subject: For unknown packet field values show packet id and field value. --- src/logger.cpp | 18 +++++++++++++++++- src/logger.h | 6 ++++++ src/net/ea/beingrecv.cpp | 2 +- src/net/ea/chatrecv.cpp | 2 +- src/net/ea/npcrecv.cpp | 2 +- src/net/ea/partyrecv.cpp | 4 ++-- src/net/ea/playerrecv.cpp | 2 +- src/net/eathena/beingrecv.cpp | 14 +++++++------- src/net/eathena/chatrecv.cpp | 12 ++++++------ src/net/eathena/inventoryrecv.cpp | 4 ++-- src/net/eathena/loginrecv.cpp | 2 +- src/net/eathena/mailrecv.cpp | 12 +++++++----- src/net/eathena/playerhandler.cpp | 2 +- src/net/eathena/playerrecv.cpp | 2 +- src/net/eathena/skillrecv.cpp | 2 +- src/net/eathena/traderecv.cpp | 2 +- src/net/tmwa/beingrecv.cpp | 4 ++-- src/net/tmwa/inventoryrecv.cpp | 2 +- src/net/tmwa/playerhandler.cpp | 3 +-- src/net/tmwa/skillrecv.cpp | 6 +++--- src/net/tmwa/traderecv.cpp | 2 +- 21 files changed, 64 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/logger.cpp b/src/logger.cpp index 5b8b7819b..71f26fe25 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -384,7 +384,23 @@ void Logger::unimplimented(const int id) return; const std::string str = strprintf("Unimplimented packet: %d (0x%x)", - id, CAST_U32(id)); + id, + CAST_U32(id)); + DebugMessageListener::distributeEvent(str); + log(str); +} + +void Logger::unimplimented(const int id, + const int id2) +{ + if (!mReportUnimplimented) + return; + + const std::string str = strprintf( + "Unimplimented field value %d for packet %d (0x%x)", + id2, + id, + CAST_U32(id)); DebugMessageListener::distributeEvent(str); log(str); } diff --git a/src/logger.h b/src/logger.h index 51966b5e5..98cf2186a 100644 --- a/src/logger.h +++ b/src/logger.h @@ -53,6 +53,9 @@ #define UNIMPLIMENTEDPACKET \ logger->unimplimented(msg.getId()) +#define UNIMPLIMENTEDPACKETFIELD(field) \ + logger->unimplimented(msg.getId(), field) + /** * The Log Class : Useful to write debug or info messages */ @@ -174,6 +177,9 @@ class Logger final void unimplimented(const int id); + void unimplimented(const int id, + const int id2); + private: std::ofstream mLogFile; std::vector mDelayedLog; diff --git a/src/net/ea/beingrecv.cpp b/src/net/ea/beingrecv.cpp index 364236a08..aa84b0143 100644 --- a/src/net/ea/beingrecv.cpp +++ b/src/net/ea/beingrecv.cpp @@ -261,7 +261,7 @@ void BeingRecv::processBeingAction(Net::MessageIn &msg) case AttackType::TOUCH_SKILL: case AttackType::MISS: case AttackType::SKILLMISS: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(CAST_S32(type)); break; } BLOCK_END("BeingRecv::processBeingAction") diff --git a/src/net/ea/chatrecv.cpp b/src/net/ea/chatrecv.cpp index 9a49e6f94..4e4695cf6 100644 --- a/src/net/ea/chatrecv.cpp +++ b/src/net/ea/chatrecv.cpp @@ -117,7 +117,7 @@ void ChatRecv::processWhisperResponseContinue(Net::MessageIn &msg, } break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } BLOCK_END("ChatRecv::processWhisperResponse") diff --git a/src/net/ea/npcrecv.cpp b/src/net/ea/npcrecv.cpp index 89bacfd2d..ad3a6da10 100644 --- a/src/net/ea/npcrecv.cpp +++ b/src/net/ea/npcrecv.cpp @@ -212,7 +212,7 @@ void NpcRecv::processNpcCommand(Net::MessageIn &msg) break; } default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(cmd); break; } } diff --git a/src/net/ea/partyrecv.cpp b/src/net/ea/partyrecv.cpp index c3c87c145..6d7146ab5 100644 --- a/src/net/ea/partyrecv.cpp +++ b/src/net/ea/partyrecv.cpp @@ -86,7 +86,7 @@ void PartyRecv::processPartySettingsContinue(Net::MessageIn &msg, break; default: case PartyShare::UNKNOWN: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(CAST_S32(exp)); break; } @@ -112,7 +112,7 @@ void PartyRecv::processPartySettingsContinue(Net::MessageIn &msg, break; default: case PartyShare::UNKNOWN: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(CAST_S32(item)); break; } } diff --git a/src/net/ea/playerrecv.cpp b/src/net/ea/playerrecv.cpp index a739ece3a..466c73063 100644 --- a/src/net/ea/playerrecv.cpp +++ b/src/net/ea/playerrecv.cpp @@ -209,7 +209,7 @@ void PlayerRecv::processPlayerArrowMessage(Net::MessageIn &msg) // arrows equiped break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } BLOCK_END("PlayerRecv::processPlayerArrowMessage") diff --git a/src/net/eathena/beingrecv.cpp b/src/net/eathena/beingrecv.cpp index 060ac2724..c5c7acfcc 100644 --- a/src/net/eathena/beingrecv.cpp +++ b/src/net/eathena/beingrecv.cpp @@ -253,7 +253,7 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg, localPlayer->imitateOutfit(dstBeing, SPRITE_EVOL6); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } } @@ -783,7 +783,7 @@ void BeingRecv::processMapType(Net::MessageIn &msg) if (type == 19) NotifyManager::notify(NotifyTypes::MAP_TYPE_BATTLEFIELD); else - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); } void BeingRecv::processSkillCasting(Net::MessageIn &msg) @@ -802,7 +802,7 @@ void BeingRecv::processSkillCasting(Net::MessageIn &msg) if (srcId == BeingId_zero) { - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(0); return; } else if (dstId != BeingId_zero) @@ -1010,7 +1010,7 @@ void BeingRecv::processBeingAction2(Net::MessageIn &msg) default: case AttackType::MISS: case AttackType::SKILLMISS: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(CAST_S32(type)); break; } BLOCK_END("BeingRecv::processBeingAction2") @@ -1368,7 +1368,7 @@ void BeingRecv::processBeingStatUpdate1(Net::MessageIn &msg) if (type != Sp::MANNER) { - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); return; } dstBeing->setManner(value); @@ -1716,7 +1716,7 @@ Being *BeingRecv::createBeing2(Net::MessageIn &msg, break; case BeingType::CHAT: default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(beingType); type = ActorType::Monster; logger->log("not supported object type: %d, job: %d", CAST_S32(beingType), CAST_S32(job)); @@ -1802,7 +1802,7 @@ void BeingRecv::applyPlayerAction(Net::MessageIn &msg, break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } } diff --git a/src/net/eathena/chatrecv.cpp b/src/net/eathena/chatrecv.cpp index 553fb748e..2eb763cdf 100644 --- a/src/net/eathena/chatrecv.cpp +++ b/src/net/eathena/chatrecv.cpp @@ -415,7 +415,7 @@ void ChatRecv::processChatRoomLeave(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::ROOM_KICKED, name); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(status); break; } if (localPlayer && name == localPlayer->getName()) @@ -578,7 +578,7 @@ void ChatRecv::processChatRoomCreateAck(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::ROOM_ALREADY_EXISTS); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(result); break; } mChatRoom.clear(); @@ -619,7 +619,7 @@ void ChatRecv::processChatRoomJoinFailed(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::ROOM_ERROR_RACE); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(result); } } @@ -669,7 +669,7 @@ void ChatRecv::processChatRoomRoleChange(Net::MessageIn &msg) // dont show normal role break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(role); break; } } @@ -702,7 +702,7 @@ void ChatRecv::processMannerMessage(Net::MessageIn &msg) case 5: break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(result); break; } } @@ -721,7 +721,7 @@ void ChatRecv::processChatSilence(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::MANNER_NEGATIVE_POINTS, name); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(result); break; } } diff --git a/src/net/eathena/inventoryrecv.cpp b/src/net/eathena/inventoryrecv.cpp index 3b0114cb9..f1d17a6ca 100644 --- a/src/net/eathena/inventoryrecv.cpp +++ b/src/net/eathena/inventoryrecv.cpp @@ -246,7 +246,7 @@ void InventoryRecv::processPlayerInventoryAdd(Net::MessageIn &msg) break; default: pickup = Pickup::UNKNOWN; - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(err); break; } if (localPlayer) @@ -980,7 +980,7 @@ void InventoryRecv::processPlayerRefine(Net::MessageIn &msg) notifyType = NotifyTypes::REFINE_DOWNGRADE; break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(flag); notifyType = NotifyTypes::REFINE_UNKNOWN; break; } diff --git a/src/net/eathena/loginrecv.cpp b/src/net/eathena/loginrecv.cpp index 220257ba6..c9164e4e2 100644 --- a/src/net/eathena/loginrecv.cpp +++ b/src/net/eathena/loginrecv.cpp @@ -114,7 +114,7 @@ void LoginRecv::processLoginError2(Net::MessageIn &msg) default: // TRANSLATORS: error message errorMessage = _("Unknown error."); - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(code); break; } client->setState(State::ERROR); diff --git a/src/net/eathena/mailrecv.cpp b/src/net/eathena/mailrecv.cpp index e89c730e9..4450be2af 100644 --- a/src/net/eathena/mailrecv.cpp +++ b/src/net/eathena/mailrecv.cpp @@ -62,7 +62,7 @@ void MailRecv::processMailOpen(Net::MessageIn &msg) break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(flag); break; } } @@ -115,7 +115,8 @@ void MailRecv::processReadMail(Net::MessageIn &msg) void MailRecv::processGetAttachment(Net::MessageIn &msg) { - switch (msg.readUInt8("flag")) + const uint8_t flag = msg.readUInt8("flag"); + switch (flag) { case 0: NotifyManager::notify(NotifyTypes::MAIL_GET_ATTACH_OK); @@ -127,14 +128,15 @@ void MailRecv::processGetAttachment(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::MAIL_GET_ATTACH_TOO_MANY_ITEMS); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(flag); break; } } void MailRecv::processSendMailAck(Net::MessageIn &msg) { - switch (msg.readUInt8("fail flag")) + const uint8_t flag = msg.readUInt8("fail flag"); + switch (flag) { case 0: NotifyManager::notify(NotifyTypes::MAIL_SEND_OK); @@ -143,7 +145,7 @@ void MailRecv::processSendMailAck(Net::MessageIn &msg) NotifyManager::notify(NotifyTypes::MAIL_SEND_ERROR); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(flag); break; } } diff --git a/src/net/eathena/playerhandler.cpp b/src/net/eathena/playerhandler.cpp index 8a6a7e878..429ea1f21 100644 --- a/src/net/eathena/playerhandler.cpp +++ b/src/net/eathena/playerhandler.cpp @@ -438,7 +438,7 @@ void PlayerHandler::setStat(Net::MessageIn &msg, break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } } diff --git a/src/net/eathena/playerrecv.cpp b/src/net/eathena/playerrecv.cpp index 9b5c50c96..28f3fe96d 100644 --- a/src/net/eathena/playerrecv.cpp +++ b/src/net/eathena/playerrecv.cpp @@ -195,7 +195,7 @@ void PlayerRecv::processPlayerGetExp(Net::MessageIn &msg) else if (stat == 2) localPlayer->addJobMessage(exp); else - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(stat); } // need show particle depend on isQuest flag, for now ignored } diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp index 52f2e3b2b..8053dce54 100644 --- a/src/net/eathena/skillrecv.cpp +++ b/src/net/eathena/skillrecv.cpp @@ -339,7 +339,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) } default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(reason); break; } diff --git a/src/net/eathena/traderecv.cpp b/src/net/eathena/traderecv.cpp index cdae4788e..3d7d51dfe 100644 --- a/src/net/eathena/traderecv.cpp +++ b/src/net/eathena/traderecv.cpp @@ -157,7 +157,7 @@ void TradeRecv::processTradeItemAddResponse(Net::MessageIn &msg) break; default: NotifyManager::notify(NotifyTypes::TRADE_ADD_ERROR); - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(res); break; } } diff --git a/src/net/tmwa/beingrecv.cpp b/src/net/tmwa/beingrecv.cpp index bbae0a1bd..6d473a853 100644 --- a/src/net/tmwa/beingrecv.cpp +++ b/src/net/tmwa/beingrecv.cpp @@ -213,7 +213,7 @@ void BeingRecv::processBeingChangeLookContinue(const Net::MessageIn &msg, dstBeing->setLook(CAST_U16(id)); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } } @@ -1369,7 +1369,7 @@ void BeingRecv::applyPlayerAction(Net::MessageIn &msg, break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } } diff --git a/src/net/tmwa/inventoryrecv.cpp b/src/net/tmwa/inventoryrecv.cpp index fbada97cf..1586c5aa7 100644 --- a/src/net/tmwa/inventoryrecv.cpp +++ b/src/net/tmwa/inventoryrecv.cpp @@ -198,7 +198,7 @@ void InventoryRecv::processPlayerInventoryAdd(Net::MessageIn &msg) break; default: pickup = Pickup::UNKNOWN; - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(err); break; } if (localPlayer) diff --git a/src/net/tmwa/playerhandler.cpp b/src/net/tmwa/playerhandler.cpp index c34aca907..4ec61960f 100644 --- a/src/net/tmwa/playerhandler.cpp +++ b/src/net/tmwa/playerhandler.cpp @@ -413,10 +413,9 @@ void PlayerHandler::setStat(Net::MessageIn &msg, break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(type); break; } - } #undef setStatComplex diff --git a/src/net/tmwa/skillrecv.cpp b/src/net/tmwa/skillrecv.cpp index df914568b..9ad5023b1 100644 --- a/src/net/tmwa/skillrecv.cpp +++ b/src/net/tmwa/skillrecv.cpp @@ -133,7 +133,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) txt = _("Cannot shout!"); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(bskill); break; } @@ -185,7 +185,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) default: // TRANSLATORS: error message txt.append(_("Huh? What's that?")); - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(reason); break; } } @@ -206,7 +206,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) txt = _("Poison had no effect..."); break; default: - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(skillId); break; } } diff --git a/src/net/tmwa/traderecv.cpp b/src/net/tmwa/traderecv.cpp index feb65c3a6..393502273 100644 --- a/src/net/tmwa/traderecv.cpp +++ b/src/net/tmwa/traderecv.cpp @@ -145,7 +145,7 @@ void TradeRecv::processTradeItemAddResponse(Net::MessageIn &msg) break; default: NotifyManager::notify(NotifyTypes::TRADE_ADD_ERROR); - UNIMPLIMENTEDPACKET; + UNIMPLIMENTEDPACKETFIELD(res); logger->log("QQQ SMSG_TRADE_ITEM_ADD_RESPONSE: " + toString(res)); break; -- cgit v1.2.3-60-g2f50