diff options
-rw-r--r-- | servergreps/clientpackets.txt | 44 | ||||
-rwxr-xr-x | servergreps/packets.py | 75 | ||||
-rw-r--r-- | servergreps/serverpackets.txt | 10 | ||||
-rw-r--r-- | servergreps/uselesspackets.txt | 24 |
4 files changed, 140 insertions, 13 deletions
diff --git a/servergreps/clientpackets.txt b/servergreps/clientpackets.txt new file mode 100644 index 0000000..f4d6ef0 --- /dev/null +++ b/servergreps/clientpackets.txt @@ -0,0 +1,44 @@ +00de -1 clif->pChatRoomStatusChange +00e0 30 clif->pChangeChatOwner +00e2 26 clif->pKickFromChat +00e3 2 clif->pChatLeave +0217 2 clif->pBlacksmith +0218 2 clif->pAlchemist +021d 6 clif->pLessEffect +0225 2 clif->pTaekwon +0237 2 clif->pRankingPk +0254 3 clif->pFeelSaveOk +0443 8 clif->pSkillSelectMenu +0804 14 clif->pPartyBookingSearchReq +0806 2 clif->pPartyBookingDeleteReq +0808 14 clif->pPartyBookingUpdateReq +0842 6 clif->pGMRecall2 +0843 6 clif->pGMRemove2 +0844 2 clif->pCashShopOpen +0846 4 clif->pCashShopReqTab +0848 -1 clif->pCashShopBuy +084a 2 clif->pCashShopClose +08c9 2 clif->pCashShopSchedule +08d7 28 clif->pBGQueueRegister +08da 26 clif->pBGQueueRevokeReq +08e0 51 clif->pBGQueueBattleBeginAck +08e5 41 clif->pPartyRecruitRegisterReq +08e7 10 clif->pPartyRecruitSearchReq +08e9 2 clif->pPartyRecruitDeleteReq +08eb 39 clif->pPartyRecruitUpdateReq +08fb 6 clif->pDull +090a 26 clif->pBGQueueCheckState +0916 26 clif->pGuildInvite2 +0957 8 clif->pMoveFromKafra +0959 18 clif->pPartyBookingRegisterReq +0963 -1 clif->pItemListWindowSelected +0964 36 clif->pStoragePassword +09b6 6 clif->pBankOpen +09b8 6 clif->pBankClose +09ce 102 clif->pGM_Monster_Item +09d4 2 clif->pNPCShopClosed +0a19 2 clif->pRouletteOpen +0a1b 2 clif->pRouletteInfo +0a1d 2 clif->pRouletteClose +0a1f 2 clif->pRouletteGenerate +0a21 3 clif->pRouletteRecvItem diff --git a/servergreps/packets.py b/servergreps/packets.py index 1f7dbf2..13d8021 100755 --- a/servergreps/packets.py +++ b/servergreps/packets.py @@ -12,9 +12,14 @@ serverpacketre = re.compile("(WFIFOW|WBUFW)([ ]*)[(]([ ]*)([\w>_-]+),([ ]*)" + "(?P<offset>0)([ ]*)[)]([ ]*)=([ ]*)0x(?P<packet>[0-9a-fA-F]+)([ ]*)[;]") serverpacketre2 = re.compile("[.]PacketType([ ]*)=([ ]*)(?P<name>[\w]+);") protocolre = re.compile("#define[ ](?P<name>[A-Z0-9_]+)([ ]*)0x(?P<packet>[0-9a-fA-F]+)") +protocolClientre = re.compile("#define[ ](?P<name>CMSG_[A-Z0-9_]+)([ ]*)0x(?P<packet>[0-9a-fA-F]+)") +clientpacketre = re.compile("(\t*)packet[(]0x(?P<packet>[0-9a-fA-F]+),(?P<len>[\w-]+),(?P<function>[0-9a-zA-Z_>-]+)(,|[)])") packetsSet = set() -packets = [] +serverpacketsSorted = [] +clientpacketsSorted = [] +clientPacketsManaPlus = dict() +clientPacketsManaPlusClient = dict() clientPackets = dict() def collectServerPackets(parentDir): @@ -43,30 +48,84 @@ def collectServerPackets(parentDir): def sortServerPackets(): for packet in packetsSet: - packets.append(packet) - packets.sort() + serverpacketsSorted.append(packet) + serverpacketsSorted.sort() + +def sortClientPackets(): + for packet in clientPackets: + clientpacketsSorted.append(packet) + clientpacketsSorted.sort() def collectManaPlusPackets(fileName): with open(fileName, "r") as f: for line in f: m = protocolre.search(line) if m is not None: - clientPackets[m.group("packet").lower()] = m.group("name") + clientPacketsManaPlus[m.group("packet").lower()] = m.group("name") + m = protocolClientre.search(line) + if m is not None: + clientPacketsManaPlusClient[m.group("packet").lower()] = m.group("name") + +def collectClientPackets(fileName): + with open(fileName, "r") as f: + for line in f: + m = clientpacketre.search(line) + if m is not None: + data = m.group("packet").lower() + while len(data) < 4: + data = "0" + data + clientPackets[data] = (m.group("len"), m.group("function")); + #print "{0},{1},{2}".format(m.group("packet"), m.group("len"), m.group("function")) def printPackets(): - for packet in packets: + with open("serverpackets.txt", "w") as w: + for packet in serverpacketsSorted: + data = packet + while data[0] == "0": + data = data[1:] + if packet in clientPacketsManaPlus: + w.write(data + " client name: " + clientPacketsManaPlus[packet]) + else: + w.write(data) + w.write("\n") + + funcDict = dict() + forRemove = [] + for packet in clientpacketsSorted: data = packet while data[0] == "0": data = data[1:] if packet in clientPackets: - print data + " client name: " + clientPackets[packet] - else: - print data + funcDict[clientPackets[packet][1]] = packet + + with open("uselesspackets.txt", "w") as w: + for packet in clientPacketsManaPlusClient: + if packet not in clientPackets: + w.write("Useless packet {0}.\n".format(packet)) + + manaplusFunc = set() + rev = [] + with open("clientpackets.txt", "w") as w: + for packet in clientPacketsManaPlusClient: + if packet in clientPackets: + manaplusFunc.add(clientPackets[packet][1]) + for func in funcDict: + if func not in manaplusFunc: + packet = funcDict[func] + rev.append("{0:4} {1:>4} {2}".format(packet, clientPackets[packet][0], clientPackets[packet][1])) + rev.sort() + + for data in rev: + w.write(data) + w.write("\n") srcPath = "../../server-code/src/" protocolPath = "../../manaplus/src/net/eathena/protocol.h" +clientPacketsPath = srcPath + "map/packets.h" collectServerPackets(srcPath) +collectClientPackets(clientPacketsPath) collectManaPlusPackets(protocolPath) +sortClientPackets() sortServerPackets() printPackets() diff --git a/servergreps/serverpackets.txt b/servergreps/serverpackets.txt index 151334a..83c5589 100644 --- a/servergreps/serverpackets.txt +++ b/servergreps/serverpackets.txt @@ -175,9 +175,9 @@ fd 1c8 client name: SMSG_PLAYER_INVENTORY_USE 1cd client name: SMSG_PLAYER_SKILL_AUTO_SPELLS 1cf client name: SMSG_SKILL_DEVOTION_EFFECT -1d0 client name: CMSG_SPIRIT_BALLS -1d1 client name: CMSG_BLADE_STOP -1d2 client name: CMSG_COMBO_DELAY +1d0 client name: SMSG_SPIRIT_BALLS +1d1 client name: SMSG_BLADE_STOP +1d2 client name: SMSG_COMBO_DELAY 1d3 client name: SMSG_BEING_SOUND_EFFECT 1d4 client name: SMSG_NPC_STR_INPUT 1d6 client name: SMSG_MAP_TYPE @@ -185,12 +185,12 @@ fd 1dc client name: SMSG_LOGIN_CODING_KEY 1de client name: SMSG_SKILL_DAMAGE 1e0 client name: SMSG_ADMIN_GET_LOGIN_ACK -1e1 client name: CMSG_SPIRIT_BALL_SINGLE +1e1 client name: SMSG_SPIRIT_BALL_SINGLE 1e2 1e4 1e6 client name: SMSG_FAMILY_CALL_PARTNER 1e9 client name: SMSG_PARTY_MEMBER_INFO -1ea client name: CMSG_WEDDING_EFFECT +1ea client name: SMSG_WEDDING_EFFECT 1eb client name: SMSG_GUILD_UPDATE_COORDS 1f2 client name: SMSG_GUILD_MEMBER_LOGIN 1f3 client name: SMSG_BEING_SPECIAL_EFFECT diff --git a/servergreps/uselesspackets.txt b/servergreps/uselesspackets.txt new file mode 100644 index 0000000..7c990db --- /dev/null +++ b/servergreps/uselesspackets.txt @@ -0,0 +1,24 @@ +Useless packet 08fc. +Useless packet 0200. +Useless packet 08d4. +Useless packet 7530. +Useless packet 028f. +Useless packet 0970. +Useless packet 0066. +Useless packet 0187. +Useless packet 08ba. +Useless packet 0064. +Useless packet 0065. +Useless packet 0068. +Useless packet 027c. +Useless packet 0b07. +Useless packet 0b09. +Useless packet 0b11. +Useless packet 0b13. +Useless packet 0b12. +Useless packet 0b15. +Useless packet 0b14. +Useless packet 0b0f. +Useless packet 0b0d. +Useless packet 0b0e. +Useless packet 0b0c. |