From 08931697f8fe02659302b2d6ac752a1cfc3a2c8e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 28 九月 2020 16:25:27 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/SnxxServerCode
---
/dev/null | 50
Tool/Robot/Data/Map/maptransport.txt | 31
Tool/Robot/Protocol/PacketsReceivedPY.py | 3176 +++++++++++++++++++++++++++++++++---
Tool/Robot/Protocol/PacketsSend.py | 48
Tool/Robot/Protocol/PacketsSendPY.py | 1601 +++++++++++++++---
Tool/Robot/Protocol/PacketsReceived.py | 86
6 files changed, 4,223 insertions(+), 769 deletions(-)
diff --git a/Tool/Robot/Data/Map/MapID.txt b/Tool/Robot/Data/Map/MapID.txt
deleted file mode 100644
index 8074e17..0000000
--- a/Tool/Robot/Data/Map/MapID.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Map002_Yg 10000 暮光之城 10000 0 0 0 1 1
-Map002_Yg 10002 魔谷 10002 0 0 0 1 1
-Map007_Jyzk 10007 极炎之窟 10007 0 0 0 1 1
diff --git a/Tool/Robot/Data/Map/maptransport.txt b/Tool/Robot/Data/Map/maptransport.txt
index 836fad4..227f8db 100644
--- a/Tool/Robot/Data/Map/maptransport.txt
+++ b/Tool/Robot/Data/Map/maptransport.txt
@@ -1,6 +1,25 @@
-TransportID OriginalMapID OriginalPosX OriginalPosY TransportDiameter TargetMapID TargetPosX TargetPosY
-编号 当前地图ID 当前地图X轴坐标 当前地图Y轴坐标 传送点范围格数 目标地点地图ID 目标地点地图X轴坐标 目标地点地图Y轴坐标
-168736623 10002 73 127 5 10007 50 50
-860717575 10007 96 53 5 10002 132 73
-973146315 10000 131 206 10 0 0 0
--1752684406 10007 126 147 4 10000 214 138
+uint uint int int int uint int int int int
+TransportID OriginalMapID OriginalPosX OriginalPosY TransportDiameter TargetMapID PerformID TransportType OutPosX OutPosY
+浼犻�佺偣缂栧彿 褰撳墠鍦板浘Id 褰撳墠鍦板浘X杞村潗鏍� 褰撳墠鍦板浘Y杞村潗鏍� 浼犻�佺偣鑼冨洿鏍兼暟 鐩爣鍦扮偣鍦板浘ID 鐗规晥琛ㄧ幇Id 浼犻�佺偣绫诲瀷 绉诲嚭浼犻�佺偣鏃剁殑鍧愭爣X 绉诲嚭浼犻�佺偣鏃剁殑鍧愭爣Y
+122549 10010 22 124 2 10090 10000 2 30 123
+79883 10090 156 78 2 10010 10000 1 163 73
+80334 10090 8 215 2 10120 10000 2 8 163
+152003 10120 161 80 2 10090 10000 1 152 81
+152017 10120 146 223 2 10080 10000 2 139 224
+34660 10080 121 36 2 10120 10000 1 121 45
+34661 10080 79 76 2 10060 10000 2 75 75
+27970 10060 104 5 2 10080 10000 1 102 11
+27966 10060 99 168 2 10040 10000 2 98 162
+76964 10040 221 15 2 10060 10000 1 213 17
+76962 10040 55 130 2 10030 10000 2 60 134
+76503 10030 99 13 2 10040 10000 1 90 17
+76505 10030 7 142 2 10070 10000 2 13 144
+18691 10070 70 6 2 10030 10000 1 64 6
+35151 10070 15 171 2 10100 10000 2 20 173
+105297 10100 61 4 2 10070 10000 1 60 18
+105299 10100 30 81 2 10020 10000 2 32 87
+76331 10020 212 23 2 10100 10000 1 28 208
+143613 10020 7 51 2 10050 10000 2 10 56
+13148 10050 115 16 2 10020 10000 1 107 16
+13146 10050 84 48 2 10110 10000 2 86 52
+102023 10110 109 14 2 10050 10000 1 109 24
diff --git a/Tool/Robot/Data/MapEventPoint.txt b/Tool/Robot/Data/MapEventPoint.txt
deleted file mode 100644
index 11322b4..0000000
--- a/Tool/Robot/Data/MapEventPoint.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-int int int int int int int int string string string
-Key MapID NPCID IsShowInfo Colour LowLV HighestLV Defense Drop1 Drop2 EXP
-标识 地图ID NPCID 是否显示具体信息 颜色(1.白;2..蓝;3.紫;4.橙;5.红;6.粉;7.褐;8.浅褐;9.绿) 推荐最低等级 推荐最高等级 推荐防御力 掉落1 掉落2 经验
-1 10010 10101001 1 1 2 6 12 一阶白装: 279件/天 <color=#44e863FF>标准经验: 605/分钟</color>
-2 10010 10101002 1 9 4 8 17 <color=#28befcFF>一阶蓝装: </color>140件/天 <color=#44e863FF>标准经验: 782/分钟</color>
-3 10010 10101003 1 2 6 10 21 <color=#28befcFF>一阶蓝装: </color>140件/天 <color=#44e863FF>标准经验: 760/分钟</color>
-4 10010 10101004 1 3 8 12 33 <color=#28befcFF>一阶蓝装: </color>279件/天 <color=#44e863FF>标准经验: 903/分钟</color>
-5 10010 10101005 1 4 10 15 37 <color=#28befcFF>一阶蓝装: </color>419件/天 <color=#44e863FF>标准经验: 1265/分钟</color>
-6 10010 10102001 1 5 13 18 38 <color=#28befcFF>一阶蓝装: </color>558件/天 <color=#f24cfcFF>一阶紫装: </color>19件/天 <color=#44e863FF>标准经验: 1809/分钟</color>
-7 10010 10103001 0 6 0 0 0 0 0 0
-8 10020 10201001 1 1 16 22 54 <color=#28befcFF>一阶蓝装: </color>698件/天 <color=#f24cfcFF>一阶紫装: </color>57件/天 <color=#44e863FF>标准经验: 2072/分钟</color>
-9 10020 10201002 1 9 19 24 57 <color=#28befcFF>一阶蓝装: </color>698件/天 <color=#f24cfcFF>一阶紫装: </color>57件/天 <color=#44e863FF>标准经验: 2340/分钟</color>
-10 10020 10201003 1 2 22 26 74 <color=#28befcFF>一阶蓝装: </color>698件/天 <color=#f24cfcFF>一阶紫装: </color>76件/天 <color=#44e863FF>标准经验: 3009/分钟</color>
-11 10020 10201004 1 3 25 30 88 <color=#28befcFF>一阶蓝装: </color>698件/天 <color=#f24cfcFF>一阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 3840/分钟</color>
-12 10020 10201005 1 4 28 33 125 <color=#28befcFF>一阶蓝装: </color>698件/天 <color=#f24cfcFF>一阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 4830/分钟</color>
-13 10020 10202001 1 5 32 35 146 <color=#28befcFF>二阶蓝装: </color>134件/天 <color=#f24cfcFF>一阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 6407/分钟</color>
-14 10020 10203001 0 6 0 0 0 0 0 0
-15 10030 10301001 1 1 35 41 148 <color=#28befcFF>二阶蓝装: </color>268件/天 <color=#f24cfcFF>二阶紫装: </color>19件/天 <color=#44e863FF>标准经验: 7854/分钟</color>
-16 10030 10301002 1 9 38 44 160 <color=#28befcFF>二阶蓝装: </color>537件/天 <color=#f24cfcFF>二阶紫装: </color>38件/天 <color=#44e863FF>标准经验: 9440/分钟</color>
-17 10030 10301003 1 2 41 47 173 <color=#28befcFF>二阶蓝装: </color>671件/天 <color=#f24cfcFF>二阶紫装: </color>57件/天 <color=#44e863FF>标准经验: 1.12万/分钟</color>
-18 10030 10301004 1 3 44 50 188 <color=#28befcFF>二阶蓝装: </color>671件/天 <color=#f24cfcFF>二阶紫装: </color>76件/天 <color=#44e863FF>标准经验: 1.35万/分钟</color>
-19 10030 10301005 1 4 47 52 224 <color=#28befcFF>二阶蓝装: </color>671件/天 <color=#f24cfcFF>二阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 1.57万/分钟</color>
-20 10030 10302001 1 5 50 55 226 <color=#28befcFF>二阶蓝装: </color>671件/天 <color=#f24cfcFF>二阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 1.86万/分钟</color>
-21 10030 10303001 0 6 0 0 0 0 0 0
-22 10040 10401001 1 1 55 65 292 <color=#28befcFF>三阶蓝装: </color>256件/天 <color=#f24cfcFF>三阶紫装: </color>19件/天 <color=#44e863FF>标准经验: 2.38万/分钟</color>
-23 10040 10401002 1 9 60 70 317 <color=#28befcFF>三阶蓝装: </color>512件/天 <color=#f24cfcFF>三阶紫装: </color>38件/天 <color=#44e863FF>标准经验: 3.26万/分钟</color>
-24 10040 10401003 1 2 65 75 358 <color=#28befcFF>三阶蓝装: </color>640件/天 <color=#f24cfcFF>三阶紫装: </color>57件/天 <color=#44e863FF>标准经验: 4.26万/分钟</color>
-25 10040 10401004 1 3 70 80 403 <color=#28befcFF>三阶蓝装: </color>640件/天 <color=#f24cfcFF>三阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 5.62万/分钟</color>
-26 10040 10401005 1 4 75 85 473 <color=#28befcFF>三阶蓝装: </color>640件/天 <color=#f24cfcFF>三阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 7.22万/分钟</color>
-27 10040 10402001 1 5 80 90 507 <color=#28befcFF>三阶蓝装: </color>640件/天 <color=#f24cfcFF>三阶紫装: </color>95件/天 <color=#44e863FF>标准经验: 8.47万/分钟</color>
-28 10040 10403001 0 6 0 0 0 0 0 0
-29 10050 10501001 1 1 90 110 529 <color=#28befcFF>四阶蓝装: </color>242件/天 <color=#f24cfcFF>四阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 13.17万/分钟</color>
-30 10050 10501002 1 9 100 120 596 <color=#28befcFF>四阶蓝装: </color>363件/天 <color=#f24cfcFF>四阶紫装: </color>25件/天 <color=#44e863FF>标准经验: 19.24万/分钟</color>
-31 10050 10501003 1 2 110 130 690 <color=#28befcFF>四阶蓝装: </color>604件/天 <color=#f24cfcFF>四阶紫装: </color>38件/天 <color=#44e863FF>标准经验: 23.59万/分钟</color>
-32 10050 10501004 1 3 120 140 777 <color=#28befcFF>四阶蓝装: </color>604件/天 <color=#f24cfcFF>四阶紫装: </color>50件/天 <color=#44e863FF>标准经验: 34.92万/分钟</color>
-33 10050 10501005 1 4 130 150 882 <color=#28befcFF>四阶蓝装: </color>604件/天 <color=#f24cfcFF>四阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 43.16万/分钟</color>
-34 10050 10502001 1 5 140 160 1200 <color=#28befcFF>四阶蓝装: </color>785件/天 <color=#f24cfcFF>四阶紫装: </color>81件/天 <color=#44e863FF>标准经验: 1.19百万/分钟</color>
-35 10050 10503001 0 6 0 0 0 0 0 0
-36 10060 10601001 1 1 150 170 1050 <color=#28befcFF>五阶蓝装: </color>113件/天 <color=#f24cfcFF>五阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 84.64万/分钟</color>
-37 10060 10601002 1 9 160 180 1208 <color=#28befcFF>五阶蓝装: </color>339件/天 <color=#f24cfcFF>五阶紫装: </color>25件/天 <color=#44e863FF>标准经验: 1.35百万/分钟</color>
-38 10060 10601003 1 2 170 190 1383 <color=#28befcFF>五阶蓝装: </color>564件/天 <color=#f24cfcFF>五阶紫装: </color>38件/天 <color=#44e863FF>标准经验: 2.01百万/分钟</color>
-39 10060 10601004 1 3 180 200 1519 <color=#28befcFF>五阶蓝装: </color>564件/天 <color=#f24cfcFF>五阶紫装: </color>50件/天 <color=#44e863FF>标准经验: 2.94百万/分钟</color>
-40 10060 10601005 1 4 190 210 1703 <color=#28befcFF>五阶蓝装: </color>564件/天 <color=#f24cfcFF>五阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 3.49百万/分钟</color>
-41 10060 10602001 1 5 200 220 2182 <color=#28befcFF>五阶蓝装: </color>733件/天 <color=#f24cfcFF>五阶紫装: </color>81件/天 <color=#44e863FF>标准经验: 8.06百万/分钟</color>
-42 10060 10603001 0 6 0 0 0 0 0 0
-43 10070 10701001 1 1 210 230 1980 <color=#28befcFF>六阶蓝装: </color>208件/天 <color=#f24cfcFF>六阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 5.6百万/分钟</color>
-44 10070 10701003 1 9 220 240 2154 <color=#28befcFF>六阶蓝装: </color>416件/天 <color=#f24cfcFF>六阶紫装: </color>25件/天 <color=#44e863FF>标准经验: 7.55百万/分钟</color>
-45 10070 10701002 1 2 230 250 2375 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>38件/天 <color=#44e863FF>标准经验: 8.56百万/分钟</color>
-46 10070 10701004 1 3 240 260 2601 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 9.79百万/分钟</color>
-47 10070 10701005 1 4 250 270 3006 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 1.13千万/分钟</color>
-48 10070 10702001 1 5 250 270 3570 <color=#28befcFF>六阶蓝装: </color>676件/天 <color=#f24cfcFF>六阶紫装: </color>81件/天 <color=#44e863FF>标准经验: 2.26千万/分钟</color>
-49 10070 10703001 0 6 0 0 0 0 0 0
-50 21070 20102001 1 1 110 130 1078 <color=#28befcFF>四阶蓝装: </color>604件/天 <color=#f24cfcFF>四阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 29.43万/分钟</color>
-51 21070 20102002 1 9 120 140 1200 <color=#28befcFF>四阶蓝装: </color>604件/天 <color=#f24cfcFF>四阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 37.18万/分钟</color>
-52 21070 20102003 1 2 160 180 1825 <color=#28befcFF>五阶蓝装: </color>564件/天 <color=#f24cfcFF>五阶紫装: </color>50件/天 <color=#44e863FF>标准经验: 1.1百万/分钟</color>
-53 21070 20102004 1 3 170 190 2042 <color=#28befcFF>五阶蓝装: </color>564件/天 <color=#f24cfcFF>五阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 1.16百万/分钟</color>
-54 21070 20102005 1 4 220 240 3132 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 3.26百万/分钟</color>
-55 21070 20102006 1 5 230 250 3570 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 3.77百万/分钟</color>
-56 21070 20103001 0 6 0 0 0 0 0 0
-57 21070 20103002 0 6 0 0 0 0 0 0
-58 21070 20103003 0 6 0 0 0 0 0 0
-59 21070 20103004 0 6 0 0 0 0 0 0
-60 21070 20103005 0 6 0 0 0 0 0 0
-61 21070 20103006 0 6 0 0 0 0 0 0
-62 21070 20103007 0 6 0 0 0 0 0 0
-63 21100 20202001 1 1 230 250 3570 <color=#28befcFF>六阶蓝装: </color>520件/天 <color=#f24cfcFF>六阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 3.77百万/分钟</color>
-64 21100 20202002 1 9 240 260 4161 <color=#28befcFF>七阶蓝装: </color>188件/天 <color=#f24cfcFF>七阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 5.27百万/分钟</color>
-65 21100 20202003 1 2 280 300 5686 <color=#28befcFF>七阶蓝装: </color>471件/天 <color=#f24cfcFF>七阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 1.05千万/分钟</color>
-66 21100 20202004 1 3 290 310 6668 <color=#28befcFF>八阶蓝装: </color>167件/天 <color=#f24cfcFF>八阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 1.45千万/分钟</color>
-67 21100 20202005 1 4 330 350 8629 <color=#28befcFF>八阶蓝装: </color>418件/天 <color=#f24cfcFF>八阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 2.81千万/分钟</color>
-68 21100 20202006 1 5 340 360 10326 <color=#28befcFF>九阶蓝装: </color>144件/天 <color=#f24cfcFF>九阶紫装: </color>13件/天 <color=#44e863FF>标准经验: 3.87千万/分钟</color>
-69 21100 20202007 1 6 380 400 17199 <color=#28befcFF>九阶蓝装: </color>360件/天 <color=#f24cfcFF>九阶紫装: </color>63件/天 <color=#44e863FF>标准经验: 7.25千万/分钟</color>
-70 21100 20203001 0 6 0 0 0 0 0 0
-71 21100 20203002 0 6 0 0 0 0 0 0
-72 21100 20203003 0 6 0 0 0 0 0 0
-73 21100 20203004 0 6 0 0 0 0 0 0
-74 21100 20203005 0 6 0 0 0 0 0 0
-75 21100 20203006 0 6 0 0 0 0 0 0
-76 21100 20203007 0 6 0 0 0 0 0 0
diff --git a/Tool/Robot/Data/MonsterRefreshPoint.txt b/Tool/Robot/Data/MonsterRefreshPoint.txt
deleted file mode 100644
index f6f8afa..0000000
--- a/Tool/Robot/Data/MonsterRefreshPoint.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-int int Vector3
-NPCID MapId Position
-怪物id 地图id 刷新位置
-10403001 10040 (19,151)
-10503001 10050 (63,56)
-10603001 10060 (98,212)
-10703001 10070 (19,210)
-10803001 10080 (18,53)
-20103001 21070 (15,37)
-20103002 21070 (138,39)
-20103003 21070 (42,74)
-20103004 21070 (106,69)
-20103005 21070 (13,104)
-20103006 21070 (138,105)
-20103007 21070 (76,112)
-20203001 21100 (167,75)
-20203002 21100 (69,91)
-20203003 21100 (34,61)
-20203004 21100 (139,103)
-20203005 21100 (32,128)
-20203006 21100 (154,146)
-20203007 21100 (79,187)
-30303001 31020 (36,39)
-30303002 31020 (83,86)
-30303003 31020 (64,107)
-30303004 31020 (13,56)
-30303005 31020 (26,96)
-30303006 31020 (71,10)
-30303007 31020 (109,43)
-30303008 31030 (61,53)
-30303009 31030 (106,100)
-30303010 31030 (89,121)
-30303011 31030 (38,71)
-30303012 31030 (50,110)
-31503001 31150 (142,115)
-31503002 31150 (88,82)
-31503003 31150 (174,85)
-31503004 31150 (102,133)
-31503005 31150 (40,107)
-31503006 31150 (155,194)
-31503007 31150 (101,207)
-31503008 31150 (51,171)
-10101001 10010 (203,105)
-10101002 10010 (174,106)
-10101003 10010 (130,102)
-10101004 10010 (118,55)
-10101005 10010 (81,52)
-10102001 10010 (80,15)
-10103001 10010 (43,15)
-10201001 10020 (193,33)
-10201002 10020 (147,20)
-10201003 10020 (154,66)
-10201004 10020 (168,120)
-10201005 10020 (118,135)
-10202001 10020 (57,113)
-10203001 10020 (20,53)
-10301001 10030 (59,16)
-10301002 10030 (54,66)
-10301003 10030 (104,70)
-10301004 10030 (108,119)
-10301005 10030 (62,120)
-10302001 10030 (14,113)
-10303001 10030 (21,160)
-10401001 10040 (166,20)
-10401002 10040 (144,70)
-10401003 10040 (204,93)
-10401004 10040 (197,159)
-10401005 10040 (148,154)
-10402001 10040 (100,147)
-10501001 10050 (87,15)
-10501002 10050 (42,19)
-10501003 10050 (17,56)
-10501004 10050 (32,86)
-10501005 10050 (74,104)
-10502001 10050 (102,69)
-10601001 10060 (84,22)
-10601002 10060 (48,21)
-10601003 10060 (34,52)
-10601004 10060 (18,109)
-10601005 10060 (71,96)
-10602001 10060 (93,152)
-10701001 10070 (26,20)
-10701002 10070 (20,53)
-10701003 10070 (70,53)
-10701004 10070 (67,103)
-10701005 10070 (104,148)
-10702001 10070 (64,177)
-10801001 10080 (185,171)
-10801002 10080 (185,172)
-10801003 10080 (185,173)
-10801004 10080 (185,174)
-10801005 10080 (185,175)
-10802001 10080 (185,176)
-20102001 21070 (49,38)
-20102002 21070 (108,39)
-20102003 21070 (14,73)
-20102004 21070 (138,72)
-20102005 21070 (44,107)
-20102006 21070 (109,105)
-20202001 21100 (71,53)
-20202002 21100 (124,63)
-20202003 21100 (39,90)
-20202004 21100 (166,108)
-20202005 21100 (56,132)
-20202006 21100 (129,143)
-20202007 21100 (93,150)
-3011 10010 (12,11)
-3021 10020 (6,51)
-3031 10030 (7,142)
-3041 10040 (55,130)
-3051 10050 (78,48)
-3061 10060 (93,87)
diff --git a/Tool/Robot/Data/maptransport.txt b/Tool/Robot/Data/maptransport.txt
deleted file mode 100644
index 836fad4..0000000
--- a/Tool/Robot/Data/maptransport.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-TransportID OriginalMapID OriginalPosX OriginalPosY TransportDiameter TargetMapID TargetPosX TargetPosY
-编号 当前地图ID 当前地图X轴坐标 当前地图Y轴坐标 传送点范围格数 目标地点地图ID 目标地点地图X轴坐标 目标地点地图Y轴坐标
-168736623 10002 73 127 5 10007 50 50
-860717575 10007 96 53 5 10002 132 73
-973146315 10000 131 206 10 0 0 0
--1752684406 10007 126 147 4 10000 214 138
diff --git a/Tool/Robot/Data/tagChinMap.txt b/Tool/Robot/Data/tagChinMap.txt
deleted file mode 100644
index 5e6f5ce..0000000
--- a/Tool/Robot/Data/tagChinMap.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-MapID Name Country LV ExistTime MapFBType AutoSize Period PeriodValue1 PeriodHour1 PeriodMinute1 PeriodValue2 PeriodHour2 PeriodMinute2 LocalReborn SkillReborn RebornMap RebornMapX RebornMapY CanRide CanOutPet TreasureID Camp AtkType
-10010 神诀宗 1 1 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-10020 影谷 1 10 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 103 0 1
-10030 御剑山庄 1 25 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 104 0 1
-10040 逍遥城 1 50 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 105 0 35
-10050 冰封回廊 1 80 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 106 0 35
-10060 秘灵岛 1 140 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-10070 极炎之窟 1 200 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-10080 玄梦幻界 1 250 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-21070 深海古墓 1 90 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 5 35
-21100 荒芜沙漠 1 240 0 0 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 5 35
-31010 登天之争 1 0 900000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-31020 BOSS之家一层 1 0 0 8 0 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31030 BOSS之家二层 1 0 0 8 0 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31040 灵界之森 1 0 360000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31050 仙之果山 1 0 360000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31060 迷幻森林 1 0 360000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31080 仙界秘境 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31090 新手副本 1 0 600000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-31110 境界副本A 1 0 0 2 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31120 境界副本B 1 0 0 2 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31130 符印塔 1 0 0 1 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31140 冰晶矿脉 1 0 900000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31150 古神禁地 1 0 0 8 0 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 5 32
-31190 麒麟之府 1 0 900000 1 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-31210 仙盟BOSS 1 0 3600000 3 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-31220 仙盟联赛 1 0 3600000 4 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 5 32
-31230 仙盟宴会 1 0 930000 3 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-31240 个人BOSS 1 0 0 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31170 守卫人皇 1 0 1800000 3 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-51010 娲皇遗迹1层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51020 娲皇遗迹2层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51030 娲皇遗迹3层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51040 娲皇遗迹4层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51050 娲皇遗迹5层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51060 娲皇遗迹6层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51070 娲皇遗迹7层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-51080 娲皇遗迹8层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-41110 灵器认主 1 0 900000 1 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 1
-41120 魔器争夺 1 0 900000 1 1 0 0 0 0 0 0 0 0 0 10000 50 50 1 1 0 0 35
-60010 宗门试炼一层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-60020 宗门试炼二层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-60030 宗门试炼三层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-60040 宗门试炼四层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-60050 宗门试炼五层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-60060 宗门试炼六层 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31180 混乱妖域 1 0 900000 2 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-31160 上古战场 1 0 1800000 8 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 35
-31250 守护副本 1 0 600000 1 1 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
-52010 封魔坛 1 0 900000 8 0 0 0 0 0 0 0 0 1 1 10000 50 50 1 1 0 0 1
diff --git a/Tool/Robot/Protocol/PacketsReceived.py b/Tool/Robot/Protocol/PacketsReceived.py
index 4a6de90..350658f 100644
--- a/Tool/Robot/Protocol/PacketsReceived.py
+++ b/Tool/Robot/Protocol/PacketsReceived.py
@@ -1028,7 +1028,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -5889,7 +5889,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
+ ("StartYear", c_ushort), #年, 如果填写0, 就隐藏此窗口
("StartMonth", c_ushort), #月
("StartDate", c_ubyte), #日
("EndYear", c_ushort),
@@ -6021,7 +6021,7 @@
PlayerID = 0 #(DWORD PlayerID)
FamilyNameLen = 0 #(BYTE FamilyNameLen)
FamilyName = "" #(String FamilyName)//size = FamilyNameLen
- FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位
+ FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位
data = None
def __init__(self):
@@ -8023,7 +8023,7 @@
class tagFBEventList(Structure):
Head = tagHead()
EventCount = 0 #(BYTE EventCount)//副本活动数
- EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表
+ EventList = list() #(vector<tagFBEventDetail> EventList)//副本活动列表
data = None
def __init__(self):
@@ -8662,7 +8662,7 @@
TeamID = 0 #(DWORD TeamID)//组队ID
HP = 0 #(DWORD HP)
MaxHP = 0 #(DWORD MaxHP)
- PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
+ PlayerState = 0 #(BYTE PlayerState)//TClientPlayerState 玩家状态 打坐/马上/人镖合一
IsHideMask = 0 #(BYTE IsHideMask)
Country = 0 #(BYTE Country)//玩家国家
FamilyID = 0 #(DWORD FamilyID)//家族ID
@@ -9724,6 +9724,7 @@
("PlayerID", c_int), # 主人ID
("PosX", c_int), # X坐标
("PosY", c_int), # Y坐标
+ ("Rank", c_ubyte), #阶段
]
def __init__(self):
@@ -9745,6 +9746,7 @@
self.PlayerID = 0
self.PosX = 0
self.PosY = 0
+ self.Rank = 0
return
def GetLength(self):
@@ -9761,7 +9763,8 @@
NPCID:%d,
PlayerID:%d,
PosX:%d,
- PosY:%d
+ PosY:%d,
+ Rank:%d
'''\
%(
self.Cmd,
@@ -9770,7 +9773,8 @@
self.NPCID,
self.PlayerID,
self.PosX,
- self.PosY
+ self.PosY,
+ self.Rank
)
return DumpString
@@ -10070,7 +10074,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
+ ("FamilyMemberLV", c_ubyte), #玩家在家族中的职位
]
def __init__(self):
@@ -10118,7 +10122,7 @@
#------------------------------------------------------
-#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
+#04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
class tagPlayerFamilyNameRefresh(Structure):
Head = tagHead()
@@ -10196,7 +10200,7 @@
PlayerID = 0 #(DWORD PlayerID)
FamilyNameLen = 0 #(BYTE FamilyNameLen)
FamilyName = "" #(String FamilyName)//size = FamilyNameLen
- FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位
+ FamilyMemberLV = 0 #(BYTE FamilyMemberLV)//玩家在家族中的职位
data = None
def __init__(self):
@@ -10826,7 +10830,7 @@
MaxHP = 0 #(DWORD MaxHP)
MaxHPEx = 0 #(DWORD MaxHPEx)
Speed = 0 #(WORD Speed)
- LV = 0 #(BYTE LV)
+ LV = 0 #(WORD LV)
OwnerNameLen = 0 #(BYTE OwnerNameLen)
OwnerName = "" #(String OwnerName)//size = OwnerNameLen
data = None
@@ -10851,7 +10855,7 @@
self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Speed,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.LV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.OwnerNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.OwnerName,_pos = CommFunc.ReadString(_lpData, _pos,self.OwnerNameLen)
return _pos
@@ -10891,7 +10895,7 @@
length += 4
length += 4
length += 2
- length += 1
+ length += 2
length += 1
length += len(self.OwnerName)
@@ -10911,7 +10915,7 @@
data = CommFunc.WriteDWORD(data, self.MaxHP)
data = CommFunc.WriteDWORD(data, self.MaxHPEx)
data = CommFunc.WriteWORD(data, self.Speed)
- data = CommFunc.WriteBYTE(data, self.LV)
+ data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.OwnerNameLen)
data = CommFunc.WriteString(data, self.OwnerNameLen, self.OwnerName)
return data
@@ -12943,10 +12947,12 @@
ObjType = 0 #(BYTE ObjType)
BattleType = 0 #(BYTE BattleType)//物理/魔法
SkillID = 0 #(WORD SkillID)
+ SkillIDEx = 0 #(WORD SkillIDEx)
PosX = 0 #(WORD PosX)
PosY = 0 #(WORD PosY)
HurtCount = 0 #(WORD HurtCount)//伤害数目
HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
+ SkillElementID = 0 #(WORD SkillElementID)//专精技能ID
data = None
def __init__(self):
@@ -12962,6 +12968,7 @@
self.ObjType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.BattleType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.SkillID,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.SkillIDEx,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PosX,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PosY,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -12969,6 +12976,7 @@
temHurtList = tagSkillPosHurtObj()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -12980,10 +12988,12 @@
self.ObjType = 0
self.BattleType = 0
self.SkillID = 0
+ self.SkillIDEx = 0
self.PosX = 0
self.PosY = 0
self.HurtCount = 0
self.HurtList = list()
+ self.SkillElementID = 0
return
def GetLength(self):
@@ -12996,8 +13006,10 @@
length += 2
length += 2
length += 2
+ length += 2
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 2
return length
@@ -13008,11 +13020,13 @@
data = CommFunc.WriteBYTE(data, self.ObjType)
data = CommFunc.WriteBYTE(data, self.BattleType)
data = CommFunc.WriteWORD(data, self.SkillID)
+ data = CommFunc.WriteWORD(data, self.SkillIDEx)
data = CommFunc.WriteWORD(data, self.PosX)
data = CommFunc.WriteWORD(data, self.PosY)
data = CommFunc.WriteWORD(data, self.HurtCount)
for i in range(self.HurtCount):
data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.SkillElementID)
return data
def OutputString(self):
@@ -13022,10 +13036,12 @@
ObjType:%d,
BattleType:%d,
SkillID:%d,
+ SkillIDEx:%d,
PosX:%d,
PosY:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ SkillElementID:%d
'''\
%(
self.Head.OutputString(),
@@ -13033,10 +13049,12 @@
self.ObjType,
self.BattleType,
self.SkillID,
+ self.SkillIDEx,
self.PosX,
self.PosY,
self.HurtCount,
- "..."
+ "...",
+ self.SkillElementID
)
return DumpString
@@ -13540,7 +13558,7 @@
ByObjID = 0 #(DWORD ByObjID)//物品原本在哪个对象身上
DropTick = 0 #(DWORD DropTick)//物品掉落Tick
UserDataLen = 0 #(WORD UserDataLen)//附加属性长度
- UserData = "" #(String UserData)//附加属性 size = UserDataLen
+ UserData = "" #(String UserData)//附加属性 size = UserDataLen
data = None
def __init__(self):
@@ -13958,7 +13976,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
]
@@ -15046,7 +15064,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("PrepareState", c_ubyte), #准备类型, TPreparingState
+ ("PrepareState", c_ubyte), #准备类型, TPreparingState
("MaxTime", c_int), #最大时间
("PrepareID", c_int), #准备ID, 如果是技能, 则是技能ID
]
@@ -20565,7 +20583,7 @@
FamilyName = "" #(String FamilyName)//size = FamilyNameLen
Job = 0 #(BYTE Job)//职业
FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
- LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度
+ LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度
OfficialRank = 0 #(BYTE OfficialRank)//境界
Exattr1 = 0 #(DWORD Exattr1)//扩展属性
Exattr2 = 0 #(DWORD Exattr2)//扩展属性
@@ -20729,7 +20747,7 @@
Point = 0 #(DWORD Point)//家族战积分
Broadcast = "" #(String Broadcast)//size = BroadcastLen
FamilyActiveValue = 0 #(DWORD FamilyActiveValue)//本周家族活跃度
- LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度
+ LastWeekFamilyActiveValue = 0 #(DWORD LastWeekFamilyActiveValue)//上周家族活跃度
Member = list() #(vector<tagRoleFamilyMember> Member)//size = MemberCount
Extra1 = 0 #(DWORD Extra1)//附加字段1
Extra2 = 0 #(DWORD Extra2)//附加字段2
@@ -21906,7 +21924,7 @@
class tagFamilyTechInfo(Structure):
Head = tagHead()
TechCount = 0 #(WORD TechCount)//帮会科技数量
- TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表
+ TechInfoList = list() #(vector<tagTechInfo> TechInfoList)//科技信息列表
data = None
def __init__(self):
@@ -22237,7 +22255,7 @@
#10 01 排行榜信息#tagBillboard 对性能影响比较大, 需要限制tick
class tagBillboardList(Structure):
- ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID
+ ID = 0 #(DWORD ID)// 不一定都能用上,目前用于保存宠物NPCID
Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
Name2 = "" #(char Name2[33])//名字2
Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
@@ -23703,7 +23721,7 @@
MakerNameLen = 0 #(BYTE MakerNameLen)//制造者名字
MakerName = "" #(String MakerName)//size = MakerNameLen
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -24303,7 +24321,7 @@
("SubCmd", c_ubyte),
("Type", c_ubyte), #答题类型
("QuestionNO", c_ushort), # 答题号
- ("FunctionNO", c_ubyte), # 功能号
+ ("FunctionNO", c_ubyte), # 功能号
("FunctionOpt1", c_ubyte), #功能选项1
("FunctionOpt2", c_ubyte), #功能选项2
("FunctionOpt3", c_ubyte), #功能选项3
@@ -26992,8 +27010,8 @@
("PlayerID", c_int), #挂单玩家的id
("FormID", c_int), # 挂单ID
("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
- ("LefGold", c_int), #该单的剩余购买元宝组数
- ("LeftTime", c_ushort), #该单的剩余在架时间
+ ("LefGold", c_int), #该单的剩余购买元宝组数
+ ("LeftTime", c_ushort), #该单的剩余在架时间
]
def __init__(self):
@@ -27127,7 +27145,7 @@
("SubCmd", c_ubyte),
("FormID", c_int), # 挂单ID
("UnitPrice", c_int), #该单购买元宝的银两单价(每组)
- ("LefGold", c_int), #该单的剩余购买元宝组数
+ ("LefGold", c_int), #该单的剩余购买元宝组数
("LeftTime", c_ushort), #该单的剩余在架时间
]
@@ -27416,7 +27434,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("LabelID", c_int), # 删除标签
+ ("LabelID", c_int), # 删除标签
]
def __init__(self):
@@ -28657,7 +28675,7 @@
class tagHightLadderTopPlayerList(Structure):
Head = tagHead()
Size = 0 #(BYTE Size)
- PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表
+ PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表
data = None
def __init__(self):
@@ -28919,7 +28937,7 @@
class tagVsTeam(Structure):
TeamIndex = 0 #(BYTE TeamIndex)// 竞技队Index
MemberCount = 0 #(WORD MemberCount)// 成员人数
- Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表
+ Members = list() #(vector<tagVsMemberInfo> Members)// 成员列表
data = None
def __init__(self):
@@ -29046,7 +29064,7 @@
Head = tagHead()
MyOrder = 0 #(WORD MyOrder)//自身排名
Size = 0 #(BYTE Size)
- PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表
+ PlayerList = list() #(vector<tagHightLadderPlayerInfo> PlayerList)//玩家信息列表
data = None
def __init__(self):
@@ -29219,7 +29237,7 @@
class tagBourseItem(Structure):
ItemGUID = "" #(char ItemGUID[40])
- PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID
+ PlayerID = 0 #(DWORD PlayerID)//挂单玩家ID
ItemTypeID = 0 #(DWORD ItemTypeID)//物品ID
PriceType = 0 #(BYTE PriceType)//出售价格类型
PriceCount = 0 #(DWORD PriceCount)//出售价格
@@ -29606,4 +29624,4 @@
m_NAtagGMCmdAnswer=tagGMCmdAnswer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGMCmdAnswer.Head.Cmd,m_NAtagGMCmdAnswer.Head.SubCmd))] = m_NAtagGMCmdAnswer
\ No newline at end of file
diff --git a/Tool/Robot/Protocol/PacketsReceivedPY.py b/Tool/Robot/Protocol/PacketsReceivedPY.py
index 23de93b..3338835 100644
--- a/Tool/Robot/Protocol/PacketsReceivedPY.py
+++ b/Tool/Robot/Protocol/PacketsReceivedPY.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -2121,6 +2121,58 @@
#------------------------------------------------------
+# A4 0D 通知建盟次数 #tagGCServerCreatFamilyTimes
+
+class tagGCServerCreatFamilyTimes(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Times", c_int), #建盟次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0D
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA4
+ self.SubCmd = 0x0D
+ self.Times = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCServerCreatFamilyTimes)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A4 0D 通知建盟次数 //tagGCServerCreatFamilyTimes:
+ Cmd:%s,
+ SubCmd:%s,
+ Times:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Times
+ )
+ return DumpString
+
+
+m_NAtagGCServerCreatFamilyTimes=tagGCServerCreatFamilyTimes()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCServerCreatFamilyTimes.Cmd,m_NAtagGCServerCreatFamilyTimes.SubCmd))] = m_NAtagGCServerCreatFamilyTimes
+
+
+#------------------------------------------------------
#A4 01 查看申请入会的玩家信息 #tagGCViewFamilyRequestInfo
class tagtMemberInfo(Structure):
@@ -2981,8 +3033,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -3947,7 +3999,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4188,7 +4240,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -4641,7 +4693,8 @@
("SubCmd", c_ubyte),
("Point", c_int), # 复活点数
("TotalPoint", c_int), # 复活总点数
- ("RebornCnt", c_ushort), # 复活次数
+ ("RebornCnt", c_ushort), # 今日已复活次数
+ ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
]
def __init__(self):
@@ -4661,6 +4714,7 @@
self.Point = 0
self.TotalPoint = 0
self.RebornCnt = 0
+ self.TotalRebornCnt = 0
return
def GetLength(self):
@@ -4675,14 +4729,16 @@
SubCmd:%s,
Point:%d,
TotalPoint:%d,
- RebornCnt:%d
+ RebornCnt:%d,
+ TotalRebornCnt:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.Point,
self.TotalPoint,
- self.RebornCnt
+ self.RebornCnt,
+ self.TotalRebornCnt
)
return DumpString
@@ -4774,6 +4830,58 @@
m_NAtagGCFairyCeremonyInfo=tagGCFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFairyCeremonyInfo.Head.Cmd,m_NAtagGCFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCFairyCeremonyInfo
+
+
+#------------------------------------------------------
+# AC 01 仙盟联赛信息通知 #tagGCFamilyWarInfo
+
+class tagGCFamilyWarInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("WorldLV", c_ushort), # 当前进行中的联赛世界等级
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAC
+ self.SubCmd = 0x01
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAC
+ self.SubCmd = 0x01
+ self.WorldLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCFamilyWarInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AC 01 仙盟联赛信息通知 //tagGCFamilyWarInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ WorldLV:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.WorldLV
+ )
+ return DumpString
+
+
+m_NAtagGCFamilyWarInfo=tagGCFamilyWarInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyWarInfo.Cmd,m_NAtagGCFamilyWarInfo.SubCmd))] = m_NAtagGCFamilyWarInfo
#------------------------------------------------------
@@ -5674,6 +5782,427 @@
#------------------------------------------------------
+# B0 01 新增协助 #tagGCAssistInfoList
+
+class tagGCAssistInfo(Structure):
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)//等级
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ return _pos
+
+ def Clear(self):
+ self.AssistGUID = ""
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 40
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AssistGUID:%s,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s
+ '''\
+ %(
+ self.AssistGUID,
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData
+ )
+ return DumpString
+
+
+class tagGCAssistInfoList(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAssistInfoList = tagGCAssistInfo()
+ _pos = temAssistInfoList.ReadData(_lpData, _pos)
+ self.AssistInfoList.append(temAssistInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x01
+ self.Count = 0
+ self.AssistInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.AssistInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ AssistInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCAssistInfoList=tagGCAssistInfoList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
+
+
+#------------------------------------------------------
+# B0 03 正在进行中的协助 #tagGCAssistingInfo
+
+class tagGCAssistingInfo(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x03
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x03
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCAssistingInfo=tagGCAssistingInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
+
+
+#------------------------------------------------------
+# B0 08 协助结束 #tagGCAssistOver
+
+class tagGCAssistOver(Structure):
+ Head = tagHead()
+ IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因
+ ReasonLen = 0 #(BYTE ReasonLen)
+ Reason = "" #(String Reason)//原因
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x08
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x08
+ self.IsTagPlayerReason = 0
+ self.ReasonLen = 0
+ self.Reason = ""
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += len(self.Reason)
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
+ data = CommFunc.WriteBYTE(data, self.ReasonLen)
+ data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IsTagPlayerReason:%d,
+ ReasonLen:%d,
+ Reason:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsTagPlayerReason,
+ self.ReasonLen,
+ self.Reason,
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCAssistOver=tagGCAssistOver()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
+
+
+#------------------------------------------------------
+# B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
+
+class tagGCCanGetAssistThanksGiftCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("CanGetCount", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x06
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x06
+ self.CanGetCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCCanGetAssistThanksGiftCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
+ Cmd:%s,
+ SubCmd:%s,
+ CanGetCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.CanGetCount
+ )
+ return DumpString
+
+
+m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
+
+
+#------------------------------------------------------
+# B0 02 删除协助 #tagGCClearAssist
+
+class tagGCClearAssist(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x02
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x02
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagGCClearAssist=tagGCClearAssist()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
+
+
+#------------------------------------------------------
#B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
class tagFamilyArrestOverState(Structure):
@@ -5738,7 +6267,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -5799,6 +6328,324 @@
m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
+
+
+#------------------------------------------------------
+# B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
+
+class tagGCGetAssistThanksGiftPreview(Structure):
+ Head = tagHead()
+ ItemID = 0 #(DWORD ItemID)//礼盒ID
+ PlayerID = 0 #(DWORD PlayerID)//发起玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
+ ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
+ self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x05
+ self.ItemID = 0
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ self.TimeStr = ""
+ self.ExtraAward = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+ length += 19
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ data = CommFunc.WriteString(data, 19, self.TimeStr)
+ data = CommFunc.WriteBYTE(data, self.ExtraAward)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemID:%d,
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s,
+ TimeStr:%s,
+ ExtraAward:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemID,
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData,
+ self.TimeStr,
+ self.ExtraAward
+ )
+ return DumpString
+
+
+m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
+
+
+#------------------------------------------------------
+# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
+
+class tagGCAssistPlayerInfo(Structure):
+ PlayerID = 0 #(DWORD PlayerID)
+ PlayerName = "" #(char PlayerName[33])
+ Job = 0 #(BYTE Job)
+ LV = 0 #(WORD LV)
+ RealmLV = 0 #(BYTE RealmLV)//境界
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.Job = 0
+ self.LV = 0
+ self.RealmLV = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 1
+ length += 2
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteWORD(data, self.LV)
+ data = CommFunc.WriteBYTE(data, self.RealmLV)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ Job:%d,
+ LV:%d,
+ RealmLV:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.Job,
+ self.LV,
+ self.RealmLV
+ )
+ return DumpString
+
+
+class tagGCUseAssistThanksGiftPreview(Structure):
+ Head = tagHead()
+ ItemID = 0 #(DWORD ItemID)//礼盒ID
+ MapID = 0 #(DWORD MapID)
+ LineID = 0 #(DWORD LineID)
+ NPCID = 0 #(DWORD NPCID)
+ ExDataLen = 0 #(WORD ExDataLen)
+ ExData = "" #(String ExData)//其他自定义数据
+ AssistPlayerCount = 0 #(BYTE AssistPlayerCount)
+ AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x04
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
+ self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AssistPlayerCount):
+ temAssistPlayerList = tagGCAssistPlayerInfo()
+ _pos = temAssistPlayerList.ReadData(_lpData, _pos)
+ self.AssistPlayerList.append(temAssistPlayerList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x04
+ self.ItemID = 0
+ self.MapID = 0
+ self.LineID = 0
+ self.NPCID = 0
+ self.ExDataLen = 0
+ self.ExData = ""
+ self.AssistPlayerCount = 0
+ self.AssistPlayerList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.ExData)
+ length += 1
+ for i in range(self.AssistPlayerCount):
+ length += self.AssistPlayerList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteDWORD(data, self.MapID)
+ data = CommFunc.WriteDWORD(data, self.LineID)
+ data = CommFunc.WriteDWORD(data, self.NPCID)
+ data = CommFunc.WriteWORD(data, self.ExDataLen)
+ data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
+ data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
+ for i in range(self.AssistPlayerCount):
+ data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemID:%d,
+ MapID:%d,
+ LineID:%d,
+ NPCID:%d,
+ ExDataLen:%d,
+ ExData:%s,
+ AssistPlayerCount:%d,
+ AssistPlayerList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemID,
+ self.MapID,
+ self.LineID,
+ self.NPCID,
+ self.ExDataLen,
+ self.ExData,
+ self.AssistPlayerCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
#------------------------------------------------------
@@ -6487,7 +7334,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
("Value", c_int),
]
@@ -6543,7 +7390,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -6666,6 +7513,162 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
+
+
+#------------------------------------------------------
+# B3 11 聊天缓存通知 #tagGCTalkCache
+
+class tagGCTalkCacheInfo(Structure):
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟
+ NameLen = 0 #(BYTE NameLen)
+ Name = "" #(String Name)//size = SrcNameLen
+ PlayerID = 0 #(DWORD PlayerID)
+ Time = 0 #(DWORD Time)
+ Len = 0 #(WORD Len)
+ Content = "" #(String Content)//size = Len
+ Extras = "" #(char Extras[256])//附加值列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+ self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
+ return _pos
+
+ def Clear(self):
+ self.ChannelType = 0
+ self.NameLen = 0
+ self.Name = ""
+ self.PlayerID = 0
+ self.Time = 0
+ self.Len = 0
+ self.Content = ""
+ self.Extras = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += len(self.Name)
+ length += 4
+ length += 4
+ length += 2
+ length += len(self.Content)
+ length += 256
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.ChannelType)
+ data = CommFunc.WriteBYTE(data, self.NameLen)
+ data = CommFunc.WriteString(data, self.NameLen, self.Name)
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteDWORD(data, self.Time)
+ data = CommFunc.WriteWORD(data, self.Len)
+ data = CommFunc.WriteString(data, self.Len, self.Content)
+ data = CommFunc.WriteString(data, 256, self.Extras)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ ChannelType:%d,
+ NameLen:%d,
+ Name:%s,
+ PlayerID:%d,
+ Time:%d,
+ Len:%d,
+ Content:%s,
+ Extras:%s
+ '''\
+ %(
+ self.ChannelType,
+ self.NameLen,
+ self.Name,
+ self.PlayerID,
+ self.Time,
+ self.Len,
+ self.Content,
+ self.Extras
+ )
+ return DumpString
+
+
+class tagGCTalkCache(Structure):
+ Head = tagHead()
+ Count = 0 #(WORD Count)
+ InfoList = list() #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagGCTalkCacheInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB3
+ self.Head.SubCmd = 0x11
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 2
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteWORD(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCTalkCache=tagGCTalkCache()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
#------------------------------------------------------
@@ -7529,6 +8532,74 @@
#------------------------------------------------------
+# B5 11 部位升星自动购买拍品消耗信息 #tagGCEquipStarAutoBuyCostInfo
+
+class tagGCEquipStarAutoBuyCostInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 当前要升星的境界阶
+ ("EquipPlace", c_ubyte), #当前要升星的装备位
+ ("CurStar", c_ubyte), #当前星级
+ ("CurRate", c_ubyte), #当前自动购买后的总概率,不满100则代表拍品库存不足
+ ("AutoBuyCostMoney", c_ushort), #自动购买所需总消耗
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB5
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB5
+ self.SubCmd = 0x11
+ self.ClassLV = 0
+ self.EquipPlace = 0
+ self.CurStar = 0
+ self.CurRate = 0
+ self.AutoBuyCostMoney = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCEquipStarAutoBuyCostInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B5 11 部位升星自动购买拍品消耗信息 //tagGCEquipStarAutoBuyCostInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ EquipPlace:%d,
+ CurStar:%d,
+ CurRate:%d,
+ AutoBuyCostMoney:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.EquipPlace,
+ self.CurStar,
+ self.CurRate,
+ self.AutoBuyCostMoney
+ )
+ return DumpString
+
+
+m_NAtagGCEquipStarAutoBuyCostInfo=tagGCEquipStarAutoBuyCostInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCEquipStarAutoBuyCostInfo.Cmd,m_NAtagGCEquipStarAutoBuyCostInfo.SubCmd))] = m_NAtagGCEquipStarAutoBuyCostInfo
+
+
+#------------------------------------------------------
# B5 05 拍卖行仙盟拍卖中的物品信息 #tagGCFamilyAuctionItemInfo
class tagGCFamilyAuctionItem(Structure):
@@ -8059,7 +9130,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -9741,8 +10812,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -10425,6 +11496,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
+ ("IsRobot", c_ubyte), # 是否匹配机器人
]
def __init__(self):
@@ -10441,6 +11513,7 @@
def Clear(self):
self.Cmd = 0xC0
self.SubCmd = 0x02
+ self.IsRobot = 0
return
def GetLength(self):
@@ -10452,11 +11525,13 @@
def OutputString(self):
DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch:
Cmd:%s,
- SubCmd:%s
+ SubCmd:%s,
+ IsRobot:%d
'''\
%(
self.Cmd,
- self.SubCmd
+ self.SubCmd,
+ self.IsRobot
)
return DumpString
@@ -10755,7 +11830,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -12573,7 +13648,8 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
- ("AddItemCnt", c_int), #增幅丹使用个数
+ ("ItemAddCnt", c_int), #增幅丹增加上限
+ ("ItemBreakCnt", c_int), #增幅丹突破次数
]
def __init__(self):
@@ -12588,7 +13664,8 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
- self.AddItemCnt = 0
+ self.ItemAddCnt = 0
+ self.ItemBreakCnt = 0
return
def GetLength(self):
@@ -12601,12 +13678,14 @@
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
EatCnt:%d,
- AddItemCnt:%d
+ ItemAddCnt:%d,
+ ItemBreakCnt:%d
'''\
%(
self.ItemID,
self.EatCnt,
- self.AddItemCnt
+ self.ItemAddCnt,
+ self.ItemBreakCnt
)
return DumpString
@@ -12742,6 +13821,7 @@
("BossType", c_ubyte), #编号类型0-世界boss 1-boss之家
("KillCnt", c_int), #击杀次数
("ItemAddCnt", c_int), #物品增加次数
+ ("BuyCnt", c_ubyte), #购买次数
]
def __init__(self):
@@ -12757,6 +13837,7 @@
self.BossType = 0
self.KillCnt = 0
self.ItemAddCnt = 0
+ self.BuyCnt = 0
return
def GetLength(self):
@@ -12769,12 +13850,14 @@
DumpString = '''//A3 B7 当日累计攻击boss次数 //tagMCBOSSAttactCnt:
BossType:%d,
KillCnt:%d,
- ItemAddCnt:%d
+ ItemAddCnt:%d,
+ BuyCnt:%d
'''\
%(
self.BossType,
self.KillCnt,
- self.ItemAddCnt
+ self.ItemAddCnt,
+ self.BuyCnt
)
return DumpString
@@ -13764,6 +14847,73 @@
#------------------------------------------------------
+# A3 B2 装备部位星级套装激活信息 #tagMCEquipPartSuiteActivateInfo
+
+class tagMCEquipPartSuiteActivateInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ SuiteActivateStateInfo = list() #(vector<DWORD> SuiteActivateStateInfo)//激活状态值列表,每个数按位存31个激活索引,每个位代表对应的激活索引是否已激活
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB2
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.SuiteActivateStateInfo.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xB2
+ self.Count = 0
+ self.SuiteActivateStateInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.SuiteActivateStateInfo[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ SuiteActivateStateInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCEquipPartSuiteActivateInfo=tagMCEquipPartSuiteActivateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteActivateInfo.Head.Cmd,m_NAtagMCEquipPartSuiteActivateInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteActivateInfo
+
+
+#------------------------------------------------------
# A3 BB 装备位洗练属性信息 #tagMCEquipPartXLAttrInfo
class tagMCEquipPartXLAttrValue(Structure):
@@ -13806,7 +14956,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -15177,6 +16327,178 @@
#------------------------------------------------------
+# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
+
+class tagMCHistoryReChargeAwardRecord(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("AwardGetRecord", c_int), # 按二进制位标示领取记录 配置奖励ID代表第几位
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x28
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x28
+ self.AwardGetRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHistoryReChargeAwardRecord)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 28 历史累积充值奖励领取记录 //tagMCHistoryReChargeAwardRecord:
+ Cmd:%s,
+ SubCmd:%s,
+ AwardGetRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.AwardGetRecord
+ )
+ return DumpString
+
+
+m_NAtagMCHistoryReChargeAwardRecord=tagMCHistoryReChargeAwardRecord()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHistoryReChargeAwardRecord.Cmd,m_NAtagMCHistoryReChargeAwardRecord.SubCmd))] = m_NAtagMCHistoryReChargeAwardRecord
+
+
+#------------------------------------------------------
+# A3 12 通知骑宠觉醒信息 #tagMCHorsePetSkinData
+
+class tagMCHorsePetSkinInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Type", c_ubyte), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("Exp", c_int), #经验
+ ("SkinLV", c_ubyte), #觉醒等级
+ ("SkinIndex", c_ubyte), #当前选择外观
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Type = 0
+ self.ID = 0
+ self.Exp = 0
+ self.SkinLV = 0
+ self.SkinIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCHorsePetSkinInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 12 通知骑宠觉醒信息 //tagMCHorsePetSkinData:
+ Type:%d,
+ ID:%d,
+ Exp:%d,
+ SkinLV:%d,
+ SkinIndex:%d
+ '''\
+ %(
+ self.Type,
+ self.ID,
+ self.Exp,
+ self.SkinLV,
+ self.SkinIndex
+ )
+ return DumpString
+
+
+class tagMCHorsePetSkinData(Structure):
+ Head = tagHead()
+ Num = 0 #(BYTE Num)//个数
+ InfoList = list() #(vector<tagMCHorsePetSkinInfo> InfoList)// 数据列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Num):
+ temInfoList = tagMCHorsePetSkinInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x12
+ self.Num = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Num):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Num)
+ for i in range(self.Num):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Num:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Num,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
+
+
+#------------------------------------------------------
# A3 52 法宝等级信息 #tagMCMagicWeaponLVInfo
class tagMCMagicWeaponInfo(Structure):
@@ -15350,6 +16672,114 @@
m_NAtagMCGreatMasterExp=tagMCGreatMasterExp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGreatMasterExp.Cmd,m_NAtagMCGreatMasterExp.SubCmd))] = m_NAtagMCGreatMasterExp
+
+
+#------------------------------------------------------
+# A3 C2 大师强化等级激活信息 #tagMCMasterPlusLVInfo
+
+class tagMCMasterPlusLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ClassLV", c_ubyte),
+ ("MasterPlusLV", c_ushort), # 已经激活的最高大师强化等级,向下兼容
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ClassLV = 0
+ self.MasterPlusLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCMasterPlusLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 C2 大师强化等级激活信息 //tagMCMasterPlusLVInfo:
+ ClassLV:%d,
+ MasterPlusLV:%d
+ '''\
+ %(
+ self.ClassLV,
+ self.MasterPlusLV
+ )
+ return DumpString
+
+
+class tagMCMasterPlusLVInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)// 信息个数
+ MasterPlusLVInfoList = list() #(vector<tagMCMasterPlusLV> MasterPlusLVInfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC2
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temMasterPlusLVInfoList = tagMCMasterPlusLV()
+ _pos = temMasterPlusLVInfoList.ReadData(_lpData, _pos)
+ self.MasterPlusLVInfoList.append(temMasterPlusLVInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xC2
+ self.Count = 0
+ self.MasterPlusLVInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.MasterPlusLVInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.MasterPlusLVInfoList[i].GetLength(), self.MasterPlusLVInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ MasterPlusLVInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCMasterPlusLVInfo=tagMCMasterPlusLVInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMasterPlusLVInfo.Head.Cmd,m_NAtagMCMasterPlusLVInfo.Head.SubCmd))] = m_NAtagMCMasterPlusLVInfo
#------------------------------------------------------
@@ -16013,7 +17443,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -16461,6 +17891,7 @@
_fields_ = [
("AlchemyID", c_int), # 丹 ID
("StartTime", c_int), # 开始炼的时间
+ ("AlchemyTimes", c_ushort), # 炼的次数
]
def __init__(self):
@@ -16475,6 +17906,7 @@
def Clear(self):
self.AlchemyID = 0
self.StartTime = 0
+ self.AlchemyTimes = 0
return
def GetLength(self):
@@ -16486,11 +17918,13 @@
def OutputString(self):
DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
AlchemyID:%d,
- StartTime:%d
+ StartTime:%d,
+ AlchemyTimes:%d
'''\
%(
self.AlchemyID,
- self.StartTime
+ self.StartTime,
+ self.AlchemyTimes
)
return DumpString
@@ -16724,6 +18158,7 @@
("ExtraCnt", c_ubyte), # VIP额外次数
("ExtraData", c_ubyte), # 额外参数1
("ExtraData2", c_ubyte), # 额外参数2
+ ("HaveRecover", c_ubyte), # 已找回 1-全部已找回 2-非VIP已找回
]
def __init__(self):
@@ -16741,6 +18176,7 @@
self.ExtraCnt = 0
self.ExtraData = 0
self.ExtraData2 = 0
+ self.HaveRecover = 0
return
def GetLength(self):
@@ -16755,14 +18191,16 @@
RecoverCnt:%d,
ExtraCnt:%d,
ExtraData:%d,
- ExtraData2:%d
+ ExtraData2:%d,
+ HaveRecover:%d
'''\
%(
self.Index,
self.RecoverCnt,
self.ExtraCnt,
self.ExtraData,
- self.ExtraData2
+ self.ExtraData2,
+ self.HaveRecover
)
return DumpString
@@ -17329,6 +18767,7 @@
_fields_ = [
("RecordIndex", c_ushort), #第几个记录值 每个key存31个succid 0-30为0, 31-61为1..
("Record", c_int), #对应是否领取值
+ ("PassportRecord", c_int), #通行证奖励是否领取值
]
def __init__(self):
@@ -17343,6 +18782,7 @@
def Clear(self):
self.RecordIndex = 0
self.Record = 0
+ self.PassportRecord = 0
return
def GetLength(self):
@@ -17354,11 +18794,13 @@
def OutputString(self):
DumpString = '''//A3 42 成就完成领奖记录列表 //tagMCSuccessFinishAwardRecordList:
RecordIndex:%d,
- Record:%d
+ Record:%d,
+ PassportRecord:%d
'''\
%(
self.RecordIndex,
- self.Record
+ self.Record,
+ self.PassportRecord
)
return DumpString
@@ -17794,16 +19236,20 @@
#------------------------------------------------------
#A3 01 坐骑培养信息 #tagTrainHorseData
-class tagMCHorseInfo(Structure):
+class tagTrainHorseData(Structure):
_pack_ = 1
_fields_ = [
- ("HorseID", c_int), #ID
- ("LV", c_ubyte), #等级
- ("Exp", c_int), #经验
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LV", c_ubyte), #等阶
+ ("EatItemCount", c_ushort), #当前阶已吃丹个数
+ ("SkinPlusState", c_int), #幻化激活状态,按位存储是否激活,幻化编号ID对应位
]
def __init__(self):
self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x01
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -17812,102 +19258,39 @@
return _pos + self.GetLength()
def Clear(self):
- self.HorseID = 0
+ self.Cmd = 0xA3
+ self.SubCmd = 0x01
self.LV = 0
- self.Exp = 0
+ self.EatItemCount = 0
+ self.SkinPlusState = 0
return
def GetLength(self):
- return sizeof(tagMCHorseInfo)
+ return sizeof(tagTrainHorseData)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''//A3 01 坐骑培养信息 //tagTrainHorseData:
- HorseID:%d,
+ Cmd:%s,
+ SubCmd:%s,
LV:%d,
- Exp:%d
+ EatItemCount:%d,
+ SkinPlusState:%d
'''\
%(
- self.HorseID,
+ self.Cmd,
+ self.SubCmd,
self.LV,
- self.Exp
- )
- return DumpString
-
-
-class tagTrainHorseData(Structure):
- Head = tagHead()
- Multiple = 0 #(BYTE Multiple)//下次暴击倍数
- Num = 0 #(BYTE Num)//个数
- InfoList = list() #(vector<tagMCHorseInfo> InfoList)// 坐骑数据列表
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x01
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Num,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Num):
- temInfoList = tagMCHorseInfo()
- _pos = temInfoList.ReadData(_lpData, _pos)
- self.InfoList.append(temInfoList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x01
- self.Multiple = 0
- self.Num = 0
- self.InfoList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 1
- for i in range(self.Num):
- length += self.InfoList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Multiple)
- data = CommFunc.WriteBYTE(data, self.Num)
- for i in range(self.Num):
- data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Multiple:%d,
- Num:%d,
- InfoList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Multiple,
- self.Num,
- "..."
+ self.EatItemCount,
+ self.SkinPlusState
)
return DumpString
m_NAtagTrainHorseData=tagTrainHorseData()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Head.Cmd,m_NAtagTrainHorseData.Head.SubCmd))] = m_NAtagTrainHorseData
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTrainHorseData.Cmd,m_NAtagTrainHorseData.SubCmd))] = m_NAtagTrainHorseData
#------------------------------------------------------
@@ -18535,6 +19918,58 @@
m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward
+
+
+#------------------------------------------------------
+# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult
+
+class tagMCFamilyActivityExchangeResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Point", c_int), # 活跃令
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x02
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x02
+ self.Point = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFamilyActivityExchangeResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult:
+ Cmd:%s,
+ SubCmd:%s,
+ Point:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Point
+ )
+ return DumpString
+
+
+m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
#------------------------------------------------------
@@ -20597,7 +22032,7 @@
PlayerID = 0 #(DWORD PlayerID)//玩家ID
EquipClassLV = 0 #(BYTE EquipClassLV)
ItemDataSize = 0 #(WORD ItemDataSize)
- ItemData = "" #(String ItemData)//物品记录
+ ItemData = "" #(String ItemData)//物品记录
data = None
def __init__(self):
@@ -20896,7 +22331,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -21334,6 +22769,58 @@
#------------------------------------------------------
+# A8 15 灵器突破结果 #tagMCLingQiEquipBreakResult
+
+class tagMCLingQiEquipBreakResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MakeItemID", c_int), #突破后的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA8
+ self.SubCmd = 0x15
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA8
+ self.SubCmd = 0x15
+ self.MakeItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCLingQiEquipBreakResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 15 灵器突破结果 //tagMCLingQiEquipBreakResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MakeItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MakeItemID
+ )
+ return DumpString
+
+
+m_NAtagMCLingQiEquipBreakResult=tagMCLingQiEquipBreakResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLingQiEquipBreakResult.Cmd,m_NAtagMCLingQiEquipBreakResult.SubCmd))] = m_NAtagMCLingQiEquipBreakResult
+
+
+#------------------------------------------------------
# A8 14 合成结果通知 #tagMCMakeItemAnswer
class tagMCMakeItemAnswer(Structure):
@@ -21341,7 +22828,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -21958,118 +23445,6 @@
#------------------------------------------------------
-# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
-
-class tagMCZhuXianDecomposeItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("ItemID", c_int), #物品ID
- ("ItemCnt", c_ubyte), #物品数量
- ("IsBind", c_ubyte), #是否绑定
- ]
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.ItemID = 0
- self.ItemCnt = 0
- self.IsBind = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCZhuXianDecomposeItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
- ItemID:%d,
- ItemCnt:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCnt,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCZhuXianDecomposeResult(Structure):
- Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//数量
- ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x15
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Cnt):
- temItemList = tagMCZhuXianDecomposeItem()
- _pos = temItemList.ReadData(_lpData, _pos)
- self.ItemList.append(temItemList)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA8
- self.Head.SubCmd = 0x15
- self.Cnt = 0
- self.ItemList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- for i in range(self.Cnt):
- length += self.ItemList[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Cnt)
- for i in range(self.Cnt):
- data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Cnt:%d,
- ItemList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.Cnt,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
-
-
-#------------------------------------------------------
# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
class tagMCActLoginAwardAction(Structure):
@@ -22494,6 +23869,189 @@
m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
+
+
+#------------------------------------------------------
+# AA 27 充值返利活动信息 #tagMCActRechargePrizeInfo
+
+class tagMCActRechargePrize(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("CTGID", c_ushort), # 对应充值表充值ID
+ ("GoldPrize", c_int), #返利仙玉数
+ ("PrizeCountLimit", c_ubyte), #限制最大返利次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.CTGID = 0
+ self.GoldPrize = 0
+ self.PrizeCountLimit = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActRechargePrize)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 27 充值返利活动信息 //tagMCActRechargePrizeInfo:
+ CTGID:%d,
+ GoldPrize:%d,
+ PrizeCountLimit:%d
+ '''\
+ %(
+ self.CTGID,
+ self.GoldPrize,
+ self.PrizeCountLimit
+ )
+ return DumpString
+
+
+class tagMCActRechargePrizeDay(Structure):
+ Prizes = 0 #(BYTE Prizes)// 返利档数
+ PrizeInfo = list() #(vector<tagMCActRechargePrize> PrizeInfo)// 返利档信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.Prizes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Prizes):
+ temPrizeInfo = tagMCActRechargePrize()
+ _pos = temPrizeInfo.ReadData(_lpData, _pos)
+ self.PrizeInfo.append(temPrizeInfo)
+ return _pos
+
+ def Clear(self):
+ self.Prizes = 0
+ self.PrizeInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ for i in range(self.Prizes):
+ length += self.PrizeInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.Prizes)
+ for i in range(self.Prizes):
+ data = CommFunc.WriteString(data, self.PrizeInfo[i].GetLength(), self.PrizeInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Prizes:%d,
+ PrizeInfo:%s
+ '''\
+ %(
+ self.Prizes,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActRechargePrizeInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
+ PrizeDays = 0 #(BYTE PrizeDays)
+ PrizeDayInfo = list() #(vector<tagMCActRechargePrizeDay> PrizeDayInfo)//每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PrizeDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.PrizeDays):
+ temPrizeDayInfo = tagMCActRechargePrizeDay()
+ _pos = temPrizeDayInfo.ReadData(_lpData, _pos)
+ self.PrizeDayInfo.append(temPrizeDayInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x27
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.IsDayReset = 0
+ self.PrizeDays = 0
+ self.PrizeDayInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ for i in range(self.PrizeDays):
+ length += self.PrizeDayInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.IsDayReset)
+ data = CommFunc.WriteBYTE(data, self.PrizeDays)
+ for i in range(self.PrizeDays):
+ data = CommFunc.WriteString(data, self.PrizeDayInfo[i].GetLength(), self.PrizeDayInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ IsDayReset:%d,
+ PrizeDays:%d,
+ PrizeDayInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.IsDayReset,
+ self.PrizeDays,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActRechargePrizeInfo=tagMCActRechargePrizeInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRechargePrizeInfo.Head.Cmd,m_NAtagMCActRechargePrizeInfo.Head.SubCmd))] = m_NAtagMCActRechargePrizeInfo
#------------------------------------------------------
@@ -23630,6 +25188,359 @@
#------------------------------------------------------
+# AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
+
+class tagMCDailyGiftbagItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDailyGiftbagItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo:
+ ItemID:%d,
+ ItemCount:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbag(Structure):
+ GiftID = 0 #(DWORD GiftID)//礼包ID,0为免费
+ OrderInfoLen = 0 #(BYTE OrderInfoLen)
+ OrderInfo = "" #(String OrderInfo)//商品编号
+ BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
+ RMB = 0 #(DWORD RMB)//所需RMB,元
+ GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
+ ItemInfo = list() #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
+ self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftItemCount):
+ temItemInfo = tagMCDailyGiftbagItem()
+ _pos = temItemInfo.ReadData(_lpData, _pos)
+ self.ItemInfo.append(temItemInfo)
+ return _pos
+
+ def Clear(self):
+ self.GiftID = 0
+ self.OrderInfoLen = 0
+ self.OrderInfo = ""
+ self.BuyCountLimit = 0
+ self.RMB = 0
+ self.GiftItemCount = 0
+ self.ItemInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += len(self.OrderInfo)
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.GiftItemCount):
+ length += self.ItemInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.GiftID)
+ data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
+ data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
+ data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
+ data = CommFunc.WriteDWORD(data, self.RMB)
+ data = CommFunc.WriteBYTE(data, self.GiftItemCount)
+ for i in range(self.GiftItemCount):
+ data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ GiftID:%d,
+ OrderInfoLen:%d,
+ OrderInfo:%s,
+ BuyCountLimit:%d,
+ RMB:%d,
+ GiftItemCount:%d,
+ ItemInfo:%s
+ '''\
+ %(
+ self.GiftID,
+ self.OrderInfoLen,
+ self.OrderInfo,
+ self.BuyCountLimit,
+ self.RMB,
+ self.GiftItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbagInfo(Structure):
+ Head = tagHead()
+ GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数
+ GiftbagInfo = list() #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x25
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.GiftbagCount):
+ temGiftbagInfo = tagMCDailyGiftbag()
+ _pos = temGiftbagInfo.ReadData(_lpData, _pos)
+ self.GiftbagInfo.append(temGiftbagInfo)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x25
+ self.GiftbagCount = 0
+ self.GiftbagInfo = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.GiftbagCount):
+ length += self.GiftbagInfo[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.GiftbagCount)
+ for i in range(self.GiftbagCount):
+ data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ GiftbagCount:%d,
+ GiftbagInfo:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.GiftbagCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo
+
+
+#------------------------------------------------------
+# AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo
+
+class tagMCDailyGiftbagBuyCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GiftbagID", c_int), #礼包ID
+ ("BuyCount", c_ushort), #本次活动已购买次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.GiftbagID = 0
+ self.BuyCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDailyGiftbagBuyCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo:
+ GiftbagID:%d,
+ BuyCount:%d
+ '''\
+ %(
+ self.GiftbagID,
+ self.BuyCount
+ )
+ return DumpString
+
+
+class tagMCDailyGiftbagPlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ BuyCountList = list() #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x26
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temBuyCountList = tagMCDailyGiftbagBuyCount()
+ _pos = temBuyCountList.ReadData(_lpData, _pos)
+ self.BuyCountList.append(temBuyCountList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x26
+ self.Count = 0
+ self.BuyCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.BuyCountList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ BuyCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo
+
+
+#------------------------------------------------------
+# AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
+
+class tagMCDayFreeGoldGiftState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xAA
+ self.SubCmd = 0x24
+ self.DayFreeGoldGiftState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCDayFreeGoldGiftState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
+ Cmd:%s,
+ SubCmd:%s,
+ DayFreeGoldGiftState:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.DayFreeGoldGiftState
+ )
+ return DumpString
+
+
+m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
+
+
+#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class tagMCFeastWeekPartyItem(Structure):
@@ -24149,8 +26060,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖
+ ("FirstGoldRewardState", c_ubyte), #首充奖励领奖记录,按位记录首充第X天是否已领取,第1天为第0索引位
("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用
+ ("FirstGoldServerDay", c_ushort), #首充时是开服第几天,从1开始,0代表未记录充值
]
def __init__(self):
@@ -24169,6 +26081,7 @@
self.SubCmd = 0x02
self.FirstGoldRewardState = 0
self.FirstGoldTry = 0
+ self.FirstGoldServerDay = 0
return
def GetLength(self):
@@ -24182,13 +26095,15 @@
Cmd:%s,
SubCmd:%s,
FirstGoldRewardState:%d,
- FirstGoldTry:%d
+ FirstGoldTry:%d,
+ FirstGoldServerDay:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.FirstGoldRewardState,
- self.FirstGoldTry
+ self.FirstGoldTry,
+ self.FirstGoldServerDay
)
return DumpString
@@ -25518,6 +27433,114 @@
#------------------------------------------------------
+# AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
+
+class tagMCRechargePrizeInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("CTGID", c_ushort), # 对应充值表充值ID
+ ("PrizeCount", c_ubyte), # 已返利次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.CTGID = 0
+ self.PrizeCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCRechargePrizeInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 28 充值返利玩家活动信息 //tagMCRechargePrizePlayerInfo:
+ CTGID:%d,
+ PrizeCount:%d
+ '''\
+ %(
+ self.CTGID,
+ self.PrizeCount
+ )
+ return DumpString
+
+
+class tagMCRechargePrizePlayerInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ PlayerInfoList = list() #(vector<tagMCRechargePrizeInfo> PlayerInfoList)//玩家返利信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x28
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temPlayerInfoList = tagMCRechargePrizeInfo()
+ _pos = temPlayerInfoList.ReadData(_lpData, _pos)
+ self.PlayerInfoList.append(temPlayerInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x28
+ self.Count = 0
+ self.PlayerInfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.PlayerInfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.PlayerInfoList[i].GetLength(), self.PlayerInfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ PlayerInfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCRechargePrizePlayerInfo=tagMCRechargePrizePlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargePrizePlayerInfo.Head.Cmd,m_NAtagMCRechargePrizePlayerInfo.Head.SubCmd))] = m_NAtagMCRechargePrizePlayerInfo
+
+
+#------------------------------------------------------
# AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
class tagMCSpringSaleItem(Structure):
@@ -26552,6 +28575,9 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("State", c_ubyte), #0-不可领 1-可领 2-已领取
+ ("CTGTotal", c_int), #本次活动已累计充值,单位元
+ ("FireworksBuyCount", c_ushort), #已购买高级烟花数
+ ("FirewordsScore", c_int), #当前累计所有烟花总积分
]
def __init__(self):
@@ -26569,6 +28595,9 @@
self.Cmd = 0xAA
self.SubCmd = 0x14
self.State = 0
+ self.CTGTotal = 0
+ self.FireworksBuyCount = 0
+ self.FirewordsScore = 0
return
def GetLength(self):
@@ -26581,18 +28610,132 @@
DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
Cmd:%s,
SubCmd:%s,
- State:%d
+ State:%d,
+ CTGTotal:%d,
+ FireworksBuyCount:%d,
+ FirewordsScore:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.State
+ self.State,
+ self.CTGTotal,
+ self.FireworksBuyCount,
+ self.FirewordsScore
)
return DumpString
m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
+
+
+#------------------------------------------------------
+# AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
+
+class tagMCBossFirstKillState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int),
+ ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.NPCID = 0
+ self.FKState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCBossFirstKillState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
+ NPCID:%d,
+ FKState:%d
+ '''\
+ %(
+ self.NPCID,
+ self.FKState
+ )
+ return DumpString
+
+
+class tagMCBossFirstKillStateInfo(Structure):
+ Head = tagHead()
+ BossCount = 0 #(BYTE BossCount)
+ FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.BossCount):
+ temFirstKillStateList = tagMCBossFirstKillState()
+ _pos = temFirstKillStateList.ReadData(_lpData, _pos)
+ self.FirstKillStateList.append(temFirstKillStateList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAB
+ self.Head.SubCmd = 0x01
+ self.BossCount = 0
+ self.FirstKillStateList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.BossCount):
+ length += self.FirstKillStateList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.BossCount)
+ for i in range(self.BossCount):
+ data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ BossCount:%d,
+ FirstKillStateList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.BossCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
#------------------------------------------------------
@@ -27743,6 +29886,119 @@
#------------------------------------------------------
+# B0 27 活跃放置信息 #tagMCActivityPlaceInfo
+
+class tagMCActivityPlaceInfo(Structure):
+ Head = tagHead()
+ StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
+ PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数
+ RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数
+ RewardLen = 0 #(BYTE RewardLen)
+ RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
+ TodayExp = 0 #(DWORD TodayExp)
+ TodayExpPoint = 0 #(DWORD TodayExpPoint)
+ YestordayExp = 0 #(DWORD YestordayExp)
+ YestordayExpPoint = 0 #(DWORD YestordayExpPoint)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x27
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
+ self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x27
+ self.StartTime = 0
+ self.PlaceCount = 0
+ self.RewardCount = 0
+ self.RewardLen = 0
+ self.RewardInfo = ""
+ self.TodayExp = 0
+ self.TodayExpPoint = 0
+ self.YestordayExp = 0
+ self.YestordayExpPoint = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 1
+ length += 1
+ length += len(self.RewardInfo)
+ length += 4
+ length += 4
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.StartTime)
+ data = CommFunc.WriteBYTE(data, self.PlaceCount)
+ data = CommFunc.WriteBYTE(data, self.RewardCount)
+ data = CommFunc.WriteBYTE(data, self.RewardLen)
+ data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
+ data = CommFunc.WriteDWORD(data, self.TodayExp)
+ data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
+ data = CommFunc.WriteDWORD(data, self.YestordayExp)
+ data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartTime:%d,
+ PlaceCount:%d,
+ RewardCount:%d,
+ RewardLen:%d,
+ RewardInfo:%s,
+ TodayExp:%d,
+ TodayExpPoint:%d,
+ YestordayExp:%d,
+ YestordayExpPoint:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartTime,
+ self.PlaceCount,
+ self.RewardCount,
+ self.RewardLen,
+ self.RewardInfo,
+ self.TodayExp,
+ self.TodayExpPoint,
+ self.YestordayExp,
+ self.YestordayExpPoint
+ )
+ return DumpString
+
+
+m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
+
+
+#------------------------------------------------------
#B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
class tagFamilyArrestAwardReceiveState(Structure):
@@ -27840,6 +30096,62 @@
m_NAtagMCFishResult=tagMCFishResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFishResult.Cmd,m_NAtagMCFishResult.SubCmd))] = m_NAtagMCFishResult
+
+
+#------------------------------------------------------
+# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
+
+class tagMCTodayAssistMoneyInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成
+ ("SocialMoney", c_ushort), #社交额外加成
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x07
+ self.TodayAssistMoney = 0
+ self.SocialMoney = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCTodayAssistMoneyInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ TodayAssistMoney:%d,
+ SocialMoney:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TodayAssistMoney,
+ self.SocialMoney
+ )
+ return DumpString
+
+
+m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
#------------------------------------------------------
@@ -28083,7 +30395,7 @@
Head = tagHead()
PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 点类型个数
PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 点类型列表
- PointValueList = list() #(vector<WORD> PointValueList)// 点类型对应已加自由点数列表
+ PointValueList = list() #(vector<DWORD> PointValueList)// 点类型对应已加自由点数列表
data = None
def __init__(self):
@@ -28100,7 +30412,7 @@
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.PointAttrIDList.append(value)
for i in range(self.PointAttrIDCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PointValueList.append(value)
return _pos
@@ -28119,7 +30431,7 @@
length += self.Head.GetLength()
length += 1
length += 1 * self.PointAttrIDCount
- length += 2 * self.PointAttrIDCount
+ length += 4 * self.PointAttrIDCount
return length
@@ -28130,7 +30442,7 @@
for i in range(self.PointAttrIDCount):
data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
for i in range(self.PointAttrIDCount):
- data = CommFunc.WriteWORD(data, self.PointValueList[i])
+ data = CommFunc.WriteDWORD(data, self.PointValueList[i])
return data
def OutputString(self):
@@ -28542,87 +30854,6 @@
#------------------------------------------------------
-# B2 14 自定义副本奖励信息 #tagMCCuntomFBPrizeInfo
-
-class tagMCCuntomFBPrizeInfo(Structure):
- Head = tagHead()
- MapID = 0 #(DWORD MapID)
- FuncLineID = 0 #(WORD FuncLineID)
- PrizeItemCount = 0 #(BYTE PrizeItemCount)
- PrizeItemIDList = list() #(vector<DWORD> PrizeItemIDList)
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x14
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.PrizeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.PrizeItemCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.PrizeItemIDList.append(value)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xB2
- self.Head.SubCmd = 0x14
- self.MapID = 0
- self.FuncLineID = 0
- self.PrizeItemCount = 0
- self.PrizeItemIDList = list()
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 4
- length += 2
- length += 1
- length += 4 * self.PrizeItemCount
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteDWORD(data, self.MapID)
- data = CommFunc.WriteWORD(data, self.FuncLineID)
- data = CommFunc.WriteBYTE(data, self.PrizeItemCount)
- for i in range(self.PrizeItemCount):
- data = CommFunc.WriteDWORD(data, self.PrizeItemIDList[i])
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- MapID:%d,
- FuncLineID:%d,
- PrizeItemCount:%d,
- PrizeItemIDList:%s
- '''\
- %(
- self.Head.OutputString(),
- self.MapID,
- self.FuncLineID,
- self.PrizeItemCount,
- "..."
- )
- return DumpString
-
-
-m_NAtagMCCuntomFBPrizeInfo=tagMCCuntomFBPrizeInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCuntomFBPrizeInfo.Head.Cmd,m_NAtagMCCuntomFBPrizeInfo.Head.SubCmd))] = m_NAtagMCCuntomFBPrizeInfo
-
-
-#------------------------------------------------------
# B2 10 仙盟联赛玩家排名信息 #tagMCFamilyWarBillboard
class tagMCFamilyWarPlayer(Structure):
@@ -28926,6 +31157,7 @@
_fields_ = [
("DataMapID", c_int), # 地图ID
("RemainTime", c_int), # 剩余时间秒
+ ("RegainCnt", c_ubyte), # 今日已恢复次数
]
def __init__(self):
@@ -28940,6 +31172,7 @@
def Clear(self):
self.DataMapID = 0
self.RemainTime = 0
+ self.RegainCnt = 0
return
def GetLength(self):
@@ -28951,11 +31184,13 @@
def OutputString(self):
DumpString = '''// B2 09 副本次数恢复剩余时间 //tagMCFBCntRegainRemainTime:
DataMapID:%d,
- RemainTime:%d
+ RemainTime:%d,
+ RegainCnt:%d
'''\
%(
self.DataMapID,
- self.RemainTime
+ self.RemainTime,
+ self.RegainCnt
)
return DumpString
@@ -29765,6 +32000,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Floor", c_int), # 已通关层
+ ("ServerRewardRecord", c_int), #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
]
def __init__(self):
@@ -29782,6 +32018,7 @@
self.Cmd = 0xB2
self.SubCmd = 0x13
self.Floor = 0
+ self.ServerRewardRecord = 0
return
def GetLength(self):
@@ -29794,18 +32031,80 @@
DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
Cmd:%s,
SubCmd:%s,
- Floor:%d
+ Floor:%d,
+ ServerRewardRecord:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Floor
+ self.Floor,
+ self.ServerRewardRecord
)
return DumpString
m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+
+
+#------------------------------------------------------
+# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
+
+class tagMCStartCustomSceneResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("FuncLineID", c_ushort),
+ ("Result", c_ubyte), #是否允许
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.Result = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartCustomSceneResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ Result:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID,
+ self.Result
+ )
+ return DumpString
+
+
+m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
#------------------------------------------------------
@@ -29981,6 +32280,226 @@
m_NAtagMCAddMaliciousAtkPlayer=tagMCAddMaliciousAtkPlayer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddMaliciousAtkPlayer.Cmd,m_NAtagMCAddMaliciousAtkPlayer.SubCmd))] = m_NAtagMCAddMaliciousAtkPlayer
+
+
+#------------------------------------------------------
+# B4 15 Boss伤血排行榜信息 #tagMCBossHurtValueRankInfo
+
+class tagMCBossHurtValueAssist(Structure):
+ PlayerID = 0 #(DWORD PlayerID)// 助战玩家ID
+ PlayerName = "" #(char PlayerName[33])
+ HurtValue = 0 #(DWORD HurtValue)//不超过亿部分
+ HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.PlayerID = 0
+ self.PlayerName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteString(data, 33, self.PlayerName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ PlayerID:%d,
+ PlayerName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.PlayerID,
+ self.PlayerName,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagMCBossHurtValue(Structure):
+ HurtType = 0 #(BYTE HurtType)// 伤血类型 1-玩家,2-队伍
+ HurtID = 0 #(DWORD HurtID)//玩家时为玩家ID,队伍时为队伍ID
+ HurtName = "" #(char HurtName[33])// 名称
+ HurtValue = 0 #(DWORD HurtValue)//不超过亿部分
+ HurtValueEx = 0 #(DWORD HurtValueEx)//支持超过20亿
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+ self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.HurtType = 0
+ self.HurtID = 0
+ self.HurtName = ""
+ self.HurtValue = 0
+ self.HurtValueEx = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 33
+ length += 4
+ length += 4
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.HurtType)
+ data = CommFunc.WriteDWORD(data, self.HurtID)
+ data = CommFunc.WriteString(data, 33, self.HurtName)
+ data = CommFunc.WriteDWORD(data, self.HurtValue)
+ data = CommFunc.WriteDWORD(data, self.HurtValueEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ HurtType:%d,
+ HurtID:%d,
+ HurtName:%s,
+ HurtValue:%d,
+ HurtValueEx:%d
+ '''\
+ %(
+ self.HurtType,
+ self.HurtID,
+ self.HurtName,
+ self.HurtValue,
+ self.HurtValueEx
+ )
+ return DumpString
+
+
+class tagMCBossHurtValueRankInfo(Structure):
+ Head = tagHead()
+ ObjID = 0 #(DWORD ObjID)//NPC实例ID
+ HurtCount = 0 #(BYTE HurtCount)//伤血数目
+ HurtValueList = list() #(vector<tagMCBossHurtValue> HurtValueList)
+ AssistHurtCount = 0 #(BYTE AssistHurtCount)//助战伤血数目
+ AssistHurtValueList = list() #(vector<tagMCBossHurtValueAssist> AssistHurtValueList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.HurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.HurtCount):
+ temHurtValueList = tagMCBossHurtValue()
+ _pos = temHurtValueList.ReadData(_lpData, _pos)
+ self.HurtValueList.append(temHurtValueList)
+ self.AssistHurtCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AssistHurtCount):
+ temAssistHurtValueList = tagMCBossHurtValueAssist()
+ _pos = temAssistHurtValueList.ReadData(_lpData, _pos)
+ self.AssistHurtValueList.append(temAssistHurtValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB4
+ self.Head.SubCmd = 0x15
+ self.ObjID = 0
+ self.HurtCount = 0
+ self.HurtValueList = list()
+ self.AssistHurtCount = 0
+ self.AssistHurtValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.HurtCount):
+ length += self.HurtValueList[i].GetLength()
+ length += 1
+ for i in range(self.AssistHurtCount):
+ length += self.AssistHurtValueList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.ObjID)
+ data = CommFunc.WriteBYTE(data, self.HurtCount)
+ for i in range(self.HurtCount):
+ data = CommFunc.WriteString(data, self.HurtValueList[i].GetLength(), self.HurtValueList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.AssistHurtCount)
+ for i in range(self.AssistHurtCount):
+ data = CommFunc.WriteString(data, self.AssistHurtValueList[i].GetLength(), self.AssistHurtValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ObjID:%d,
+ HurtCount:%d,
+ HurtValueList:%s,
+ AssistHurtCount:%d,
+ AssistHurtValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ObjID,
+ self.HurtCount,
+ "...",
+ self.AssistHurtCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCBossHurtValueRankInfo=tagMCBossHurtValueRankInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossHurtValueRankInfo.Head.Cmd,m_NAtagMCBossHurtValueRankInfo.Head.SubCmd))] = m_NAtagMCBossHurtValueRankInfo
#------------------------------------------------------
@@ -30910,6 +33429,7 @@
PosY = 0 #(WORD PosY)
HurtCount = 0 #(WORD HurtCount)//伤害数目
HurtList = list() #(vector<tagSkillPosHurtObj> HurtList)//size = HurtCount
+ SkillElementID = 0 #(WORD SkillElementID)//专精技能ID
data = None
def __init__(self):
@@ -30931,6 +33451,7 @@
temHurtList = tagSkillPosHurtObj()
_pos = temHurtList.ReadData(_lpData, _pos)
self.HurtList.append(temHurtList)
+ self.SkillElementID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -30945,6 +33466,7 @@
self.PosY = 0
self.HurtCount = 0
self.HurtList = list()
+ self.SkillElementID = 0
return
def GetLength(self):
@@ -30958,6 +33480,7 @@
length += 2
for i in range(self.HurtCount):
length += self.HurtList[i].GetLength()
+ length += 2
return length
@@ -30972,6 +33495,7 @@
data = CommFunc.WriteWORD(data, self.HurtCount)
for i in range(self.HurtCount):
data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.SkillElementID)
return data
def OutputString(self):
@@ -30983,7 +33507,8 @@
PosX:%d,
PosY:%d,
HurtCount:%d,
- HurtList:%s
+ HurtList:%s,
+ SkillElementID:%d
'''\
%(
self.Head.OutputString(),
@@ -30993,7 +33518,8 @@
self.PosX,
self.PosY,
self.HurtCount,
- "..."
+ "...",
+ self.SkillElementID
)
return DumpString
@@ -31643,4 +34169,4 @@
m_NAtagMCStartEnterCrossServer=tagMCStartEnterCrossServer()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartEnterCrossServer.Cmd,m_NAtagMCStartEnterCrossServer.SubCmd))] = m_NAtagMCStartEnterCrossServer
\ No newline at end of file
diff --git a/Tool/Robot/Protocol/PacketsSend.py b/Tool/Robot/Protocol/PacketsSend.py
index 1ae5f43..aab832f 100644
--- a/Tool/Robot/Protocol/PacketsSend.py
+++ b/Tool/Robot/Protocol/PacketsSend.py
@@ -497,10 +497,10 @@
szSex = "" #(char szSex[3])//性别
Age = 0 #(WORD Age)//年龄
Birthday = "" #(char Birthday[21])//生日
- QQ = "" #(char QQ[19])// QQ号
+ QQ = "" #(char QQ[19])// QQ号
Mail = "" #(char Mail[41])// 邮箱
Province = "" #(char Province[11])//省份
- City = "" #(char City[11])//城市
+ City = "" #(char City[11])//城市
data = None
def __init__(self):
@@ -1064,7 +1064,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("PlayerID", c_int), #目标玩家
- ("MemberLV", c_ubyte), #玩家队伍等级 TTeamMemberLV
+ ("MemberLV", c_ubyte), #玩家队伍等级 TTeamMemberLV
]
def __init__(self):
@@ -2348,7 +2348,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("TecID", c_int), #科技ID
- ("TmpLV", c_ubyte), #加持等级
+ ("TmpLV", c_ubyte), #加持等级
]
def __init__(self):
@@ -3125,7 +3125,7 @@
("SubCmd", c_ubyte),
("Type", c_ubyte), #答题类型
("QuestionNO", c_ushort), # 答题号
- ("FunctionNO", c_ubyte), # 功能号
+ ("FunctionNO", c_ubyte), # 功能号
]
def __init__(self):
@@ -3186,7 +3186,7 @@
("SubjectIndex", c_ubyte), #当前是第几题
("Answer", c_ubyte), #回答index, 1开始, 小助手回答: EXAM_ANSWER_USE_HELP
("ExtraOpt1", c_ubyte), #附加选项1
- ("ExtraOpt2", c_ubyte), #附加选项2
+ ("ExtraOpt2", c_ubyte), #附加选项2
("ExtraOpt3", c_ubyte), #附加选项3
("ExtraOpt4", c_ubyte), #附加选项4
]
@@ -3580,7 +3580,7 @@
class tagCAddLabelToFriend(Structure):
Head = tagHead()
- PlayerID = 0 #(DWORD PlayerID)// 好友ID
+ PlayerID = 0 #(DWORD PlayerID)// 好友ID
LabelContent = "" #(char LabelContent[21])//标签内容
data = None
@@ -3704,7 +3704,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int), # 好友ID
+ ("PlayerID", c_int), # 好友ID
("LabelID", c_int), # 系统标签ID
]
@@ -4144,7 +4144,7 @@
RoomType = 0 #(BYTE RoomType)// 房间类型
VSValueMode = 0 #(BYTE VSValueMode)// 决斗值模式
VSMode = 0 #(BYTE VSMode)// 决斗模式
- Pws = "" #(char Pws[7])// 密码
+ Pws = "" #(char Pws[7])// 密码
data = None
def __init__(self):
@@ -4274,7 +4274,7 @@
class tagCJoinVsRoom(Structure):
Head = tagHead()
dwRoomId = 0 #(DWORD dwRoomId)// 房间ID
- Pws = "" #(char Pws[7])// 密码
+ Pws = "" #(char Pws[7])// 密码
data = None
def __init__(self):
@@ -5204,7 +5204,7 @@
Phone = 0 #(BYTE Phone)//是否绑定手机
ServerID = 0 #(DWORD ServerID)//服务器ID
Adult = 0 #(BYTE Adult)//是否成年 0未成年 1成年
- ExtraLen = 0 #(BYTE ExtraLen)//扩展长度
+ ExtraLen = 0 #(WORD ExtraLen)//扩展长度
Extra = "" #(String Extra)//扩展内容,根据不同平台而定
data = None
@@ -5229,7 +5229,7 @@
self.Phone,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Adult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.ExtraLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ExtraLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Extra,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraLen)
return _pos
@@ -5269,7 +5269,7 @@
length += 1
length += 4
length += 1
- length += 1
+ length += 2
length += len(self.Extra)
return length
@@ -5289,7 +5289,7 @@
data = CommFunc.WriteBYTE(data, self.Phone)
data = CommFunc.WriteDWORD(data, self.ServerID)
data = CommFunc.WriteBYTE(data, self.Adult)
- data = CommFunc.WriteBYTE(data, self.ExtraLen)
+ data = CommFunc.WriteWORD(data, self.ExtraLen)
data = CommFunc.WriteString(data, self.ExtraLen, self.Extra)
return data
@@ -7649,7 +7649,7 @@
class tagCSetSignature(Structure):
Head = tagHead()
- Signature = "" #(char Signature[101])// 心情签名
+ Signature = "" #(char Signature[101])// 心情签名
data = None
def __init__(self):
@@ -9498,7 +9498,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Type", c_ubyte), #无意义
+ ("Type", c_ubyte), #无意义
]
def __init__(self):
@@ -11229,8 +11229,8 @@
("SrcBackpack", c_ubyte), #源背包类型
("DesBackPack", c_ubyte), #目标背包类型
("SrcIndex", c_ushort), #起始位置
- ("DestIndex", c_ushort), #目标位置
- ("Count", c_ushort), #物品数量
+ ("DestIndex", c_ushort), #目标位置
+ ("Count", c_ushort), #物品数量
]
def __init__(self):
@@ -11344,7 +11344,7 @@
("SubCmd", c_ubyte),
("OperateType", c_ubyte), #背包操作类型,由EBackpackOperate定义
("SrcIndex", c_ushort), #起始位置
- ("DestIndex", c_ushort), #目标位置
+ ("DestIndex", c_ushort), #目标位置
]
def __init__(self):
@@ -12569,7 +12569,7 @@
("SrcBackpack", c_ubyte), #源背包类型
("DesBackPack", c_ubyte), #目标背包类型
("SrcIndex", c_ushort), #起始位置
- ("DestIndex", c_ushort), #目标位置
+ ("DestIndex", c_ushort), #目标位置
]
def __init__(self):
@@ -12734,7 +12734,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("RoleEquipType", c_ubyte), #角色装备类型
+ ("RoleEquipType", c_ubyte), #角色装备类型
("ItemIndex", c_ubyte), #物品在物品背包的索引
]
@@ -20889,7 +20889,7 @@
("StuffIndex1", c_int), #装备索引
("StuffIndex2", c_int), #装备索引
("StuffIndex3", c_int), #装备索引
- ("AutoBuy", c_ubyte), #是否自动购买结魂灯
+ ("AutoBuy", c_ubyte), #是否自动购买结魂灯
]
def __init__(self):
@@ -21162,7 +21162,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("VSOrder", c_int), #要挑战的排位
+ ("VSOrder", c_int), #要挑战的排位
]
def __init__(self):
@@ -21445,4 +21445,4 @@
m_NAtagCGMCMD=tagCGMCMD()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGMCMD.Head.Cmd,m_NAtagCGMCMD.Head.SubCmd))] = m_NAtagCGMCMD
\ No newline at end of file
diff --git a/Tool/Robot/Protocol/PacketsSendPY.py b/Tool/Robot/Protocol/PacketsSendPY.py
index a765658..7b71519 100644
--- a/Tool/Robot/Protocol/PacketsSendPY.py
+++ b/Tool/Robot/Protocol/PacketsSendPY.py
@@ -1248,6 +1248,62 @@
#------------------------------------------------------
+# A9 01 获取Boss首杀奖励 #tagCGGetBossFirstKillAward
+
+class tagCGGetBossFirstKillAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("NPCID", c_int),
+ ("AwardType", c_ubyte), # 0-首杀红包奖励;1-个人首杀奖励
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA9
+ self.SubCmd = 0x01
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA9
+ self.SubCmd = 0x01
+ self.NPCID = 0
+ self.AwardType = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGGetBossFirstKillAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 01 获取Boss首杀奖励 //tagCGGetBossFirstKillAward:
+ Cmd:%s,
+ SubCmd:%s,
+ NPCID:%d,
+ AwardType:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.NPCID,
+ self.AwardType
+ )
+ return DumpString
+
+
+m_NAtagCGGetBossFirstKillAward=tagCGGetBossFirstKillAward()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetBossFirstKillAward.Cmd,m_NAtagCGGetBossFirstKillAward.SubCmd))] = m_NAtagCGGetBossFirstKillAward
+
+
+#------------------------------------------------------
# A9 04 查询boss信息 #tagCGQueryBossInfo
class tagCGQueryBossInfo(Structure):
@@ -1904,6 +1960,115 @@
#------------------------------------------------------
+# B0 13 取消协助Boss #tagCGCancelAssistBoss
+
+class tagCGCancelAssistBoss(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x13
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x13
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagCGCancelAssistBoss=tagCGCancelAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGCancelAssistBoss.Head.Cmd,m_NAtagCGCancelAssistBoss.Head.SubCmd))] = m_NAtagCGCancelAssistBoss
+
+
+#------------------------------------------------------
+# B0 15 接收协助感谢礼物 #tagCGGetAssistThanksGift
+
+class tagCGGetAssistThanksGift(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("IsPreview", c_ubyte), #是否预览,非预览即确认领取,无额外奖励确认时也需要回复领取包代表已读
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x15
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x15
+ self.IsPreview = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGGetAssistThanksGift)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 15 接收协助感谢礼物 //tagCGGetAssistThanksGift:
+ Cmd:%s,
+ SubCmd:%s,
+ IsPreview:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.IsPreview
+ )
+ return DumpString
+
+
+m_NAtagCGGetAssistThanksGift=tagCGGetAssistThanksGift()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGGetAssistThanksGift.Cmd,m_NAtagCGGetAssistThanksGift.SubCmd))] = m_NAtagCGGetAssistThanksGift
+
+
+#------------------------------------------------------
#B0 25 请求家族悬赏任务完成情况 #tagQueryFamilyArrestOverState
class tagQueryFamilyArrestOverState(Structure):
@@ -1949,6 +2114,119 @@
m_NAtagQueryFamilyArrestOverState=tagQueryFamilyArrestOverState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagQueryFamilyArrestOverState.Cmd,m_NAtagQueryFamilyArrestOverState.SubCmd))] = m_NAtagQueryFamilyArrestOverState
+
+
+#------------------------------------------------------
+# B0 12 开始协助Boss #tagCGStartAssistBoss
+
+class tagCGStartAssistBoss(Structure):
+ Head = tagHead()
+ AssistGUID = "" #(char AssistGUID[40])//协助GUID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x12
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB0
+ self.Head.SubCmd = 0x12
+ self.AssistGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.AssistGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ AssistGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.AssistGUID
+ )
+ return DumpString
+
+
+m_NAtagCGStartAssistBoss=tagCGStartAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGStartAssistBoss.Head.Cmd,m_NAtagCGStartAssistBoss.Head.SubCmd))] = m_NAtagCGStartAssistBoss
+
+
+#------------------------------------------------------
+# B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift
+
+class tagCGUseAssistThanksGift(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int),
+ ("IsPreview", c_ubyte), #是否预览,非预览即确认使用
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x14
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x14
+ self.ItemID = 0
+ self.IsPreview = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCGUseAssistThanksGift)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 14 使用协助感谢礼盒 //tagCGUseAssistThanksGift:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d,
+ IsPreview:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID,
+ self.IsPreview
+ )
+ return DumpString
+
+
+m_NAtagCGUseAssistThanksGift=tagCGUseAssistThanksGift()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGUseAssistThanksGift.Cmd,m_NAtagCGUseAssistThanksGift.SubCmd))] = m_NAtagCGUseAssistThanksGift
#------------------------------------------------------
@@ -2228,7 +2506,7 @@
class tagCGVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
TargetNameLen = 0 #(BYTE TargetNameLen)
TargetName = "" #(String TargetName)//size = TargetNameLen
TargetID = 0 #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -3396,8 +3674,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("ZoneID", c_ubyte), # 赛区ID
- ("SeasonID", c_ubyte), # 赛季ID
+ ("ZoneID", c_ubyte), # 赛区ID
+ ("SeasonID", c_ubyte), # 赛季ID
]
def __init__(self):
@@ -5659,6 +5937,58 @@
#------------------------------------------------------
+# A2 07 接受任务 #tagCMTakeTask
+
+class tagCMTakeTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("TaskID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA2
+ self.SubCmd = 0x07
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA2
+ self.SubCmd = 0x07
+ self.TaskID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMTakeTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A2 07 接受任务 //tagCMTakeTask:
+ Cmd:%s,
+ SubCmd:%s,
+ TaskID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.TaskID
+ )
+ return DumpString
+
+
+m_NAtagCMTakeTask=tagCMTakeTask()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTakeTask.Cmd,m_NAtagCMTakeTask.SubCmd))] = m_NAtagCMTakeTask
+
+
+#------------------------------------------------------
#A2 12 查看玩家详细信息#tagCMViewPlayerInfo
class tagCMViewPlayerInfo(Structure):
@@ -5953,7 +6283,7 @@
("SrcBackpack", c_ubyte), #源背包类型
("DesBackPack", c_ubyte), #目标背包类型
("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
- ("IsAll", c_ubyte), #是否全部转移
+ ("IsAll", c_ubyte), #是否全部转移
]
def __init__(self):
@@ -6208,6 +6538,104 @@
m_NAtagCMEquipEnchase=tagCMEquipEnchase()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEnchase.Cmd,m_NAtagCMEquipEnchase.SubCmd))] = m_NAtagCMEquipEnchase
+
+
+#------------------------------------------------------
+# A3 30 装备神装进阶 #tagCMEquipEvolve
+
+class tagCMEquipEvolve(Structure):
+ Head = tagHead()
+ EquipIndex = 0 #(BYTE EquipIndex)// 要进阶的装备在装备背包中索引
+ NeedEquipIDIndex = 0 #(BYTE NeedEquipIDIndex)// 所需固定装备B在背包中索引
+ NeedItemIDIndexCnt = 0 #(BYTE NeedItemIDIndexCnt)// 附加材料在背包中索引个数
+ NeedItemIDIndex = list() #(vector<BYTE> NeedItemIDIndex)// 附加材料在背包的索引列表
+ NeedSuitIndexCnt = 0 #(BYTE NeedSuitIndexCnt)// 所需套装材料在背包中索引个数
+ NeedSuitIndex = list() #(vector<BYTE> NeedSuitIndex)// 所需套装材料在背包的索引列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x30
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedEquipIDIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedItemIDIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NeedItemIDIndexCnt):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.NeedItemIDIndex.append(value)
+ self.NeedSuitIndexCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.NeedSuitIndexCnt):
+ value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
+ self.NeedSuitIndex.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x30
+ self.EquipIndex = 0
+ self.NeedEquipIDIndex = 0
+ self.NeedItemIDIndexCnt = 0
+ self.NeedItemIDIndex = list()
+ self.NeedSuitIndexCnt = 0
+ self.NeedSuitIndex = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 1
+ length += 1 * self.NeedItemIDIndexCnt
+ length += 1
+ length += 1 * self.NeedSuitIndexCnt
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EquipIndex)
+ data = CommFunc.WriteBYTE(data, self.NeedEquipIDIndex)
+ data = CommFunc.WriteBYTE(data, self.NeedItemIDIndexCnt)
+ for i in range(self.NeedItemIDIndexCnt):
+ data = CommFunc.WriteBYTE(data, self.NeedItemIDIndex[i])
+ data = CommFunc.WriteBYTE(data, self.NeedSuitIndexCnt)
+ for i in range(self.NeedSuitIndexCnt):
+ data = CommFunc.WriteBYTE(data, self.NeedSuitIndex[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EquipIndex:%d,
+ NeedEquipIDIndex:%d,
+ NeedItemIDIndexCnt:%d,
+ NeedItemIDIndex:%s,
+ NeedSuitIndexCnt:%d,
+ NeedSuitIndex:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EquipIndex,
+ self.NeedEquipIDIndex,
+ self.NeedItemIDIndexCnt,
+ "...",
+ self.NeedSuitIndexCnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMEquipEvolve=tagCMEquipEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipEvolve.Head.Cmd,m_NAtagCMEquipEvolve.Head.SubCmd))] = m_NAtagCMEquipEvolve
#------------------------------------------------------
@@ -6599,62 +7027,6 @@
#------------------------------------------------------
-# A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
-
-class tagCMEquipZhuXianItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
- ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x30
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x30
- self.EquipIndex = 0
- self.ItemIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMEquipZhuXianItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
- Cmd:%s,
- SubCmd:%s,
- EquipIndex:%d,
- ItemIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipIndex,
- self.ItemIndex
- )
- return DumpString
-
-
-m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
-
-
-#------------------------------------------------------
# A3 12 守护拾取物品 #tagCMGuardPickupItem
class tagCMGuardPickupItem(Structure):
@@ -6827,6 +7199,58 @@
m_NAtagCMItemTimeout=tagCMItemTimeout()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMItemTimeout.Cmd,m_NAtagCMItemTimeout.SubCmd))] = m_NAtagCMItemTimeout
+
+
+#------------------------------------------------------
+# A3 18 灵器突破 #tagCMLingQiEquipBreak
+
+class tagCMLingQiEquipBreak(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemID", c_int), #突破的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x18
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x18
+ self.ItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMLingQiEquipBreak)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 18 灵器突破 //tagCMLingQiEquipBreak:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemID
+ )
+ return DumpString
+
+
+m_NAtagCMLingQiEquipBreak=tagCMLingQiEquipBreak()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMLingQiEquipBreak.Cmd,m_NAtagCMLingQiEquipBreak.SubCmd))] = m_NAtagCMLingQiEquipBreak
#------------------------------------------------------
@@ -7295,58 +7719,6 @@
#------------------------------------------------------
-# A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
-
-class tagCMUnEquipZhuXianItem(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x31
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x31
- self.EquipIndex = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMUnEquipZhuXianItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
- Cmd:%s,
- SubCmd:%s,
- EquipIndex:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.EquipIndex
- )
- return DumpString
-
-
-m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
-
-
-#------------------------------------------------------
# A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
class tagCMUseAllAttrFruit(Structure):
@@ -7526,90 +7898,6 @@
#------------------------------------------------------
-# A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
-
-class tagCMZhuXianEquipDecompose(Structure):
- Head = tagHead()
- Count = 0 #(BYTE Count)//材料所在背包索引的数量
- IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
- ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
- IsAuto = 0 #(BYTE IsAuto)//是否自动分解
- data = None
-
- def __init__(self):
- self.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- _pos = self.Head.ReadData(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
- self.IndexList.append(value)
- for i in range(self.Count):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.ItemIDList.append(value)
- self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- return _pos
-
- def Clear(self):
- self.Head = tagHead()
- self.Head.Clear()
- self.Head.Cmd = 0xA3
- self.Head.SubCmd = 0x32
- self.Count = 0
- self.IndexList = list()
- self.ItemIDList = list()
- self.IsAuto = 0
- return
-
- def GetLength(self):
- length = 0
- length += self.Head.GetLength()
- length += 1
- length += 2 * self.Count
- length += 4 * self.Count
- length += 1
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteBYTE(data, self.Count)
- for i in range(self.Count):
- data = CommFunc.WriteWORD(data, self.IndexList[i])
- for i in range(self.Count):
- data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
- data = CommFunc.WriteBYTE(data, self.IsAuto)
- return data
-
- def OutputString(self):
- DumpString = '''
- Head:%s,
- Count:%d,
- IndexList:%s,
- ItemIDList:%s,
- IsAuto:%d
- '''\
- %(
- self.Head.OutputString(),
- self.Count,
- "...",
- "...",
- self.IsAuto
- )
- return DumpString
-
-
-m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
-
-
-#------------------------------------------------------
# A5 30 购买魔魂铜钱经验什么的 #tagCMBuySomething
class tagCMBuySomething(Structure):
@@ -7669,7 +7957,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_int), #坐骑ID
+ ("HorseID", c_int), #坐骑幻化ID
]
def __init__(self):
@@ -7711,6 +7999,62 @@
m_NAtagPlayerActivateHorse=tagPlayerActivateHorse()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagPlayerActivateHorse.Cmd,m_NAtagPlayerActivateHorse.SubCmd))] = m_NAtagPlayerActivateHorse
+
+
+#------------------------------------------------------
+# A5 C7 激活大师强化等级 #tagCMActivateMasterPlusLV
+
+class tagCMActivateMasterPlusLV(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 所属装备阶
+ ("MasterPlusLV", c_ushort), # 大师强化等级
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC7
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC7
+ self.ClassLV = 0
+ self.MasterPlusLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivateMasterPlusLV)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C7 激活大师强化等级 //tagCMActivateMasterPlusLV:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ MasterPlusLV:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.MasterPlusLV
+ )
+ return DumpString
+
+
+m_NAtagCMActivateMasterPlusLV=tagCMActivateMasterPlusLV()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivateMasterPlusLV.Cmd,m_NAtagCMActivateMasterPlusLV.SubCmd))] = m_NAtagCMActivateMasterPlusLV
#------------------------------------------------------
@@ -9276,6 +9620,7 @@
CostEquipCnt = 0 #(BYTE CostEquipCnt)// 装备个数
CostEquipIndex = list() #(vector<WORD> CostEquipIndex)// 装备索引
CostEquipID = list() #(vector<DWORD> CostEquipID)// 装备物品ID
+ AutoBuy = 0 #(BYTE AutoBuy)// 自动购买 0-不自动购买,1-自动购买并升星,2-自动购买预览(未满概率时预览消耗时使用)
data = None
def __init__(self):
@@ -9295,6 +9640,7 @@
for i in range(self.CostEquipCnt):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.CostEquipID.append(value)
+ self.AutoBuy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
return _pos
def Clear(self):
@@ -9306,6 +9652,7 @@
self.CostEquipCnt = 0
self.CostEquipIndex = list()
self.CostEquipID = list()
+ self.AutoBuy = 0
return
def GetLength(self):
@@ -9315,6 +9662,7 @@
length += 1
length += 2 * self.CostEquipCnt
length += 4 * self.CostEquipCnt
+ length += 1
return length
@@ -9327,6 +9675,7 @@
data = CommFunc.WriteWORD(data, self.CostEquipIndex[i])
for i in range(self.CostEquipCnt):
data = CommFunc.WriteDWORD(data, self.CostEquipID[i])
+ data = CommFunc.WriteBYTE(data, self.AutoBuy)
return data
def OutputString(self):
@@ -9335,20 +9684,86 @@
EquipPackIndex:%d,
CostEquipCnt:%d,
CostEquipIndex:%s,
- CostEquipID:%s
+ CostEquipID:%s,
+ AutoBuy:%d
'''\
%(
self.Head.OutputString(),
self.EquipPackIndex,
self.CostEquipCnt,
"...",
- "..."
+ "...",
+ self.AutoBuy
)
return DumpString
m_NAtagCMEquipPartStarUp=tagCMEquipPartStarUp()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartStarUp.Head.Cmd,m_NAtagCMEquipPartStarUp.Head.SubCmd))] = m_NAtagCMEquipPartStarUp
+
+
+#------------------------------------------------------
+# A5 C6 装备部位星级套装激活 #tagCMEquipPartSuiteActivate
+
+class tagCMEquipPartSuiteActivate(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ClassLV", c_ubyte), # 所属装备阶
+ ("SuiteID", c_ushort), # 套装ID
+ ("SuiteCount", c_ubyte), # 件数
+ ("Star", c_ubyte), # 星数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC6
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0xC6
+ self.ClassLV = 0
+ self.SuiteID = 0
+ self.SuiteCount = 0
+ self.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPartSuiteActivate)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 C6 装备部位星级套装激活 //tagCMEquipPartSuiteActivate:
+ Cmd:%s,
+ SubCmd:%s,
+ ClassLV:%d,
+ SuiteID:%d,
+ SuiteCount:%d,
+ Star:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ClassLV,
+ self.SuiteID,
+ self.SuiteCount,
+ self.Star
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPartSuiteActivate=tagCMEquipPartSuiteActivate()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPartSuiteActivate.Cmd,m_NAtagCMEquipPartSuiteActivate.SubCmd))] = m_NAtagCMEquipPartSuiteActivate
#------------------------------------------------------
@@ -9738,6 +10153,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("SuccID", c_int), #成就ID
+ ("IsPassport", c_ubyte), #是否通行证奖励
]
def __init__(self):
@@ -9755,6 +10171,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x42
self.SuccID = 0
+ self.IsPassport = 0
return
def GetLength(self):
@@ -9767,12 +10184,14 @@
DumpString = '''// A5 42 领取成就奖励 //tagMCGetSuccessAward:
Cmd:%s,
SubCmd:%s,
- SuccID:%d
+ SuccID:%d,
+ IsPassport:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.SuccID
+ self.SuccID,
+ self.IsPassport
)
return DumpString
@@ -9954,6 +10373,126 @@
#------------------------------------------------------
+# A5 29 骑宠觉醒 #tagCMHorsePetAwake
+
+class tagCMHorsePetAwake(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ushort), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("EatItemID", c_int), # 吞噬的物品ID
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x29
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x29
+ self.Type = 0
+ self.ID = 0
+ self.EatItemID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorsePetAwake)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 29 骑宠觉醒 //tagCMHorsePetAwake:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d,
+ ID:%d,
+ EatItemID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type,
+ self.ID,
+ self.EatItemID
+ )
+ return DumpString
+
+
+m_NAtagCMHorsePetAwake=tagCMHorsePetAwake()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetAwake.Cmd,m_NAtagCMHorsePetAwake.SubCmd))] = m_NAtagCMHorsePetAwake
+
+
+#------------------------------------------------------
+# A5 30 骑宠外观选择 #tagCMHorsePetSkinSelect
+
+class tagCMHorsePetSkinSelect(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Type", c_ushort), # 1-坐骑 2-灵宠
+ ("ID", c_int), # 对应坐骑表灵宠表ID
+ ("SkinIndex", c_ubyte), # 外观索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA5
+ self.SubCmd = 0x30
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA5
+ self.SubCmd = 0x30
+ self.Type = 0
+ self.ID = 0
+ self.SkinIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMHorsePetSkinSelect)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A5 30 骑宠外观选择 //tagCMHorsePetSkinSelect:
+ Cmd:%s,
+ SubCmd:%s,
+ Type:%d,
+ ID:%d,
+ SkinIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Type,
+ self.ID,
+ self.SkinIndex
+ )
+ return DumpString
+
+
+m_NAtagCMHorsePetSkinSelect=tagCMHorsePetSkinSelect()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorsePetSkinSelect.Cmd,m_NAtagCMHorsePetSkinSelect.SubCmd))] = m_NAtagCMHorsePetSkinSelect
+
+
+#------------------------------------------------------
# A5 27 坐骑提升 #tagCMHorseUp
class tagCMHorseUp(Structure):
@@ -9961,7 +10500,6 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("HorseID", c_int), #坐骑ID
("UseItemCnt", c_ubyte), #消耗材料个数
("IsAutoBuy", c_ubyte), #是否自动购买
]
@@ -9980,7 +10518,6 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x27
- self.HorseID = 0
self.UseItemCnt = 0
self.IsAutoBuy = 0
return
@@ -9995,14 +10532,12 @@
DumpString = '''// A5 27 坐骑提升 //tagCMHorseUp:
Cmd:%s,
SubCmd:%s,
- HorseID:%d,
UseItemCnt:%d,
IsAutoBuy:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.HorseID,
self.UseItemCnt,
self.IsAutoBuy
)
@@ -10173,7 +10708,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Index", c_int), #选择索引
+ ("ChooseType", c_ubyte), # 1-按等阶,2-按幻化
+ ("LVID", c_ubyte), # 阶等级或幻化ID
]
def __init__(self):
@@ -10190,7 +10726,8 @@
def Clear(self):
self.Cmd = 0xA5
self.SubCmd = 0x02
- self.Index = 0
+ self.ChooseType = 0
+ self.LVID = 0
return
def GetLength(self):
@@ -10203,12 +10740,14 @@
DumpString = '''//A5 02 坐骑选择 //tagPlayerChooseHorse:
Cmd:%s,
SubCmd:%s,
- Index:%d
+ ChooseType:%d,
+ LVID:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.Index
+ self.ChooseType,
+ self.LVID
)
return DumpString
@@ -10304,6 +10843,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("AlchemyID", c_int), # 丹药ID
+ ("AlchemyTimes", c_ushort), # 丹药次数
("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
]
@@ -10322,6 +10862,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x76
self.AlchemyID = 0
+ self.AlchemyTimes = 0
self.DoType = 0
return
@@ -10336,12 +10877,14 @@
Cmd:%s,
SubCmd:%s,
AlchemyID:%d,
+ AlchemyTimes:%d,
DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.AlchemyID,
+ self.AlchemyTimes,
self.DoType
)
return DumpString
@@ -11065,6 +11608,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("SkillTypeID", c_int), # 专精技能ID
+ ("DoType", c_ubyte), # 0-激活 1-使用
]
def __init__(self):
@@ -11082,6 +11626,7 @@
self.Cmd = 0xA5
self.SubCmd = 0x16
self.SkillTypeID = 0
+ self.DoType = 0
return
def GetLength(self):
@@ -11094,12 +11639,14 @@
DumpString = '''// A5 16 选择技能五行专精 //tagCMSelectSkillElement:
Cmd:%s,
SubCmd:%s,
- SkillTypeID:%d
+ SkillTypeID:%d,
+ DoType:%d
'''\
%(
self.Cmd,
self.SubCmd,
- self.SkillTypeID
+ self.SkillTypeID,
+ self.DoType
)
return DumpString
@@ -11649,6 +12196,83 @@
m_NAtagCMRenameFamily=tagCMRenameFamily()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRenameFamily.Head.Cmd,m_NAtagCMRenameFamily.Head.SubCmd))] = m_NAtagCMRenameFamily
+
+
+#------------------------------------------------------
+# A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange
+
+class tagCMFamilyActivityExchange(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)//材料所在背包索引的数量
+ IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
+ ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA6
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.IndexList.append(value)
+ for i in range(self.Count):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.ItemIDList.append(value)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA6
+ self.Head.SubCmd = 0x06
+ self.Count = 0
+ self.IndexList = list()
+ self.ItemIDList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 2 * self.Count
+ length += 4 * self.Count
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteWORD(data, self.IndexList[i])
+ for i in range(self.Count):
+ data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ IndexList:%s,
+ ItemIDList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "...",
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagCMFamilyActivityExchange=tagCMFamilyActivityExchange()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFamilyActivityExchange.Head.Cmd,m_NAtagCMFamilyActivityExchange.Head.SubCmd))] = m_NAtagCMFamilyActivityExchange
#------------------------------------------------------
@@ -13438,6 +14062,154 @@
#------------------------------------------------------
+# B0 29 活跃放置明细查询 #tagCMActivityPlaceQuery
+
+class tagCMActivityPlaceQuery(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x29
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x29
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceQuery)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 29 活跃放置明细查询 //tagCMActivityPlaceQuery:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceQuery=tagCMActivityPlaceQuery()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuery.Cmd,m_NAtagCMActivityPlaceQuery.SubCmd))] = m_NAtagCMActivityPlaceQuery
+
+
+#------------------------------------------------------
+# B0 28 活跃放置快速完成 #tagCMActivityPlaceQuickFinish
+
+class tagCMActivityPlaceQuickFinish(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("FinishCount", c_ubyte), #完成次数
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x28
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x28
+ self.FinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceQuickFinish)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 28 活跃放置快速完成 //tagCMActivityPlaceQuickFinish:
+ Cmd:%s,
+ SubCmd:%s,
+ FinishCount:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.FinishCount
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceQuickFinish=tagCMActivityPlaceQuickFinish()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceQuickFinish.Cmd,m_NAtagCMActivityPlaceQuickFinish.SubCmd))] = m_NAtagCMActivityPlaceQuickFinish
+
+
+#------------------------------------------------------
+# B0 27 活跃放置启动 #tagCMActivityPlaceStart
+
+class tagCMActivityPlaceStart(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x27
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x27
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMActivityPlaceStart)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 27 活跃放置启动 //tagCMActivityPlaceStart:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagCMActivityPlaceStart=tagCMActivityPlaceStart()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMActivityPlaceStart.Cmd,m_NAtagCMActivityPlaceStart.SubCmd))] = m_NAtagCMActivityPlaceStart
+
+
+#------------------------------------------------------
# B0 50 钓鱼收杆 #tagCMDoFish
class tagCMDoFish(Structure):
@@ -13591,6 +14363,118 @@
m_NAtagReceiveFamilyArrestAward=tagReceiveFamilyArrestAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagReceiveFamilyArrestAward.Cmd,m_NAtagReceiveFamilyArrestAward.SubCmd))] = m_NAtagReceiveFamilyArrestAward
+
+
+#------------------------------------------------------
+# B0 10 请求协助Boss #tagCMRequestAssistBoss
+
+class tagCMRequestAssistBoss(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x10
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x10
+ self.ObjID = 0
+ self.NPCID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRequestAssistBoss)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 10 请求协助Boss //tagCMRequestAssistBoss:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d,
+ NPCID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID,
+ self.NPCID
+ )
+ return DumpString
+
+
+m_NAtagCMRequestAssistBoss=tagCMRequestAssistBoss()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistBoss.Cmd,m_NAtagCMRequestAssistBoss.SubCmd))] = m_NAtagCMRequestAssistBoss
+
+
+#------------------------------------------------------
+# B0 11 请求协助组队副本 #tagCMRequestAssistTeamFB
+
+class tagCMRequestAssistTeamFB(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_ushort),
+ ("LineID", c_ushort),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB0
+ self.SubCmd = 0x11
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB0
+ self.SubCmd = 0x11
+ self.MapID = 0
+ self.LineID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRequestAssistTeamFB)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B0 11 请求协助组队副本 //tagCMRequestAssistTeamFB:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ LineID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.LineID
+ )
+ return DumpString
+
+
+m_NAtagCMRequestAssistTeamFB=tagCMRequestAssistTeamFB()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRequestAssistTeamFB.Cmd,m_NAtagCMRequestAssistTeamFB.SubCmd))] = m_NAtagCMRequestAssistTeamFB
#------------------------------------------------------
@@ -13834,62 +14718,6 @@
#------------------------------------------------------
-# B1 09 结算自定义副本奖励 #tagCMGiveCustomFBPrize
-
-class tagCMGiveCustomFBPrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x09
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x09
- self.MapID = 0
- self.FuncLineID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMGiveCustomFBPrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 09 结算自定义副本奖励 //tagCMGiveCustomFBPrize:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID
- )
- return DumpString
-
-
-m_NAtagCMGiveCustomFBPrize=tagCMGiveCustomFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGiveCustomFBPrize.Cmd,m_NAtagCMGiveCustomFBPrize.SubCmd))] = m_NAtagCMGiveCustomFBPrize
-
-
-#------------------------------------------------------
# B1 06 助战召唤 #tagCMHelpBattleCall
class tagCMHelpBattleCall(Structure):
@@ -14106,62 +14934,6 @@
#------------------------------------------------------
-# B1 08 刷新自定义副本奖励 #tagCMRefreshCustomFBPrize
-
-class tagCMRefreshCustomFBPrize(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("MapID", c_int),
- ("FuncLineID", c_ushort),
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- return
-
- def ReadData(self, stringData, _pos=0, _len=0):
- self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
-
- def Clear(self):
- self.Cmd = 0xB1
- self.SubCmd = 0x08
- self.MapID = 0
- self.FuncLineID = 0
- return
-
- def GetLength(self):
- return sizeof(tagCMRefreshCustomFBPrize)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B1 08 刷新自定义副本奖励 //tagCMRefreshCustomFBPrize:
- Cmd:%s,
- SubCmd:%s,
- MapID:%d,
- FuncLineID:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.MapID,
- self.FuncLineID
- )
- return DumpString
-
-
-m_NAtagCMRefreshCustomFBPrize=tagCMRefreshCustomFBPrize()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshCustomFBPrize.Cmd,m_NAtagCMRefreshCustomFBPrize.SubCmd))] = m_NAtagCMRefreshCustomFBPrize
-
-
-#------------------------------------------------------
# B1 03 设置封魔坛多倍击杀 #tagCMSetFMTDouble
class tagCMSetFMTDouble(Structure):
@@ -14220,7 +14992,7 @@
Head = tagHead()
PointAttrIDCount = 0 #(BYTE PointAttrIDCount)// 加点属性ID个数
PointAttrIDList = list() #(vector<BYTE> PointAttrIDList)// 加点属性ID列表
- PointValueList = list() #(vector<WORD> PointValueList)// 加点属性ID对应的点数列表
+ PointValueList = list() #(vector<DWORD> PointValueList)// 加点属性ID对应的点数列表
data = None
def __init__(self):
@@ -14237,7 +15009,7 @@
value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
self.PointAttrIDList.append(value)
for i in range(self.PointAttrIDCount):
- value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
self.PointValueList.append(value)
return _pos
@@ -14256,7 +15028,7 @@
length += self.Head.GetLength()
length += 1
length += 1 * self.PointAttrIDCount
- length += 2 * self.PointAttrIDCount
+ length += 4 * self.PointAttrIDCount
return length
@@ -14267,7 +15039,7 @@
for i in range(self.PointAttrIDCount):
data = CommFunc.WriteBYTE(data, self.PointAttrIDList[i])
for i in range(self.PointAttrIDCount):
- data = CommFunc.WriteWORD(data, self.PointValueList[i])
+ data = CommFunc.WriteDWORD(data, self.PointValueList[i])
return data
def OutputString(self):
@@ -14622,6 +15394,110 @@
#------------------------------------------------------
+# B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
+
+class tagCMRecyclePriWoodPile(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ObjID", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0F
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0F
+ self.ObjID = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRecyclePriWoodPile)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0F 回收私有专属木桩怪 //tagCMRecyclePriWoodPile:
+ Cmd:%s,
+ SubCmd:%s,
+ ObjID:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ObjID
+ )
+ return DumpString
+
+
+m_NAtagCMRecyclePriWoodPile=tagCMRecyclePriWoodPile()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRecyclePriWoodPile.Cmd,m_NAtagCMRecyclePriWoodPile.SubCmd))] = m_NAtagCMRecyclePriWoodPile
+
+
+#------------------------------------------------------
+# B4 0E 玩家掉血 #tagCMRoleLostHP
+
+class tagCMRoleLostHP(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("LostHP", c_int),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0E
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xB4
+ self.SubCmd = 0x0E
+ self.LostHP = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMRoleLostHP)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B4 0E 玩家掉血 //tagCMRoleLostHP:
+ Cmd:%s,
+ SubCmd:%s,
+ LostHP:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.LostHP
+ )
+ return DumpString
+
+
+m_NAtagCMRoleLostHP=tagCMRoleLostHP()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRoleLostHP.Cmd,m_NAtagCMRoleLostHP.SubCmd))] = m_NAtagCMRoleLostHP
+
+
+#------------------------------------------------------
# B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
class tagCMSummonPriWoodPile(Structure):
@@ -14631,6 +15507,8 @@
("SubCmd", c_ubyte),
("NPCID", c_int),
("Count", c_ubyte), #默认1个,最多5个
+ ("HP", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
+ ("HPEx", c_int), #默认0取最大值,其中一个血量数值大于0则用指定血量
]
def __init__(self):
@@ -14649,6 +15527,8 @@
self.SubCmd = 0x0C
self.NPCID = 0
self.Count = 0
+ self.HP = 0
+ self.HPEx = 0
return
def GetLength(self):
@@ -14662,13 +15542,17 @@
Cmd:%s,
SubCmd:%s,
NPCID:%d,
- Count:%d
+ Count:%d,
+ HP:%d,
+ HPEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.NPCID,
- self.Count
+ self.Count,
+ self.HP,
+ self.HPEx
)
return DumpString
@@ -15843,6 +16727,63 @@
#------------------------------------------------------
+# B5 15 拍卖行下架拍品 #tagCMUnsellAuctionItem
+
+class tagCMUnsellAuctionItem(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB5
+ self.Head.SubCmd = 0x15
+ self.ItemGUID = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID
+ )
+ return DumpString
+
+
+m_NAtagCMUnsellAuctionItem=tagCMUnsellAuctionItem()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnsellAuctionItem.Head.Cmd,m_NAtagCMUnsellAuctionItem.Head.SubCmd))] = m_NAtagCMUnsellAuctionItem
+
+
+#------------------------------------------------------
# B9 04 修改队伍相关审核状态 #tagCMChangeTeamCheckState
class tagCMChangeTeamCheckState(Structure):
@@ -16271,4 +17212,4 @@
m_NAtagCMExitCrossRealm=tagCMExitCrossRealm()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMExitCrossRealm.Cmd,m_NAtagCMExitCrossRealm.SubCmd))] = m_NAtagCMExitCrossRealm
\ No newline at end of file
--
Gitblit v1.8.0