summaryrefslogtreecommitdiff
path: root/servergreps
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-03-26 19:39:51 +0300
committerAndrei Karas <akaras@inbox.ru>2015-03-26 19:39:51 +0300
commit6a370ab699078afd98b851e2db3ffd1e14a3927c (patch)
tree538e651a87c670c1f8de51f5dcb58d7cb014a67a /servergreps
parent2025f8821630621b17403493044b4a2812106539 (diff)
downloadtools-6a370ab699078afd98b851e2db3ffd1e14a3927c.tar.gz
tools-6a370ab699078afd98b851e2db3ffd1e14a3927c.tar.bz2
tools-6a370ab699078afd98b851e2db3ffd1e14a3927c.tar.xz
tools-6a370ab699078afd98b851e2db3ffd1e14a3927c.zip
servergreps: dump all unused client to server packets.
Also report probably wrong packets in protocol.h
Diffstat (limited to 'servergreps')
-rw-r--r--servergreps/clientpackets.txt44
-rwxr-xr-xservergreps/packets.py75
-rw-r--r--servergreps/serverpackets.txt10
-rw-r--r--servergreps/uselesspackets.txt24
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.